https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90648
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|ASSIGNED |NEW Assignee|jakub at gcc dot gnu.org |unassigned at gcc dot gnu.org --- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> --- extern double copysign (); double foo (double x) { return x * copysign (); } ICEs similarly as well, it isn't specific to the _FloatN types (though copysignf and float instead of copysign and double doesn't, because float isn't self-promoting and the C FE handles it differently during builtin handling. That said, I'd say this is a genmatch bug, in that it doesn't do any argument verification of the builtins, neither in generic nor gimple, and happily uses CALL_EXPR_ARG (op0, 0) and CALL_EXPR_ARG (op0, 1) or similarly in gimple, when it didn't even verify the builtin has that many arguments.