comparison 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
comparison
equal deleted inserted replaced
111:04ced10e8804 131:84e7813d76e9
1 /* Test for GCC diagnositc formats. */ 1 /* Test for GCC diagnostic formats. */
2 /* Origin: Kaveh Ghazi <ghazi@caip.rutgers.edu> */ 2 /* Origin: Kaveh Ghazi <ghazi@caip.rutgers.edu> */
3 /* { dg-do compile } */ 3 /* { dg-do compile } */
4 /* { dg-options "-Wformat" } */ 4 /* { dg-options "-Wformat" } */
5 5
6 #include "format.h" 6 #include "format.h"
22 22
23 extern int diag (const char *, ...) ATTRIBUTE_DIAG(__gcc_diag__); 23 extern int diag (const char *, ...) ATTRIBUTE_DIAG(__gcc_diag__);
24 extern int tdiag (const char *, ...) ATTRIBUTE_DIAG(__gcc_tdiag__); 24 extern int tdiag (const char *, ...) ATTRIBUTE_DIAG(__gcc_tdiag__);
25 extern int cdiag (const char *, ...) ATTRIBUTE_DIAG(__gcc_cdiag__); 25 extern int cdiag (const char *, ...) ATTRIBUTE_DIAG(__gcc_cdiag__);
26 extern int cxxdiag (const char *, ...) ATTRIBUTE_DIAG(__gcc_cxxdiag__); 26 extern int cxxdiag (const char *, ...) ATTRIBUTE_DIAG(__gcc_cxxdiag__);
27 extern int dump (const char *, ...) ATTRIBUTE_DIAG(__gcc_dump_printf__);
27 28
28 void 29 void
29 foo (int i, int i1, int i2, unsigned int u, double d, char *s, void *p, 30 foo (int i, int i1, int i2, unsigned int u, double d, char *s, void *p,
30 int *n, short int *hn, long int l, unsigned long int ul, 31 int *n, short int *hn, long int l, unsigned long int ul,
31 long int *ln, long double ld, wint_t lc, wchar_t *ls, llong ll, 32 long int *ln, long double ld, wint_t lc, wchar_t *ls, llong ll,
37 /* Acceptable C90 specifiers, flags and modifiers. */ 38 /* Acceptable C90 specifiers, flags and modifiers. */
38 diag ("%%"); 39 diag ("%%");
39 tdiag ("%%"); 40 tdiag ("%%");
40 cdiag ("%%"); 41 cdiag ("%%");
41 cxxdiag ("%%"); 42 cxxdiag ("%%");
43 dump ("%%");
42 diag ("%d%i%o%u%x%c%s%p%%", i, i, u, u, u, i, s, p); 44 diag ("%d%i%o%u%x%c%s%p%%", i, i, u, u, u, i, s, p);
43 tdiag ("%d%i%o%u%x%c%s%p%%", i, i, u, u, u, i, s, p); 45 tdiag ("%d%i%o%u%x%c%s%p%%", i, i, u, u, u, i, s, p);
44 cdiag ("%d%i%o%u%x%c%s%p%%", i, i, u, u, u, i, s, p); 46 cdiag ("%d%i%o%u%x%c%s%p%%", i, i, u, u, u, i, s, p);
45 cxxdiag ("%d%i%o%u%x%c%s%p%%", i, i, u, u, u, i, s, p); 47 cxxdiag ("%d%i%o%u%x%c%s%p%%", i, i, u, u, u, i, s, p);
48 dump ("%d%i%o%u%x%c%s%p%%", i, i, u, u, u, i, s, p);
46 diag ("%qd%qi%qo%qu%qx%qc%qs%qp%<%%%'%>", i, i, u, u, u, i, s, p); 49 diag ("%qd%qi%qo%qu%qx%qc%qs%qp%<%%%'%>", i, i, u, u, u, i, s, p);
47 tdiag ("%qd%qi%qo%qu%qx%qc%qs%qp%<%%%'%>", i, i, u, u, u, i, s, p); 50 tdiag ("%qd%qi%qo%qu%qx%qc%qs%qp%<%%%'%>", i, i, u, u, u, i, s, p);
48 cdiag ("%qd%qi%qo%qu%qx%qc%qs%qp%<%%%'%>", i, i, u, u, u, i, s, p); 51 cdiag ("%qd%qi%qo%qu%qx%qc%qs%qp%<%%%'%>", i, i, u, u, u, i, s, p);
49 cxxdiag ("%qd%qi%qo%qu%qx%qc%qs%qp%<%%%'%>", i, i, u, u, u, i, s, p); 52 cxxdiag ("%qd%qi%qo%qu%qx%qc%qs%qp%<%%%'%>", i, i, u, u, u, i, s, p);
53 dump ("%qd%qi%qo%qu%qx%qc%qs%qp%<%%%'%>", i, i, u, u, u, i, s, p);
50 diag ("%ld%li%lo%lu%lx", l, l, ul, ul, ul); 54 diag ("%ld%li%lo%lu%lx", l, l, ul, ul, ul);
51 tdiag ("%ld%li%lo%lu%lx", l, l, ul, ul, ul); 55 tdiag ("%ld%li%lo%lu%lx", l, l, ul, ul, ul);
52 cdiag ("%ld%li%lo%lu%lx", l, l, ul, ul, ul); 56 cdiag ("%ld%li%lo%lu%lx", l, l, ul, ul, ul);
53 cxxdiag ("%ld%li%lo%lu%lx", l, l, ul, ul, ul); 57 cxxdiag ("%ld%li%lo%lu%lx", l, l, ul, ul, ul);
58 dump ("%ld%li%lo%lu%lx", l, l, ul, ul, ul);
54 diag ("%lld%lli%llo%llu%llx", ll, ll, ull, ull, ull); 59 diag ("%lld%lli%llo%llu%llx", ll, ll, ull, ull, ull);
55 tdiag ("%lld%lli%llo%llu%llx", ll, ll, ull, ull, ull); 60 tdiag ("%lld%lli%llo%llu%llx", ll, ll, ull, ull, ull);
56 cdiag ("%lld%lli%llo%llu%llx", ll, ll, ull, ull, ull); 61 cdiag ("%lld%lli%llo%llu%llx", ll, ll, ull, ull, ull);
57 cxxdiag ("%lld%lli%llo%llu%llx", ll, ll, ull, ull, ull); 62 cxxdiag ("%lld%lli%llo%llu%llx", ll, ll, ull, ull, ull);
63 dump ("%lld%lli%llo%llu%llx", ll, ll, ull, ull, ull);
58 diag ("%wd%wi%wo%wu%wx", ll, ll, ull, ull, ull); 64 diag ("%wd%wi%wo%wu%wx", ll, ll, ull, ull, ull);
59 tdiag ("%wd%wi%wo%wu%wx", ll, ll, ull, ull, ull); 65 tdiag ("%wd%wi%wo%wu%wx", ll, ll, ull, ull, ull);
60 cdiag ("%wd%wi%wo%wu%wx", ll, ll, ull, ull, ull); 66 cdiag ("%wd%wi%wo%wu%wx", ll, ll, ull, ull, ull);
61 cxxdiag ("%wd%wi%wo%wu%wx", ll, ll, ull, ull, ull); 67 cxxdiag ("%wd%wi%wo%wu%wx", ll, ll, ull, ull, ull);
68 dump ("%wd%wi%wo%wu%wx", ll, ll, ull, ull, ull);
62 diag ("%.*s", i, s); 69 diag ("%.*s", i, s);
63 tdiag ("%.*s", i, s); 70 tdiag ("%.*s", i, s);
64 cdiag ("%.*s", i, s); 71 cdiag ("%.*s", i, s);
65 cxxdiag ("%.*s", i, s); 72 cxxdiag ("%.*s", i, s);
73 dump ("%.*s", i, s);
66 74
67 /* Extensions provided in the diagnostic framework. */ 75 /* Extensions provided in the diagnostic framework. */
68 diag ("%m"); 76 diag ("%m");
69 tdiag ("%m"); 77 tdiag ("%m");
70 cdiag ("%m"); 78 cdiag ("%m");
71 cxxdiag ("%m"); 79 cxxdiag ("%m");
80 dump ("%m");
72 81
73 /* Quote directives to avoid "warning: conversion used unquoted." */ 82 /* Quote directives to avoid "warning: conversion used unquoted." */
74 tdiag ("%<%D%F%T%V%>", t1, t1, t1, t1); 83 tdiag ("%<%D%F%T%V%>", t1, t1, t1, t1);
75 tdiag ("%<%+D%+F%+T%+V%>", t1, t1, t1, t1); 84 tdiag ("%<%+D%+F%+T%+V%>", t1, t1, t1, t1);
76 tdiag ("%q+D%q+F%q+T%q+V", t1, t1, t1, t1); 85 tdiag ("%q+D%q+F%q+T%q+V", t1, t1, t1, t1);
85 cxxdiag ("%<%#A%#D%#E%#F%#T%#V%>", t1, t1, t1, t1, t1, t1); 94 cxxdiag ("%<%#A%#D%#E%#F%#T%#V%>", t1, t1, t1, t1, t1, t1);
86 cxxdiag ("%<%+A%+D%+E%+F%+T%+V%>", t1, t1, t1, t1, t1, t1); 95 cxxdiag ("%<%+A%+D%+E%+F%+T%+V%>", t1, t1, t1, t1, t1, t1);
87 cxxdiag ("%<%+#A%+#D%+#E%+#F%+#T%+#V%>", t1, t1, t1, t1, t1, t1); 96 cxxdiag ("%<%+#A%+#D%+#E%+#F%+#T%+#V%>", t1, t1, t1, t1, t1, t1);
88 cxxdiag ("%C%L%O%P%Q", i, i, i, i, i); 97 cxxdiag ("%C%L%O%P%Q", i, i, i, i, i);
89 98
90 tdiag ("%v%qv%#v", i, i, i); 99 tdiag ("%v", i); /* { dg-warning "format" } */
91 cdiag ("%v%qv%#v", i, i, i); 100 cdiag ("%v%qv%#v", i, i, i);
92 cxxdiag ("%v%qv%#v", i, i, i); 101 cxxdiag ("%v", i); /* { dg-warning "format" } */
93 102
94 tdiag ("%Z", v, v_len); 103 tdiag ("%Z", v, v_len);
95 cdiag ("%Z", v, v_len); 104 cdiag ("%Z", v, v_len);
96 cxxdiag ("%Z", v, v_len); 105 cxxdiag ("%Z", v, v_len);
106 dump ("%Z", v, v_len);
97 107
98 /* Bad stuff with extensions. */ 108 /* Bad stuff with extensions. */
99 diag ("%m", i); /* { dg-warning "format" "extra arg" } */ 109 diag ("%m", i); /* { dg-warning "format" "extra arg" } */
100 tdiag ("%m", i); /* { dg-warning "format" "extra arg" } */ 110 tdiag ("%m", i); /* { dg-warning "format" "extra arg" } */
101 cdiag ("%m", i); /* { dg-warning "format" "extra arg" } */ 111 cdiag ("%m", i); /* { dg-warning "format" "extra arg" } */
102 cxxdiag ("%m", i); /* { dg-warning "format" "extra arg" } */ 112 cxxdiag ("%m", i); /* { dg-warning "format" "extra arg" } */
113 dump ("%m", i); /* { dg-warning "format" "extra arg" } */
103 diag ("%#m"); /* { dg-warning "format" "bogus modifier" } */ 114 diag ("%#m"); /* { dg-warning "format" "bogus modifier" } */
104 tdiag ("%#m"); /* { dg-warning "format" "bogus modifier" } */ 115 tdiag ("%#m"); /* { dg-warning "format" "bogus modifier" } */
105 cdiag ("%#m"); /* { dg-warning "format" "bogus modifier" } */ 116 cdiag ("%#m"); /* { dg-warning "format" "bogus modifier" } */
106 cxxdiag ("%#m"); /* { dg-warning "format" "bogus modifier" } */ 117 cxxdiag ("%#m"); /* { dg-warning "format" "bogus modifier" } */
118 dump ("%#m"); /* { dg-warning "format" "bogus modifier" } */
107 diag ("%+m"); /* { dg-warning "format" "bogus modifier" } */ 119 diag ("%+m"); /* { dg-warning "format" "bogus modifier" } */
108 tdiag ("%+m"); /* { dg-warning "format" "bogus modifier" } */ 120 tdiag ("%+m"); /* { dg-warning "format" "bogus modifier" } */
109 cdiag ("%+m"); /* { dg-warning "format" "bogus modifier" } */ 121 cdiag ("%+m"); /* { dg-warning "format" "bogus modifier" } */
110 cxxdiag ("%+m"); /* { dg-warning "format" "bogus modifier" } */ 122 cxxdiag ("%+m"); /* { dg-warning "format" "bogus modifier" } */
123 dump ("%+m"); /* { dg-warning "format" "bogus modifier" } */
111 diag ("%D", t1); /* { dg-warning "format" "bogus tree" } */ 124 diag ("%D", t1); /* { dg-warning "format" "bogus tree" } */
112 tdiag ("%A", t1); /* { dg-warning "format" "bogus tree" } */ 125 tdiag ("%A", t1); /* { dg-warning "format" "bogus tree" } */
113 tdiag ("%E", t1); 126 tdiag ("%E", t1);
114 tdiag ("%#D", t1); /* { dg-warning "format" "bogus modifier" } */ 127 tdiag ("%#D", t1); /* { dg-warning "format" "bogus modifier" } */
115 cdiag ("%A", t1); /* { dg-warning "format" "bogus tree" } */ 128 cdiag ("%A", t1); /* { dg-warning "format" "bogus tree" } */