https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61949

--- Comment #20 from ro at CeBiTec dot Uni-Bielefeld.DE <ro at CeBiTec dot 
Uni-Bielefeld.DE> ---
> --- Comment #17 from Richard Biener <rguenth at gcc dot gnu.org> ---
> ./configure --target=i386-pc-solaris2.10
>
> is not enough, with -O3 -msse2 and the preprocessed file I get
>
> md5_finish_ctx:
> ...
>         call    md5_process_block
>         movl    12(%ebp), %eax
>         addl    $16, %esp
>         movdqu  (%ebx), %xmm0
>         movups  %xmm0, (%eax)
>         leal    -12(%ebp), %esp
>         popl    %ebx
>         popl    %esi
>         popl    %edi
>         popl    %ebp
>         ret
>
> thus the expected unaligned moves, also not from the stacak.

That's what I get when I manually compile with -O3 -msse2.

But the compile happens with

/var/gcc/reghunt/pch-import-1/28660/./prev-gcc/xgcc
-B/var/gcc/reghunt/pch-import-1/28660/./prev-gcc/
-B/usr/local/i386-pc-solaris2.10/bin/ -B/usr/local/i386-pc-solaris2.10/bin/
-B/usr/local/i386-pc-solaris2.10/lib/ -isystem
/usr/local/i386-pc-solaris2.10/include -isystem
/usr/local/i386-pc-solaris2.10/sys-include    -c -DHAVE_CONFIG_H -g -O2  -I.
-I/var/gcc/reghunt/trunk/libiberty/../include  -W -Wall -Wwrite-strings
-Wc++-compat -Wstrict-prototypes -pedantic  -D_GNU_SOURCE
/var/gcc/reghunt/trunk/libiberty/md5.c -o md5.o

effectively just -O2:

md5_finish_ctx:
[...]
        call    md5_process_block
        movl    (%ebx), %eax
        addl    $16, %esp
        movl    %eax, -40(%ebp)
        movl    4(%ebx), %eax
        movl    %eax, -36(%ebp)
        movl    8(%ebx), %eax
        movl    %eax, -32(%ebp)
        movl    12(%ebx), %eax
        movl    %eax, -28(%ebp)
        movl    12(%ebp), %eax
        movaps  -40(%ebp), %xmm0
        movups  %xmm0, (%eax)
        leal    -12(%ebp), %esp
        popl    %ebx
        popl    %esi
        popl    %edi
        popl    %ebp
        ret

Reply via email to