This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug middle-end/34921] Misalign stack variable referenced by nested function



------- Comment #4 from hjl dot tools at gmail dot com  2008-01-22 14:26 -------
(In reply to comment #2)
> I bet if you put jj in struct and don't have a nested function, this will be
> the same issue.
> 

struct works for me:

bash-3.2$ cat x.c
#include <stdio.h>
#include <stddef.h>
#include <stdlib.h>

#ifndef ALIGNMENT
#define ALIGNMENT       16
#endif

int
check_int (int *i, int align)
{
  *i = 20;
  if ((((ptrdiff_t) i) & (align - 1)) != 0)
    {
      printf("\nUnalign address (%d): %p!\n", align, i);
      abort ();
    }
  return *i;
}

void
foo (void)
{
  struct i 
    {
      int i;
    } __attribute__((aligned(ALIGNMENT))) i;

  if (check_int (&i.i,  __alignof__(i.i)) != i.i)
    abort ();
}

void
bar (void)
{
  int __attribute__((aligned(ALIGNMENT))) i;

  if (check_int (&i,  __alignof__(i)) != i)
    abort ();
}

int
main()
{
  foo ();
  bar ();
  return 0;
}
bash-3.2$ /usr/gcc-4.3/bin/gcc -m32 x.c
bash-3.2$ ./a.out 
bash-3.2$ 


-- 

hjl dot tools at gmail dot com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2008-01-22 14:26:12
               date|                            |


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]