diff options
author | Nicolai Hähnle <nicolai.haehnle@amd.com> | 2022-04-29 18:59:37 -0500 |
---|---|---|
committer | Nicolai Hähnle <nicolai.haehnle@amd.com> | 2022-06-09 09:59:50 +0200 |
commit | f971e77fb4ec12256f4486fe6174e67639f06661 (patch) | |
tree | 6a7fed13c2cd2f1f83df1c919571e33adc7af171 /llvm/unittests/ADT/ArrayRefTest.cpp | |
parent | 362a02dabe7b837b532d39ebe34d4e4ad1ab5925 (diff) | |
download | llvm-f971e77fb4ec12256f4486fe6174e67639f06661.zip llvm-f971e77fb4ec12256f4486fe6174e67639f06661.tar.gz llvm-f971e77fb4ec12256f4486fe6174e67639f06661.tar.bz2 |
ADT/ArrayRef: Add makeMutableArrayRef overloads
Equivalent overloads already exist for makeArrayRef.
Differential Revision: https://reviews.llvm.org/D126421
Diffstat (limited to 'llvm/unittests/ADT/ArrayRefTest.cpp')
-rw-r--r-- | llvm/unittests/ADT/ArrayRefTest.cpp | 40 |
1 files changed, 39 insertions, 1 deletions
diff --git a/llvm/unittests/ADT/ArrayRefTest.cpp b/llvm/unittests/ADT/ArrayRefTest.cpp index f3da4c6..eded12d 100644 --- a/llvm/unittests/ADT/ArrayRefTest.cpp +++ b/llvm/unittests/ADT/ArrayRefTest.cpp @@ -229,7 +229,6 @@ TEST(ArrayRefTest, EmptyInitializerList) { EXPECT_TRUE(A.empty()); } -// Test that makeArrayRef works on ArrayRef (no-op) TEST(ArrayRefTest, makeArrayRef) { static const int A1[] = {1, 2, 3, 4, 5, 6, 7, 8}; @@ -265,4 +264,43 @@ TEST(ArrayRefTest, makeArrayRefFromStdArray) { static_assert(std::is_trivially_copyable<ArrayRef<int>>::value, "trivially copyable"); +TEST(ArrayRefTest, makeMutableArrayRef) { + int A = 0; + auto AR = makeMutableArrayRef(A); + EXPECT_EQ(AR.data(), &A); + EXPECT_EQ(AR.size(), (size_t)1); + + AR[0] = 1; + EXPECT_EQ(A, 1); + + int B[] = {0, 1, 2, 3}; + auto BR1 = makeMutableArrayRef(&B[0], 4); + auto BR2 = makeMutableArrayRef(B); + EXPECT_EQ(BR1.data(), &B[0]); + EXPECT_EQ(BR1.size(), (size_t)4); + EXPECT_EQ(BR2.data(), &B[0]); + EXPECT_EQ(BR2.size(), (size_t)4); + + SmallVector<int> C1; + SmallVectorImpl<int> &C2 = C1; + C1.resize(5); + auto CR1 = makeMutableArrayRef(C1); + auto CR2 = makeMutableArrayRef(C2); + EXPECT_EQ(CR1.data(), C1.data()); + EXPECT_EQ(CR1.size(), C1.size()); + EXPECT_EQ(CR2.data(), C2.data()); + EXPECT_EQ(CR2.size(), C2.size()); + + std::vector<int> D; + D.resize(5); + auto DR = makeMutableArrayRef(D); + EXPECT_EQ(DR.data(), D.data()); + EXPECT_EQ(DR.size(), D.size()); + + std::array<int, 5> E; + auto ER = makeMutableArrayRef(E); + EXPECT_EQ(ER.data(), E.data()); + EXPECT_EQ(ER.size(), E.size()); +} + } // end anonymous namespace |