https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96189
--- Comment #3 from Uroš Bizjak <ubizjak at gmail dot com> --- The master branch has been updated by Uros Bizjak <u...@gcc.gnu.org>: https://gcc.gnu.org/g:6c2848ad02feef5ac094d1158be3861819b3bb49 commit r11-2140-g6c2848ad02feef5ac094d1158be3861819b3bb49 Author: Uros Bizjak <ubiz...@gmail.com> Date: Wed Jul 15 21:27:00 2020 +0200 i386: Introduce peephole2 to use flags from CMPXCHG more [PR96189] CMPXCHG instruction sets ZF flag if the values in the destination operand and EAX register are equal; otherwise the ZF flag is cleared and value from destination operand is loaded to EAX. Following assembly: movl %esi, %eax lock cmpxchgl %edx, (%rdi) cmpl %esi, %eax sete %al can be optimized by removing the unneeded comparison, since set ZF flag signals that no update to EAX happened. 2020-15-07 UroÅ¡ Bizjak <ubiz...@gmail.com> gcc/ChangeLog: PR target/95355 * config/i386/sync.md (peephole2 to remove unneded compare after CMPXCHG): New pattern. gcc/testsuite/ChangeLog: PR target/95355 * gcc.target/i386/pr96189.c: New test.