[Bug c++/56123] New: Union bitfield corruption

timj at gtk dot org gcc-bugzilla@gcc.gnu.org
Mon Jan 28 00:57:00 GMT 2013


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56123

             Bug #: 56123
           Summary: Union bitfield corruption
    Classification: Unclassified
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: major
          Priority: P3
         Component: c++
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: timj@gtk.org


Created attachment 29287
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=29287
test case with assertion triggered

In this union
union {
  size_t   vsize;
  struct {                               
    uint   field24 : 24;
    uint   unused : 24;
    uint   field16 : 16;
  };
};
"field16" accesses are mismangled, depending on wether "unused" has 24 bits or
is split into two 8+16 components. 
Test case is attached, test it with and without -DNOBUG.

Occours on a 64bit platform with g++-4.6 and 4.7:
$ g++-4.7 --version
g++-4.7 (Ubuntu/Linaro 4.7.2-11precise2) 4.7.2
$ uname -a
Linux jumper 3.2.0-36-generic #57-Ubuntu SMP Tue Jan 8 21:44:52 UTC 2013 x86_64
x86_64 x86_64 GNU/Linux



More information about the Gcc-bugs mailing list