------- Comment #7 from malitzke at metronets dot com  2007-05-23 02:09 -------
Thank you Mr Taylor; your suggestion to use volatile certainly work in this
drastically reduced test case. If it will work when nsec is part of a kernel
structure I will leave to the experts. I, certainly, know better than to argue
with you, who wrote uucp and has been active on gcc for probably 15 years or
more.

The *.s file and the results of time follow: (both obtained with -O1)

        .file   "rmgg.c"
        .text
        .p2align 4,,15
.globl rmg
        .type   rmg, @function
rmg:
        movl    sec.1647, %ecx
        pushl   %ebp
        movl    %esp, %ebp
        testl   %ecx, %ecx
        jg      .L18
.L6:
        movl    nsec.1646, %eax
        movl    nsec.1646+4, %edx
        addl    $1, %eax
        adcl    $0, %edx
        movl    %eax, nsec.1646
        movl    %edx, nsec.1646+4
        movl    nsec.1646, %eax
        movl    nsec.1646+4, %edx
        cmpl    $0, %edx
        jbe     .L15
.L13:
        movl    nsec.1646, %eax
        movl    nsec.1646+4, %edx
        addl    $-1000000000, %eax
        adcl    $-1, %edx
        incl    %ecx
        movl    %eax, nsec.1646
        movl    %edx, nsec.1646+4
        movl    nsec.1646, %eax
        movl    nsec.1646+4, %edx
        cmpl    $0, %edx
        ja      .L13
        .p2align 4,,15
.L15:
        cmpl    $999999999, %eax
        ja      .L13
        testl   %ecx, %ecx
        jle     .L6
.L18:
        popl    %ebp
        movl    %ecx, %eax
        movl    %ecx, sec.1647
        ret
        .size   rmg, .-rmg
        .p2align 4,,15
.globl main
        .type   main, @function
main:
        leal    4(%esp), %ecx
        andl    $-16, %esp
        pushl   -4(%ecx)
        pushl   %ebp
        movl    %esp, %ebp
        pushl   %ecx
        call    rmg
        popl    %ecx
        popl    %ebp
        leal    -4(%ecx), %esp
        ret
        .size   main, .-main
        .local  sec.1647
        .comm   sec.1647,4,4
        .local  nsec.1646
        .comm   nsec.1646,8,8
        .ident  "GCC: (GNU) 4.3.0 20070522 (experimental)"
        .section        .note.GNU-stack,"",@progbits




real    0m16.433s
user    0m16.425s
sys     0m0.004s


-- 


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

Reply via email to