https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116460
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Summary|ppc64le: LTO ICE during |[14/15 Regression] LTO ICE |GIMPLE pass: forwprop |with -g during GIMPLE pass: | |forwprop Target Milestone|--- |14.3 --- Comment #8 from Andrew Pinski <pinskia at gcc dot gnu.org> --- ./a.ltrans6.ltrans.212t.forwprop4 Removing dead stmt noDataCandVec$_M_start_888 = PHI <_1783(176), _577(186)> ... Removing dead stmt:_598 = _888 + 16; So it looks like we remove the statement defining _888 and then removing the use. The removal of _888 happens directly from forwprop while _598 definition removal comes from simple_dce_from_worklist . The ICE happens because the ssa name _888 has already been freed so the type is null (and not in this case a pointer) since this was originally a pointer plus. Trying to reduce this further.