diff options
author | Paolo Bonzini <bonzini@gnu.org> | 2009-01-23 15:57:19 +0000 |
---|---|---|
committer | Paolo Bonzini <bonzini@gcc.gnu.org> | 2009-01-23 15:57:19 +0000 |
commit | 9bacafeb4c9efa2344620a8fdb79a2ea5aadfbad (patch) | |
tree | aacb078bea4cd0815736d26fb8837d2a3a40112b /gcc/tree-ssa-sccvn.c | |
parent | 63e505333c7eae301e810d9b84d12a2149e81970 (diff) | |
download | gcc-9bacafeb4c9efa2344620a8fdb79a2ea5aadfbad.zip gcc-9bacafeb4c9efa2344620a8fdb79a2ea5aadfbad.tar.gz gcc-9bacafeb4c9efa2344620a8fdb79a2ea5aadfbad.tar.bz2 |
re PR middle-end/38932 (ICE in set_value_range, at tree-vrp.c:398)
2008-01-23 Paolo Bonzini <bonzini@gnu.org>
PR tree-optimization/38932
* fold-const.c (fold_unary_no_overflow): New.
* tree.h (fold_unary_no_overflow): Declare.
* tree-ssa-ccp.c (ccp_fold): Use fold_unary_no_overflow.
* tree-ssa-sccvn.c (visit_reference_op_load,
simplify_unary_expression): Likewise.
testsuite:
2008-01-23 Paolo Bonzini <bonzini@gnu.org>
PR tree-optimization/38932
* gcc.dg/pr38932.c: New.
From-SVN: r143588
Diffstat (limited to 'gcc/tree-ssa-sccvn.c')
-rw-r--r-- | gcc/tree-ssa-sccvn.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/gcc/tree-ssa-sccvn.c b/gcc/tree-ssa-sccvn.c index 78af47e..d9d5bc2 100644 --- a/gcc/tree-ssa-sccvn.c +++ b/gcc/tree-ssa-sccvn.c @@ -1761,7 +1761,8 @@ visit_reference_op_load (tree lhs, tree op, gimple stmt) tree tem = valueize_expr (vn_get_expr_for (TREE_OPERAND (val, 0))); if ((CONVERT_EXPR_P (tem) || TREE_CODE (tem) == VIEW_CONVERT_EXPR) - && (tem = fold_unary (TREE_CODE (val), TREE_TYPE (val), tem))) + && (tem = fold_unary_ignore_overflow (TREE_CODE (val), + TREE_TYPE (val), tem))) val = tem; } result = val; @@ -2123,7 +2124,7 @@ simplify_binary_expression (gimple stmt) fold_defer_overflow_warnings (); result = fold_binary (gimple_assign_rhs_code (stmt), - TREE_TYPE (gimple_get_lhs (stmt)), op0, op1); + TREE_TYPE (gimple_get_lhs (stmt)), op0, op1); if (result) STRIP_USELESS_TYPE_CONVERSION (result); @@ -2182,8 +2183,8 @@ simplify_unary_expression (gimple stmt) if (op0 == orig_op0) return NULL_TREE; - result = fold_unary (gimple_assign_rhs_code (stmt), - gimple_expr_type (stmt), op0); + result = fold_unary_ignore_overflow (gimple_assign_rhs_code (stmt), + gimple_expr_type (stmt), op0); if (result) { STRIP_USELESS_TYPE_CONVERSION (result); |