Răsfoiți Sursa

* determine correctly whether operand size is 32 or 64 bits for
sar/shl/shr/rol/ror in tcginlinenode.second_AndOrXorShiftRot_assign

git-svn-id: trunk@35783 -

nickysn 8 ani în urmă
părinte
comite
599b9e73de
1 a modificat fișierele cu 2 adăugiri și 2 ștergeri
  1. 2 2
      compiler/ncginl.pas

+ 2 - 2
compiler/ncginl.pas

@@ -477,12 +477,12 @@ implementation
           if maskconstant then
           if maskconstant then
             begin
             begin
               if inlinenumber in [in_sar_assign_x_y,in_shl_assign_x_y,in_shr_assign_x_y,in_rol_assign_x_y,in_ror_assign_x_y] then
               if inlinenumber in [in_sar_assign_x_y,in_shl_assign_x_y,in_shr_assign_x_y,in_rol_assign_x_y,in_ror_assign_x_y] then
-                if def_cgsize(left.resultdef) in [OS_64,OS_S64] then
+                if def_cgsize(tcallparanode(left).right.resultdef) in [OS_64,OS_S64] then
                   maskvalue:=maskvalue and 63
                   maskvalue:=maskvalue and 63
                 else
                 else
                   maskvalue:=maskvalue and 31;
                   maskvalue:=maskvalue and 31;
 {$ifndef cpu64bitalu}
 {$ifndef cpu64bitalu}
-              if def_cgsize(left.resultdef) in [OS_64,OS_S64] then
+              if def_cgsize(tcallparanode(left).right.resultdef) in [OS_64,OS_S64] then
                 cg64.a_op64_const_loc(current_asmdata.CurrAsmList,andorxorop[inlinenumber],def_cgsize(tcallparanode(left).right.resultdef),maskvalue.svalue,tcallparanode(tcallparanode(left).right).left.location)
                 cg64.a_op64_const_loc(current_asmdata.CurrAsmList,andorxorop[inlinenumber],def_cgsize(tcallparanode(left).right.resultdef),maskvalue.svalue,tcallparanode(tcallparanode(left).right).left.location)
               else
               else
 {$endif not cpu64bitalu}
 {$endif not cpu64bitalu}