https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99930
--- Comment #3 from Segher Boessenkool <segher at gcc dot gnu.org> --- What happens here is https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=gcc/combine.c;h=3294575357bfcb19e589868da34364498a860dcf;hb=HEAD#l1884 "*<code><mode>2_1" for absneg:MODEF has a bare "use". And then we trigger If the USE in INSN was for a pseudo register, the matching insn pattern will likely match any register; combining this with any other USE would only be safe if we knew that the used registers have identical values, or if there was something to tell them apart, e.g. different modes. For now, we forgo such complicated tests and simply disallow combining of USES of pseudo registers with any other USE. because both the abs and the neg have a bare use. The patterns should be rewritten to not have such bare uses. Alternatively we can add some pretty-much-never-triggered code do combine to handle this case. Patches welcome.