[llvm-commits] CVS: llvm/lib/Target/X86/X86InstrInfo.td

Chris Lattner sabre at nondot.org
Thu Oct 12 10:43:11 PDT 2006



Changes in directory llvm/lib/Target/X86:

X86InstrInfo.td updated: 1.289 -> 1.290
---
Log message:

Mark ADJCALLSTACKUP/DOWN as clobbering ESP so that virtregmap will notice
that it can't assume ESP is unmodified across the instrs.


---
Diffs of the changes:  (+6 -2)

 X86InstrInfo.td |    8 ++++++--
 1 files changed, 6 insertions(+), 2 deletions(-)


Index: llvm/lib/Target/X86/X86InstrInfo.td
diff -u llvm/lib/Target/X86/X86InstrInfo.td:1.289 llvm/lib/Target/X86/X86InstrInfo.td:1.290
--- llvm/lib/Target/X86/X86InstrInfo.td:1.289	Wed Oct 11 16:03:53 2006
+++ llvm/lib/Target/X86/X86InstrInfo.td	Thu Oct 12 12:42:56 2006
@@ -346,11 +346,15 @@
 // Instruction list...
 //
 
+// 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.
 def ADJCALLSTACKDOWN : I<0, Pseudo, (ops i32imm:$amt), "#ADJCALLSTACKDOWN",
-                         [(X86callseq_start imm:$amt)]>;
+                         [(X86callseq_start imm:$amt)]>, Imp<[ESP],[ESP]>;
 def ADJCALLSTACKUP   : I<0, Pseudo, (ops i32imm:$amt1, i32imm:$amt2),
                          "#ADJCALLSTACKUP",
-                         [(X86callseq_end imm:$amt1, imm:$amt2)]>;
+                         [(X86callseq_end imm:$amt1, imm:$amt2)]>,
+                         Imp<[ESP],[ESP]>;
 def IMPLICIT_USE     : I<0, Pseudo, (ops variable_ops), "#IMPLICIT_USE", []>;
 def IMPLICIT_DEF     : I<0, Pseudo, (ops variable_ops), "#IMPLICIT_DEF", []>;
 def IMPLICIT_DEF_GR8  : I<0, Pseudo, (ops GR8:$dst),






More information about the llvm-commits mailing list