IR: Add missing null operand to MDSubroutineType
authorDuncan P. N. Exon Smith <dexonsmith@apple.com>
Thu, 19 Feb 2015 23:25:21 +0000 (23:25 +0000)
committerDuncan P. N. Exon Smith <dexonsmith@apple.com>
Thu, 19 Feb 2015 23:25:21 +0000 (23:25 +0000)
Add missing `nullptr` from `MDSubroutineType`'s operands for
`MDCompositeTypeBase::getIdentifier()` (and add tests for all the other
unused fields).  This highlights just how crazy it is that
`MDSubroutineType` inherits from `MDCompositeTypeBase`.

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

lib/IR/DebugInfoMetadata.cpp
unittests/IR/MetadataTest.cpp

index ab79a713357776dade3d993119a9e54df85194fa..a2f5d55c3c6a4979ebfcb92f04fca30c71de376f 100644 (file)
@@ -200,7 +200,7 @@ MDSubroutineType *MDSubroutineType::getImpl(LLVMContext &Context,
                                             bool ShouldCreate) {
   DEFINE_GETIMPL_LOOKUP(MDSubroutineType, (Flags, TypeArray));
   Metadata *Ops[] = {nullptr,   nullptr, nullptr, nullptr,
-                     TypeArray, nullptr, nullptr};
+                     TypeArray, nullptr, nullptr, nullptr};
   DEFINE_GETIMPL_STORE(MDSubroutineType, (Flags), Ops);
 }
 
index ea49880e918c4cb1a6631f993190a399cdd5be0b..0c1ef82205e5f1cb296ac6063b67bfbfc5c02fdb 100644 (file)
@@ -964,6 +964,15 @@ TEST_F(MDSubroutineTypeTest, get) {
 
   TempMDSubroutineType Temp = N->clone();
   EXPECT_EQ(N, MDNode::replaceWithUniqued(std::move(Temp)));
+
+  // Test always-empty operands.
+  EXPECT_EQ(nullptr, N->getScope());
+  EXPECT_EQ(nullptr, N->getFile());
+  EXPECT_EQ("", N->getName());
+  EXPECT_EQ(nullptr, N->getBaseType());
+  EXPECT_EQ(nullptr, N->getVTableHolder());
+  EXPECT_EQ(nullptr, N->getTemplateParams());
+  EXPECT_EQ("", N->getIdentifier());
 }
 
 typedef MetadataTest MDFileTest;