Backport "Fix sigsegv in find_same_succ_bb"

2017-07-03  Tom de Vries  <tom@codesourcery.com>

	backport from mainline:
	2017-07-03  Tom de Vries  <tom@codesourcery.com>

	PR tree-optimization/81192
	* tree-ssa-tail-merge.c (same_succ_flush_bb): Handle
	BB_SAME_SUCC (bb) == NULL.

	* gcc.dg/pr81192.c: New test.

From-SVN: r249898
This commit is contained in:
Tom de Vries 2017-07-03 08:32:20 +00:00 committed by Tom de Vries
parent c81aed0a6b
commit 3c60c3693d
4 changed files with 42 additions and 0 deletions

View File

@ -1,3 +1,12 @@
2017-07-03 Tom de Vries <tom@codesourcery.com>
backport from mainline:
PR tree-optimization/81192
2017-07-03 Tom de Vries <tom@codesourcery.com>
* tree-ssa-tail-merge.c (same_succ_flush_bb): Handle
BB_SAME_SUCC (bb) == NULL.
2017-06-29 Michael Meissner <meissner@linux.vnet.ibm.com>
Backport from mainline

View File

@ -1,3 +1,11 @@
2017-07-03 Tom de Vries <tom@codesourcery.com>
backport from mainline:
PR tree-optimization/81192
2017-07-03 Tom de Vries <tom@codesourcery.com>
* gcc.dg/pr81192.c: New test.
2017-06-29 Michael Meissner <meissner@linux.vnet.ibm.com>
Backport from mainline

View File

@ -0,0 +1,22 @@
/* { dg-options "-Os -fdump-tree-pre-details" } */
unsigned a;
int b, c;
static int
fn1 (int p1, int p2)
{
return p1 > 2147483647 - p2 ? p1 : p1 + p2;
}
void
fn2 (void)
{
int j;
a = 30;
for (; a;)
for (; c; b = fn1 (j, 1))
;
}
/* { dg-final { scan-tree-dump-times "(?n)find_duplicates: <bb .*> duplicate of <bb .*>" 1 "pre" } } */

View File

@ -808,6 +808,9 @@ static void
same_succ_flush_bb (basic_block bb)
{
same_succ *same = BB_SAME_SUCC (bb);
if (! same)
return;
BB_SAME_SUCC (bb) = NULL;
if (bitmap_single_bit_set_p (same->bbs))
same_succ_htab->remove_elt_with_hash (same, same->hashval);