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

Evan Cheng evan.cheng at apple.com
Thu Oct 12 12:16:55 PDT 2006


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 at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits




More information about the llvm-commits mailing list