https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118623
--- Comment #16 from Hongtao Liu <liuhongt at gcc dot gnu.org> --- (In reply to Jakub Jelinek from comment #14) > So, if (reg:CCC flags) being non-zero in RTL means nc and (reg:CCC flags) > being zero in RTL means c, shouldn't *bt<mode> be using (compare:CCC > (zero_extract ...) (const_int 1)) rather than 0? IMO, yes. When the bit is 1, there're no borrow in the (compare:CCC (zero_extract ...) (const_int 1)), so Carry flag is set. Otherwise the carry flag is cleared.