public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
* g++: __attribute__ ((aligned)) weirdness
@ 2003-03-18 16:16 Andrew Haley
  2003-03-18 20:24 ` Piotr Wyderski
  0 siblings, 1 reply; 7+ messages in thread
From: Andrew Haley @ 2003-03-18 16:16 UTC (permalink / raw)
  To: gcc

The doc says

     The `aligned' attribute can only increase the alignment; but you
     can decrease it by specifying `packed' as well.  See below.

but this doesn't seem to be true.  For example, on x86 g++ you have a non-POD
class and a subclass:

-----------------------------------------------------------------------------
class Boof
{
  int arse ()
  {
    return 25;
  }

  void *prickle;
};

class foo : Boof
{
  public: long long i;
};
-----------------------------------------------------------------------------

then try:

-----------------------------------------------------------------------------
  foo f;
  fprintf(stderr, "offset: %d\n", (char *)&f.i - (char *)&f);
-----------------------------------------------------------------------------

offset: 4

Fair enough, this long long is probably 4-aligned.

Now do this:

-----------------------------------------------------------------------------
class bar : Boof
{
  public: long long __attribute__((aligned(4))) i;
};

  bar b;
  fprintf(stderr, "offset: %d\n", (char *)&b.i - (char *)&b);

-----------------------------------------------------------------------------

offset: 8

So you have a field at offset 4.  You ask for it to be 4-aligned, and
it jumps to offset 8.

What is going on?
 
Andrew.

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

end of thread, other threads:[~2003-04-08 11:30 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-03-18 16:16 g++: __attribute__ ((aligned)) weirdness Andrew Haley
2003-03-18 20:24 ` Piotr Wyderski
2003-03-18 20:28   ` Andrew Haley
2003-03-18 22:34     ` Andreas Tobler
2003-04-08  8:01       ` PPC support in GCC ? A.R. Ashok Kumar
2003-04-08 14:45         ` Falk Hueffner
2003-04-08 14:51           ` A.R. Ashok Kumar

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).