annotate gcc/testsuite/gcc.dg/format/multattr-2.c @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* Test for multiple format attributes. Test for printf and scanf attributes
kono
parents:
diff changeset
2 together, in different places on the declarations. */
kono
parents:
diff changeset
3 /* Origin: Joseph Myers <jsm28@cam.ac.uk> */
kono
parents:
diff changeset
4 /* { dg-do compile } */
kono
parents:
diff changeset
5 /* { dg-options "-std=gnu99 -Wformat" } */
kono
parents:
diff changeset
6
kono
parents:
diff changeset
7 #define DONT_GNU_PROTOTYPE
kono
parents:
diff changeset
8 #include "format.h"
kono
parents:
diff changeset
9
kono
parents:
diff changeset
10 /* If we specify multiple attributes for a single function, they should
kono
parents:
diff changeset
11 all apply, wherever they are placed on the declarations. */
kono
parents:
diff changeset
12
kono
parents:
diff changeset
13 extern __attribute__((__format__(gnu_attr___printf__, 1, 0))) void
kono
parents:
diff changeset
14 my_vprintf_scanf (const char *, va_list, const char *, ...)
kono
parents:
diff changeset
15 __attribute__((__format__(gnu_attr___scanf__, 3, 4)));
kono
parents:
diff changeset
16
kono
parents:
diff changeset
17 extern void (__attribute__((__format__(gnu_attr___printf__, 1, 0))) my_vprintf_scanf2)
kono
parents:
diff changeset
18 (const char *, va_list, const char *, ...)
kono
parents:
diff changeset
19 __attribute__((__format__(gnu_attr___scanf__, 3, 4)));
kono
parents:
diff changeset
20
kono
parents:
diff changeset
21 extern __attribute__((__format__(gnu_attr___scanf__, 3, 4))) void
kono
parents:
diff changeset
22 (__attribute__((__format__(gnu_attr___printf__, 1, 0))) my_vprintf_scanf3)
kono
parents:
diff changeset
23 (const char *, va_list, const char *, ...);
kono
parents:
diff changeset
24
kono
parents:
diff changeset
25 void
kono
parents:
diff changeset
26 foo (va_list ap, int *ip, long *lp)
kono
parents:
diff changeset
27 {
kono
parents:
diff changeset
28 my_vprintf_scanf ("%d", ap, "%d", ip);
kono
parents:
diff changeset
29 my_vprintf_scanf ("%d", ap, "%ld", lp);
kono
parents:
diff changeset
30 my_vprintf_scanf ("%", ap, "%d", ip); /* { dg-warning "format" "printf" } */
kono
parents:
diff changeset
31 my_vprintf_scanf ("%d", ap, "%ld", ip); /* { dg-warning "format" "scanf" } */
kono
parents:
diff changeset
32 my_vprintf_scanf2 ("%d", ap, "%d", ip);
kono
parents:
diff changeset
33 my_vprintf_scanf2 ("%d", ap, "%ld", lp);
kono
parents:
diff changeset
34 my_vprintf_scanf2 ("%", ap, "%d", ip); /* { dg-warning "format" "printf" } */
kono
parents:
diff changeset
35 my_vprintf_scanf2 ("%d", ap, "%ld", ip); /* { dg-warning "format" "scanf" } */
kono
parents:
diff changeset
36 my_vprintf_scanf3 ("%d", ap, "%d", ip);
kono
parents:
diff changeset
37 my_vprintf_scanf3 ("%d", ap, "%ld", lp);
kono
parents:
diff changeset
38 my_vprintf_scanf3 ("%", ap, "%d", ip); /* { dg-warning "format" "printf" } */
kono
parents:
diff changeset
39 my_vprintf_scanf3 ("%d", ap, "%ld", ip); /* { dg-warning "format" "scanf" } */
kono
parents:
diff changeset
40 }