/* Tests for _FloatN / _FloatNx types: test erroneous code.  */
/* { dg-do compile } */
/* { dg-options "" } */
/* { dg-add-options float32 } */
/* { dg-add-options float64 } */
/* { dg-add-options float32x } */
/* { dg-require-effective-target float32 } */
/* { dg-require-effective-target float32x } */
/* { dg-require-effective-target float64 } */

/* _FloatN, _FloatNx and standard types are incompatible even if they
   have the same ABI.  */

extern float a; /* { dg-message "previous declaration" } */
extern _Float32 a; /* { dg-error "conflicting" } */

extern double b; /* { dg-message "previous declaration" } */
extern _Float32x b; /* { dg-error "conflicting" } */

extern _Float64 c; /* { dg-message "previous declaration" } */
extern _Float32x c; /* { dg-error "conflicting" } */

/* These types are not promoted in old-style function definitions.  */

void f (_Float32);
void
f (x)
     _Float32 x;
{
}

void g (double); /* { dg-error "prototype declaration" } */
void
g (x)
     _Float32 x; /* { dg-error "match prototype" } */
{
}

void h (_Float64); /* { dg-error "prototype declaration" } */
void
h (x)
     _Float32 x; /* { dg-error "match prototype" } */
{
}
