https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93674
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |amker at gcc dot gnu.org --- Comment #8 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Anyway, it seems the bug is somewhere in ivopts, before ivopts we have: # j_18 = PHI <3(3), j_9(8)> # ivtmp_14 = PHI <4(3), ivtmp_13(8)> _1 = i_17 + j_18; _2 = (some_enum) _1; sink (_2); j_9 = j_18 + -1; ivtmp_13 = ivtmp_14 - 1; where _2 is the only SSA_NAME with some_enum type. ivopts starts using that type everywhere: some_enum ivtmp.19; some_enum ivtmp.9; int j; int i; some_enum _2; some_enum _23; unsigned int _24; int _25; <bb 2> [local count: 71582789]: <bb 3> [local count: 214748369]: # ivtmp.19_21 = PHI <4294967295(2), ivtmp.19_22(7)> _24 = ivtmp.19_21 + 1; _25 = (int) _24; i_17 = _25; _23 = ivtmp.19_21 + 4; ivtmp.9_3 = _23; <bb 4> [local count: 858993457]: # ivtmp.9_5 = PHI <ivtmp.9_3(3), ivtmp.9_4(8)> _2 = ivtmp.9_5; sink (_2); ivtmp.9_4 = ivtmp.9_5 - 1; if (ivtmp.9_4 == ivtmp.19_21) goto <bb 5>; [25.00%] else goto <bb 8>; [75.00%] <bb 8> [local count: 644245086]: goto <bb 4>; [100.00%] <bb 5> [local count: 214748369]: ivtmp.19_22 = ivtmp.19_21 + 1; if (ivtmp.19_22 == 2) goto <bb 6>; [33.33%] else goto <bb 7>; [66.67%]