================
@@ -0,0 +1,95 @@
+// RUN: %clang_cc1 -fsyntax-only -verify %s          -std=c++17 
-fcxx-type-aware-allocators
+// RUN: %clang_cc1 -fsyntax-only -verify %s -DNO_TAA -std=c++17 
-fno-cxx-type-aware-allocators
+
+namespace std {
+  template <class T> struct type_identity {};
+  enum class align_val_t : __SIZE_TYPE__ {};
+  struct destroying_delete_t { explicit destroying_delete_t() = default; };
+}
+
+using size_t = __SIZE_TYPE__;
+
+struct TestType {};
+template <typename T> struct TemplateTestType {};
+
+// Valid free declarations
+void *operator new(std::type_identity<int>, size_t);
+void *operator new(std::type_identity<int>, size_t, std::align_val_t);
+void *operator new(std::type_identity<int>, size_t, TestType&);
+template <typename T> void *operator new(std::type_identity<T>, size_t);
+template <typename T> void *operator new(std::type_identity<T>, size_t, 
TestType&);
+template <typename T> void *operator 
new(std::type_identity<TemplateTestType<T>>, size_t, TestType&);
+template <typename T, typename U> void *operator new(std::type_identity<T>, 
size_t, TemplateTestType<U>&);
+template <template <typename> class T> void *operator 
new(std::type_identity<T<int>>, size_t); 
+#if defined(NO_TAA)
+//expected-error@-9 {{type aware allocation operators are disabled}}
+//expected-error@-9 {{type aware allocation operators are disabled}}
+//expected-error@-9 {{type aware allocation operators are disabled}}
+//expected-error@-9 {{type aware allocation operators are disabled}}
+//expected-error@-9 {{type aware allocation operators are disabled}}
+//expected-error@-9 {{type aware allocation operators are disabled}}
+//expected-error@-9 {{type aware allocation operators are disabled}}
+//expected-error@-9 {{type aware allocation operators are disabled}}
+#endif
+
+void operator delete(std::type_identity<int>, void *);
+void operator delete(std::type_identity<int>, void *, std::align_val_t);
+void operator delete(std::type_identity<int>, void *, size_t);
+void operator delete(std::type_identity<int>, void *, size_t, 
std::align_val_t);
+#if defined(NO_TAA)
+//expected-error@-5 {{type aware allocation operators are disabled}}
----------------
erichkeane wrote:

This diagnostic should mention the flag so folks know how to fix this.

https://github.com/llvm/llvm-project/pull/113510
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to