Alignment bug in 2.96?

H . J . Lu hjl@valinux.com
Thu Jun 8 16:19:00 GMT 2000


On Linux/ia32, with gcc 2.95.2, I got

# gcc -O2 foo.c 
# ./a.out
size of x: 32
size of x.yy: 16
Aligment of x: 0
Aligment of x.yy: 0

With gcc 2.96,

# gcc -O2 foo.c 
# ./a.out
size of x: 24
size of x.yy: 16
Aligment of x: 4
Aligment of x.yy: 12
zsh: 3352 abort      ./a.out

It seems that  __attribute__ ((aligned (16))) doesn't work at all
with gcc 2.96.


-- 
H.J. Lu (hjl@gnu.org)
---
struct foo {
	long x;
	long y;
	long z;
} __attribute__ ((aligned (16)));

struct bar
{
  char dummy [8];
  struct foo yy __attribute__ ((aligned (16)));
};

struct bar x;

int
main ()
{
  printf ("size of x: %d\n", sizeof (x));
  printf ("size of x.yy: %d\n", sizeof (x.yy));
  printf ("Aligment of x: %d\n", ((unsigned int) (&x)) & 15);
  printf ("Aligment of x.yy: %d\n", ((unsigned int) (&x.yy)) & 15);

  if ((((unsigned int) (&x.yy)) & 15) != 0)
    abort ();

  return 0;
}


More information about the Gcc-bugs mailing list