aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDavid Edelsohn <dje@gcc.gnu.org>2002-02-19 23:56:34 -0500
committerDavid Edelsohn <dje@gcc.gnu.org>2002-02-19 23:56:34 -0500
commitc1f1154803699211270deea00b9f23aefe0e4cb5 (patch)
treef88a25ed7d6c3b071bec470009f6fee9a96b1487 /gcc
parentd1cfac5b6e7292c116668575741c0a95addd6091 (diff)
downloadgcc-c1f1154803699211270deea00b9f23aefe0e4cb5.zip
gcc-c1f1154803699211270deea00b9f23aefe0e4cb5.tar.gz
gcc-c1f1154803699211270deea00b9f23aefe0e4cb5.tar.bz2
[multiple changes]
2002-02-19 David Edelsohn <edelsohn@gnu.org> * config/rs6000/rs6000.h (CONDITIONAL_REGISTER_USAGE): Set really_call_used[VRSAVE_REGNO] if not Altivec. 2002-02-19 Alan Modra <amodra@bigpond.net.au> * config/rs6000/rs6000.c (u_short_cint_operand): Mask op with MODE_MASK. (constant_pool_expr_1): Fix formatting. (rs6000_legitimize_reload_address): Likewise. From-SVN: r49890
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog12
-rw-r--r--gcc/config/rs6000/rs6000.c10
-rw-r--r--gcc/config/rs6000/rs6000.h7
3 files changed, 22 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 5123092..55f0d4f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,15 @@
+2002-02-19 David Edelsohn <edelsohn@gnu.org>
+
+ * config/rs6000/rs6000.h (CONDITIONAL_REGISTER_USAGE): Set
+ really_call_used[VRSAVE_REGNO] if not Altivec.
+
+2002-02-19 Alan Modra <amodra@bigpond.net.au>
+
+ * config/rs6000/rs6000.c (u_short_cint_operand): Mask op with
+ MODE_MASK.
+ (constant_pool_expr_1): Fix formatting.
+ (rs6000_legitimize_reload_address): Likewise.
+
Tue Feb 19 20:13:57 2002 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* config/sparc/sparc.md (nonlocal_goto): Use hard_frame_pointer_rtx
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 5e3a735..1b18020 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -769,7 +769,7 @@ u_short_cint_operand (op, mode)
enum machine_mode mode ATTRIBUTE_UNUSED;
{
return (GET_CODE (op) == CONST_INT
- && CONST_OK_FOR_LETTER_P (INTVAL (op), 'K'));
+ && CONST_OK_FOR_LETTER_P (INTVAL (op) & GET_MODE_MASK (mode), 'K'));
}
/* Return 1 if OP is a CONST_INT that cannot fit in a signed D field. */
@@ -1711,8 +1711,8 @@ constant_pool_expr_1 (op, have_sym, have_toc)
return 0;
case PLUS:
case MINUS:
- return constant_pool_expr_1 (XEXP (op, 0), have_sym, have_toc) &&
- constant_pool_expr_1 (XEXP (op, 1), have_sym, have_toc);
+ return (constant_pool_expr_1 (XEXP (op, 0), have_sym, have_toc)
+ && constant_pool_expr_1 (XEXP (op, 1), have_sym, have_toc));
case CONST:
return constant_pool_expr_1 (XEXP (op, 0), have_sym, have_toc);
case CONST_INT:
@@ -1960,8 +1960,8 @@ rs6000_legitimize_reload_address (x, mode, opnum, type, ind_levels, win)
}
#endif
if (TARGET_TOC
- && CONSTANT_POOL_EXPR_P (x)
- && ASM_OUTPUT_SPECIAL_POOL_ENTRY_P (get_pool_constant (x), mode))
+ && CONSTANT_POOL_EXPR_P (x)
+ && ASM_OUTPUT_SPECIAL_POOL_ENTRY_P (get_pool_constant (x), mode))
{
(x) = create_TOC_reference (x);
*win = 1;
diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h
index cdbe336..b00e549 100644
--- a/gcc/config/rs6000/rs6000.h
+++ b/gcc/config/rs6000/rs6000.h
@@ -970,8 +970,11 @@ extern int rs6000_altivec_abi;
= call_used_regs[PIC_OFFSET_TABLE_REGNUM] \
= call_really_used_regs[PIC_OFFSET_TABLE_REGNUM] = 1; \
if (! TARGET_ALTIVEC) \
- for (i = FIRST_ALTIVEC_REGNO; i <= LAST_ALTIVEC_REGNO; ++i) \
- fixed_regs[i] = call_used_regs[i] = call_really_used_regs[i] = 1; \
+ { \
+ for (i = FIRST_ALTIVEC_REGNO; i <= LAST_ALTIVEC_REGNO; ++i) \
+ fixed_regs[i] = call_used_regs[i] = call_really_used_regs[i] = 1; \
+ call_really_used_regs[VRSAVE_REGNO] = 1; \
+ } \
if (TARGET_ALTIVEC_ABI) \
for (i = FIRST_ALTIVEC_REGNO; i < FIRST_ALTIVEC_REGNO + 20; ++i) \
call_used_regs[i] = call_really_used_regs[i] = 1; \