Bruno Haible wrote: > Hi Ralf, > >>>> I count ca. 2 CPU >>>> cycles for a memory access and ca. 8 CPU cycles for a conditional jump, >>>> therefore I would say that the change slows down the program a bit. >> For what little it's worth, this code cycle argument does not take into >> account the optimization features of recent GCC versions AFAIK. > > Which gcc versions are you alluding at? The attached program, compiled > with -O2 -S for i686, yields 3 conditional branches in shortcircuit_and > and 1 conditional branch in binary_and, with gcc 4.3.0 - same as with > previous versions of gcc. It it improved in gcc 4.4 snapshots?
I have a pending patch to transform && || ! to & | ^ when possible, but it does not apply necessarily to jumps. There is a parameter called -mbranch-cost={1,2,3,4,5} that you can use to choose how && and || are compiled in jumps. Paolo