diff options
author | Mark Mitchell <mark@codesourcery.com> | 2001-04-30 15:09:51 +0000 |
---|---|---|
committer | Mark Mitchell <mmitchel@gcc.gnu.org> | 2001-04-30 15:09:51 +0000 |
commit | d60e54483d5049e875f94c703f47738605633e51 (patch) | |
tree | 68c63569a6f9b3ecbd97a32561f3d1cb8f8b7e19 /gcc/regmove.c | |
parent | fea633fdfb15a45c811db7fcbfc8aa7b43713f40 (diff) | |
download | gcc-d60e54483d5049e875f94c703f47738605633e51.zip gcc-d60e54483d5049e875f94c703f47738605633e51.tar.gz gcc-d60e54483d5049e875f94c703f47738605633e51.tar.bz2 |
regmove.c (record_stack_memrefs): Catch all references to the stack pointer.
* regmove.c (record_stack_memrefs): Catch all references to the
stack pointer.
* optimize.c (update_cloned_parm): New function.
(maybe_clone_body): Use it. Update the `this' parameter too.
* gcc.dg/20000724-1.c: Add a clobber of `esp'.
From-SVN: r41687
Diffstat (limited to 'gcc/regmove.c')
-rw-r--r-- | gcc/regmove.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/gcc/regmove.c b/gcc/regmove.c index 2e0fa9e..bb22700 100644 --- a/gcc/regmove.c +++ b/gcc/regmove.c @@ -2303,11 +2303,16 @@ record_stack_memrefs (xp, data) } return 1; case REG: - /* ??? We want be able to handle non-memory stack pointer references - later. For now just discard all insns refering to stack pointer - outside mem expressions. We would probably want to teach - validate_replace to simplify expressions first. */ - if (x == stack_pointer_rtx) + /* ??? We want be able to handle non-memory stack pointer + references later. For now just discard all insns refering to + stack pointer outside mem expressions. We would probably + want to teach validate_replace to simplify expressions first. + + We can't just compare with STACK_POINTER_RTX because the + reference to the stack pointer might be in some other mode. + In particular, an explict clobber in an asm statement will + result in a QImode clober. */ + if (REGNO (x) == STACK_POINTER_REGNUM) return 1; break; default: |