/* PR middle-end/104232 - spurious -Wuse-after-free after conditional free | |
{ dg-do compile } | |
{ dg-options "-O2 -Wall" } */ | |
char* f (void); | |
static inline void freep (void *p) | |
{ | |
__builtin_free (*(void**)p); // { dg-bogus "-Wuse-after-free" } | |
} | |
int test_no_warn (void) | |
{ | |
__attribute__ ((__cleanup__ (freep))) char *s = 0, *t = 0; | |
t = f (); | |
if (!t) | |
return 0; | |
s = f (); | |
return 1; | |
} |