https://gcc.gnu.org/bugzilla/show_bug.cgi?id=125396
--- Comment #3 from Drea Pinski <pinskia at gcc dot gnu.org> ---
An example:
<bb 15> [local count: 182536112]:
# arr1$0_32 = PHI <arr1$0_36(ab)(11)>
<bb 14> [local count: 206998870]:
# arr1$0_43(ab) = PHI <arr1$0_25(ab)(13), 9(15)>
# sj12_44(ab) = PHI <sj12_31(ab)(13), arr1$0_32(15)>
f8 ();
Here bb 15 predecessor is a normal edge. But a successor edge of bb 14
is abnormal.
So when merging the forwarder bb 15 into bb14 we end up with:
<bb 12> [local count: 206998870]:
# arr1$0_42(ab) = PHI <arr1$0_24(ab)(11), 9(9)>
# sj12_43(ab) = PHI <sj12_30(ab)(11), arr1$0_35(ab)(9)>
f8 ();
and now there is an overlap of live range of arr1$0_35 and arr1$0_42.