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