3 // Copyright (C) 1999 Free Software Foundation, Inc.
4 // Contributed by Nathan Sidwell 15 Apr 1999 <nathan@acm.org>
6 // delete (void *)e and delete[] (void *)e result in undefined behavior
7 // [expr.delete/3]. Check we warn about them
8 // operator new functions can only return NULL, if their exceptions
9 // specification is `throw()'. All other cases must return a non-null pointer
12 typedef __SIZE_TYPE__ size_t;
14 void *operator new(size_t)
16 return 0; // { dg-error "" } cannot return NULL
18 void *operator new[](size_t)
20 return 0; // { dg-error "" } cannot return NULL
25 void *operator new(size_t)
27 return 0; // { dg-error "" } cannot return NULL
29 void *operator new[](size_t)
31 return 0; // { dg-error "" } cannot return NULL
37 void *operator new(size_t) throw()
41 void *operator new[](size_t) throw()
47 void fn(double *d, void *v)
50 delete v; // { dg-warning "" } deleting void
52 delete[] v; // { dg-warning "" } deleting void