145
|
1 /* PR middle-end/89957 - ICE calling strnlen with an int128_t bound
|
|
2 in a known range
|
|
3 PR middle-end/89911 - ICE on a call with no arguments to strnlen
|
|
4 declared with no prototype
|
|
5 { dg-do compile }
|
|
6 { dg-options "-O2 -Wall" } */
|
|
7
|
|
8 typedef __SIZE_TYPE__ size_t;
|
|
9
|
|
10 extern size_t strnlen ();
|
|
11
|
|
12 size_t f0 (void)
|
|
13 {
|
|
14 return strnlen (); /* { dg-warning "too few arguments to built-in function 'strnlen'" } */
|
|
15 }
|
|
16
|
|
17 size_t f1 (const char *s)
|
|
18 {
|
|
19 return strnlen (s); /* { dg-warning "too few arguments to built-in function 'strnlen'" } */
|
|
20 }
|
|
21
|
|
22 size_t f2 (const char *s)
|
|
23 {
|
|
24 return strnlen (s, s); /* { dg-warning "\\\[-Wint-conversion]" } */
|
|
25 }
|
|
26
|
|
27 #if __SIZEOF_INT128__ == 16
|
|
28
|
|
29 size_t fi128 (const char *s, __int128_t n)
|
|
30 {
|
|
31 if (n < 0)
|
|
32 n = 0;
|
|
33
|
|
34 /* PR middle-end/89957 */
|
|
35 return strnlen (s, n); /* { dg-warning "\\\[-Wbuiltin-declaration-mismatch]" "int128" { target int128 } } */
|
|
36 }
|
|
37
|
|
38 #endif
|
|
39
|
|
40 /* { dg-prune-output "\\\[-Wint-conversion]" } */
|