Переглянути джерело

Support top_shifterop and top_regset for arm in RegInOp

RegInOp did not check for a register beeing part of a shifterop
(op.shifterop^.rs) which could result in trashed registers (But that did
not seem to happen yet anyway).

I've also implemented support for top_regset, but it is currently not
generated outside of proc_entry/proc_exit anyway.

git-svn-id: trunk@21808 -
masta 13 роки тому
батько
коміт
9825fbf554
1 змінених файлів з 5 додано та 1 видалено
  1. 5 1
      compiler/aoptbase.pas

+ 5 - 1
compiler/aoptbase.pas

@@ -129,7 +129,11 @@ unit aoptbase;
     Begin
       Case op.typ Of
         Top_Reg: RegInOp := Reg = op.reg;
-        Top_Ref: RegInOp := RegInRef(Reg, op.ref^)
+        Top_Ref: RegInOp := RegInRef(Reg, op.ref^);
+        {$ifdef arm}
+        Top_Shifterop: RegInOp := op.shifterop^.rs = Reg;
+        Top_RegSet: RegInOp := getsupreg(Reg) in op.regset^;
+        {$endif arm}
         Else RegInOp := False
       End
     End;