OSDN Git Service

* class.c (resolve_address_of_overloaded_function): Don't
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / g++.old-deja / g++.other / delete4.C
1 // { dg-do assemble  }
2
3 // Copyright (C) 1999 Free Software Foundation, Inc.
4 // Contributed by Nathan Sidwell 15 Apr 1999 <nathan@acm.org>
5
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
10 // [expr.new/13].
11
12 typedef __SIZE_TYPE__ size_t;
13
14 void *operator new(size_t)
15 {
16   return 0; // { dg-warning "NULL" } cannot return NULL
17 }
18 void *operator new[](size_t)
19 {
20   return 0; // { dg-warning "NULL" } cannot return NULL
21 }
22
23 struct X
24 {
25   void *operator new(size_t)
26   {
27     return 0; // { dg-warning "NULL" } cannot return NULL
28   }
29   void *operator new[](size_t)
30   {
31     return 0; // { dg-warning "NULL" } cannot return NULL
32   }
33 };
34
35 struct Y
36 {
37   void *operator new(size_t) throw()
38   {
39     return 0; // ok
40   }
41   void *operator new[](size_t) throw()
42   {
43     return 0; // ok
44   }
45 };
46
47 void fn(double *d, void *v)
48 {
49   delete d;   // ok
50   delete v;   // { dg-warning "" } deleting void
51   delete[] d; // ok
52   delete[] v; // { dg-warning "" } deleting void
53 }