https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110748
--- Comment #9 from Vineet Gupta <vineetg at gcc dot gnu.org> ---
(In reply to Vineet Gupta from comment #8)
> (In reply to Jeffrey A. Law from comment #5)
> > I'd bet it's const_0_operand not allowing CONST_DOUBLE.
>
> Correct.
>
> > The question is what unintended side effects we'd have if we allowed
> > CONST_DOUBLE 0.0 in const_0_operand.
>
> Exactly. I had the same concern.
[...]
> However to Kito's point, this indeed works in gcc 12 so I first need to
> bisect what regressed it in 13.
The mystery is solved. Guess what it was my change ef85d150b5963 ("RISC-V:
Enable TARGET_SUPPORTS_WIDE_INT") in gcc-13 cycle which made the booboo.
+ * config/riscv/predicates.md (const_0_operand): Remove
+ const_double.
And I don't recall why I did that part. But I guess reinstating it back won't
be that radical, since it wa sin tree for a while. I'll throw it at full
testsuite to see if there are any fallouts.