mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-27 12:30:31 +02:00
* simplified in_smallset() and removed some old cruft (there's no need
anymore to change the register size) git-svn-id: branches/hlcgllvm@28400 -
This commit is contained in:
parent
4e3f504caa
commit
c6ddf0001c
@ -37,7 +37,7 @@ interface
|
||||
|
||||
tarminnode = class(tcginnode)
|
||||
function pass_1: tnode; override;
|
||||
procedure in_smallset(uopsize: tcgsize; opdef: tdef; setbase: aint); override;
|
||||
procedure in_smallset(opdef: tdef; setbase: aint); override;
|
||||
end;
|
||||
|
||||
tarmcasenode = class(tcgcasenode)
|
||||
@ -77,7 +77,7 @@ implementation
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure tarminnode.in_smallset(uopsize: tcgsize; opdef: tdef; setbase: aint);
|
||||
procedure tarminnode.in_smallset(opdef: tdef; setbase: aint);
|
||||
var
|
||||
so : tshifterop;
|
||||
hregister : tregister;
|
||||
@ -101,7 +101,7 @@ implementation
|
||||
hlcg.location_force_reg(current_asmdata.CurrAsmList, right.location,
|
||||
right.resultdef, right.resultdef, true);
|
||||
|
||||
hregister:=cg.getintregister(current_asmdata.CurrAsmList, uopsize);
|
||||
hregister:=hlcg.getintregister(current_asmdata.CurrAsmList, opdef);
|
||||
current_asmdata.CurrAsmList.concat(taicpu.op_reg_const(A_MOV,hregister,1));
|
||||
|
||||
if GenerateThumbCode or GenerateThumb2Code then
|
||||
|
@ -44,7 +44,7 @@ interface
|
||||
{ tcginnode }
|
||||
|
||||
tcginnode = class(tinnode)
|
||||
procedure in_smallset(uopsize: tcgsize; opdef: tdef; setbase: aint); virtual;
|
||||
procedure in_smallset(opdef: tdef; setbase: aint); virtual;
|
||||
|
||||
function pass_1: tnode;override;
|
||||
procedure pass_generate_code;override;
|
||||
@ -182,12 +182,12 @@ implementation
|
||||
end;
|
||||
|
||||
|
||||
procedure tcginnode.in_smallset(uopsize: tcgsize; opdef: tdef; setbase: aint);
|
||||
procedure tcginnode.in_smallset(opdef: tdef; setbase: aint);
|
||||
begin
|
||||
{ location is always LOC_REGISTER }
|
||||
location_reset(location, LOC_REGISTER, uopsize{def_cgsize(resultdef)});
|
||||
location_reset(location, LOC_REGISTER, def_cgsize(resultdef));
|
||||
{ allocate a register for the result }
|
||||
location.register := cg.getintregister(current_asmdata.CurrAsmList, uopsize);
|
||||
location.register := hlcg.getintregister(current_asmdata.CurrAsmList, resultdef);
|
||||
{**************************** SMALL SET **********************}
|
||||
if left.location.loc=LOC_CONSTANT then
|
||||
begin
|
||||
@ -206,9 +206,6 @@ implementation
|
||||
right.resultdef, resultdef, left.location.register, right.location,
|
||||
location.register);
|
||||
end;
|
||||
location.size := def_cgsize(resultdef);
|
||||
location.register := cg.makeregsize(current_asmdata.CurrAsmList,
|
||||
location.register, location.size);
|
||||
end;
|
||||
|
||||
|
||||
@ -406,7 +403,7 @@ implementation
|
||||
handle smallsets separate, because it allows faster checks }
|
||||
if use_small then
|
||||
begin
|
||||
in_smallset(uopsize, opdef, setbase);
|
||||
in_smallset(opdef, setbase);
|
||||
end
|
||||
else
|
||||
{************************** NOT SMALL SET ********************}
|
||||
|
Loading…
Reference in New Issue
Block a user