https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107172
--- Comment #17 from H.J. Lu <hjl.tools at gmail dot com> --- (In reply to Segher Boessenkool from comment #14) > (In reply to H.J. Lu from comment #13) > > (In reply to Segher Boessenkool from comment #12) > > > > > > To determine the semantics of this piece of RTL you need to see the > > > setter(s) > > > of reg 17 feeding this use. In this case, the setter was > > > (set (reg:CCC 17) > > > (ne:CCC (reg:SI 82) > > > (const_int 0 [0]))) > > > which has no meaning for a use that uses "ltu". > > > > What should a valid setter look like? It should set reg 17 in CCC mode if > > reg 82 in SI mode isn't 0. > > CCCmode can only represent the result of a comparison, like any other MODE_CC > thing. The i386 CCCmode means only the carry bit can be used for this, so > you > beed to do an unsigned comparison against (const_int 1). This will end up > with > the opposite polarity of what you said I guess, you need "geu" instead? Since it checks if the input register is 0, compare against (const_int 1) won't work here.