41 lines · cpp
1// RUN: %clang_cc1 -fsyntax-only -fexceptions -fcxx-exceptions -verify -Wno-dynamic-exception-spec %std_cxx98- %s2int *use_new(int N) {3 if (N == 1)4 return new int;5 6 return new int [N];7}8 9void use_delete(int* ip, int N) {10 if (N == 1)11 delete ip;12 else13 delete [] ip;14}15 16namespace std {17 class bad_alloc { };18 19 typedef __SIZE_TYPE__ size_t;20}21 22void* operator new(std::size_t) throw(std::bad_alloc);23#if __cplusplus < 201103L24// expected-note@-2 {{previous declaration}}25#endif26 27void* operator new[](std::size_t) throw(std::bad_alloc); 28void operator delete(void*) throw(); // expected-note{{previous declaration}}29void operator delete[](void*) throw();30 31void* operator new(std::size_t);32#if __cplusplus < 201103L33// expected-warning@-2 {{'operator new' is missing exception specification 'throw(std::bad_alloc)'}}34#endif35void operator delete(void*);36#if __cplusplus < 201103L37// expected-warning@-2 {{'operator delete' is missing exception specification 'throw()'}}38#else39// expected-warning@-4 {{previously declared with an explicit exception specification redeclared with an implicit}}40#endif41