(expand_expr, case CONVERT_EXPR): If changing signedness and we have a

promoted SUBREG, clear the promotion flag.

From-SVN: r7686
This commit is contained in:
Richard Kenner 1994-07-08 18:22:46 -04:00
parent 6be583037c
commit 5069803972

View File

@ -4699,7 +4699,19 @@ expand_expr (exp, target, tmode, modifier)
case CONVERT_EXPR:
case REFERENCE_EXPR:
if (mode == TYPE_MODE (TREE_TYPE (TREE_OPERAND (exp, 0))))
return expand_expr (TREE_OPERAND (exp, 0), target, VOIDmode, modifier);
{
op0 = expand_expr (TREE_OPERAND (exp, 0), target, VOIDmode,
modifier);
/* If the signedness of the conversion differs and OP0 is
a promoted SUBREG, clear that indication since we now
have to do the proper extension. */
if (TREE_UNSIGNED (TREE_TYPE (TREE_OPERAND (exp, 0))) != unsignedp
&& GET_CODE (op0) == SUBREG)
SUBREG_PROMOTED_VAR_P (op0) = 0;
return op0;
}
if (TREE_CODE (type) == UNION_TYPE)
{