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?

Reply via email to