================
@@ -0,0 +1,62 @@
+// RUN: %clang_cc1 -Wno-unused-value -Wunsafe-buffer-usage
-fsafe-buffer-usage-suggestions -std=c++20 -verify=expected %s
+
+// This debugging facility is only available in debug builds.
+//
+// REQUIRES: asserts
+
+namespace std {
+inline namespace __1 {
+template <class T> class unique_ptr {
+public:
+ T &operator[](long long i) const;
+};
+} // namespace __1
+} // namespace std
+
+int get_index() {
+ return 4;
+}
+
+void basic_unique_ptr() {
+ std::unique_ptr<int[]> p1;
+ int i = 2;
+ const int j = 3;
+ int k = 0;
+
+ p1[0]; // This is allowed
+
+ p1[k]; // expected-warning{{direct access using operator[] on
std::unique_ptr<T[]> is unsafe due to lack of bounds checking}}
+
+ p1[1]; // expected-warning{{direct access using operator[] on
std::unique_ptr<T[]> is unsafe due to lack of bounds checking}}
+
+ p1[1L]; // expected-warning{{direct access using operator[] on
std::unique_ptr<T[]> is unsafe due to lack of bounds checking}}
+
+ p1[1LL]; // expected-warning{{direct access using operator[] on
std::unique_ptr<T[]> is unsafe due to lack of bounds checking}}
+
+ p1[3 * 5]; // expected-warning{{direct access using operator[] on
std::unique_ptr<T[]> is unsafe due to lack of bounds checking}}
+
+ p1[i]; // expected-warning{{direct access using operator[] on
std::unique_ptr<T[]> is unsafe due to lack of bounds checking}}
+
+ p1[j]; // expected-warning{{direct access using operator[] on
std::unique_ptr<T[]> is unsafe due to lack of bounds checking}}
+
+ p1[i + 5]; // expected-warning{{direct access using operator[] on
std::unique_ptr<T[]> is unsafe due to lack of bounds checking}}
+
+ p1[get_index()]; // expected-warning{{direct access using operator[] on
std::unique_ptr<T[]> is unsafe due to lack of bounds checking}}
+
+}
+
+// CHECK: Root # 1
----------------
jkorous-apple wrote:
I don't see FileCheck being used in this test. What's the purpose of these?
https://github.com/llvm/llvm-project/pull/156773
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits