From: Nathan Froyd Date: Sat, 1 Nov 2008 02:22:55 +0000 (+0000) Subject: rs6000.c (no_global_regs_above): Fix precedence problem. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=19ce673106ac50203824077718aee488a4945327;p=gcc.git rs6000.c (no_global_regs_above): Fix precedence problem. * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence problem. (rs6000_emit_prologue): Invert logic. * config/rs6000/rs6000.md (*save_gpregs_): Use explicit (reg:P 11) instead of match_operand. (*save_fpregs_): Likewise. (*restore_gpregs_): Likewise. (*return_and_restore_gpregs_): Likewise. (*return_and_restore_fpregs_): Likewise. * config/rs6000/spe.md (*save_gpregs_spe): Use explicit (reg:P 11) insted of match_operand. (*restore_gpregs_spe): Likewise. (*return_and_restore_gpregs_spe): Likewise. From-SVN: r141508 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5af239d9b5a..4451a60fe7b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,19 @@ +2008-10-31 Nathan Froyd + + * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence + problem. + (rs6000_emit_prologue): Invert logic. + * config/rs6000/rs6000.md (*save_gpregs_): Use explicit + (reg:P 11) instead of match_operand. + (*save_fpregs_): Likewise. + (*restore_gpregs_): Likewise. + (*return_and_restore_gpregs_): Likewise. + (*return_and_restore_fpregs_): Likewise. + * config/rs6000/spe.md (*save_gpregs_spe): Use explicit + (reg:P 11) insted of match_operand. + (*restore_gpregs_spe): Likewise. + (*return_and_restore_gpregs_spe): Likewise. + 2008-10-28 Luis Machado * gcc.h (DEFAULT_WORD_SWITCH_TAKES_ARG): Add "dumpbase" to the diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 6df7aa79732..a4eeb0e8dba 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -15839,7 +15839,8 @@ static bool no_global_regs_above (int first, bool gpr) { int i; - for (i = first; i < gpr ? 32 : 64 ; i++) + int last = gpr ? 32 : 64; + for (i = first; i < last; i++) if (global_regs[i]) return false; return true; @@ -16118,7 +16119,7 @@ rs6000_emit_prologue (void) int using_store_multiple; int using_static_chain_p = (cfun->static_chain_decl != NULL_TREE && df_regs_ever_live_p (STATIC_CHAIN_REGNUM) - && !call_used_regs[STATIC_CHAIN_REGNUM]); + && call_used_regs[STATIC_CHAIN_REGNUM]); HOST_WIDE_INT sp_offset = 0; if (TARGET_FIX_AND_CONTINUE) diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index 4fa690d8097..46ff6b7a4b3 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -14604,9 +14604,9 @@ [(match_parallel 0 "any_parallel_operand" [(clobber (reg:P 65)) (use (match_operand:P 1 "symbol_ref_operand" "s")) - (use (match_operand:P 2 "gpc_reg_operand" "r")) - (set (match_operand:P 3 "memory_operand" "=m") - (match_operand:P 4 "gpc_reg_operand" "r"))])] + (use (reg:P 11)) + (set (match_operand:P 2 "memory_operand" "=m") + (match_operand:P 3 "gpc_reg_operand" "r"))])] "" "bl %z1" [(set_attr "type" "branch") @@ -14616,9 +14616,9 @@ [(match_parallel 0 "any_parallel_operand" [(clobber (reg:P 65)) (use (match_operand:P 1 "symbol_ref_operand" "s")) - (use (match_operand:P 2 "gpc_reg_operand" "r")) - (set (match_operand:DF 3 "memory_operand" "=m") - (match_operand:DF 4 "gpc_reg_operand" "f"))])] + (use (reg:P 11)) + (set (match_operand:DF 2 "memory_operand" "=m") + (match_operand:DF 3 "gpc_reg_operand" "f"))])] "" "bl %z1" [(set_attr "type" "branch") @@ -14711,9 +14711,9 @@ [(match_parallel 0 "any_parallel_operand" [(clobber (match_operand:P 1 "register_operand" "=l")) (use (match_operand:P 2 "symbol_ref_operand" "s")) - (use (match_operand:P 3 "gpc_reg_operand" "r")) - (set (match_operand:P 4 "gpc_reg_operand" "=r") - (match_operand:P 5 "memory_operand" "m"))])] + (use (reg:P 11)) + (set (match_operand:P 3 "gpc_reg_operand" "=r") + (match_operand:P 4 "memory_operand" "m"))])] "" "bl %z2" [(set_attr "type" "branch") @@ -14724,9 +14724,9 @@ [(return) (clobber (match_operand:P 1 "register_operand" "=l")) (use (match_operand:P 2 "symbol_ref_operand" "s")) - (use (match_operand:P 3 "gpc_reg_operand" "r")) - (set (match_operand:P 4 "gpc_reg_operand" "=r") - (match_operand:P 5 "memory_operand" "m"))])] + (use (reg:P 11)) + (set (match_operand:P 3 "gpc_reg_operand" "=r") + (match_operand:P 4 "memory_operand" "m"))])] "" "b %z2" [(set_attr "type" "branch") @@ -14737,9 +14737,9 @@ [(return) (clobber (match_operand:P 1 "register_operand" "=l")) (use (match_operand:P 2 "symbol_ref_operand" "s")) - (use (match_operand:P 3 "gpc_reg_operand" "r")) - (set (match_operand:DF 4 "gpc_reg_operand" "=f") - (match_operand:DF 5 "memory_operand" "m"))])] + (use (reg:P 11)) + (set (match_operand:DF 3 "gpc_reg_operand" "=f") + (match_operand:DF 4 "memory_operand" "m"))])] "" "b %z2" [(set_attr "type" "branch") diff --git a/gcc/config/rs6000/spe.md b/gcc/config/rs6000/spe.md index 96be255895b..c87d67ea47f 100644 --- a/gcc/config/rs6000/spe.md +++ b/gcc/config/rs6000/spe.md @@ -3144,9 +3144,9 @@ [(match_parallel 0 "any_parallel_operand" [(clobber (reg:P 65)) (use (match_operand:P 1 "symbol_ref_operand" "s")) - (use (match_operand:P 2 "gpc_reg_operand" "r")) - (set (match_operand:V2SI 3 "memory_operand" "=m") - (match_operand:V2SI 4 "gpc_reg_operand" "r"))])] + (use (reg:P 11)) + (set (match_operand:V2SI 2 "memory_operand" "=m") + (match_operand:V2SI 3 "gpc_reg_operand" "r"))])] "TARGET_SPE_ABI" "bl %z1" [(set_attr "type" "branch") @@ -3156,9 +3156,9 @@ [(match_parallel 0 "any_parallel_operand" [(clobber (reg:P 65)) (use (match_operand:P 1 "symbol_ref_operand" "s")) - (use (match_operand:P 2 "gpc_reg_operand" "r")) - (set (match_operand:V2SI 3 "gpc_reg_operand" "=r") - (match_operand:V2SI 4 "memory_operand" "m"))])] + (use (reg:P 11)) + (set (match_operand:V2SI 2 "gpc_reg_operand" "=r") + (match_operand:V2SI 3 "memory_operand" "m"))])] "TARGET_SPE_ABI" "bl %z1" [(set_attr "type" "branch") @@ -3169,9 +3169,9 @@ [(return) (clobber (reg:P 65)) (use (match_operand:P 1 "symbol_ref_operand" "s")) - (use (match_operand:P 2 "gpc_reg_operand" "r")) - (set (match_operand:V2SI 3 "gpc_reg_operand" "=r") - (match_operand:V2SI 4 "memory_operand" "m"))])] + (use (reg:P 11)) + (set (match_operand:V2SI 2 "gpc_reg_operand" "=r") + (match_operand:V2SI 3 "memory_operand" "m"))])] "TARGET_SPE_ABI" "b %z1" [(set_attr "type" "branch")