The dominance info is incorrect for entry and exit blocks. According to dominated_by_p, nothing dominates the exit block (which is wrong), and nothing post-dominates the entry block (which is also wrong).
A simple example: (gdb) p dominated_by_p (CDI_POST_DOMINATORS, ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR) $4 = 0 '\0' (gdb) p dominated_by_p (CDI_DOMINATORS, EXIT_BLOCK_PTR, ENTRY_BLOCK_PTR) $5 = 0 '\0' Both of these should return true. Zdenek said he thought he knew why this was. -- Summary: Dominance info is incorrect for entry and exit blocks Product: gcc Version: 4.0.0 Status: UNCONFIRMED Severity: normal Priority: P2 Component: tree-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: dberlin at gcc dot gnu dot org CC: gcc-bugs at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17951