https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63986
Eric Botcazou <ebotcazou at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |ebotcazou at gcc dot gnu.org --- Comment #4 from Eric Botcazou <ebotcazou at gcc dot gnu.org> --- > I suppose RTL CSE cannot CSE flag register sets...? Yes, it can, if you define -- Target Hook: bool TARGET_FIXED_CONDITION_CODE_REGS (unsigned int *P1, unsigned int *P2) On targets which do not use `(cc0)', and which use a hard register rather than a pseudo-register to hold condition codes, the regular CSE passes are often not able to identify cases in which the hard register is set to a common value. Use this hook to enable a small pass which optimizes such cases. This hook should return true to enable this pass, and it should set the integers to which its arguments point to the hard register numbers used for condition codes. When there is only one such register, as is true on most systems, the integer pointed to by P2 should be set to `INVALID_REGNUM'.