https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116819
--- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> --- So we end up with t.c:10:22: note: ==> examining statement: _24 = MEM[(const long long unsigned int &)_5]; t.c:10:22: note: irrelevant. in the SLP tree as it is part of the DR group but it's really a dead stmt with no uses. Unfortunately we pick it as representative but that makes the whole SLP node irrelevant (we should weed out those checks). The dead stmt is left behind by loop if-conversion which already performs some DCE but not enough: Removing dead stmt prephitmp_50 = 0; Delete dead stmt in bb#3 _38 = (char) _37; Delete dead stmt in bb#3 _37 = _24 > 69; Delete dead stmt in bb#3 _31 = (char) _51; Delete dead stmt in bb#3 _51 = _24 <= 69; Delete dead stmt in bb#3 _49 = (char) _47; Delete dead stmt in bb#3 _47 = _24 == 0; for some reason the ifcvt local DCE considers stores live... I have a mitigation in the vectorizer for this particular case.