annotate gcc/testsuite/gcc.dg/format/gcc_diag-1.c @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children 1830386684a0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1 /* Test for GCC diagnostic formats. */
111
kono
parents:
diff changeset
2 /* Origin: Kaveh Ghazi <ghazi@caip.rutgers.edu> */
kono
parents:
diff changeset
3 /* { dg-do compile } */
kono
parents:
diff changeset
4 /* { dg-options "-Wformat" } */
kono
parents:
diff changeset
5
kono
parents:
diff changeset
6 #include "format.h"
kono
parents:
diff changeset
7
kono
parents:
diff changeset
8 #define ATTRIBUTE_DIAG(F) __attribute__ ((__format__ (F, 1, 2))) __attribute__ ((__nonnull__));
kono
parents:
diff changeset
9
kono
parents:
diff changeset
10 /* Magic identifiers must be set before the attribute is used. */
kono
parents:
diff changeset
11
kono
parents:
diff changeset
12 typedef long long __gcc_host_wide_int__;
kono
parents:
diff changeset
13
kono
parents:
diff changeset
14 typedef struct location_s
kono
parents:
diff changeset
15 {
kono
parents:
diff changeset
16 const char *file;
kono
parents:
diff changeset
17 int line;
kono
parents:
diff changeset
18 } location_t;
kono
parents:
diff changeset
19
kono
parents:
diff changeset
20 union tree_node;
kono
parents:
diff changeset
21 typedef union tree_node *tree;
kono
parents:
diff changeset
22
kono
parents:
diff changeset
23 extern int diag (const char *, ...) ATTRIBUTE_DIAG(__gcc_diag__);
kono
parents:
diff changeset
24 extern int tdiag (const char *, ...) ATTRIBUTE_DIAG(__gcc_tdiag__);
kono
parents:
diff changeset
25 extern int cdiag (const char *, ...) ATTRIBUTE_DIAG(__gcc_cdiag__);
kono
parents:
diff changeset
26 extern int cxxdiag (const char *, ...) ATTRIBUTE_DIAG(__gcc_cxxdiag__);
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
27 extern int dump (const char *, ...) ATTRIBUTE_DIAG(__gcc_dump_printf__);
111
kono
parents:
diff changeset
28
kono
parents:
diff changeset
29 void
kono
parents:
diff changeset
30 foo (int i, int i1, int i2, unsigned int u, double d, char *s, void *p,
kono
parents:
diff changeset
31 int *n, short int *hn, long int l, unsigned long int ul,
kono
parents:
diff changeset
32 long int *ln, long double ld, wint_t lc, wchar_t *ls, llong ll,
kono
parents:
diff changeset
33 ullong ull, unsigned int *un, const int *cn, signed char *ss,
kono
parents:
diff changeset
34 unsigned char *us, const signed char *css, unsigned int u1,
kono
parents:
diff changeset
35 unsigned int u2, location_t *loc, tree t1, union tree_node *t2,
kono
parents:
diff changeset
36 tree *t3, tree t4[], int *v, unsigned v_len)
kono
parents:
diff changeset
37 {
kono
parents:
diff changeset
38 /* Acceptable C90 specifiers, flags and modifiers. */
kono
parents:
diff changeset
39 diag ("%%");
kono
parents:
diff changeset
40 tdiag ("%%");
kono
parents:
diff changeset
41 cdiag ("%%");
kono
parents:
diff changeset
42 cxxdiag ("%%");
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
43 dump ("%%");
111
kono
parents:
diff changeset
44 diag ("%d%i%o%u%x%c%s%p%%", i, i, u, u, u, i, s, p);
kono
parents:
diff changeset
45 tdiag ("%d%i%o%u%x%c%s%p%%", i, i, u, u, u, i, s, p);
kono
parents:
diff changeset
46 cdiag ("%d%i%o%u%x%c%s%p%%", i, i, u, u, u, i, s, p);
kono
parents:
diff changeset
47 cxxdiag ("%d%i%o%u%x%c%s%p%%", i, i, u, u, u, i, s, p);
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
48 dump ("%d%i%o%u%x%c%s%p%%", i, i, u, u, u, i, s, p);
111
kono
parents:
diff changeset
49 diag ("%qd%qi%qo%qu%qx%qc%qs%qp%<%%%'%>", i, i, u, u, u, i, s, p);
kono
parents:
diff changeset
50 tdiag ("%qd%qi%qo%qu%qx%qc%qs%qp%<%%%'%>", i, i, u, u, u, i, s, p);
kono
parents:
diff changeset
51 cdiag ("%qd%qi%qo%qu%qx%qc%qs%qp%<%%%'%>", i, i, u, u, u, i, s, p);
kono
parents:
diff changeset
52 cxxdiag ("%qd%qi%qo%qu%qx%qc%qs%qp%<%%%'%>", i, i, u, u, u, i, s, p);
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
53 dump ("%qd%qi%qo%qu%qx%qc%qs%qp%<%%%'%>", i, i, u, u, u, i, s, p);
111
kono
parents:
diff changeset
54 diag ("%ld%li%lo%lu%lx", l, l, ul, ul, ul);
kono
parents:
diff changeset
55 tdiag ("%ld%li%lo%lu%lx", l, l, ul, ul, ul);
kono
parents:
diff changeset
56 cdiag ("%ld%li%lo%lu%lx", l, l, ul, ul, ul);
kono
parents:
diff changeset
57 cxxdiag ("%ld%li%lo%lu%lx", l, l, ul, ul, ul);
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
58 dump ("%ld%li%lo%lu%lx", l, l, ul, ul, ul);
111
kono
parents:
diff changeset
59 diag ("%lld%lli%llo%llu%llx", ll, ll, ull, ull, ull);
kono
parents:
diff changeset
60 tdiag ("%lld%lli%llo%llu%llx", ll, ll, ull, ull, ull);
kono
parents:
diff changeset
61 cdiag ("%lld%lli%llo%llu%llx", ll, ll, ull, ull, ull);
kono
parents:
diff changeset
62 cxxdiag ("%lld%lli%llo%llu%llx", ll, ll, ull, ull, ull);
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
63 dump ("%lld%lli%llo%llu%llx", ll, ll, ull, ull, ull);
111
kono
parents:
diff changeset
64 diag ("%wd%wi%wo%wu%wx", ll, ll, ull, ull, ull);
kono
parents:
diff changeset
65 tdiag ("%wd%wi%wo%wu%wx", ll, ll, ull, ull, ull);
kono
parents:
diff changeset
66 cdiag ("%wd%wi%wo%wu%wx", ll, ll, ull, ull, ull);
kono
parents:
diff changeset
67 cxxdiag ("%wd%wi%wo%wu%wx", ll, ll, ull, ull, ull);
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
68 dump ("%wd%wi%wo%wu%wx", ll, ll, ull, ull, ull);
111
kono
parents:
diff changeset
69 diag ("%.*s", i, s);
kono
parents:
diff changeset
70 tdiag ("%.*s", i, s);
kono
parents:
diff changeset
71 cdiag ("%.*s", i, s);
kono
parents:
diff changeset
72 cxxdiag ("%.*s", i, s);
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
73 dump ("%.*s", i, s);
111
kono
parents:
diff changeset
74
kono
parents:
diff changeset
75 /* Extensions provided in the diagnostic framework. */
kono
parents:
diff changeset
76 diag ("%m");
kono
parents:
diff changeset
77 tdiag ("%m");
kono
parents:
diff changeset
78 cdiag ("%m");
kono
parents:
diff changeset
79 cxxdiag ("%m");
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
80 dump ("%m");
111
kono
parents:
diff changeset
81
kono
parents:
diff changeset
82 /* Quote directives to avoid "warning: conversion used unquoted." */
kono
parents:
diff changeset
83 tdiag ("%<%D%F%T%V%>", t1, t1, t1, t1);
kono
parents:
diff changeset
84 tdiag ("%<%+D%+F%+T%+V%>", t1, t1, t1, t1);
kono
parents:
diff changeset
85 tdiag ("%q+D%q+F%q+T%q+V", t1, t1, t1, t1);
kono
parents:
diff changeset
86 tdiag ("%<%D%D%D%D%>", t1, t2, *t3, t4[5]);
kono
parents:
diff changeset
87 cdiag ("%<%D%F%T%V%>", t1, t1, t1, t1);
kono
parents:
diff changeset
88 cdiag ("%<%+D%+F%+T%+V%>", t1, t1, t1, t1);
kono
parents:
diff changeset
89 cdiag ("%q+D%q+F%q+T%q+V", t1, t1, t1, t1);
kono
parents:
diff changeset
90 cdiag ("%<%D%D%D%D%>", t1, t2, *t3, t4[5]);
kono
parents:
diff changeset
91 cdiag ("%<%E%>", t1);
kono
parents:
diff changeset
92 cxxdiag ("%<%A%D%E%F%T%V%>", t1, t1, t1, t1, t1, t1);
kono
parents:
diff changeset
93 cxxdiag ("%<%D%D%D%D%>", t1, t2, *t3, t4[5]);
kono
parents:
diff changeset
94 cxxdiag ("%<%#A%#D%#E%#F%#T%#V%>", t1, t1, t1, t1, t1, t1);
kono
parents:
diff changeset
95 cxxdiag ("%<%+A%+D%+E%+F%+T%+V%>", t1, t1, t1, t1, t1, t1);
kono
parents:
diff changeset
96 cxxdiag ("%<%+#A%+#D%+#E%+#F%+#T%+#V%>", t1, t1, t1, t1, t1, t1);
kono
parents:
diff changeset
97 cxxdiag ("%C%L%O%P%Q", i, i, i, i, i);
kono
parents:
diff changeset
98
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
99 tdiag ("%v", i); /* { dg-warning "format" } */
111
kono
parents:
diff changeset
100 cdiag ("%v%qv%#v", i, i, i);
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
101 cxxdiag ("%v", i); /* { dg-warning "format" } */
111
kono
parents:
diff changeset
102
kono
parents:
diff changeset
103 tdiag ("%Z", v, v_len);
kono
parents:
diff changeset
104 cdiag ("%Z", v, v_len);
kono
parents:
diff changeset
105 cxxdiag ("%Z", v, v_len);
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
106 dump ("%Z", v, v_len);
111
kono
parents:
diff changeset
107
kono
parents:
diff changeset
108 /* Bad stuff with extensions. */
kono
parents:
diff changeset
109 diag ("%m", i); /* { dg-warning "format" "extra arg" } */
kono
parents:
diff changeset
110 tdiag ("%m", i); /* { dg-warning "format" "extra arg" } */
kono
parents:
diff changeset
111 cdiag ("%m", i); /* { dg-warning "format" "extra arg" } */
kono
parents:
diff changeset
112 cxxdiag ("%m", i); /* { dg-warning "format" "extra arg" } */
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
113 dump ("%m", i); /* { dg-warning "format" "extra arg" } */
111
kono
parents:
diff changeset
114 diag ("%#m"); /* { dg-warning "format" "bogus modifier" } */
kono
parents:
diff changeset
115 tdiag ("%#m"); /* { dg-warning "format" "bogus modifier" } */
kono
parents:
diff changeset
116 cdiag ("%#m"); /* { dg-warning "format" "bogus modifier" } */
kono
parents:
diff changeset
117 cxxdiag ("%#m"); /* { dg-warning "format" "bogus modifier" } */
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
118 dump ("%#m"); /* { dg-warning "format" "bogus modifier" } */
111
kono
parents:
diff changeset
119 diag ("%+m"); /* { dg-warning "format" "bogus modifier" } */
kono
parents:
diff changeset
120 tdiag ("%+m"); /* { dg-warning "format" "bogus modifier" } */
kono
parents:
diff changeset
121 cdiag ("%+m"); /* { dg-warning "format" "bogus modifier" } */
kono
parents:
diff changeset
122 cxxdiag ("%+m"); /* { dg-warning "format" "bogus modifier" } */
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
123 dump ("%+m"); /* { dg-warning "format" "bogus modifier" } */
111
kono
parents:
diff changeset
124 diag ("%D", t1); /* { dg-warning "format" "bogus tree" } */
kono
parents:
diff changeset
125 tdiag ("%A", t1); /* { dg-warning "format" "bogus tree" } */
kono
parents:
diff changeset
126 tdiag ("%E", t1);
kono
parents:
diff changeset
127 tdiag ("%#D", t1); /* { dg-warning "format" "bogus modifier" } */
kono
parents:
diff changeset
128 cdiag ("%A", t1); /* { dg-warning "format" "bogus tree" } */
kono
parents:
diff changeset
129 cdiag ("%#D", t1); /* { dg-warning "format" "bogus modifier" } */
kono
parents:
diff changeset
130 cdiag ("%<%+D%>", t1);
kono
parents:
diff changeset
131 cxxdiag ("%C"); /* { dg-warning "format" "missing arg" } */
kono
parents:
diff changeset
132 cxxdiag ("%C", l); /* { dg-warning "format" "wrong arg" } */
kono
parents:
diff changeset
133 cxxdiag ("%C", i, i); /* { dg-warning "format" "extra arg" } */
kono
parents:
diff changeset
134 cxxdiag ("%#C", i); /* { dg-warning "format" "bogus modifier" } */
kono
parents:
diff changeset
135 cxxdiag ("%+C", i); /* { dg-warning "format" "bogus modifier" } */
kono
parents:
diff changeset
136 tdiag ("%D"); /* { dg-warning "format" "missing arg" } */
kono
parents:
diff changeset
137 cdiag ("%D"); /* { dg-warning "format" "missing arg" } */
kono
parents:
diff changeset
138 cxxdiag ("%D"); /* { dg-warning "format" "missing arg" } */
kono
parents:
diff changeset
139 tdiag ("%D", i); /* { dg-warning "format" "wrong arg" } */
kono
parents:
diff changeset
140 cdiag ("%D", i); /* { dg-warning "format" "wrong arg" } */
kono
parents:
diff changeset
141 cxxdiag ("%D", i); /* { dg-warning "format" "wrong arg" } */
kono
parents:
diff changeset
142 tdiag ("%D", t1, t1); /* { dg-warning "format" "extra arg" } */
kono
parents:
diff changeset
143 cdiag ("%D", t1, t1); /* { dg-warning "format" "extra arg" } */
kono
parents:
diff changeset
144 cxxdiag ("%D", t1, t1); /* { dg-warning "format" "extra arg" } */
kono
parents:
diff changeset
145
kono
parents:
diff changeset
146 tdiag ("%V", i); /* { dg-warning "format" "wrong arg" } */
kono
parents:
diff changeset
147 cdiag ("%V", i); /* { dg-warning "format" "wrong arg" } */
kono
parents:
diff changeset
148 cxxdiag ("%V", i); /* { dg-warning "format" "wrong arg" } */
kono
parents:
diff changeset
149
kono
parents:
diff changeset
150 tdiag ("%v", t1); /* { dg-warning "format" "wrong arg" } */
kono
parents:
diff changeset
151 cdiag ("%v", t1); /* { dg-warning "format" "wrong arg" } */
kono
parents:
diff changeset
152 cxxdiag ("%v", t1); /* { dg-warning "format" "wrong arg" } */
kono
parents:
diff changeset
153
kono
parents:
diff changeset
154 tdiag ("%Z"); /* { dg-warning "format" "missing arg" } */
kono
parents:
diff changeset
155 tdiag ("%Z", t1); /* { dg-warning "format" "wrong arg" } */
kono
parents:
diff changeset
156
kono
parents:
diff changeset
157 /* Standard specifiers not accepted in the diagnostic framework. */
kono
parents:
diff changeset
158 diag ("%X\n", u); /* { dg-warning "format" "HEX" } */
kono
parents:
diff changeset
159 diag ("%f\n", d); /* { dg-warning "format" "float" } */
kono
parents:
diff changeset
160 diag ("%e\n", d); /* { dg-warning "format" "float" } */
kono
parents:
diff changeset
161 diag ("%E\n", d); /* { dg-warning "format" "float" } */
kono
parents:
diff changeset
162 diag ("%g\n", d); /* { dg-warning "format" "float" } */
kono
parents:
diff changeset
163 diag ("%G\n", d); /* { dg-warning "format" "float" } */
kono
parents:
diff changeset
164 diag ("%n\n", n); /* { dg-warning "format" "counter" } */
kono
parents:
diff changeset
165 diag ("%hd\n", i); /* { dg-warning "format" "conversion" } */
kono
parents:
diff changeset
166
kono
parents:
diff changeset
167 /* Various tests of bad argument types. */
kono
parents:
diff changeset
168 diag ("%-d", i); /* { dg-warning "format" "bad flag" } */
kono
parents:
diff changeset
169 tdiag ("%-d", i); /* { dg-warning "format" "bad flag" } */
kono
parents:
diff changeset
170 cdiag ("%-d", i); /* { dg-warning "format" "bad flag" } */
kono
parents:
diff changeset
171 cxxdiag ("%-d", i); /* { dg-warning "format" "bad flag" } */
kono
parents:
diff changeset
172 diag ("% d", i); /* { dg-warning "format" "bad flag" } */
kono
parents:
diff changeset
173 tdiag ("% d", i); /* { dg-warning "format" "bad flag" } */
kono
parents:
diff changeset
174 cdiag ("% d", i); /* { dg-warning "format" "bad flag" } */
kono
parents:
diff changeset
175 cxxdiag ("% d", i); /* { dg-warning "format" "bad flag" } */
kono
parents:
diff changeset
176 diag ("%#o", u); /* { dg-warning "format" "bad flag" } */
kono
parents:
diff changeset
177 tdiag ("%#o", u); /* { dg-warning "format" "bad flag" } */
kono
parents:
diff changeset
178 cdiag ("%#o", u); /* { dg-warning "format" "bad flag" } */
kono
parents:
diff changeset
179 cxxdiag ("%#o", u); /* { dg-warning "format" "bad flag" } */
kono
parents:
diff changeset
180 diag ("%0d", i); /* { dg-warning "format" "bad flag" } */
kono
parents:
diff changeset
181 tdiag ("%0d", i); /* { dg-warning "format" "bad flag" } */
kono
parents:
diff changeset
182 cdiag ("%0d", i); /* { dg-warning "format" "bad flag" } */
kono
parents:
diff changeset
183 cxxdiag ("%0d", i); /* { dg-warning "format" "bad flag" } */
kono
parents:
diff changeset
184 diag ("%08d", i); /* { dg-warning "format" "bad flag" } */
kono
parents:
diff changeset
185 tdiag ("%08d", i); /* { dg-warning "format" "bad flag" } */
kono
parents:
diff changeset
186 cdiag ("%08d", i); /* { dg-warning "format" "bad flag" } */
kono
parents:
diff changeset
187 cxxdiag ("%08d", i); /* { dg-warning "format" "bad flag" } */
kono
parents:
diff changeset
188 diag ("%+d\n", i); /* { dg-warning "format" "bad flag" } */
kono
parents:
diff changeset
189 tdiag ("%+d\n", i); /* { dg-warning "format" "bad flag" } */
kono
parents:
diff changeset
190 cdiag ("%+d\n", i); /* { dg-warning "format" "bad flag" } */
kono
parents:
diff changeset
191 cxxdiag ("%+d\n", i); /* { dg-warning "format" "bad flag" } */
kono
parents:
diff changeset
192 diag ("%3d\n", i); /* { dg-warning "format" "bad flag" } */
kono
parents:
diff changeset
193 tdiag ("%3d\n", i); /* { dg-warning "format" "bad flag" } */
kono
parents:
diff changeset
194 cdiag ("%3d\n", i); /* { dg-warning "format" "bad flag" } */
kono
parents:
diff changeset
195 cxxdiag ("%3d\n", i); /* { dg-warning "format" "bad flag" } */
kono
parents:
diff changeset
196 diag ("%-3d\n", i); /* { dg-warning "format" "bad flag" } */
kono
parents:
diff changeset
197 tdiag ("%-3d\n", i); /* { dg-warning "format" "bad flag" } */
kono
parents:
diff changeset
198 cdiag ("%-3d\n", i); /* { dg-warning "format" "bad flag" } */
kono
parents:
diff changeset
199 cxxdiag ("%-3d\n", i); /* { dg-warning "format" "bad flag" } */
kono
parents:
diff changeset
200 diag ("%.7d\n", i); /* { dg-warning "format" "bad flag" } */
kono
parents:
diff changeset
201 tdiag ("%.7d\n", i); /* { dg-warning "format" "bad flag" } */
kono
parents:
diff changeset
202 cdiag ("%.7d\n", i); /* { dg-warning "format" "bad flag" } */
kono
parents:
diff changeset
203 cxxdiag ("%.7d\n", i); /* { dg-warning "format" "bad flag" } */
kono
parents:
diff changeset
204 diag ("%+9.4d\n", i); /* { dg-warning "format" "bad flag" } */
kono
parents:
diff changeset
205 tdiag ("%+9.4d\n", i); /* { dg-warning "format" "bad flag" } */
kono
parents:
diff changeset
206 cdiag ("%+9.4d\n", i); /* { dg-warning "format" "bad flag" } */
kono
parents:
diff changeset
207 cxxdiag ("%+9.4d\n", i); /* { dg-warning "format" "bad flag" } */
kono
parents:
diff changeset
208 diag ("%.3ld\n", l); /* { dg-warning "format" "bad flag" } */
kono
parents:
diff changeset
209 tdiag ("%.3ld\n", l); /* { dg-warning "format" "bad flag" } */
kono
parents:
diff changeset
210 cdiag ("%.3ld\n", l); /* { dg-warning "format" "bad flag" } */
kono
parents:
diff changeset
211 cxxdiag ("%.3ld\n", l); /* { dg-warning "format" "bad flag" } */
kono
parents:
diff changeset
212 diag ("%d %lu\n", i, ul);
kono
parents:
diff changeset
213 diag ("%d", l); /* { dg-warning "format" "bad argument types" } */
kono
parents:
diff changeset
214 diag ("%wd", l); /* { dg-warning "format" "bad argument types" } */
kono
parents:
diff changeset
215 diag ("%d", ll); /* { dg-warning "format" "bad argument types" } */
kono
parents:
diff changeset
216 diag ("%*s", i, s); /* { dg-warning "format" "bad * argument types" } */
kono
parents:
diff changeset
217 diag ("%*.*s", i, i, s); /* { dg-warning "format" "bad * argument types" } */
kono
parents:
diff changeset
218 diag ("%*d\n", i1, i); /* { dg-warning "format" "bad * argument types" } */
kono
parents:
diff changeset
219 diag ("%.*d\n", i2, i); /* { dg-warning "format" "bad * argument types" } */
kono
parents:
diff changeset
220 diag ("%*.*ld\n", i1, i2, l); /* { dg-warning "format" "bad * argument types" } */
kono
parents:
diff changeset
221 diag ("%ld", i); /* { dg-warning "format" "bad argument types" } */
kono
parents:
diff changeset
222 diag ("%s", n); /* { dg-warning "format" "bad argument types" } */
kono
parents:
diff changeset
223
kono
parents:
diff changeset
224 /* Wrong number of arguments. */
kono
parents:
diff changeset
225 diag ("%d%d", i); /* { dg-warning "matching" "wrong number of args" } */
kono
parents:
diff changeset
226 diag ("%d", i, i); /* { dg-warning "arguments" "wrong number of args" } */
kono
parents:
diff changeset
227 /* Miscellaneous bogus constructions. */
kono
parents:
diff changeset
228 diag (""); /* { dg-warning "zero-length" "warning for empty format" } */
kono
parents:
diff changeset
229 diag ("\0"); /* { dg-warning "embedded" "warning for embedded NUL" } */
kono
parents:
diff changeset
230 diag ("%d\0", i); /* { dg-warning "embedded" "warning for embedded NUL" } */
kono
parents:
diff changeset
231 diag ("%d\0%d", i, i); /* { dg-warning "embedded|too many" "warning for embedded NUL" } */
kono
parents:
diff changeset
232 diag (NULL); /* { dg-warning "null" "null format string warning" } */
kono
parents:
diff changeset
233 diag ("%"); /* { dg-warning "trailing" "trailing % warning" } */
kono
parents:
diff changeset
234 diag ((const char *)L"foo"); /* { dg-warning "wide" "wide string" } */
kono
parents:
diff changeset
235 diag ("%s", (char *)0); /* { dg-warning "null" "%s with NULL" } */
kono
parents:
diff changeset
236
kono
parents:
diff changeset
237 /* Make sure we still get warnings for regular printf. */
kono
parents:
diff changeset
238 printf ("%d\n", ll); /* { dg-warning "format" "bad argument types" } */
kono
parents:
diff changeset
239 }