111
|
1 /* PR middle-end/77721 - -Wformat-overflow not uses arg range for converted vars
|
|
2 Test to verify that the correct range information is made available to the
|
|
3 -Wformat-lenght check to prevent warnings. */
|
|
4 /* { dg-do compile } */
|
|
5 /* { dg-options "-O2 -Wformat -Wformat-overflow -fdump-tree-optimized" } */
|
|
6
|
|
7 void abort (void);
|
|
8 int snprintf (char*, __SIZE_TYPE__, const char*, ...);
|
|
9
|
|
10 void fuchar (unsigned char j, char *p)
|
|
11 {
|
|
12 if (j > 99)
|
|
13 return;
|
|
14
|
|
15 if (3 != snprintf (p, 4, "%3hu", j))
|
|
16 abort ();
|
|
17 }
|
|
18
|
|
19 void fschar (signed char j, char *p)
|
|
20 {
|
|
21 const unsigned char k = (unsigned char) j;
|
|
22
|
|
23 if (k > 99)
|
|
24 return;
|
|
25
|
|
26 if (3 != snprintf (p, 4, "%3hhu", k))
|
|
27 abort ();
|
|
28 }
|
|
29
|
|
30 void fushrt (unsigned short j, char *p)
|
|
31 {
|
|
32 if (j > 999)
|
|
33 return;
|
|
34
|
|
35 if (3 != snprintf (p, 4, "%3hu", j))
|
|
36 abort ();
|
|
37 }
|
|
38
|
|
39 void fshrt (short j, char *p)
|
|
40 {
|
|
41 const unsigned short k = (unsigned short) j;
|
|
42
|
|
43 if (k > 999)
|
|
44 return;
|
|
45
|
|
46 if (3 != snprintf (p, 4, "%3hu", k))
|
|
47 abort ();
|
|
48 }
|
|
49
|
|
50 void fuint (unsigned j, char *p)
|
|
51 {
|
|
52 if (j > 999)
|
|
53 return;
|
|
54
|
|
55 snprintf (p, 4, "%3u", j);
|
|
56 }
|
|
57
|
|
58 void fint (int j, char *p)
|
|
59 {
|
|
60 const unsigned k = (unsigned) j;
|
|
61
|
|
62 if (k > 999)
|
|
63 return;
|
|
64
|
|
65 snprintf (p, 4, "%3u", k);
|
|
66 }
|
|
67
|
|
68 void fulong (unsigned long j, char *p)
|
|
69 {
|
|
70 if (j > 999)
|
|
71 return;
|
|
72
|
|
73 snprintf (p, 4, "%3lu", j);
|
|
74 }
|
|
75
|
|
76 void flong (long j, char *p)
|
|
77 {
|
|
78 const unsigned long k = (unsigned long) j;
|
|
79
|
|
80 if (k > 999)
|
|
81 return;
|
|
82
|
|
83 snprintf (p, 4, "%3lu", k);
|
|
84 }
|
|
85
|
|
86 void fullong (unsigned long long j, char *p)
|
|
87 {
|
|
88 if (j > 999)
|
|
89 return;
|
|
90
|
|
91 snprintf (p, 4, "%3llu", j);
|
|
92 }
|
|
93
|
|
94 void fllong (long long j, char *p)
|
|
95 {
|
|
96 const unsigned long long k = (unsigned long long) j;
|
|
97
|
|
98 if (k > 999)
|
|
99 return;
|
|
100
|
|
101 snprintf (p, 4, "%3llu", k);
|
|
102 }
|
|
103
|
|
104 /* { dg-final { scan-tree-dump-not "abort" "optimized" } } */
|