https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85300
--- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Created attachment 43891 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=43891&action=edit gcc8-pr85300.patch Actually, most RTX_UNARY ops are ok, at least those where we declare that the outer mode is the mode of the operand or, if it is VOIDmode operand, it is considered to be in the outer mode. It is just the operations like ZERO_EXTEND, FLOAT, UNSIGNED_FLOAT (and in theory SIGN_EXTEND and TRUNCATE) where the modes can be different. And no, I've not been aware of this kind of issues with propagate_for_debug that it would basically look at partly substituted patterns rather than the original ones, and as the whole insn got accepted, nothing is undone from the undo buffer. It is possible known_cond might need similar treatment, but I don't have any testcase that would back it up.