aboutsummaryrefslogtreecommitdiff
path: root/gcc/loop.c
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>2002-02-22 16:18:25 -0500
committerRichard Kenner <kenner@gcc.gnu.org>2002-02-22 16:18:25 -0500
commitb76b08ef94598e7fe6ef2ec3550f03c7bb1e1e7f (patch)
tree4650717d3b5700502979ec67e579bd50629ce350 /gcc/loop.c
parent3256b817fc4df76420ab88b8f83dabeb66939360 (diff)
downloadgcc-b76b08ef94598e7fe6ef2ec3550f03c7bb1e1e7f.zip
gcc-b76b08ef94598e7fe6ef2ec3550f03c7bb1e1e7f.tar.gz
gcc-b76b08ef94598e7fe6ef2ec3550f03c7bb1e1e7f.tar.bz2
expr.c (store_expr): When converting expression to promoted equivalent type...
* expr.c (store_expr): When converting expression to promoted equivalent type, allow using SUBREG_REG of TARGET as the target of the expansion of EXP. * loop.c (basic_induction_var, case SUBREG): Always look inside. * config/alpha/alpha.c (rtx_equiv_function_matters): Delete decl. (alpha_emit_set_const): Handle SImode when can't make new pseudos. (alpha_emit_set_const_1, alpha_sa_mask): Use no_new_pseudos. * config/alpha/alpha.md (addsi3, subsi3): Don't use if optimizing. From-SVN: r49972
Diffstat (limited to 'gcc/loop.c')
-rw-r--r--gcc/loop.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/gcc/loop.c b/gcc/loop.c
index f675a87..68ef439 100644
--- a/gcc/loop.c
+++ b/gcc/loop.c
@@ -6127,13 +6127,13 @@ basic_induction_var (loop, x, mode, dest_reg, p, inc_val, mult_val, location)
return 1;
case SUBREG:
- /* If this is a SUBREG for a promoted variable, check the inner
- value. */
- if (SUBREG_PROMOTED_VAR_P (x))
- return basic_induction_var (loop, SUBREG_REG (x),
- GET_MODE (SUBREG_REG (x)),
- dest_reg, p, inc_val, mult_val, location);
- return 0;
+ /* If what's inside the SUBREG is a BIV, then the SUBREG. This will
+ handle addition of promoted variables.
+ ??? The comment at the start of this function is wrong: promoted
+ variable increments don't look like it says they do. */
+ return basic_induction_var (loop, SUBREG_REG (x),
+ GET_MODE (SUBREG_REG (x)),
+ dest_reg, p, inc_val, mult_val, location);
case REG:
/* If this register is assigned in a previous insn, look at its