This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/36972] New: Redundant creation of stack fram on spu-gcc
- From: "eres at il dot ibm dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 30 Jul 2008 12:17:07 -0000
- Subject: [Bug rtl-optimization/36972] New: Redundant creation of stack fram on spu-gcc
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
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