diff options
author | David Edelsohn <dje@gcc.gnu.org> | 2002-02-19 23:56:34 -0500 |
---|---|---|
committer | David Edelsohn <dje@gcc.gnu.org> | 2002-02-19 23:56:34 -0500 |
commit | c1f1154803699211270deea00b9f23aefe0e4cb5 (patch) | |
tree | f88a25ed7d6c3b071bec470009f6fee9a96b1487 /gcc | |
parent | d1cfac5b6e7292c116668575741c0a95addd6091 (diff) | |
download | gcc-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/ChangeLog | 12 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 10 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.h | 7 |
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; \ |