https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117095
--- Comment #3 from Stefan Schulze Frielinghaus <stefansf at gcc dot gnu.org> --- Calling cse_insn() for (insn 99 98 100 12 (set (reg:SI 138) (const_int 1 [0x1])) "t.c":9:31 1507 {*movsi_zarch} (nil)) results in a call to insert_regs() where we have (gdb) call debug_rtx(x) (reg:SI 138) (gdb) call dump_class(classp) Equivalence chain for (const_int 1 [0x1]): (const_int 1 [0x1]) (reg:SI 165) So indeed cse2 decided that pseudo 165 holds constant 1. I didn't spot the point where cse2 decides this. Any idea where to start?