http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56689
--- Comment #4 from Andreas Krebbel <krebbel at gcc dot gnu.org> 2013-03-25 09:14:52 UTC --- phicprop2: <bb 9>: switch (fixed_11(D)) <default: <L15>, case 0: <L6>, case 1: <L12>> vrp2: <bb 9>: switch (fixed_13(D)) <default: <L15>, case 1: <L12>> <L6>: (bb 10) switch (call_used_12(D)) <default: <L8>, case 1: <L7>> VRP optimizes the "case 0: <L6>" away. So there is no edge between bb9 and bb10 anymore. Due to that dfs_enumerate_from does not consider bb9 to be part of the loop anymore. It counts 7 instead of 8 bbs for the loop due to this.