[Bug c++/30627] New: missed optimization, large stack frame, oodles of upfront movl $0
tbptbp at gmail dot com
gcc-bugzilla@gcc.gnu.org
Mon Jan 29 12:02:00 GMT 2007
Compiling the attached testcase at O > 0 for an ia32 target, ie
/usr/local/gcc-4.3-20070119/bin/g++ -O3 -march=k8 -msse3 -fomit-frame-pointer,
i get something like
subl $2812, %esp
leal 1100(%esp), %eax
leal 2808(%esp), %edx
movl $0, 976(%esp)
movl $0, 980(%esp)
movl $0, 968(%esp)
movl $0, 972(%esp)
movl $0, 960(%esp)
movl $0, 964(%esp)
movl $0, 952(%esp)
movl $0, 956(%esp)
movl $0, 928(%esp)
movl $0, 932(%esp)
movl $0, 904(%esp)
movl $0, 908(%esp)
movl $0, 888(%esp)
movl $0, 892(%esp)
movl $0, 872(%esp)
movl $0, 876(%esp)
...
for the app::frontend_loop() function.
There's 2 problems:
a) g++ generates a larger stack frame than other compilers, msvc 8 sp1: 1152
bytes, icc 9.1: 2108 bytes
b) long strings of movl $0 get coalesced to the top of the function, that
symptom is specific to ia32, it doesn't happen on x86-64
It's not new to 4.3 but with the flashy string op infrastructure one could hope
that b) would be taken care of :)
--
Summary: missed optimization, large stack frame, oodles of
upfront movl $0
Product: gcc
Version: 4.3.0
Status: UNCONFIRMED
Severity: enhancement
Priority: P3
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: tbptbp at gmail dot com
GCC host triplet: x86*
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30627
More information about the Gcc-bugs
mailing list