aboutsummaryrefslogtreecommitdiff
path: root/gcc/expr.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/expr.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/expr.c')
-rw-r--r--gcc/expr.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/expr.c b/gcc/expr.c
index b730435..bcc76bc 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -3989,6 +3989,8 @@ store_expr (exp, target, want_value)
and then convert to the wider mode. Our value is the computed
expression. */
{
+ rtx inner_target = 0;
+
/* If we don't want a value, we can do the conversion inside EXP,
which will often result in some optimizations. Do the conversion
in two steps: first change the signedness, if needed, then
@@ -4009,9 +4011,11 @@ store_expr (exp, target, want_value)
exp = convert (type_for_mode (GET_MODE (SUBREG_REG (target)),
SUBREG_PROMOTED_UNSIGNED_P (target)),
exp);
+
+ inner_target = SUBREG_REG (target);
}
- temp = expand_expr (exp, NULL_RTX, VOIDmode, 0);
+ temp = expand_expr (exp, inner_target, VOIDmode, 0);
/* If TEMP is a volatile MEM and we want a result value, make
the access now so it gets done only once. Likewise if