gcc produces an error for the code below:
bit-field.C:6: error: attempt to take address of bit-field structure member
'S::j'

In this case field j is guaranteed to be byte-aligned.

gcc shouldn't have such a rigid requirement that one can't get an address of
any bit field variable but should allow getting such address when it's actually
possible.

For example I've set bit field attribute (:8) to limit some small enum-typed
field to just 8 bits. And after this I couldn't get it's address as of uint8_t
value.

--- code ---
struct S {
  int j:8;
};

char& cc(S *s) {
  return ((char&)s->j);
}


-- 
           Summary: Getting an address of a byte-aligned field declared as a
                    bit-field should be allowed
           Product: gcc
           Version: 4.2.3
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: yuri at tsoft dot com


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

Reply via email to