Andrew Pinski <[EMAIL PROTECTED]> writes:

> On Jun 20, 2005, at 9:38 AM, Sergei Organov wrote:
>
> > 2. The resulting assembly is different from what I get with -O1 and
> >    doesn't contain the mis-optimization I'm trying to debug though it
> >    doesn't seem to have anything to do with loops. For reference, the
> >    code I'm trying to compile is:
> >
> >         extern double const osv;
> >         double const osv = 314314314;
> >         double osvf() { return osv; }
>
> I don't see anything wrong with what it gives for -O0 and -O2.

Well, it's on PowerPC with its small constant data sections.

With -O1 I get:

        .globl osv
        .section        .sdata2,"a",@progbits
        .align 3
        .type   osv, @object
        .size   osv, 8
osv:
        .long   1102232590
        .long   1241513984
        .section        .rodata.cst8,"aM",@progbits,8
        .align 3
.LC0:
        .long   1102232590
        .long   1241513984
        .section        ".text"
        .align 2
        .globl osvf
        .type   osvf, @function
osvf:
        lis %r9,[EMAIL PROTECTED]  # tmp121,
        lfd %f1,[EMAIL PROTECTED](%r9)      #, <result>
        blr      #

With -O0 and a bunch of -f's from -O1 I get:

        .globl osv
        .section        .sdata2,"a",@progbits
        .align 3
        .type   osv, @object
        .size   osv, 8
osv:
        .long   1102232590
        .long   1241513984
        .section        ".text"
        .align 2
        .globl osvf
        .type   osvf, @function
osvf:
.LFB2:
        lfd %f0,[EMAIL PROTECTED](%r0)   # osv, D.1144
        fmr %f1,%f0      # <result>, <result>
        blr      #

While the ideal code would be:

        ...
osvf:
.LFB2:
        lfd %f1,[EMAIL PROTECTED](%r0)   # osv, D.1144
        blr      #

-- 
Sergei.

Reply via email to