http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59473
--- Comment #2 from Jan Hubicka <hubicka at gcc dot gnu.org> --- Here the ICE is because we test whether IconsetSelectItem contains RealIconWidgetItem at offset 128 RealIconWidgetItem is base of IconsetSelectItem and bigger than 128 bits, so it can not be true. I am testing: Index: ipa-devirt.c =================================================================== --- ipa-devirt.c (revision 205941) +++ ipa-devirt.c (working copy) @@ -848,6 +848,10 @@ if (TREE_CODE (type) == TREE_CODE (expected_type) && types_same_for_odr (type, expected_type)) { + /* Type can not contain itself on an non-zero offset. In that case + just give up. */ + if (offset != 0) + goto give_up; gcc_assert (offset == 0); return true; }