https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67842
Bug ID: 67842 Summary: Incorrect check in sese.h:bb_in_region Product: gcc Version: 6.0 Status: UNCONFIRMED Keywords: ice-checking Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: miyuki at gcc dot gnu.org Target Milestone: --- >From discussion on the mailing list: https://gcc.gnu.org/ml/gcc-patches/2015-09/msg00615.html The function bb_in_region contains the following check guarded by ENABLE_CHECKING: edge e; edge_iterator ei; /* Check that there are no edges coming in the region: all the predecessors of EXIT are dominated by ENTRY. */ FOR_EACH_EDGE (e, ei, exit->preds) dominated_by_p (CDI_DOMINATORS, e->src, entry); dominated_by_p is a pure function, so the check has no effect. If it is changed to gcc_assert (dominated_by_p (CDI_DOMINATORS, e->src, entry)); It starts to ICE on several testcases, for example gcc.dg/graphite/block-1.c.