https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106157
--- Comment #1 from Aldy Hernandez <aldyh at gcc dot gnu.org> --- Silly question... In the lto1 that ICEs, we have the following in a.ltrans0.ltrans.094t.fixup_cfg3 (i.e. before DOM even comes into the picture): // Local variable struct VideoFrame videoFrame; ... ... ... <bb 2> [local count: 1073741824]: _5 = MEM[(struct VideoThumbnailer *)this_1(D)].m_MaintainAspectRatio; _6 = (int) _5; _7 = MEM[(struct VideoThumbnailer *)this_1(D)].m_ThumbnailSize; _12 = &MEM[(struct VideoFrame &)&videoFrame].frameData; __pos_13 = MEM[(struct vector *)&videoFrame + 8B].D.4741._M_impl._M_start; _14 = MEM[(struct vector *)&videoFrame + 8B].D.4741._M_impl._M_finish; if (__pos_13 != _14) goto <bb 3>; [70.00%] else goto <bb 4>; [30.00%] Aren't we reading from videoFrame before it's set?