aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Berlin <dberlin@dberlin.org>2007-07-01 02:20:06 +0000
committerDaniel Berlin <dberlin@gcc.gnu.org>2007-07-01 02:20:06 +0000
commitb941a8ae18d35d1a87f432f8e4fbad71398aa6f8 (patch)
treead027c9a777ced30e1569288d9ec0af1065a1766
parentc0333e3dca67c423658cfb3a42c7bc8388826670 (diff)
downloadgcc-b941a8ae18d35d1a87f432f8e4fbad71398aa6f8.zip
gcc-b941a8ae18d35d1a87f432f8e4fbad71398aa6f8.tar.gz
gcc-b941a8ae18d35d1a87f432f8e4fbad71398aa6f8.tar.bz2
tree-ssa-pre.c (is_exception_related): New function
2007-06-30 Daniel Berlin <dberlin@dberlin.org> * tree-ssa-pre.c (is_exception_related): New function (can_value_number_operation): Use it. From-SVN: r126162
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/tree-ssa-pre.c12
2 files changed, 16 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c8f71ee..7e576be 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -25,6 +25,11 @@
* pa.c (hppa_can_use_return_insn_p): Delete function. Include "df.h".
2007-06-30 Daniel Berlin <dberlin@dberlin.org>
+
+ * tree-ssa-pre.c (is_exception_related): New function
+ (can_value_number_operation): Use it.
+
+2007-06-30 Daniel Berlin <dberlin@dberlin.org>
Fix PR tree-optimization/32540
Fix PR tree-optimization/31651
diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c
index 966d881..b971de4 100644
--- a/gcc/tree-ssa-pre.c
+++ b/gcc/tree-ssa-pre.c
@@ -2122,13 +2122,23 @@ can_value_number_call (tree stmt)
return false;
}
+/* Return true if OP is an exception handler related operation, such as
+ FILTER_EXPRor EXC_PTR_EXPR. */
+
+static bool
+is_exception_related (tree op)
+{
+ return TREE_CODE (op) == FILTER_EXPR || TREE_CODE (op) == EXC_PTR_EXPR;
+}
+
/* Return true if OP is a tree which we can perform value numbering
on. */
static bool
can_value_number_operation (tree op)
{
- return UNARY_CLASS_P (op)
+ return (UNARY_CLASS_P (op)
+ && !is_exception_related (TREE_OPERAND (op, 0)))
|| BINARY_CLASS_P (op)
|| COMPARISON_CLASS_P (op)
|| REFERENCE_CLASS_P (op)