Browse Source

* 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 years ago
parent
commit
599b9e73de
1 changed files with 2 additions and 2 deletions
  1. 2 2
      compiler/ncginl.pas

+ 2 - 2
compiler/ncginl.pas

@@ -477,12 +477,12 @@ implementation
           if maskconstant then
             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 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
                 else
                   maskvalue:=maskvalue and 31;
 {$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)
               else
 {$endif not cpu64bitalu}