Pessimisively assume ADJCALLSTACKDOWN / ADJCALLSTACKUP (which becomes sub / add)...
authorEvan Cheng <evan.cheng@apple.com>
Fri, 28 Sep 2007 01:19:48 +0000 (01:19 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Fri, 28 Sep 2007 01:19:48 +0000 (01:19 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42426 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86InstrInfo.td

index 126677d40742fa41e2cc97dced3b53ab51da9797..88f3b09c8e5b272a633ca56b3973b4b7a1c61a68 100644 (file)
@@ -261,7 +261,9 @@ def extloadi32i16  : PatFrag<(ops node:$ptr), (i32 (extloadi16 node:$ptr))>;
 // ADJCALLSTACKDOWN/UP implicitly use/def ESP because they may be expanded into
 // a stack adjustment and the codegen must know that they may modify the stack
 // pointer before prolog-epilog rewriting occurs.
-let Defs = [ESP], Uses = [ESP] in {
+// Pessimisively assume ADJCALLSTACKDOWN / ADJCALLSTACKUP will become sub / add
+// which can clobber EFLAGS.
+let Defs = [ESP, EFLAGS], Uses = [ESP] in {
 def ADJCALLSTACKDOWN : I<0, Pseudo, (outs), (ins i32imm:$amt), "#ADJCALLSTACKDOWN",
                          [(X86callseq_start imm:$amt)]>;
 def ADJCALLSTACKUP   : I<0, Pseudo, (outs), (ins i32imm:$amt1, i32imm:$amt2),