[Bug target/69143] New: PowerPC64: aggregate results are badly handled

anton at samba dot org gcc-bugzilla@gcc.gnu.org
Tue Jan 5 05:22:00 GMT 2016


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69143

            Bug ID: 69143
           Summary: PowerPC64: aggregate results are badly handled
           Product: gcc
           Version: 6.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: anton at samba dot org
  Target Milestone: ---

This testcase:

struct foo1 {
        float x;
        float y;
};

struct foo1 blah1(struct foo1 y)
{
        struct foo1 x;

        x.x = y.y;
        x.y = y.x;

        return x;
}

Compiled with:

gcc -fno-stack-protector -mcpu=power8 -O2

Results in the following code:

blah1:
        xscvdpspn 12,2
        stfs 1,-16(1)
        ori 2,2,0
        lwz 8,-16(1)
        mfvsrd 10,12
        mr 9,8
        rldicl 9,9,0,32
        srdi 10,10,32
        sldi 10,10,32
        or 9,9,10
        rotldi 9,9,32
        mr 10,9
        srdi 9,9,32
        sldi 8,10,32
        sldi 10,9,32
        mtvsrd 1,8
        mtvsrd 2,10
        xscvspdpn 1,1
        xscvspdpn 2,2
        blr


I was expecting a couple of FPR moves. Clang does what I expected:

blah1:
        fmr 0, 1
        fmr 1, 2
        fmr 2, 0
        blr


More information about the Gcc-bugs mailing list