Commit 53e788d0 by Richard Biener Committed by Richard Biener

re PR tree-optimization/80713 (recent crash in update_dep_bb)

2017-05-12  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/80713
	* tree-ssa-pre.c (remove_dead_inserted_code): Clear
	inserted_exprs bit for not removed stmts.

	* gcc.dg/torture/pr80713.c: New testcase.

From-SVN: r247963
parent 2ead1ab9
2017-05-12 Richard Biener <rguenther@suse.de>
PR tree-optimization/80713
* tree-ssa-pre.c (remove_dead_inserted_code): Clear
inserted_exprs bit for not removed stmts.
2017-05-12 Thomas Schwinge <thomas@codesourcery.com> 2017-05-12 Thomas Schwinge <thomas@codesourcery.com>
PR middle-end/69921 PR middle-end/69921
......
2017-05-12 Richard Biener <rguenther@suse.de>
PR tree-optimization/80713
* gcc.dg/torture/pr80713.c: New testcase.
2017-05-12 Andi Kleen <ak@linux.intel.com> 2017-05-12 Andi Kleen <ak@linux.intel.com>
PR testsuite/77684 PR testsuite/77684
......
/* { dg-do compile } */
int a, b, d, e, f;
int *c;
void g()
{
for (;;)
{
if (*c) {
int h;
*c = (__UINTPTR_TYPE__) &h;
} else
b = 0;
if (f)
*c = (__UINTPTR_TYPE__) g;
else
for (; a; a++)
for (;;) {
if (d)
break;
c = (int *) (__UINTPTR_TYPE__) e;
}
}
}
...@@ -4947,8 +4947,14 @@ remove_dead_inserted_code (void) ...@@ -4947,8 +4947,14 @@ remove_dead_inserted_code (void)
} }
} }
unsigned int to_clear = -1U;
EXECUTE_IF_SET_IN_BITMAP (inserted_exprs, 0, i, bi) EXECUTE_IF_SET_IN_BITMAP (inserted_exprs, 0, i, bi)
{ {
if (to_clear != -1U)
{
bitmap_clear_bit (inserted_exprs, to_clear);
to_clear = -1U;
}
t = SSA_NAME_DEF_STMT (ssa_name (i)); t = SSA_NAME_DEF_STMT (ssa_name (i));
if (!gimple_plf (t, NECESSARY)) if (!gimple_plf (t, NECESSARY))
{ {
...@@ -4969,7 +4975,14 @@ remove_dead_inserted_code (void) ...@@ -4969,7 +4975,14 @@ remove_dead_inserted_code (void)
release_defs (t); release_defs (t);
} }
} }
else
/* eliminate_fini will skip stmts marked for removal if we
already removed it and uses inserted_exprs for this, so
clear those we didn't end up removing. */
to_clear = i;
} }
if (to_clear != -1U)
bitmap_clear_bit (inserted_exprs, to_clear);
BITMAP_FREE (worklist); BITMAP_FREE (worklist);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment