Fortran: Fix PR 47485.
[gcc.git] / gcc / testsuite / g++.dg / warn / Wmismatched-new-delete-5.C
blobbac2b68aa641f25a0da1ebf420d8d3436bd152bd
1 /* PR c++/100876 - -Wmismatched-new-delete should either look through
2    or ignore placement new
3    { dg-do compile }
4    { dg-options "-O2 -Wall -fdelete-null-pointer-checks" } */
6 extern "C" {
7   void* malloc (__SIZE_TYPE__);
8   void free (void*);
11 inline void* operator new (__SIZE_TYPE__, void *p) { return p; }
12 inline void* operator new[] (__SIZE_TYPE__, void *p) { return p; }
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" }