1 /* PR c++/100876 - -Wmismatched-new-delete should either look through
2 or ignore placement new
4 { dg-options "-O0 -Wall" } */
7 void* malloc (__SIZE_TYPE__);
11 void* operator new (__SIZE_TYPE__, void*);
12 void* operator new[] (__SIZE_TYPE__, void*);
14 void nowarn_placement_new ()
16 free (new (malloc (sizeof (int))) int ()); // { dg-bogus "-Wmismatched-new-delete" }
19 void nowarn_placement_array_new ()
21 free (new (malloc (sizeof (int) * 2)) int[2]); // { dg-bogus "-Wmismatched-new-delete" }
25 void warn_placement_new ()
27 void *p = malloc (sizeof (int));
28 int *q = new (p) int ();
29 delete q; // { dg-warning "-Wmismatched-new-delete" }
32 void warn_placement_array_new ()
34 void *p = malloc (sizeof (int));
35 int *q = new (p) int[2];
36 delete q; // { dg-warning "-Wmismatched-new-delete" }