瀏覽代碼

+ support the cwd,cdq,cqo and cbw instructions in
TX86AsmOptimizer.RegLoadedWithNewValue (cwde and cdqe don't need special
support)

git-svn-id: trunk@36077 -

nickysn 8 年之前
父節點
當前提交
eac74f5a81
共有 1 個文件被更改,包括 7 次插入2 次删除
  1. 7 2
      compiler/x86/aoptx86.pas

+ 7 - 2
compiler/x86/aoptx86.pas

@@ -451,8 +451,13 @@ unit aoptx86;
 {$ifdef x86_64}
          or ((p.opsize=S_Q) and Reg1WriteOverwritesReg2Entirely(NR_RDX,reg))
 {$endif x86_64}
-           )
-          );
+           )) or
+          ((p.opcode = A_CWD) and Reg1WriteOverwritesReg2Entirely(NR_DX,reg)) or
+          ((p.opcode = A_CDQ) and Reg1WriteOverwritesReg2Entirely(NR_EDX,reg)) or
+{$ifdef x86_64}
+          ((p.opcode = A_CQO) and Reg1WriteOverwritesReg2Entirely(NR_RDX,reg)) or
+{$endif x86_64}
+          ((p.opcode = A_CBW) and Reg1WriteOverwritesReg2Entirely(NR_AX,reg) and not(Reg1ReadDependsOnReg2(NR_AL,reg)));
       end;