https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70267
--- Comment #2 from Marek Polacek <mpolacek at gcc dot gnu.org> --- We ICE in propagate_necessity because it can't digest # VUSE <.MEM_3> f.0_4 = (struct Foo *) D.2296; which is (gdb) p gimple_code(stmt) $2 = GIMPLE_ASSIGN but (gdb) p gimple_assign_single_p (stmt) $3 = false thus we end up in the gcc_unreachable (); branch there.