[Bug target/39148] -Os increase code size when stack is aligned

2009-02-11 Thread jakub at gcc dot gnu dot org


--- Comment #3 from jakub at gcc dot gnu dot org  2009-02-11 17:11 ---
If you mean setting ACCUMULATE_OUTGOING_ARGS to true, I bet that could help
very small functions that need dynamic realignment, but certainly for larger
functions !ACCUMULATE_OUTGOING_ARGS results in smaller code, even if
realignment is done.


-- 


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



[Bug target/39148] -Os increase code size when stack is aligned

2009-02-11 Thread hjl dot tools at gmail dot com


--- Comment #4 from hjl dot tools at gmail dot com  2009-02-11 17:16 ---
(In reply to comment #3)
 If you mean setting ACCUMULATE_OUTGOING_ARGS to true, I bet that could help

Oops. Yes, I meant setting ACCUMULATE_OUTGOING_ARGS to true when stack
alignment is needed.

 very small functions that need dynamic realignment, but certainly for larger
 functions !ACCUMULATE_OUTGOING_ARGS results in smaller code, even if
 realignment is done.
 

Joey and Xuepeng are running

http://www.inf.u-szeged.hu/csibe/

to see how ACCUMULATE_OUTGOING_ARGS affects code size.


-- 


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



[Bug target/39148] -Os increase code size when stack is aligned

2009-02-11 Thread hjl dot tools at gmail dot com


--- Comment #5 from hjl dot tools at gmail dot com  2009-02-12 00:44 ---
I tried -maccumulate-outgoing-args on 2.6 kernel:

   textdata bss dec hex filename
5136786  600084 1003520 6740390  66d9a6 vmlinux
5086759  600084 1003520 6690363  66163b /tmp/vmlinux.old

It does increase binary size. Should we consider to
turn on ACCUMULATE_OUTGOING_ARGS when stack is aligned?
If ACCUMULATE_OUTGOING_ARGS is off, ECX will be used
for stack alignment and it may lead to code size
increase due to register spill since ia32 has very
few registers.


-- 


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



[Bug target/39148] -Os increase code size when stack is aligned

2009-02-11 Thread Joey dot ye at intel dot com


--- Comment #6 from Joey dot ye at intel dot com  2009-02-12 02:33 ---
(In reply to comment #5)
 If ACCUMULATE_OUTGOING_ARGS is off, ECX will be used
 for stack alignment and it may lead to code size
 increase due to register spill since ia32 has very
 few registers.
The code increase resulted from stack realign are mainly from prologue
increase. ECX is only used as hard register in prologue/epilogue and the impact
to function body is low.

If ACCUMULATE_OUTGOING_ARGS does increase code size, then for big functions,
benefit of !ACCUMULATE_OUTGOING_ARGS will offset increase of prologue/epilogue.

So simply enable ACCUMULATE_OUTGOING_ARGS for stack realign isn't be the best
option for all cases either.


-- 


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



[Bug target/39148] -Os increase code size when stack is aligned

2009-02-11 Thread hjl dot tools at gmail dot com


--- Comment #7 from hjl dot tools at gmail dot com  2009-02-12 02:37 ---
(In reply to comment #6)
 So simply enable ACCUMULATE_OUTGOING_ARGS for stack realign isn't be the best
 option for all cases either.
 

OK. I am closing as WONTFIX.


-- 

hjl dot tools at gmail dot com changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||WONTFIX


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



[Bug target/39148] -Os increase code size when stack is aligned

2009-02-10 Thread hjl dot tools at gmail dot com


-- 

hjl dot tools at gmail dot com changed:

   What|Removed |Added

   Target Milestone|--- |4.4.0


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



[Bug target/39148] -Os increase code size when stack is aligned

2009-02-10 Thread hjl dot tools at gmail dot com


--- Comment #1 from hjl dot tools at gmail dot com  2009-02-10 20:46 ---
The problem is

static rtx
ix86_get_drap_rtx (void)
{
  if (ix86_force_drap || !ACCUMULATE_OUTGOING_ARGS)
crtl-need_drap = true; 


-Os turns off ACCUMULATE_OUTGOING_ARGS, which turns on DRAP. Does
ACCUMULATE_OUTGOING_ARGS really increase code size?


-- 

hjl dot tools at gmail dot com changed:

   What|Removed |Added

 CC||jh at suse dot cz, ubizjak
   ||at gmail dot com


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