diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4bb936d2239..a79b9806fb0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2003-03-04 Steve Ellcey + + * expr.c (expand_expr): Call promote_mode to set unsignedp. + 2003-03-04 Daniel Jacobowitz * configure.in: Don't always define TARGET_SYSTEM_ROOT. diff --git a/gcc/expr.c b/gcc/expr.c index 9643a558c73..39940cb609d 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -6883,12 +6883,12 @@ expand_expr (exp, target, tmode, modifier) /* If the mode of TEMP does not match that of the expression, it must be a promoted value. We pass store_expr a SUBREG of the wanted mode but mark it so that we know that it was already - extended. Note that `unsignedp' was modified above in - this case. */ + extended. */ if (GET_CODE (temp) == REG && GET_MODE (temp) != mode) { temp = gen_lowpart_SUBREG (mode, SAVE_EXPR_RTL (exp)); + promote_mode (type, mode, &unsignedp, 0); SUBREG_PROMOTED_VAR_P (temp) = 1; SUBREG_PROMOTED_UNSIGNED_SET (temp, unsignedp); }