1 |
149 |
jeremybenn |
/* Test for the "nonnull" function attribute on builtins. Use the
|
2 |
|
|
"__builtin_" style below so we don't need prototypes. */
|
3 |
|
|
/* Origin: Kaveh R. Ghazi <ghazi@caip.rutgers.edu> */
|
4 |
|
|
/* { dg-do compile } */
|
5 |
|
|
/* { dg-options "-Wnonnull" } */
|
6 |
|
|
|
7 |
|
|
#include <stddef.h>
|
8 |
|
|
|
9 |
|
|
void
|
10 |
|
|
foo (void *p, char *s)
|
11 |
|
|
{
|
12 |
|
|
__builtin_bzero (NULL, 0);
|
13 |
|
|
__builtin_bcopy (NULL, p, 0);
|
14 |
|
|
__builtin_bcopy (p, NULL, 0);
|
15 |
|
|
__builtin_bcmp (NULL, p, 0);
|
16 |
|
|
__builtin_bcmp (p, NULL, 0);
|
17 |
|
|
__builtin_index (NULL, 16); /* { dg-warning "null" "null pointer check" } */
|
18 |
|
|
__builtin_rindex (NULL, 16); /* { dg-warning "null" "null pointer check" } */
|
19 |
|
|
|
20 |
|
|
__builtin_memcpy (p, NULL, 16); /* { dg-warning "null" "null pointer check" } */
|
21 |
|
|
__builtin_memcpy (NULL, p, 16); /* { dg-warning "null" "null pointer check" } */
|
22 |
|
|
__builtin_memmove (p, NULL, 16); /* { dg-warning "null" "null pointer check" } */
|
23 |
|
|
__builtin_memmove (NULL, p, 16); /* { dg-warning "null" "null pointer check" } */
|
24 |
|
|
__builtin_memcmp (p, NULL, 16); /* { dg-warning "null" "null pointer check" } */
|
25 |
|
|
__builtin_memcmp (NULL, p, 16); /* { dg-warning "null" "null pointer check" } */
|
26 |
|
|
__builtin_memset (NULL, 0, 16); /* { dg-warning "null" "null pointer check" } */
|
27 |
|
|
__builtin_mempcpy (p, NULL, 16); /* { dg-warning "null" "null pointer check" } */
|
28 |
|
|
__builtin_mempcpy (NULL, p, 16); /* { dg-warning "null" "null pointer check" } */
|
29 |
|
|
|
30 |
|
|
__builtin_strcat (NULL, s); /* { dg-warning "null" "null pointer check" } */
|
31 |
|
|
__builtin_strcat (s, NULL); /* { dg-warning "null" "null pointer check" } */
|
32 |
|
|
__builtin_strncat (NULL, s, 16); /* { dg-warning "null" "null pointer check" } */
|
33 |
|
|
__builtin_strncat (s, NULL, 16); /* { dg-warning "null" "null pointer check" } */
|
34 |
|
|
__builtin_stpcpy (NULL, s); /* { dg-warning "null" "null pointer check" } */
|
35 |
|
|
__builtin_stpcpy (s, NULL); /* { dg-warning "null" "null pointer check" } */
|
36 |
|
|
__builtin_stpncpy (NULL, s, 16); /* { dg-warning "null" "null pointer check" } */
|
37 |
|
|
__builtin_stpncpy (s, NULL, 16); /* { dg-warning "null" "null pointer check" } */
|
38 |
|
|
__builtin_strcpy (NULL, s); /* { dg-warning "null" "null pointer check" } */
|
39 |
|
|
__builtin_strcpy (s, NULL); /* { dg-warning "null" "null pointer check" } */
|
40 |
|
|
__builtin_strncpy (NULL, s, 16); /* { dg-warning "null" "null pointer check" } */
|
41 |
|
|
__builtin_strncpy (s, NULL, 16); /* { dg-warning "null" "null pointer check" } */
|
42 |
|
|
__builtin_strcasecmp (NULL, s); /* { dg-warning "null" "null pointer check" } */
|
43 |
|
|
__builtin_strcasecmp (s, NULL); /* { dg-warning "null" "null pointer check" } */
|
44 |
|
|
__builtin_strncasecmp (NULL, s, 16); /* { dg-warning "null" "null pointer check" } */
|
45 |
|
|
__builtin_strncasecmp (s, NULL, 16); /* { dg-warning "null" "null pointer check" } */
|
46 |
|
|
__builtin_strcmp (NULL, s); /* { dg-warning "null" "null pointer check" } */
|
47 |
|
|
__builtin_strcmp (s, NULL); /* { dg-warning "null" "null pointer check" } */
|
48 |
|
|
__builtin_strncmp (NULL, s, 16); /* { dg-warning "null" "null pointer check" } */
|
49 |
|
|
__builtin_strncmp (s, NULL, 16); /* { dg-warning "null" "null pointer check" } */
|
50 |
|
|
__builtin_strlen (NULL); /* { dg-warning "null" "null pointer check" } */
|
51 |
|
|
__builtin_strstr (NULL, s); /* { dg-warning "null" "null pointer check" } */
|
52 |
|
|
__builtin_strstr (s, NULL); /* { dg-warning "null" "null pointer check" } */
|
53 |
|
|
__builtin_strpbrk (NULL, s); /* { dg-warning "null" "null pointer check" } */
|
54 |
|
|
__builtin_strpbrk (s, NULL); /* { dg-warning "null" "null pointer check" } */
|
55 |
|
|
__builtin_strspn (NULL, s); /* { dg-warning "null" "null pointer check" } */
|
56 |
|
|
__builtin_strspn (s, NULL); /* { dg-warning "null" "null pointer check" } */
|
57 |
|
|
__builtin_strchr (NULL, 16); /* { dg-warning "null" "null pointer check" } */
|
58 |
|
|
__builtin_strrchr (NULL, 16); /* { dg-warning "null" "null pointer check" } */
|
59 |
|
|
__builtin_strdup (NULL); /* { dg-warning "null" "null pointer check" } */
|
60 |
|
|
__builtin_strndup (NULL, 16); /* { dg-warning "null" "null pointer check" } */
|
61 |
|
|
|
62 |
|
|
__builtin_nan (NULL); /* { dg-warning "null" "null pointer check" } */
|
63 |
|
|
__builtin_nanf (NULL); /* { dg-warning "null" "null pointer check" } */
|
64 |
|
|
__builtin_nanl (NULL); /* { dg-warning "null" "null pointer check" } */
|
65 |
|
|
__builtin_nans (NULL); /* { dg-warning "null" "null pointer check" } */
|
66 |
|
|
__builtin_nansf (NULL); /* { dg-warning "null" "null pointer check" } */
|
67 |
|
|
__builtin_nansl (NULL); /* { dg-warning "null" "null pointer check" } */
|
68 |
|
|
|
69 |
|
|
__builtin_puts (NULL); /* { dg-warning "null" "null pointer check" } */
|
70 |
|
|
__builtin_fputc (*s, NULL); /* { dg-warning "null" "null pointer check" } */
|
71 |
|
|
__builtin_fputs (s, NULL); /* { dg-warning "null" "null pointer check" } */
|
72 |
|
|
__builtin_fputs (NULL, p); /* { dg-warning "null" "null pointer check" } */
|
73 |
|
|
__builtin_fwrite (s, 16, 16, NULL); /* { dg-warning "null" "null pointer check" } */
|
74 |
|
|
__builtin_fwrite (NULL, 16, 16, p); /* { dg-warning "null" "null pointer check" } */
|
75 |
|
|
__builtin_puts_unlocked (NULL); /* { dg-warning "null" "null pointer check" } */
|
76 |
|
|
__builtin_fputc_unlocked (*s, NULL); /* { dg-warning "null" "null pointer check" } */
|
77 |
|
|
__builtin_fputs_unlocked (s, NULL); /* { dg-warning "null" "null pointer check" } */
|
78 |
|
|
__builtin_fputs_unlocked (NULL, p); /* { dg-warning "null" "null pointer check" } */
|
79 |
|
|
__builtin_fwrite_unlocked (s, 16, 16, NULL); /* { dg-warning "null" "null pointer check" } */
|
80 |
|
|
__builtin_fwrite_unlocked (NULL, 16, 16, p); /* { dg-warning "null" "null pointer check" } */
|
81 |
|
|
|
82 |
|
|
}
|