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.

Reply via email to