https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86453
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2018-07-10 CC| |hubicka at gcc dot gnu.org Target Milestone|--- |8.2 Ever confirmed|0 |1 --- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- Well, since __attribute__((packed) is handled like 502 if (TYPE_P (*node)) 503 { 504 if (!(flags & (int) ATTR_FLAG_TYPE_IN_PLACE)) 505 *node = build_variant_type_copy (*node); 506 TYPE_PACKED (*node) = 1; 507 } I can't see how that verification is "correct". There's clearly a path where this is violated. Honza? I know the type verifier isn't applied on all types if you do not run free-lang-data. I suppose we could change at least that by doing the find_* stuff unconditionally if (flag_checking) and then run verify_type but not free anything (doing that has side-effects that need to be "fixed"). Anyhow, I suggest to prune the TYPE_PACKED checking for now - clearly variant types _do_ differ here (they also differ in alignment). Not sure how you thought TYPE_PACKED is variant independent?