Fortran: Fix PR 47485.
[gcc.git] / gcc / testsuite / g++.dg / warn / Wmismatched-new-delete-4.C
blob4320181e4d7a603347711dbf0552d7d4a129bcdc
1 /* PR c++/100876 - -Wmismatched-new-delete should either look through
2    or ignore placement new
3    { dg-do compile }
4    { dg-options "-O0 -Wall" } */
6 extern "C" {
7   void* malloc (__SIZE_TYPE__);
8   void free (void*);
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" }