/* Test for bogus diagnostics for dremf definition.  Although this
   definition is formally incorrect in ISO C, a GNU extension permits
   a prototype followed by unpromoted types in a function definition,
   so it should be permitted when the function is built in.  Bug
   16666.  Test with -pedantic-errors, where the problem should still
   be diagnosed.  */
/* { dg-do compile } */
/* { dg-options "-pedantic-errors" } */

float dremf (float, float); /* { dg-error "prototype declaration" } */

float
dremf (x, y)
     float x; /* { dg-error "promoted argument 'x' doesn't match prototype" } */
     float y; /* { dg-error "promoted argument 'y' doesn't match prototype" } */
{
  return x + y;
}
