1762bb9d0ad20320b9f97a841dce57ba5e8e48b07Richard Smith// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 -fexceptions %s
26d90870fe821a9b1a7822d3e28032042d03e5680Douglas Gregortypedef __SIZE_TYPE__ size_t;
36d90870fe821a9b1a7822d3e28032042d03e5680Douglas Gregor
46d90870fe821a9b1a7822d3e28032042d03e5680Douglas Gregorstruct S {
56d90870fe821a9b1a7822d3e28032042d03e5680Douglas Gregor  // Placement allocation function:
66d90870fe821a9b1a7822d3e28032042d03e5680Douglas Gregor  static void* operator new(size_t, size_t);
76d90870fe821a9b1a7822d3e28032042d03e5680Douglas Gregor  // Usual (non-placement) deallocation function:
86d90870fe821a9b1a7822d3e28032042d03e5680Douglas Gregor  static void operator delete(void*, size_t); // expected-note{{declared here}}
96d90870fe821a9b1a7822d3e28032042d03e5680Douglas Gregor};
106d90870fe821a9b1a7822d3e28032042d03e5680Douglas Gregor
116d90870fe821a9b1a7822d3e28032042d03e5680Douglas Gregorvoid testS() {
126d90870fe821a9b1a7822d3e28032042d03e5680Douglas Gregor  S* p = new (0) S;	// expected-error{{'new' expression with placement arguments refers to non-placement 'operator delete'}}
136d90870fe821a9b1a7822d3e28032042d03e5680Douglas Gregor}
14