http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53346
--- Comment #18 from Dominique d'Humieres <dominiq at lps dot ens.fr> 2012-05-18 18:29:06 UTC --- > Are conditional moves that bad on x86? The change which uses them more for > COND_EXPR was mine but really I think this was a latent bug or a way to say > chose conditional move over jumps for some targets. As said in comment #0 the first regression appeared between revisions 162456 (2010-07-23) and 164728 (2010-09-29), so the problem is fairly old [macbook] test/dbg_rnflow% /opt/gcc/gcc4.6p-162456/bin/gfortran -c -O3 cptrf2.f90 [macbook] test/dbg_rnflow% makeo ; time a.out > /dev/null 20.904u 0.345s 0:21.26 99.9% 0+0k 0+0io 0pf+0w [macbook] test/dbg_rnflow% /opt/gcc/gcc4.6p-162456/bin/gfortran -c -O3 -fno-tree-loop-if-convert cptrf2.f90 [macbook] test/dbg_rnflow% makeo ; time a.out > /dev/null 20.898u 0.341s 0:21.24 99.9% 0+0k 0+0io 0pf+0w [macbook] test/dbg_rnflow% /opt/gcc/gcc4.6p-164728/bin/gfortran -c -O3 cptrf2.f90 [macbook] test/dbg_rnflow% makeo ; time a.out > /dev/null 28.607u 0.346s 0:28.96 99.9% 0+0k 0+0io 0pf+0w [macbook] test/dbg_rnflow% /opt/gcc/gcc4.6p-164728/bin/gfortran -c -O3 -fno-tree-loop-if-convert cptrf2.f90 [macbook] test/dbg_rnflow% makeo ; time a.out > /dev/null 21.153u 0.342s 0:21.50 99.9% 0+0k 0+0io 0pf+0w