http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50182
davidxl <xinliangli at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |xinliangli at gmail dot com --- Comment #2 from davidxl <xinliangli at gmail dot com> 2011-08-24 23:15:44 UTC --- The problem is fixed in trunk compiler: 1) with 4.6 compiler: test description absolute operations ratio with number time per second test0 0 "int8_t constant add" 3.29 sec 486.32 M 1.00 RAT_STALLS.registers = 288249 (sampling count 10001) 2) with trunk compiler: test description absolute operations ratio with number time per second test0 0 "int8_t constant add" 1.34 sec 1194.03 M 1.00 No partial register stalls from user functions. Inner loop from trunk compiler: .L55: movzbl 0(%rbp,%rcx), %r9d addq $1, %rcx cmpl %ecx, %ebx leal 10(%r8,%r9), %r8d jg .L55 Inner loop from 46 compiler: .L43: addl $10, %eax addb (%rdx), %al addq $1, %rdx cmpq $data8+8000, %rdx jne .L43 RAT stalls (not precise event so the instruction causing stalls is a little off) : 400e27: nopw 0x0(%rax,%rax,1) 127 0.0440 : 400e30: add $0xa,%eax 5869 2.0330 : 400e33: add (%rdx),%al 282125 97.7263 : 400e35: add $0x1,%rdx : 400e39: cmp $0x404560,%rdx : 400e40: jne 400e30 <main+0xd0> David