diff options
author | David Edelsohn <edelsohn@gnu.org> | 2007-03-25 12:44:40 +0000 |
---|---|---|
committer | David Edelsohn <dje@gcc.gnu.org> | 2007-03-25 08:44:40 -0400 |
commit | a5ad201780aeaec0ef6698bb7fa2e6e8c4c7a4e7 (patch) | |
tree | 0d2f854daab109343695917219a8dca580cf1572 /gcc | |
parent | 5773afc5b5b659bc20842e72627b492023d65cb5 (diff) | |
download | gcc-a5ad201780aeaec0ef6698bb7fa2e6e8c4c7a4e7.zip gcc-a5ad201780aeaec0ef6698bb7fa2e6e8c4c7a4e7.tar.gz gcc-a5ad201780aeaec0ef6698bb7fa2e6e8c4c7a4e7.tar.bz2 |
rs6000.c (rs6000_emit_prologue): Always clobber LR in SImode for save_world.
* config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
in SImode for save_world.
* config/rs6000/altivec.md (save_world, restore_world): Convert to
LR hard reg.
From-SVN: r123198
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/rs6000/altivec.md | 12 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 2 |
3 files changed, 14 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fa1e4b3..6f2c3dc 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2007-03-25 David Edelsohn <edelsohn@gnu.org> + + * config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR + in SImode for save_world. + * config/rs6000/altivec.md (save_world, restore_world): Convert to + LR hard reg. + 2007-03-25 Dorit Nuzman <dorit@il.ibm.com> PR tree-optimization/30784 diff --git a/gcc/config/rs6000/altivec.md b/gcc/config/rs6000/altivec.md index 072e813..1c1d6a6 100644 --- a/gcc/config/rs6000/altivec.md +++ b/gcc/config/rs6000/altivec.md @@ -302,10 +302,10 @@ (define_insn "*save_world" [(match_parallel 0 "save_world_operation" - [(clobber (match_operand:SI 1 "register_operand" "=l")) - (use (match_operand:SI 2 "call_operand" "s"))])] + [(clobber (reg:SI 65)) + (use (match_operand:SI 1 "call_operand" "s"))])] "TARGET_MACHO && (DEFAULT_ABI == ABI_DARWIN) && TARGET_32BIT" - "bl %z2" + "bl %z1" [(set_attr "type" "branch") (set_attr "length" "4")]) @@ -313,10 +313,10 @@ [(match_parallel 0 "restore_world_operation" [(return) (use (reg:SI 65)) - (use (match_operand:SI 2 "call_operand" "s")) - (clobber (match_operand:SI 3 "gpc_reg_operand" "=r"))])] + (use (match_operand:SI 1 "call_operand" "s")) + (clobber (match_operand:SI 2 "gpc_reg_operand" "=r"))])] "TARGET_MACHO && (DEFAULT_ABI == ABI_DARWIN) && TARGET_32BIT" - "b %z2") + "b %z1") ;; Simple binary operations. diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 51ee7c0..43ee19e 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -14727,7 +14727,7 @@ rs6000_emit_prologue (void) p = rtvec_alloc (sz); j = 0; RTVEC_ELT (p, j++) = gen_rtx_CLOBBER (VOIDmode, - gen_rtx_REG (Pmode, + gen_rtx_REG (SImode, LINK_REGISTER_REGNUM)); RTVEC_ELT (p, j++) = gen_rtx_USE (VOIDmode, gen_rtx_SYMBOL_REF (Pmode, |