| // { dg-do compile } |
| |
| import gcc.attributes; |
| |
| @alloc_size(1) |
| int ignoredfunc(int size); // { dg-warning ".alloc_size. attribute ignored on a function returning .int." } |
| |
| @alloc_size(0) int var; // { dg-warning ".alloc_size. attribute only applies to function types" } |
| |
| @attribute("alloc_size", "1") |
| void* invalid1(int size); // { dg-warning ".alloc_size. attribute argument is invalid" } |
| |
| @attribute("alloc_size", 1, "2") |
| void* invalid2(int count, int size); // { dg-warning ".alloc_size. attribute argument 2 is invalid" } |
| |
| @attribute("alloc_size", 0.1) |
| void* wrongtype1(int size); // { dg-warning ".alloc_size. attribute argument has type .double." } |
| |
| @attribute("alloc_size", 1, 0.2) |
| void* wrongtype2(int count, int size); // { dg-warning ".alloc_size. attribute argument 2 has type .double." } |
| |
| @alloc_size(0) |
| void* malloc0(int size); // { dg-warning ".alloc_size. attribute argument value .0. does not refer to a function parameter" } |
| |
| @alloc_size(1, 0) |
| void* malloc0(int count, int size); // { dg-warning ".alloc_size. attribute argument 2 value .0. does not refer to a function parameter" } |
| |
| @alloc_size(1, 0, true) |
| void* malloc0pos(int count, int size); |
| |
| @alloc_size(1, -1, true) |
| void* mallocminus1(int count, int size); // { dg-warning ".alloc_size. attribute argument 2 value .-1. does not refer to a function parameter" } |
| |
| @alloc_size(99) |
| void* malloc99(int size); // { dg-warning ".alloc_size. attribute argument value .99. exceeds the number of function parameters 1" } |
| |
| @alloc_size(1, 99) |
| void* malloc99(int count, int size); // { dg-warning ".alloc_size. attribute argument 2 value .99. exceeds the number of function parameters 2" } |
| |
| @alloc_size(1) |
| void* mallocdouble(double size); // { dg-warning ".alloc_size. attribute argument value .1. refers to parameter type .double." } |
| |
| @alloc_size(2, 1) |
| void* mallocdouble(int count, double size); // { dg-warning ".alloc_size. attribute argument 1 value .2. refers to parameter type .double." } |