https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99830
--- Comment #12 from Segher Boessenkool <segher at gcc dot gnu.org> --- (In reply to Jakub Jelinek from comment #11) > I don't understand what is wrong about that. > (clobber:TI (const_int 0 [0])) in there stands for couldn't figure out what > this value is or how to represent it, so it is wildcard for I don't know > what the value is. That is not what it means. It means "This instruction is invalid". It should never be "optimised" away. > I'd think if one has say (and:TI (clobber:TI (const_int 0 [0])) (const_int 0 > [0])) one should be able to still simplify it into 0, etc., No. That RTL has no meaning at all, you cannot use a clobber as a RHS! > and what happens > here is the same thing, the clobber value, whatever it is, doesn't influence > in any way the whole expression value, therefore it is optimized away. > If it remained there, sure, the instruction would fail recog_for_combine. Yes. And that is why it should never be removed!