1 /* { dg-additional-options "-Wno-analyzer-too-complex" } */
3 #include "../../gcc.dg/analyzer/analyzer-decls.h"
6 extern int printf (const char *__restrict __format
, ...);
7 extern int vasprintf (char **__restrict __ptr
, const char *__restrict __f
,
8 __builtin_va_list __arg
)
9 __attribute__ ((__nothrow__
, __format__ (__printf__
, 2, 0))) ;
10 extern void free (void *__ptr
) __attribute__ ((__nothrow__
, __leaf__
));
12 static char * __attribute__ ((__format__ (__printf__
, 1, 2)))
13 zasprintf (const char *format
, ...)
16 __builtin_va_list args
;
17 __builtin_va_start (args
, format
);
18 int r
= vasprintf (&resultp
, format
, args
);
19 __builtin_va_end (args
);
20 return r
< 0 ? NULL
: resultp
;
29 printf("static function check\n");
31 buf
= zasprintf("i = %d", i
);
33 printf("buf = %s\nbuf = %p\n", buf
, buf
);
36 bar
= zasprintf("i = %d - %d", i
, i
- 13);
38 printf("bar = %s\nbar = %p\n", bar
, bar
);
39 printf("buf = %s\nbuf = %p\n", buf
, buf
);
42 baz
= zasprintf("No i's here");
44 printf("baz = %s\nbaz = %p\n", baz
, baz
);
45 printf("bar = %s\nbar = %p\n", bar
, bar
);
46 printf("buf = %s\nbuf = %p\n", buf
, buf
);
56 int main(int argc
, char **argv
) {