http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46721

           Summary: Unnecessary stack instructions are generated for SPU
                    when returning a struct
           Product: gcc
           Version: 4.5.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
        AssignedTo: unassig...@gcc.gnu.org
        ReportedBy: jadam...@utas.edu.au


$ cat return.c 
#include <spu_intrinsics.h>

struct s { qword qs; };

struct s f(qword i) {
        return (struct s){i};
}

$ spu-elf-gcc return.c -std=c99 -c -S -o- -O3
        .file   "return.c"
.text
        .align  3
        .global f
        .type   f, @function
f:
        stqd    $sp,-48($sp)
        ai      $sp,$sp,-48
        ai      $sp,$sp,48
        bi      $lr
        .size   f, .-f
        .ident  "GCC: (Gentoo 4.5.1-r1 p1.3, pie-0.4.5) 4.5.1"


The three instructions referencing $sp are all redundant and should not be
generated.  These appear to be generated whenever a function returns a struct.

Reply via email to