[Bug tree-optimization/81900] [8 Regression] GCC trunk miscompiles Perl / __sigsetjmp issue
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Aug 21 11:50:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81900
--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> ---
So while there is one simple issue with the iteration, fix:
@@ -2119,14 +2170,13 @@ static sbitmap has_abnormal_preds;
static bool
compute_antic_aux (basic_block block, bool block_has_abnormal_pred_edge)
{
- bool changed = false;
bitmap_set_t S, old, ANTIC_OUT;
bitmap_iterator bi;
unsigned int bii;
edge e;
edge_iterator ei;
- bool was_visited = BB_VISITED (block);
+ bool changed = ! BB_VISITED (block);
old = ANTIC_OUT = S = NULL;
BB_VISITED (block) = 1;
@@ -2217,7 +2267,7 @@ compute_antic_aux (basic_block block, bo
/* clean (ANTIC_IN (block)) is defered to after the iteration converged
because it can cause non-convergence, see for example PR81181. */
- if (!was_visited || !bitmap_set_equal (old, ANTIC_IN (block)))
+ if (!bitmap_set_equal (old, ANTIC_IN (block)))
changed = true;
maybe_dump_sets:
there is another issue as we think *_7 is antic and thus hoist the dereference
before the _7 == 0 check which will optimize that away as not necessary in
a later pass.
More information about the Gcc-bugs
mailing list