1 /* Test for warnings for missing format attributes.  */
2 /* Origin: Joseph Myers <jsm28@cam.ac.uk> */
3 /* { dg-do compile } */
4 /* { dg-options "-std=gnu99 -Wmissing-format-attribute" } */
5 
6 #include "format.h"
7 
8 void
foo(const char * fmt,...)9 foo (const char *fmt, ...)
10 {
11   va_list ap;
12   va_start (ap, fmt);
13   vprintf (fmt, ap); /* { dg-warning "candidate" "printf attribute warning" } */
14   va_end (ap);
15 }
16 
17 void
bar(const char * fmt,...)18 bar (const char *fmt, ...)
19 {
20   va_list ap;
21   va_start (ap, fmt);
22   vscanf (fmt, ap); /* { dg-warning "candidate" "scanf attribute warning" } */
23   va_end (ap);
24 }
25 
26 __attribute__((__format__(gnu_attr___printf__, 1, 2))) void
foo2(const char * fmt,...)27 foo2 (const char *fmt, ...)
28 {
29   va_list ap;
30   va_start (ap, fmt);
31   vprintf (fmt, ap);
32   va_end (ap);
33 }
34 
35 void
vfoo(const char * fmt,va_list arg)36 vfoo (const char *fmt, va_list arg)
37 {
38   vprintf (fmt, arg); /* { dg-warning "candidate" "printf attribute warning 2" } */
39 }
40