aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDavid Edelsohn <edelsohn@gnu.org>2007-03-25 12:44:40 +0000
committerDavid Edelsohn <dje@gcc.gnu.org>2007-03-25 08:44:40 -0400
commita5ad201780aeaec0ef6698bb7fa2e6e8c4c7a4e7 (patch)
tree0d2f854daab109343695917219a8dca580cf1572 /gcc
parent5773afc5b5b659bc20842e72627b492023d65cb5 (diff)
downloadgcc-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/ChangeLog7
-rw-r--r--gcc/config/rs6000/altivec.md12
-rw-r--r--gcc/config/rs6000/rs6000.c2
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,