Commit 0d15e60c by Richard Kenner

(get_inner_reference): Fix type error.

(expand_expr, case COMPONENT_REF): Don't convert if modifier
is EXPAND_CONST_ADDRESS, EXPAND_SUM, or EXPAND_INITIALIZER.

From-SVN: r13375
parent 5cb1f2fa
...@@ -4304,7 +4304,8 @@ get_inner_reference (exp, pbitsize, pbitpos, poffset, pmode, ...@@ -4304,7 +4304,8 @@ get_inner_reference (exp, pbitsize, pbitpos, poffset, pmode,
} }
index = fold (build (MULT_EXPR, index_type, index, index = fold (build (MULT_EXPR, index_type, index,
TYPE_SIZE (TREE_TYPE (exp)))); convert (index_type,
TYPE_SIZE (TREE_TYPE (exp)))));
if (TREE_CODE (index) == INTEGER_CST if (TREE_CODE (index) == INTEGER_CST
&& TREE_INT_CST_HIGH (index) == 0) && TREE_INT_CST_HIGH (index) == 0)
...@@ -5670,10 +5671,13 @@ expand_expr (exp, target, tmode, modifier) ...@@ -5670,10 +5671,13 @@ expand_expr (exp, target, tmode, modifier)
MEM_IN_STRUCT_P (op0) = 1; MEM_IN_STRUCT_P (op0) = 1;
MEM_VOLATILE_P (op0) |= volatilep; MEM_VOLATILE_P (op0) |= volatilep;
if (mode == mode1 || mode1 == BLKmode || mode1 == tmode) if (mode == mode1 || mode1 == BLKmode || mode1 == tmode
|| modifier == EXPAND_CONST_ADDRESS || modifier == EXPAND_SUM
|| modifier == EXPAND_INITIALIZER)
return op0; return op0;
if (target == 0) else if (target == 0)
target = gen_reg_rtx (tmode != VOIDmode ? tmode : mode); target = gen_reg_rtx (tmode != VOIDmode ? tmode : mode);
convert_move (target, op0, unsignedp); convert_move (target, op0, unsignedp);
return target; return target;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment