1 struct node
2 {
3 struct node *next;
4 };
5
6 void test_1 (struct node *n)
7 {
8 while (n)
9 {
10 struct node *next = n->next;
11 __builtin_free (n);
12 n = next;
13 }
14 }
15
16 extern void *get_ptr (void);
17
18 void test_2 (void)
19 {
20 void *p;
21 while (p = get_ptr ())
22 __builtin_free (p); /* { dg-bogus "double-'free' of 'p'" } */
23 }
24
25 extern void **get_ptr_ptr (void);
26
27 void test_3 (void)
28 {
29 void **p;
30 while (p = get_ptr_ptr ())
31 __builtin_free (*p); /* { dg-bogus "double-'free'" } */
32 }
33
34 void test_4 (void)
35 {
36 void *p = (void *)0;
37 while (1)
38 {
39 __builtin_free (p); /* { dg-bogus "double-'free' of 'p'" } */
40 p = get_ptr ();
41 }
42 }