https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110304
--- Comment #18 from cqwrteur <unlvsur at live dot com> --- Would you mind if I clarified a few points regarding your query? I'm referring to implementing "sub borrow" with sub_overflow, as demonstrated in the code snippet at https://godbolt.org/z/ev3TfeTvd , correct? Additionally, I'd like to inquire about the possibility of enabling the compiler to comprehend the "carry + set value" pattern. For instance, in the given example: carry = sub_carry(false, a, b, c); unsigned v { carry ? 38u : 0u }; To clarify, the intention is to utilize the carry flag for subtraction operations where a register subtracts itself and then performs a bitwise AND operation with a specified value. carry = sub_carry(false, a, b, c); unsigned v; carry = sub_carry(carry, v, v, v); v &= 38u;