From c0f6274015fa8bc650f9ded206c1a0f602b1254d Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Fri, 9 Oct 2015 08:12:18 +0000 Subject: re PR middle-end/67891 (FAIL: gcc.dg/pr43300.c (internal compiler error) on alpha-linux-gnu) 2015-10-09 Richard Biener 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 --- gcc/gimple-fold.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'gcc/gimple-fold.c') 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); -- cgit v1.1