Re: Runaway cron task on 2.5.63/4 bk?

From: Andrew Morton (akpm@digeo.com)
Date: Tue Mar 11 2003 - 18:34:37 EST


Linus Torvalds <torvalds@transmeta.com> wrote:
>
>
> On Tue, 11 Mar 2003, Andrew Morton wrote:
> >
> > 2.95.3 and 3.2.1 seem to do it right?
>
> Try the "64x32->64" version. gcc didn't use to get that one right, but
> maybe it does now.
>

long a;
long long b;
long long c;

void foo(void)
{
        c = a * b;
}

It seems to get that wrong. At least, there are three multiplies in there.
3.2.1 is similar.

        .file "t.c"
        .version "01.01"
gcc2_compiled.:
.text
        .align 4
.globl foo
        .type foo,@function
foo:
        pushl %ebp
        movl %esp,%ebp
        subl $16,%esp
        pushl %esi
        pushl %ebx
        movl a,%eax
        movl %eax,%ebx
        movl %eax,%esi
        sarl $31,%esi
        movl %ebx,%eax
        mull b
        movl %eax,-8(%ebp)
        movl %edx,-4(%ebp)
        movl %ebx,%eax
        imull b+4,%eax
        addl %eax,%edx
        movl %edx,-4(%ebp)
        movl b,%eax
        imull %esi,%eax
        addl %eax,-4(%ebp)
        movl -8(%ebp),%eax
        movl -4(%ebp),%edx
        movl %eax,c
        movl %edx,c+4
        popl %ebx
        popl %esi
        movl %ebp,%esp
        popl %ebp
        ret
.Lfe1:
        .size foo,.Lfe1-foo
        .comm a,4,4
        .comm b,8,4
        .comm c,8,4
        .ident "GCC: (GNU) 2.95.3 20010315 (release)"

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Sat Mar 15 2003 - 22:00:28 EST