Running the testcase from PR33927 on spu-gcc 4.4.0 2008062 generates the following code which contains a redundant creation of stack frame:
test1: fa $3,$3,$4 stqd $sp,-48($sp) ai $sp,$sp,-48 lnop ai $sp,$sp,48 bi $lr .size test1, .-test1 .align 3 .global test2 .type test2, @function test2: fa $4,$4,$4 stqd $sp,-128($sp) fa $3,$3,$3 ai $sp,$sp,-128 ai $sp,$sp,128 bi $lr .size test2, .-test2 .ident "GCC: (GNU) 4.4.0 20080629 (experimental)" Here is again the testcase from PR33297: #define vector __attribute__((__vector_size__(16) )) typedef vector float vec_float4; typedef struct { vec_float4 data; } VecFloat4; typedef struct { vec_float4 a; vec_float4 b; } VecFloat4x2; VecFloat4 test1(VecFloat4 a, VecFloat4 b) { a.data = a.data+b.data; return a; } VecFloat4x2 test2(VecFloat4x2 data) { data.a = data.a+data.a; data.b = data.b+data.b; return data; } -- Summary: Redundant creation of stack fram on spu-gcc Product: gcc Version: 4.4.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: rtl-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: eres at il dot ibm dot com GCC host triplet: spu-gcc http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36972