mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-14 09:49:35 +02:00
* fixed for regvars + simplification
This commit is contained in:
parent
dc953332cd
commit
9843118433
@ -277,37 +277,10 @@ implementation
|
|||||||
|
|
||||||
{ clear the register value, indicating result is FALSE }
|
{ clear the register value, indicating result is FALSE }
|
||||||
cg.a_load_const_reg(exprasmlist,location.size,0,location.register);
|
cg.a_load_const_reg(exprasmlist,location.size,0,location.register);
|
||||||
opsize := def_cgsize(left.resulttype.def);
|
|
||||||
{ If register is used, use only lower 8 bits }
|
{ If register is used, use only lower 8 bits }
|
||||||
if left.location.loc in [LOC_REGISTER,LOC_CREGISTER] then
|
location_force_reg(exprasmlist,left.location,OS_INT,false);
|
||||||
begin
|
pleftreg := left.location.register;
|
||||||
{ for ranges we always need a 32bit register, because then we }
|
opsize := OS_INT;
|
||||||
{ use the register as base in a reference (JM) }
|
|
||||||
if ranges then
|
|
||||||
begin
|
|
||||||
pleftreg:=cg.makeregsize(left.location.register,OS_INT);
|
|
||||||
cg.a_load_reg_reg(exprasmlist,left.location.size,OS_INT,left.location.register,pleftreg);
|
|
||||||
if opsize <> OS_INT then
|
|
||||||
cg.a_op_const_reg(exprasmlist,OP_AND,OS_INT,255,pleftreg);
|
|
||||||
opsize := OS_INT;
|
|
||||||
end
|
|
||||||
else
|
|
||||||
{ otherwise simply use the lower 8 bits (no "and" }
|
|
||||||
{ necessary this way) (JM) }
|
|
||||||
begin
|
|
||||||
pleftreg:=cg.makeregsize(left.location.register,OS_8);
|
|
||||||
opsize := OS_8;
|
|
||||||
end;
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
{ load the value in a register }
|
|
||||||
opsize := OS_INT;
|
|
||||||
pleftreg:=cg.getintregister(exprasmlist,opsize);
|
|
||||||
cg.a_load_ref_reg(exprasmlist,def_cgsize(left.resulttype.def),opsize,left.location.reference,pleftreg);
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
{ how much have we already substracted from the x in the }
|
{ how much have we already substracted from the x in the }
|
||||||
{ "x in [y..z]" expression }
|
{ "x in [y..z]" expression }
|
||||||
@ -1017,7 +990,10 @@ begin
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.58 2004-02-05 19:35:27 florian
|
Revision 1.59 2004-02-08 14:51:04 jonas
|
||||||
|
* fixed for regvars + simplification
|
||||||
|
|
||||||
|
Revision 1.58 2004/02/05 19:35:27 florian
|
||||||
* more x86-64 fixes
|
* more x86-64 fixes
|
||||||
|
|
||||||
Revision 1.57 2004/01/31 23:37:07 florian
|
Revision 1.57 2004/01/31 23:37:07 florian
|
||||||
|
Loading…
Reference in New Issue
Block a user