https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120553
--- Comment #5 from Uroš Bizjak <ubizjak at gmail dot com> --- This patch fixes the non-optimal testcase in Comment #4 for x86_64: --cut here-- diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 40b43cf092a..8eee44756eb 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -26478,8 +26478,8 @@ (define_peephole2 (define_expand "mov<mode>cc" [(set (match_operand:SWIM 0 "register_operand") (if_then_else:SWIM (match_operand 1 "comparison_operator") - (match_operand:SWIM 2 "<general_operand>") - (match_operand:SWIM 3 "<general_operand>")))] + (match_operand:SWIM 2 "general_operand") + (match_operand:SWIM 3 "general_operand")))] "" "if (ix86_expand_int_movcc (operands)) DONE; else FAIL;") --cut here-- gcc -O2: movq %rdi, %rax sarq $63, %rax btsq $34, %rax ret