1 /* { dg-require-effective-target alloca } */
2 /* { dg-skip-if "" { powerpc*-*-aix* } } */
5 #include "../../gcc.dg/analyzer/analyzer-decls.h"
7 typedef unsigned __INT32_TYPE__ u32
;
13 __analyzer_dump_capacity (buf
); /* { dg-warning "capacity: '\\(sizetype\\)16'" } */
20 __analyzer_dump_capacity (&ch
); /* { dg-warning "capacity: '\\(sizetype\\)1'" } */
23 struct s3
{ char buf
[100]; };
29 __analyzer_dump_capacity (&s
); /* { dg-warning "capacity: '\\(sizetype\\)100'" } */
32 /* Capacity refers to the base region, not any offset within it. */
38 __analyzer_dump_capacity (buf
+ 100); /* { dg-warning "capacity: '\\(sizetype\\)1024'" } */
44 __analyzer_dump_capacity (p
); /* { dg-warning "capacity: 'UNKNOWN\\(sizetype\\)'" } */
50 void *p
= malloc (1024);
52 __analyzer_dump_capacity (p
); /* { dg-warning "capacity: '\\(size_t\\)1024'" } */
57 test_alloca (size_t sz
)
59 void *p
= __builtin_alloca (sz
);
60 __analyzer_dump_capacity (p
); /* { dg-warning "capacity: 'INIT_VAL\\(sz_\[^\n\r\]*\\)'" } */
67 __analyzer_dump_capacity (buf
); /* { dg-warning "capacity: 'INIT_VAL\\(sz_\[^\n\r\]*\\)'" } */
70 static void * __attribute__((noinline
))
71 called_by_test_interproc_malloc (size_t a
)
77 test_interproc_malloc (size_t sz
)
79 void *p
= called_by_test_interproc_malloc (sz
);
80 __analyzer_dump_capacity (p
); /* { dg-warning "capacity: 'INIT_VAL\\(sz_\[^\n\r\]*\\)'" } */
90 static struct s
* __attribute__((noinline
))
93 struct s
*p
= (struct s
*) malloc (sizeof(struct s
) + num
);
98 test_trailing_array (void)
100 struct s
*p
= alloc_s (5);
101 __analyzer_dump_capacity (p
); /* { dg-warning "capacity: '\\(\[^\n\r\]*\\)9'" } */
106 test_unknown_arr (int p
[])
108 __analyzer_dump_capacity (p
); /* { dg-warning "capacity: 'UNKNOWN\\(sizetype\\)'" } */