1 /* PR ????? - No warning on attempts to access free object
2 Verify that freeing unallocated objects referenced indirectly through
3 pointers obtained from function calls is diagnosed.
5 { dg-options "-O2 -Wall -Wfree-nonheap-object" } */
7 typedef __SIZE_TYPE__
size_t;
9 extern void free (void*);
10 extern char* memchr (const void*, int, size_t);
11 extern char* strchr (const char*, int);
13 void sink (void*, ...);
21 void warn_free_memchr_ecarr (int x
, size_t n
)
23 char *p
= memchr (ecarr
, x
, n
);
25 free (p
); // { dg-warning "\\\[-Wfree-nonheap-object" }
28 void warn_free_memchr_ecarr_offset (int i
, int j
, int x
, size_t n
)
30 char *p
= memchr (ecarr
+ i
, x
, n
);
33 free (q
); // { dg-warning "\\\[-Wfree-nonheap-object" }
37 void warn_free_memchr_local_arr (int x
, size_t n
)
42 char *p
= memchr (a
, x
, n
);
44 free (p
); // { dg-warning "\\\[-Wfree-nonheap-object" }
47 void warn_free_memchr_local_arr_offset (int i
, int j
, int x
, size_t n
)
52 char *p
= memchr (a
+ i
, x
, n
);
55 free (q
); // { dg-warning "\\\[-Wfree-nonheap-object" }