https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65177
--- Comment #17 from Sebastian Pop <spop at gcc dot gnu.org> --- Trying to figure out why we FSM jump thread this path: (13, 53) (53, 55) (55, 64) (64, 66) (66, 67) (67, 68) (68, 69) (69, 95) (95, 94) (94, 5) (94, 5) In BB_94 we have this code: switch (sprv_49) <default: <L13>, case 1: <L5>, case 2: <L6>, case 3: <L7>, case 5: <L28>, case 6: <L29>, case 7: <L38>, case 8: <L36>, case 10: <L37>> at this point FSM infers that sprv_49 == 1 and we jump to bb_5. Why? Following the FSM jump thread path backward from 94 to 13, we have these SSA definitions: # sprv_49 = PHI <8(4), sprv_737(95)> # sprv_737 = PHI <sprv_735(66), sprv_735(67), sprv_736(68), sprv_739(92), 10(88)> # sprv_736 = PHI <sprv_768(67), sprv_738(90)> # sprv_768 = PHI <sprv_764(55), 8(61), sprv_765(58), sprv_766(60)> # sprv_764 = PHI <1(13), 7(52)> So if we are coming from bb_13, we are guaranteed to have a value of 1.