------- Comment #2 from saito at densan dot co dot jp 2007-07-23 01:23 ------- How about following testcase.
I list the value which moves current sp as to some architectures. In the following case, listed value is 24. > add #-24,r15 <-- stack grows down With the result that only gcc-4.2.0 for sh4 accumulates the stack space for inlined variables. Actually, I need to spread the stack size for sh-linux's kernel-thread from 0x2000 byte to 0x4000 byte, although I specify optimization option(-O2). Gcc-4.1.2 does not have this problem. -testcase-------------------------------------------------- struct xxx { int x; int y; }; static inline __attribute__((always_inline)) int add(int x, int y) { struct xxx xxx; xxx.x = x; xxx.y = y; dummy(&xxx); return x + y; } int x, y; main(int ac, char** av) { x = add(x, y); /* count of add is one */ return x; } -end testcase---------------------------------------------- compiling options: gcc test.c -O2 -S case of gcc-4.2.0 ----------------------------------------------------------- count of add | 1 2 4 8 16 ------------------------------------------------------------- the value sh4 | 8 16 24 40 68 ppc | 48 64 64 64 64 i686 | 16 16 16 16 16 case of gcc-4.1.2 ----------------------------------------------------------- the value sh4 | 8 8 8 8 8 -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32577