1 /* PR middle-end/94527 - Add an attribute that marks a function as freeing
3 { dg-do compile { target c++11 } }
4 { dg-options "-Wall" } */
6 #define A(...) __attribute__ ((malloc (__VA_ARGS__)))
8 typedef __SIZE_TYPE__ size_t;
10 void mydealloc (int, void*);
11 void* A (mydealloc, 2) myalloc (void*);
14 void* A (operator delete, 1)
15 bad_new (size_t); // { dg-error "attribute argument 1 is ambiguous" "" { target c++14 } }
16 void* A (operator delete[], 1)
17 bad_array_new (size_t); // { dg-error "attribute argument 1 is ambiguous" "" { target c++14 } }
19 void my_delete (const char*, void*);
20 void my_array_delete (const char*, void*);
22 typedef void OpDelete (void*);
24 int* A ((OpDelete*)operator delete, 1) A (my_delete, 2)
26 int* A ((OpDelete*)operator delete[], 1) A (my_array_delete, 2)
27 my_array_new (size_t);