aboutsummaryrefslogtreecommitdiff
path: root/llvm/unittests/ADT/ArrayRefTest.cpp
diff options
context:
space:
mode:
authorNicolai Hähnle <nicolai.haehnle@amd.com>2022-04-29 18:59:37 -0500
committerNicolai Hähnle <nicolai.haehnle@amd.com>2022-06-09 09:59:50 +0200
commitf971e77fb4ec12256f4486fe6174e67639f06661 (patch)
tree6a7fed13c2cd2f1f83df1c919571e33adc7af171 /llvm/unittests/ADT/ArrayRefTest.cpp
parent362a02dabe7b837b532d39ebe34d4e4ad1ab5925 (diff)
downloadllvm-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.cpp40
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