[Bug target/19558] openssl speed compiled with 20051020 gcc-4.0 (HEAD) segfaults
gj at pointblue dot com dot pl
gcc-bugzilla@gcc.gnu.org
Fri Jan 21 02:49:00 GMT 2005
------- Additional Comments From gj at pointblue dot com dot pl 2005-01-21 02:49 -------
it looks like that in x86_64.i file:
unsigned long bn_add_words (unsigned long *rp, unsigned long *ap, unsigned long
*bp,int n)
{ unsigned long ret,i;
if (n <= 0) return 0;
asm (
" subq %2,%2 \n"
".align 16 \n"
"1: movq (%4,%2,8),%0 \n"
" adcq (%5,%2,8),%0 \n"
" movq %0,(%3,%2,8) \n"
" leaq 1(%2),%2 \n"
" loop 1b \n"
" sbbq %0,%0 \n"
"); asm "addq %: "+a"(ret),"+c"(n),"+r"(i)
: "r"(rp),"r"(ap),"r"(bp)
: "cc"
);
return ret&1;
}
and in .s file:
bn_add_words:
.LFB11:
.loc 1 154 0
.loc 1 156 0
.LBB25:
xorl %r9d, %r9d
testl %ecx, %ecx
jle .L49
.loc 1 158 0
#APP
subq %r8,%r8
.align 16
1: movq (%rsi,%r8,8),%rax
adcq (%rdx,%r8,8),%rax
movq %rax,(%rdi,%r8,8)
leaq 1(%r8),%r8
loop 1b
sbbq %rax,%rax
#NO_APP
movq %rax, %r9
.loc 1 172 0
andl $1, %r9d
.loc 1 173 0
.L49:
.LBE25:
movq %r9, %rax
ret
so it looks like function written in assembler by programmer. At least to me.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19558
More information about the Gcc-bugs
mailing list