/* Test for format attributes: test default attributes are applied
   to implicit declarations.  */
/* Origin: Joseph Myers <jsm28@cam.ac.uk> */
/* { dg-do compile } */
/* { dg-options "-std=gnu89 -Wformat" } */

/* We can't #include "format.h" here.  */

/* Technically, none of the format functions should be implicitly declared;
   either the implicit type is wrong, the function has variable arguments
   or it requires a type declared in a header.  However, some bad programming
   practice uses implicit declarations of some of these functions.

   Note that printf is not used in this test because of the declaration
   of it as a built-in function.  */

void
foo (const char *s, int *p)
{
  scanf("%ld", p); /* { dg-warning "format" "implicit scanf" } */
  /* { dg-warning "implicit" "implicit decl warning" { target *-*-* } 20 } */
}
