https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77301

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
                 CC|                            |jakub at gcc dot gnu.org
         Resolution|---                         |INVALID

--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
The result looks good, the expectations are wrong.
If the least significant bit is clear (i.e. bos0 and bos2), then objects are
whole variables, otherwise (bos1/bos3) we take possible subobjects into
account.
bos0 is the size of the whole object, ignoring any subobject boundaries, so it
must be 8.  The subobject size is 4, so that you get for bos1.  bos2 and bos3
are the minimas, but on the first line you know the sizes exactly, so bos0 ==
bos2 and bos1 == bos3.
For the second line, you don't know how big the object is, so -1 is the maximum
and 0 is minimum for the whole object.  For the subobject, it isn't a flexible
array member or something like that, so in a valid program the subobject length
must be exactly 4.

Reply via email to