mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-13 13:29:27 +02:00
* don't force setelementn's into a 32 bit modifiable register if they were
already in a register, as this changes the result location into a size different from what resultdef says (and only in that specific case) o modified the ppc code so that it always forces a setelementn to uinttype, as that is the size that is expected by the operations later on git-svn-id: trunk@32296 -
This commit is contained in:
parent
b744c83581
commit
a32605bd38
@ -103,8 +103,6 @@ implementation
|
||||
begin
|
||||
{ load first value in 32bit register }
|
||||
secondpass(left);
|
||||
if left.location.loc in [LOC_REGISTER,LOC_CREGISTER] then
|
||||
hlcg.location_force_reg(current_asmdata.CurrAsmList,left.location,left.resultdef,u32inttype,false);
|
||||
|
||||
{ also a second value ? }
|
||||
if assigned(right) then
|
||||
|
@ -448,6 +448,7 @@ implementation
|
||||
left.location.register,location.register)
|
||||
else
|
||||
begin
|
||||
hlcg.location_force_reg(current_asmdata.CurrAsmList,right.location,right.resultdef,u32inttype,true);
|
||||
tmpreg := cg.getintregister(current_asmdata.CurrAsmList,OS_INT);
|
||||
cg.a_load_const_reg(current_asmdata.CurrAsmList,OS_INT,aint((aword(1) shl (resultdef.size*8-1))),tmpreg);
|
||||
register_maybe_adjust_setbase(current_asmdata.CurrAsmList,right.location,setbase);
|
||||
|
Loading…
Reference in New Issue
Block a user