IR: Add accessors to MDExpression
authorDuncan P. N. Exon Smith <dexonsmith@apple.com>
Tue, 10 Feb 2015 01:36:46 +0000 (01:36 +0000)
committerDuncan P. N. Exon Smith <dexonsmith@apple.com>
Tue, 10 Feb 2015 01:36:46 +0000 (01:36 +0000)
Add some accessors to `MDExpression`.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228648 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/IR/DebugInfoMetadata.h
unittests/IR/MetadataTest.cpp

index fdb6dd8964c72400c0cf51a02b3ef8fd49d8c9ca..f1af7ef8b8b14bc30461822fb2fa90c97acf2bb0 100644 (file)
@@ -1410,6 +1410,12 @@ public:
 
   ArrayRef<uint64_t> getElements() const { return Elements; }
 
+  unsigned getNumElements() const { return Elements.size(); }
+  uint64_t getElement(unsigned I) const {
+    assert(I < Elements.size() && "Index out of range");
+    return Elements[I];
+  }
+
   typedef ArrayRef<uint64_t>::iterator element_iterator;
   element_iterator elements_begin() const { return getElements().begin(); }
   element_iterator elements_end() const { return getElements().end(); }
index 8a1da4f325de39a4c424ac57c90beecb072feaed..9e244246c41eda34bb379a2891684b65507bc48e 100644 (file)
@@ -1389,6 +1389,13 @@ TEST_F(MDExpressionTest, get) {
   auto *N = MDExpression::get(Context, Elements);
   EXPECT_EQ(makeArrayRef(Elements), N->getElements());
   EXPECT_EQ(N, MDExpression::get(Context, Elements));
+
+  EXPECT_EQ(5u, N->getNumElements());
+  EXPECT_EQ(2u, N->getElement(0));
+  EXPECT_EQ(6u, N->getElement(1));
+  EXPECT_EQ(9u, N->getElement(2));
+  EXPECT_EQ(78u, N->getElement(3));
+  EXPECT_EQ(0u, N->getElement(4));
 }
 
 typedef MetadataTest MDObjCPropertyTest;