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

Reply via email to