aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@google.com>2007-06-09 16:28:31 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2007-06-09 16:28:31 +0000
commit9c4ed267d69057cf5307b896a9466daf3e55f5d5 (patch)
tree8bb4c1810d65b5f93973d77fd9499addb7a3e0be /gcc
parent84152c25a53201930fd73cb13a905d8335367971 (diff)
downloadgcc-9c4ed267d69057cf5307b896a9466daf3e55f5d5.zip
gcc-9c4ed267d69057cf5307b896a9466daf3e55f5d5.tar.gz
gcc-9c4ed267d69057cf5307b896a9466daf3e55f5d5.tar.bz2
re PR tree-optimization/32169 (Ice in set_value_range, at tree-vrp.c:326)
./: PR tree-optimization/32169 * tree-vrp.c (extract_range_from_unary_expr): For NOP_EXPR and CONVERT_EXPR, check whether min and max both converted to an overflow infinity representation. testsuite/: PR tree-optimization/32169 * gcc.c-torture/compile/pr32169.c: New test. From-SVN: r125591
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr32169.c17
-rw-r--r--gcc/tree-vrp.c2
4 files changed, 31 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2154665..dbb2447 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2007-06-09 Ian Lance Taylor <iant@google.com>
+
+ PR tree-optimization/32169
+ * tree-vrp.c (extract_range_from_unary_expr): For NOP_EXPR and
+ CONVERT_EXPR, check whether min and max both converted to an
+ overflow infinity representation.
+
2007-06-08 Eric Botcazou <ebotcazou@adacore.com>
* reload1.c (fixup_abnormal_edges): Clear bb field for insns
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 14f7baf..bc45908 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2007-06-09 Ian Lance Taylor <iant@google.com>
+
+ PR tree-optimization/32169
+ * gcc.c-torture/compile/pr32169.c: New test.
+
2007-06-08 Harsha Jagasia <harsha.jagasia@amd.com>
* gcc.dg/vect/costmodel: New directory.
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr32169.c b/gcc/testsuite/gcc.c-torture/compile/pr32169.c
new file mode 100644
index 0000000..29d3022
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr32169.c
@@ -0,0 +1,17 @@
+void f(char);
+static inline
+void * __memset_generic(char c)
+{
+ f(c);
+}
+int prepare_startup_playback_urb(
+ int b,
+ int c
+)
+{
+ char d;
+ if (b)
+ __memset_generic(c == ( 1) ? 0x80 : 0);
+ else
+ __memset_generic (c == ( 1) ? 0x80 : 0);
+}
diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c
index 7506092..2a51de7 100644
--- a/gcc/tree-vrp.c
+++ b/gcc/tree-vrp.c
@@ -2208,6 +2208,8 @@ extract_range_from_unary_expr (value_range_t *vr, tree expr)
&& is_gimple_val (new_max)
&& tree_int_cst_equal (new_min, orig_min)
&& tree_int_cst_equal (new_max, orig_max)
+ && (!is_overflow_infinity (new_min)
+ || !is_overflow_infinity (new_max))
&& (cmp = compare_values (new_min, new_max)) <= 0
&& cmp >= -1)
{