https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85368
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org --- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Created attachment 45072 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=45072&action=edit gcc9-pr85368.patch So, does this fix it? On branch_cost targets, we should IMHO always expect no ifs because we pass -mbranch-cost=2 which makes it effectively a non-logical_op_short_circuit target at compile time, whatever it has as default. Tested so far only on x86_64-linux as an example of !logical_op_short_circuit && branch_cost target. Another target to try is s390x-linux as logical_op_short_circuit && branch_cost target, then perhaps powerpc*-linux as logical_op_short_circuit && !branch_cost target and perhaps even some !logical_op_short_circuit && !branch_cost like ia64-*-linux* or others.