diff options
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/expr.c | 5 |
2 files changed, 9 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8b89c11..fb7509c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2011-05-18 Michael Matz <matz@suse.de> + Steve Ellcey <sje@cup.hp.com> + + * expr.c (expand_expr_real_2): Use GET_MODE instead of TYPE_MODE. + 2011-04-18 Dennis, CHENG Renquan <crquan@fedoraproject.org> * doc/passes.texi: Fill crossref nodes. @@ -7360,7 +7360,10 @@ expand_expr_real_2 (sepops ops, rtx target, enum machine_mode tmode, else if (CONSTANT_P (op0)) { tree inner_type = TREE_TYPE (treeop0); - enum machine_mode inner_mode = TYPE_MODE (inner_type); + enum machine_mode inner_mode = GET_MODE (op0); + + if (inner_mode == VOIDmode) + inner_mode = TYPE_MODE (inner_type); if (modifier == EXPAND_INITIALIZER) op0 = simplify_gen_subreg (mode, op0, inner_mode, |