public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c/22605] New: Allocation of structures across stack slots
@ 2005-07-22  5:45 ianw at gelato dot unsw dot edu dot au
  2005-07-22 18:12 ` [Bug middle-end/22605] Alignment of struct on stack is no longer the maxium alignment pinskia at gcc dot gnu dot org
  2005-07-22 20:15 ` wilson at gcc dot gnu dot org
  0 siblings, 2 replies; 5+ messages in thread
From: ianw at gelato dot unsw dot edu dot au @ 2005-07-22  5:45 UTC (permalink / raw)
  To: gcc-bugs

Hi,

gcc 4 seems quite a bit smarter at keeping the stack smaller, and as you can see
below allocates the 8 byte structure across two stack slots.

It did break something, which drew this to my attention, and James Wilson
already some analsysis in
http://www.gelato.unsw.edu.au/archives/linux-ia64/0507/1885.html.  Quoting him

 > If gcc-3.4 and earlier, some structures (BLKmode structures) were being
 > over-aligned when allocated to stack slots.  They always got the maximum
 > alignment (16 bytes for IA-64) instead of their natural alignment.  It
 > isn't clear why.  I think this was an accident of implementation.  We
 > were basing variable alignment on modes instead of type alignment, and
 > since some BLKmode structures do require max alignment, we had to give
 > it to all of them.

We came to the conclusion that we are unsure if this is a bug or a feature.  I
am unsure if the larger stack space required is a good trade off against
possible better code.

Thanks,

-i

--- sample ---

ianw@lime:/tmp$ cat test.c
#include <stdio.h>

struct disk_stat {
        int fd;
        unsigned count;
};

int main(void)
{
        int blah;
        struct disk_stat test;

        printf("%p\n", &blah);

        printf("%p\n", &test);
}
ianw@lime:/tmp$ gcc-3.4 -o test test.c
ianw@lime:/tmp$ ./test
0x60000fffffcdf480
0x60000fffffcdf490

ianw@lime:/tmp$ gcc-4.0 -o test test.c
ianw@lime:/tmp$ ./test
0x60000fffffd57490
0x60000fffffd57494

-- 
           Summary: Allocation of structures across stack slots
           Product: gcc
           Version: 4.0.1
            Status: UNCONFIRMED
          Severity: minor
          Priority: P3
         Component: c
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: ianw at gelato dot unsw dot edu dot au
                CC: gcc-bugs at gcc dot gnu dot org
GCC target triplet: ia64-linux-gnu


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


^ permalink raw reply	[flat|nested] 5+ messages in thread
[parent not found: <bug-22605-5429@http.gcc.gnu.org/bugzilla/>]

end of thread, other threads:[~2007-09-29 20:42 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-07-22  5:45 [Bug c/22605] New: Allocation of structures across stack slots ianw at gelato dot unsw dot edu dot au
2005-07-22 18:12 ` [Bug middle-end/22605] Alignment of struct on stack is no longer the maxium alignment pinskia at gcc dot gnu dot org
2005-07-22 20:15 ` wilson at gcc dot gnu dot org
     [not found] <bug-22605-5429@http.gcc.gnu.org/bugzilla/>
2007-09-29 20:06 ` rguenth at gcc dot gnu dot org
2007-09-29 20:42 ` pinskia at gcc dot gnu dot org

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