================ @@ -245,3 +243,40 @@ struct AggregateViaDefaultInit { void testAggregateViaDefaultInit() { AggregateViaDefaultInit A; }; + +struct A { + int arr[2]; + + [[clang::unsafe_buffer_usage]] + int *ptr; +}; + +namespace std{ + template <typename T> class span { + + T *elements; + + public: + + constexpr span(T *, unsigned){} + + template<class Begin, class End> + constexpr span(Begin first, End last){} + + constexpr T* data() const noexcept { + return elements; + } + }; +} + +[[clang::unsafe_buffer_usage]] +void check_no_warnings(unsigned idx) { + int *arr = new int[20]; + + int k = arr[idx]; // no-warning + + std::span<int> sp = {arr, 20}; // no-warning + A *ptr = reinterpret_cast<A*> (sp.data()); // no-warning + A a; + a.ptr = arr; // no-warning ---------------- malavikasamak wrote:
Thanks! Have added the tests you recommended. https://github.com/llvm/llvm-project/pull/125671 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits