http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53346



Jan Hubicka <hubicka at gcc dot gnu.org> changed:



           What    |Removed                     |Added

----------------------------------------------------------------------------

                 CC|                            |hubicka at gcc dot gnu.org



--- Comment #21 from Jan Hubicka <hubicka at gcc dot gnu.org> 2012-11-14 
22:18:53 UTC ---

Well, as I wrote to the other PR, the main problem of cmov is extension of

dependency chain.  For well predicted sequence with conditional jump there is

no update of rbs so the loop executes faster, because the

loads/stores/comparisons executes "in parallel". The load in the next iteration

can then happen speculatively before the condition from previous iteration is

resolved. With cmov in it, there is dependence on rbx for all the other

computations in the loop.



I guess there is no localy available information suggesting suggesting that the

particular branch is well predictable, at least without profile feedback (where

we won't disable the conversion anyway).



I wonder

 1) why the conversion to cmov do not happen on RTL if conversion pass

 2) whether we can do something to detect similar patterns and possibly disable

cmovs on them...

Reply via email to