https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90348
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |matz at gcc dot gnu.org, | |rguenth at gcc dot gnu.org --- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> --- Sth wrong with liveness analysis. There's obvious liveness of IN from BB2: ;; basic block 2, loop depth 0 ;; pred: ENTRY _30 = (unsigned long) ∈ ivtmp.30_29 = _30 + 1; goto <bb 5>; [100.00%] ;; succ: 5 to ;; basic block 7, loop depth 1 ;; pred: 5 in ={v} {CLOBBER}; i_10 = i_6 + 1; if (i_10 != 5) goto <bb 3>; [80.00%] else goto <bb 8>; [20.00%] ;; succ: 3 ;; 8 but maybe that being at different loop depth somehow confuses the algorithm in fact having it there seems odd to me but the address-taking in BB2 is the result of IVOPTs hoisting. The CLOBBER doesn't effect hoisting the address but RTL expansion liveness compute splits 'in' into multiple logical instances at the CLOBBER which _does_ make the addresses effectively different ...