This relates to bug 13167
(http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13617)

It looks like the compiler is generating appropriate code but gas
isn't doing the right thing with it, at least not consistently. 

With this test program, compiled with GCC 4.1.2 mipsel-netbsdelf:

    int i = 3;
    char foo[17] __attribute__ ((aligned(32)));

I get .bss aligned 2**4.

If I change the second line:

    int i = 3;
    static char foo[17] __attribute__ ((aligned(32)));

I get .bss aligned 2**5, which is what it should be.

The assembly files are basically the same; the only difference is a 
".local foo":

        .file   1 "test.c"
        .section .mdebug.abi32
        .previous
        .abicalls
        .globl  i
        .data
        .align  2
        .type   i, @object
        .size   i, 4
i:
        .word   3
        .local  foo
        .comm   foo,17,32
        .ident  "GCC: (GNU) 4.1.2"

Should this be a binutils bug report, or can/should GCC work around
this?  As it stands, this is a "wrong code" bug, variables end up not
being aligned as requested.

      paul

Reply via email to