From aeb422f527e97acc6fe588a200323f0f3be958ff Mon Sep 17 00:00:00 2001 From: "Duncan P. N. Exon Smith" Date: Thu, 19 Feb 2015 23:25:21 +0000 Subject: [PATCH] IR: Add missing null operand to MDSubroutineType 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 | 2 +- unittests/IR/MetadataTest.cpp | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/IR/DebugInfoMetadata.cpp b/lib/IR/DebugInfoMetadata.cpp index ab79a713357..a2f5d55c3c6 100644 --- a/lib/IR/DebugInfoMetadata.cpp +++ b/lib/IR/DebugInfoMetadata.cpp @@ -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); } diff --git a/unittests/IR/MetadataTest.cpp b/unittests/IR/MetadataTest.cpp index ea49880e918..0c1ef82205e 100644 --- a/unittests/IR/MetadataTest.cpp +++ b/unittests/IR/MetadataTest.cpp @@ -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;