diff options
author | Richard Biener <rguenther@suse.de> | 2015-10-09 08:12:18 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2015-10-09 08:12:18 +0000 |
commit | c0f6274015fa8bc650f9ded206c1a0f602b1254d (patch) | |
tree | a54ff8c6d5c8ec6eb2b4f543dcefbd2c343e3444 /gcc/gimple-fold.c | |
parent | 2795c84a46d65e5a4bbb548438da597c5863cad9 (diff) | |
download | gcc-c0f6274015fa8bc650f9ded206c1a0f602b1254d.zip gcc-c0f6274015fa8bc650f9ded206c1a0f602b1254d.tar.gz gcc-c0f6274015fa8bc650f9ded206c1a0f602b1254d.tar.bz2 |
re PR middle-end/67891 (FAIL: gcc.dg/pr43300.c (internal compiler error) on alpha-linux-gnu)
2015-10-09 Richard Biener <rguenther@suse.de>
PR tree-optimization/67891
* gimple-match.h (gimple_simplified_result_is_gimple_val):
New helper.
(gimple_resimplify1): Declare.
(gimple_resimplify2): Likewise.
(gimple_resimplify3): Likewise.
* gimple-match-head.c (gimple_resimplify1): Export.
(gimple_resimplify2): Likewise.
(gimple_resimplify3): Likewise.
(maybe_push_res_to_seq): Use gimple_simplified_result_is_gimple_val.
* gimple-fold.c (gimple_fold_stmt_to_constant_1): Likewise.
* tree-ssa-sccvn.c (visit_reference_op_load): Use gimple_resimplify1
to avoid creating stmts without VN info.
* gcc.dg/tree-ssa/pr67891.c: New testcase.
From-SVN: r228635
Diffstat (limited to 'gcc/gimple-fold.c')
-rw-r--r-- | gcc/gimple-fold.c | 5 |
1 files changed, 1 insertions, 4 deletions
diff --git a/gcc/gimple-fold.c b/gcc/gimple-fold.c index 0292f04..ee2a320 100644 --- a/gcc/gimple-fold.c +++ b/gcc/gimple-fold.c @@ -4926,10 +4926,7 @@ gimple_fold_stmt_to_constant_1 (gimple *stmt, tree (*valueize) (tree), if (gimple_simplify (stmt, &rcode, ops, NULL, gvalueize, valueize)) { tree res = NULL_TREE; - if (rcode.is_tree_code () - && (TREE_CODE_LENGTH ((tree_code) rcode) == 0 - || ((tree_code) rcode) == ADDR_EXPR) - && is_gimple_val (ops[0])) + if (gimple_simplified_result_is_gimple_val (rcode, ops)) res = ops[0]; else if (mprts_hook) res = mprts_hook (rcode, gimple_expr_type (stmt), ops); |