https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97387
--- Comment #7 from fdlbxtqi <euloanty at live dot com> --- (In reply to Jakub Jelinek from comment #6) > Trying 10, 17 -> 18: > 10: r88:QI=ltu(flags:CCC,0) > REG_DEAD flags:CCC > 17: {flags:CCC=cmp(r88:QI-0x1,r88:QI);clobber scratch;} > REG_DEAD r88:QI > 18: > {flags:CCC=cmp(zero_extend(ltu(flags:CCC,0)+r106:DI+r107:DI), > zero_extend(r107:DI)+ltu(flags:CCC,0));r109:DI=ltu(flags:CCC,0)+r106:DI+r107: > DI > ;} > REG_DEAD r107:DI > REG_DEAD r106:DI > Can't combine i1 into i3 BTW. clang does not remove the movl $0, %esi before sbbq %rsi, %rsi sbbq itself does not matter what the value itself is. https://godbolt.org/z/szYb55 I do not know whether GCC would remove this after patch. If you can optimize this away, I would thank you.