diff options
author | Richard Guenther <rguenther@suse.de> | 2009-05-26 14:17:38 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2009-05-26 14:17:38 +0000 |
commit | f0cfd3a8e01edddc3550e5de450c3b51f5f076cf (patch) | |
tree | d2fc276e61ce4cdbfd1c7a5ba40b69a785dd6cc0 /gcc/expr.c | |
parent | 7980bfb8293cd3de3c157c144730ad2282316b18 (diff) | |
download | gcc-f0cfd3a8e01edddc3550e5de450c3b51f5f076cf.zip gcc-f0cfd3a8e01edddc3550e5de450c3b51f5f076cf.tar.gz gcc-f0cfd3a8e01edddc3550e5de450c3b51f5f076cf.tar.bz2 |
re PR middle-end/40248 (FAIL: gcc.c-torture/compile/20090518-1.c at -O1 and above)
2009-05-26 Richard Guenther <rguenther@suse.de>
PR middle-end/40248
Revert
* expr.c (expand_expr_real_1): Avoid calling do_store_flag
with mismatched comparison modes.
* expr.c (expand_expr_real_1): Expand the operand of a
VIEW_CONVERT_EXPR in its natural mode.
From-SVN: r147874
Diffstat (limited to 'gcc/expr.c')
-rw-r--r-- | gcc/expr.c | 10 |
1 files changed, 3 insertions, 7 deletions
@@ -8248,7 +8248,8 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode, } if (!op0) - op0 = expand_expr (TREE_OPERAND (exp, 0), NULL_RTX, mode, modifier); + op0 = expand_expr (TREE_OPERAND (exp, 0), + NULL_RTX, VOIDmode, modifier); /* If the input and output modes are both the same, we are done. */ if (mode == GET_MODE (op0)) @@ -9042,12 +9043,7 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode, case LTGT_EXPR: temp = do_store_flag (exp, modifier != EXPAND_STACK_PARM ? target : NULL_RTX, - (tmode != VOIDmode - /* do_store_flag does not handle target modes - of a different class than the comparison mode. - Avoid ICEing in convert_move. */ - && GET_MODE_CLASS (tmode) == GET_MODE_CLASS (mode)) - ? tmode : mode); + tmode != VOIDmode ? tmode : mode); if (temp != 0) return temp; |