------- Additional Comments From giovannibajo at libero dot it 2005-06-06 14:40 ------- Looks like the culrpit is this:
========================================================================= static unsigned int S[256]; unsigned md2_block (unsigned int *sp1, unsigned int *sp2, const unsigned char *d) { register unsigned int t; register int i, j; static unsigned int state[48]; j = sp2[16 - 1]; for (i = 0; i < 16; i++) { state[i] = sp1[i]; state[i + 16] = t = d[i]; state[i + 32] = (t ^ sp1[i]); j = sp2[i] ^= S[t ^ j]; } } ========================================================================= gcc 3.4.3 -fPIC -O2: =================================================== .L5: movl 8(%ebp), %esi movl (%esi,%ecx,4), %eax movl %eax, [EMAIL PROTECTED](%ebx,%ecx,4) movl 16(%ebp), %edx movzbl (%edx,%ecx), %eax movl %eax, [EMAIL PROTECTED](%ebx,%ecx,4) movl (%esi,%ecx,4), %edx xorl %eax, %edx movl -16(%ebp), %esi xorl -20(%ebp), %eax movl %edx, [EMAIL PROTECTED](%ebx,%ecx,4) movl (%esi,%eax,4), %eax xorl (%edi,%ecx,4), %eax movl %eax, (%edi,%ecx,4) incl %ecx cmpl $15, %ecx movl %eax, -20(%ebp) jle .L5 =================================================== gcc 4.1.0 20050529 -fPIC -O2: =================================================== .L2: movl 8(%ebp), %eax leal 0(,%edi,4), %ecx movl %ecx, -28(%ebp) addl %ecx, %eax movl 16(%ebp), %ecx movl %eax, %edx movl %eax, -24(%ebp) movl -4(%eax), %eax movl %eax, (%esi) movzbl -1(%ecx,%edi), %eax incl %edi movl %eax, 64(%esi) movl -4(%edx), %ecx movl 12(%ebp), %edx xorl %eax, %ecx movl %ecx, 128(%esi) movl -28(%ebp), %ecx addl $4, %esi addl %edx, %ecx movl -16(%ebp), %edx xorl %edx, %eax movl -20(%ebp), %edx movl (%edx,%eax,4), %eax movl -4(%ecx), %edx xorl %edx, %eax cmpl $17, %edi movl %eax, -4(%ecx) movl %eax, -16(%ebp) jne .L2 =================================================== -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19923