diff options
author | Richard Biener <rguenther@suse.de> | 2018-06-04 09:28:22 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2018-06-04 09:28:22 +0000 |
commit | c77bb6744644149d5a64b909db98671f57d92f83 (patch) | |
tree | 9383bdc62244de6efa7c5083cccf019a14cec420 /gcc | |
parent | 34a1d5c2c7ffd8f790da87f8e23180cf7d17b81b (diff) | |
download | gcc-c77bb6744644149d5a64b909db98671f57d92f83.zip gcc-c77bb6744644149d5a64b909db98671f57d92f83.tar.gz gcc-c77bb6744644149d5a64b909db98671f57d92f83.tar.bz2 |
re PR tree-optimization/86038 (ICE in to_reg_br_prob_base, at profile-count.h:242)
2018-06-04 Richard Biener <rguenther@suse.de>
PR tree-optimization/86038
* tracer.c (find_best_successor): Check probability for
being initialized, bail out if not.
* gcc.dg/pr86038.c: New testcase.
From-SVN: r261142
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr86038.c | 12 | ||||
-rw-r--r-- | gcc/tracer.c | 3 |
4 files changed, 25 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e780766e..fde65eb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2018-06-04 Richard Biener <rguenther@suse.de> + + PR tree-optimization/86038 + * tracer.c (find_best_successor): Check probability for + being initialized, bail out if not. + 2018-06-04 Richard Earnshaw <rearnsha@arm.com> PR target/86003 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index f889ebb..6ec5c50 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-06-04 Richard Biener <rguenther@suse.de> + + PR tree-optimization/86038 + * gcc.dg/pr86038.c: New testcase. + 2018-06-04 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/69615 diff --git a/gcc/testsuite/gcc.dg/pr86038.c b/gcc/testsuite/gcc.dg/pr86038.c new file mode 100644 index 0000000..427a13f --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr86038.c @@ -0,0 +1,12 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target pthread } */ +/* { dg-options "-O2 -ftracer -ftree-parallelize-loops=2 -fno-tree-scev-cprop --param parloops-schedule=dynamic" } */ + +int +sd (int lw) +{ + while (lw < 1) + ++lw; + + return lw; +} diff --git a/gcc/tracer.c b/gcc/tracer.c index 6181513..05300a2 100644 --- a/gcc/tracer.c +++ b/gcc/tracer.c @@ -159,7 +159,8 @@ find_best_successor (basic_block bb) } if (!best || ignore_bb_p (best->dest)) return NULL; - if (best->probability.to_reg_br_prob_base () <= probability_cutoff) + if (!best->probability.initialized_p () + || best->probability.to_reg_br_prob_base () <= probability_cutoff) return NULL; return best; } |