* 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:
Jonas Maebe 2015-11-12 20:55:33 +00:00
parent b744c83581
commit a32605bd38
2 changed files with 1 additions and 2 deletions

View File

@ -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

View File

@ -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);