gcc 3.3.1/cygwin

MemSetAligned: prints "square is 4.000000"
MemSet: prints "square is 0.000000"

Interestingly, a lot of the comparison and call to memset() still seem to be
optimised away, but the loop from MemSet is left, so the multiplication is
also not optimised away.

here's the assembler for test2/MemSet:

        subl    $28, %esp
        leal    16(%esp), %eax
        movl    $0, 16(%esp)
        leal    24(%esp), %edx
        cmpl    %edx, %eax
        movl    $1073741824, 20(%esp)
        jae     L21
        .align 16
        movl    $0, (%eax)
        addl    $4, %eax
        cmpl    %edx, %eax
        jb      L26
        fldl    16(%esp)
        movl    $LC1, (%esp)
        fmul    %st(0), %st
        fstl    16(%esp)
        fstpl   4(%esp)
        call    _printf
        addl    $28, %esp



----- Original Message ----- 
From: "Manfred Spraul" <[EMAIL PROTECTED]>
To: "Tom Lane" <[EMAIL PROTECTED]>
Cc: "Andrew Dunstan" <[EMAIL PROTECTED]>; "Patches (PostgreSQL)"
Sent: Tuesday, October 14, 2003 5:01 PM
Subject: Re: [PATCHES] fix for strict-alias warnings

> Tom Lane wrote:
> >Manfred Spraul <[EMAIL PROTECTED]> writes:
> >
> >
> >>After some massaging, I've succeeded in generating bad code using a
> >>slightly modified MemSetAligned macro (parameters -O2
> >>-fstrict-aliasing): gcc pipelined the x*x around the memset.
> >>
> >>
> >
> >As I already explained, we do not care about the MemSetAligned case.
> >Is gcc 3.3 smart enough to optimize away the pointer alignment test
> >in the full macro?
> >
> 3.2 optimizes away the pointer alignment test, but then doesn't pipeline
> the "x*x" calculation. It might be due to a known (and now fixed) bug in
> gcc where is lost track of constants, and thus didn't succeed in
> optimizing long calculations.
> I don't have gcc 3.3 installed, but IMHO it would be insane to leave
> strict alias analysis enabled - writing to *(int32*)addr violates the
> alias rules, the bad code generated with MemSetAligned proved that.
> Is someone around with 3.3 who could test MemSet?
> --
>     Manfred

---------------------------(end of broadcast)---------------------------
TIP 4: Don't 'kill -9' the postmaster

Reply via email to