aboutsummaryrefslogtreecommitdiff
path: root/gcc/predict.c
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 /gcc/predict.c
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
Diffstat (limited to 'gcc/predict.c')
-rw-r--r--gcc/predict.c14
1 files changed, 11 insertions, 3 deletions
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);