In 64-bit, stack ptr is RSP. But I suppose that is ok since ESP / RSP overlaps?
Evan On Oct 12, 2006, at 10:43 AM, Chris Lattner wrote: > > > 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), > > > > _______________________________________________ > llvm-commits mailing list > llvm-commits@cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits