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