Browse Source

* TARMAsmOptimizer.USxtOp2Op sets register size if needed

florian 1 year ago
parent
commit
fd74c26707
1 changed files with 2 additions and 0 deletions
  1. 2 0
      compiler/armgen/aoptarm.pas

+ 2 - 0
compiler/armgen/aoptarm.pas

@@ -231,6 +231,8 @@ Implementation
           else
           else
             opoffset:=1;
             opoffset:=1;
           taicpu(hp1).loadReg(opoffset+1,taicpu(p).oper[1]^.reg);
           taicpu(hp1).loadReg(opoffset+1,taicpu(p).oper[1]^.reg);
+          if not(shiftmode in [SM_SXTX,SM_UXTX,SM_LSL]) then
+            setsubreg(taicpu(hp1).oper[opoffset+1]^.reg,R_SUBD);
           taicpu(hp1).ops:=opoffset+3;
           taicpu(hp1).ops:=opoffset+3;
           shifterop_reset(so);
           shifterop_reset(so);
           so.shiftmode:=shiftmode;
           so.shiftmode:=shiftmode;