The "conditional jumps" are sometimes bad. However, they've appeared the "conditional moves" to don't jump and consecuently to reduce the penalization of the conditional jump.
I've the idea of combining GS_ASSIGN... and GS_COND... to give these following 6 new GIMPLE instructions: GS_ASSIGN_COND GS_ASSIGN_COND_EQ GS_ASSIGN_COND_NE GS_ASSIGN_COPY_COND GS_ASSIGN_COPY_COND_EQ GS_ASSIGN_COPY_COND_NE There are many good "cmovXX" from Intel i686. Please, search the word "cmov" in this url http://webster.cs.ucr.edu/AoA/Windows/PDFs/AppendixD.pdf and you will discover new optimized ideas. You will need a good simplifying. Good bye. J.C. Pizarro :)