1018591f524ca4f3a1e657d0d0a66eadf9dbd55f6John McCall// RUN: %clang_cc1 -fsyntax-only -fexceptions -fcxx-exceptions -verify %s 27adb10fa317cd7eacb0959f775e77353d4f24ad1Douglas Gregorint *use_new(int N) { 37adb10fa317cd7eacb0959f775e77353d4f24ad1Douglas Gregor if (N == 1) 47adb10fa317cd7eacb0959f775e77353d4f24ad1Douglas Gregor return new int; 57adb10fa317cd7eacb0959f775e77353d4f24ad1Douglas Gregor 67adb10fa317cd7eacb0959f775e77353d4f24ad1Douglas Gregor return new int [N]; 77adb10fa317cd7eacb0959f775e77353d4f24ad1Douglas Gregor} 87adb10fa317cd7eacb0959f775e77353d4f24ad1Douglas Gregor 97adb10fa317cd7eacb0959f775e77353d4f24ad1Douglas Gregorvoid use_delete(int* ip, int N) { 107adb10fa317cd7eacb0959f775e77353d4f24ad1Douglas Gregor if (N == 1) 117adb10fa317cd7eacb0959f775e77353d4f24ad1Douglas Gregor delete ip; 127adb10fa317cd7eacb0959f775e77353d4f24ad1Douglas Gregor else 137adb10fa317cd7eacb0959f775e77353d4f24ad1Douglas Gregor delete [] ip; 147adb10fa317cd7eacb0959f775e77353d4f24ad1Douglas Gregor} 157adb10fa317cd7eacb0959f775e77353d4f24ad1Douglas Gregor 167adb10fa317cd7eacb0959f775e77353d4f24ad1Douglas Gregornamespace std { 177adb10fa317cd7eacb0959f775e77353d4f24ad1Douglas Gregor class bad_alloc { }; 187adb10fa317cd7eacb0959f775e77353d4f24ad1Douglas Gregor 197adb10fa317cd7eacb0959f775e77353d4f24ad1Douglas Gregor typedef __SIZE_TYPE__ size_t; 207adb10fa317cd7eacb0959f775e77353d4f24ad1Douglas Gregor} 217adb10fa317cd7eacb0959f775e77353d4f24ad1Douglas Gregor 222eef829b19bdc59976a827fa39b409440e352bffDouglas Gregorvoid* operator new(std::size_t) throw(std::bad_alloc); // expected-note{{previous declaration}} 237adb10fa317cd7eacb0959f775e77353d4f24ad1Douglas Gregorvoid* operator new[](std::size_t) throw(std::bad_alloc); 242eef829b19bdc59976a827fa39b409440e352bffDouglas Gregorvoid operator delete(void*) throw(); // expected-note{{previous declaration}} 257adb10fa317cd7eacb0959f775e77353d4f24ad1Douglas Gregorvoid operator delete[](void*) throw(); 262eef829b19bdc59976a827fa39b409440e352bffDouglas Gregor 272eef829b19bdc59976a827fa39b409440e352bffDouglas Gregorvoid* operator new(std::size_t); // expected-warning{{'operator new' is missing exception specification 'throw(std::bad_alloc)'}} 282eef829b19bdc59976a827fa39b409440e352bffDouglas Gregorvoid operator delete(void*); // expected-warning{{'operator delete' is missing exception specification 'throw()'}} 29