public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/40751]  New: G++ never packs typedef'd enums
@ 2009-07-14 19:02 bryce dot schober at gmail dot com
  2009-07-14 19:09 ` [Bug c++/40751] " bryce dot schober at gmail dot com
  2009-07-14 22:31 ` bryce dot schober at gmail dot com
  0 siblings, 2 replies; 3+ messages in thread
From: bryce dot schober at gmail dot com @ 2009-07-14 19:02 UTC (permalink / raw)
  To: gcc-bugs

The following enumerated type definitions packs to one byte as expected in C,
but not in C++:

typedef enum __attribute__ ((packed)) {
        ZERO = 0,
        ONE,
        TWO
} my_enum_t;

The enum will pack as expected if using -fshort-enums, but that doesn't allow
me to pack on a per-enum basis. Neither will the above enum pack as a packed
member in a structure or as a member in a packed structure.

Test case to follow.


-- 
           Summary: G++ never packs typedef'd enums
           Product: gcc
           Version: 4.3.2
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: bryce dot schober at gmail dot com
 GCC build triplet: i486-linux-gnu
  GCC host triplet: i486-linux-gnu
GCC target triplet: i486-linux-gnu


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


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [Bug c++/40751] G++ never packs typedef'd enums
  2009-07-14 19:02 [Bug c++/40751] New: G++ never packs typedef'd enums bryce dot schober at gmail dot com
@ 2009-07-14 19:09 ` bryce dot schober at gmail dot com
  2009-07-14 22:31 ` bryce dot schober at gmail dot com
  1 sibling, 0 replies; 3+ messages in thread
From: bryce dot schober at gmail dot com @ 2009-07-14 19:09 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #1 from bryce dot schober at gmail dot com  2009-07-14 19:09 -------
Created an attachment (id=18196)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=18196&action=view)
test case

Built without warnings, to try to make sure I'm not doing something marginal:

gcc -Wall -Wextra -pedantic -lstdc++ -0 size size.c size.gcc


-- 


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


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [Bug c++/40751] G++ never packs typedef'd enums
  2009-07-14 19:02 [Bug c++/40751] New: G++ never packs typedef'd enums bryce dot schober at gmail dot com
  2009-07-14 19:09 ` [Bug c++/40751] " bryce dot schober at gmail dot com
@ 2009-07-14 22:31 ` bryce dot schober at gmail dot com
  1 sibling, 0 replies; 3+ messages in thread
From: bryce dot schober at gmail dot com @ 2009-07-14 22:31 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #2 from bryce dot schober at gmail dot com  2009-07-14 22:31 -------
I now see that the following syntax packs as expected:
typedef enum {
        ZERO = 0,
        ONE,
        TWO
} __attribute__ ((packed)) my_enum_t;

I have been unable to find a concise definition of how attributes are supposed
to be used with types in either the Type-Attributes or Attribute-Syntax
sections of the GCC manual. I guess this location for the attribute is a bit
more logical in the sense that the type isn't "complete" until the closing
brace.

It remains unclear whether both attribute locations are supposed to be
supported in both C and C++ or not. Either way, it's certainly not clear from
the docs.


-- 


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


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2009-07-14 22:31 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-07-14 19:02 [Bug c++/40751] New: G++ never packs typedef'd enums bryce dot schober at gmail dot com
2009-07-14 19:09 ` [Bug c++/40751] " bryce dot schober at gmail dot com
2009-07-14 22:31 ` bryce dot schober at gmail dot com

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).