https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63800
--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> --- Ok - so when we enter tail-merging we have in BB2 <bb 2>: # .MEM_9 = VDEF <.MEM_8(D)> b = 1; # .MEM_10 = VDEF <.MEM_9> d[1] = 1; if (1 != 0) goto <bb 11>; else goto <bb 12>; and at least one SSA name (the one we crash on) in the unreachable path is already released (but the stmt is still "there"...!?). Hmm, it seems that tree-ssa-pre.c:eliminate () thinks it can propagate to all uses but when it visits the use in question its value is no longer available. Ah, the way we now implement PRE insertion inhibiting for vectorization doesn't play well with the "simple" availability tracking. I have a patch.