------- Comment #2 from hubicka at gcc dot gnu dot org 2009-11-30 17:29 -------
With 4.5 we seem to be all fine here:
j...@gcc17:~/trunk/build/gcc$ ./g++ -B ./ -O2 tt.c -fdump-tree-all-details -S
-fdump-rtl-all-details-blocks
j...@gcc17:~/trunk/build/gcc$ more tt.s
.file "tt.c"
.text
.p2align 4,,15
.globl _Z11test_expectPcS_S_S_
.type _Z11test_expectPcS_S_S_, @function
_Z11test_expectPcS_S_S_:
.LFB0:
cmpq %rcx, %rdx
sete %dl
cmpq %rsi, %rdi
sete %al
testb %al, %dl
je .L2
jmp _Z6likelyv
.L2:
jmp _Z8unlikelyv
.LFE0:
and the conditional jump is predicted in the proper direction in greg dumps as
having 1% probability to reach unlikely.
Of course we miss here the conditional tailcall case.
Honza
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42233