aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2010-11-03 16:58:50 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2010-11-03 16:58:50 +0000
commit44cb6d4df48bdc70a4a74befd4b88094b7edb06c (patch)
tree756fef625111fa096ec9607e576ddffab7337f47
parentb7fa98e27bb48a44ad2a29e471653a56bdbee831 (diff)
downloadgcc-44cb6d4df48bdc70a4a74befd4b88094b7edb06c.zip
gcc-44cb6d4df48bdc70a4a74befd4b88094b7edb06c.tar.gz
gcc-44cb6d4df48bdc70a4a74befd4b88094b7edb06c.tar.bz2
re PR tree-optimization/46288 (ICE: SIGSEGV in walk_gimple_op (gimple.c:2857) with -O -fno-tree-dce and __builtin_expect())
2010-11-03 Richard Guenther <rguenther@suse.de> PR middle-end/46288 * predict.c (strip_predict_hints): Simply DCE builtin expect if the result is unused. * gcc.dg/pr46288.c: New testcase. From-SVN: r166258
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/predict.c14
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr46288.c8
4 files changed, 30 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 73198e3..e62aaab 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2010-11-03 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/46288
+ * predict.c (strip_predict_hints): Simply DCE builtin expect if
+ the result is unused.
+
2010-11-03 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/46009
diff --git a/gcc/predict.c b/gcc/predict.c
index eb91b87..beceb0f2 100644
--- a/gcc/predict.c
+++ b/gcc/predict.c
@@ -1329,9 +1329,17 @@ strip_predict_hints (void)
&& gimple_call_num_args (stmt) == 2)
{
var = gimple_call_lhs (stmt);
- ass_stmt = gimple_build_assign (var, gimple_call_arg (stmt, 0));
-
- gsi_replace (&bi, ass_stmt, true);
+ if (var)
+ {
+ ass_stmt
+ = gimple_build_assign (var, gimple_call_arg (stmt, 0));
+ gsi_replace (&bi, ass_stmt, true);
+ }
+ else
+ {
+ gsi_remove (&bi, true);
+ continue;
+ }
}
}
gsi_next (&bi);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 5e266c1..61c24f9 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,10 @@
2010-11-03 Richard Guenther <rguenther@suse.de>
+ PR middle-end/46288
+ * gcc.dg/pr46288.c: New testcase.
+
+2010-11-03 Richard Guenther <rguenther@suse.de>
+
PR tree-optimization/44807
* gcc.dg/torture/pr44807.c: New testcase.
diff --git a/gcc/testsuite/gcc.dg/pr46288.c b/gcc/testsuite/gcc.dg/pr46288.c
new file mode 100644
index 0000000..24c8874
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr46288.c
@@ -0,0 +1,8 @@
+/* { dg-do compile } */
+/* { dg-options "-O -fno-tree-dce" } */
+
+void foo (int i)
+{
+ __builtin_expect (i, i);
+}
+