public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug middle-end/32686]  New: Code to convert double to _Complex double for arguments passing is not good (extra load)
@ 2007-07-09  3:32 pinskia at gcc dot gnu dot org
  2007-07-09  3:33 ` [Bug middle-end/32686] " pinskia at gcc dot gnu dot org
  0 siblings, 1 reply; 2+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2007-07-09  3:32 UTC (permalink / raw)
  To: gcc-bugs

Testcase:
_Complex double f(_Complex double);
_Complex double g(double a)
{
  return f(a);
}

----- Cut ----
We currently get:
        mflr r0
        bcl 20,31,"L00000000001$pb"
"L00000000001$pb":
        stw r31,-4(r1)
        mflr r31
        stfd f1,-24(r1)
        mtlr r0
        lwz r3,-24(r1)
        lwz r4,-20(r1)
        addis r2,r31,ha16(LC0-"L00000000001$pb")
        lwz r31,-4(r1)
        la r5,lo16(LC0-"L00000000001$pb")(r2)
        lwz r6,4(r5)
        lwz r5,0(r5)
        b L_f$stub

We should be able to get:
        stfd f1,-8(r1)
        li r6,0
        li r5,0
        lwz r3,-8(r1)
        lwz r4,-4(r1)
        b L_f$stub

Without the need for the PIC register.


-- 
           Summary: Code to convert double to _Complex double for arguments
                    passing is not good (extra load)
           Product: gcc
           Version: 4.3.0
            Status: UNCONFIRMED
          Keywords: missed-optimization
          Severity: enhancement
          Priority: P3
         Component: middle-end
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: pinskia at gcc dot gnu dot org
GCC target triplet: powerpc-darwin


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


^ permalink raw reply	[flat|nested] 2+ messages in thread

* [Bug middle-end/32686] Code to convert double to _Complex double for arguments passing is not good (extra load)
  2007-07-09  3:32 [Bug middle-end/32686] New: Code to convert double to _Complex double for arguments passing is not good (extra load) pinskia at gcc dot gnu dot org
@ 2007-07-09  3:33 ` pinskia at gcc dot gnu dot org
  0 siblings, 0 replies; 2+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2007-07-09  3:33 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #1 from pinskia at gcc dot gnu dot org  2007-07-09 03:33 -------
powerpc64-darwin is just as bad, we get:
        mflr r0
        std r31,-8(r1)
        stfd f1,-32(r1)
        bcl 20,31,"L00000000001$pb"
"L00000000001$pb":
        mflr r31
        addis r2,r31,ha16(LC0-"L00000000001$pb")
        mtlr r0
        ld r4,lo16(LC0-"L00000000001$pb")(r2)
        ld r3,-32(r1)
        ld r31,-8(r1)
        b L_f$stub

When we should get:

        stfd f1,-8(r1)
        li r4,0
        ld r3,-8(r1)
        b L_f$stub

With a few nops through in there so we don't reject the distpatch group.


-- 


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


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2007-07-09  3:33 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-07-09  3:32 [Bug middle-end/32686] New: Code to convert double to _Complex double for arguments passing is not good (extra load) pinskia at gcc dot gnu dot org
2007-07-09  3:33 ` [Bug middle-end/32686] " pinskia at gcc dot gnu dot org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).