[LLVMbugs] [Bug 5629] New: stack frame size is proportional to # of variables, even if lifetimes don't overlap
bugzilla-daemon at cs.uiuc.edu
bugzilla-daemon at cs.uiuc.edu
Fri Nov 27 11:54:03 PST 2009
http://llvm.org/bugs/show_bug.cgi?id=5629
Summary: stack frame size is proportional to # of variables, even
if lifetimes don't overlap
Product: clang
Version: trunk
Platform: PC
OS/Version: All
Status: NEW
Severity: normal
Priority: P2
Component: LLVM Codegen
AssignedTo: unassignedclangbugs at nondot.org
ReportedBy: jyasskin at google.com
CC: llvmbugs at cs.uiuc.edu
Created an attachment (id=3877)
--> (http://llvm.org/bugs/attachment.cgi?id=3877)
Output of clang -O0 -S test.c at r89911
$ cat test.c
typedef struct BigStruct {
char member[10000];
} BigStruct;
extern void use(BigStruct*);
void foo() {
{ BigStruct s; use(&s); }
{ BigStruct s; use(&s); }
}
With clang -O0 and -O3, this function uses 20000 bytes of stack space, even
though only one of the objects is alive at any given time. With gcc-4.4.1 -O0
and -O3, it only uses 10000 bytes (although I've seen C++ functions get gcc to
fail to reuse stack space too).
This can be a significant problem in programs with small stacks, especially in
C++ where we can have lots of invisible temporary objects. Because the small
stack problem exists in -O0 builds too, I don't think clang can get away with
only reusing stack space at -O>0.
--
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
More information about the llvm-bugs
mailing list