For typedef struct { int i; int j; int k; } Foo;
void bar(Foo*); void foo(void) { { Foo a; bar(&a); } { Foo b; bar(&b); } } we have in the alias1 dump: foo () { struct Foo b; struct Foo a; <bb 2>: # a_3 = V_MAY_DEF <a_1>; # b_4 = V_MAY_DEF <b_2>; bar (&a); # a_5 = V_MAY_DEF <a_3>; # b_6 = V_MAY_DEF <b_4>; bar (&b); return; } The testcase is actually modeled after what the fortran frontend produces for I/O operations, it adds one instance of Foo per I/O call, and the clobbers keep building up. Now consider having SFTs for the _huge_ fortran st_parm structure... -- Summary: Call clobbering cannot tell different stack locals with same type apart Product: gcc Version: 4.2.0 Status: UNCONFIRMED Keywords: missed-optimization, memory-hog, compile-time-hog, alias Severity: normal Priority: P3 Component: tree-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: rguenth at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26429