From 139f7e50688ce120b275ae368f563d03d9c18184 Mon Sep 17 00:00:00 2001 From: David Blaikie Date: Mon, 18 Feb 2013 07:10:22 +0000 Subject: [PATCH] DIBuilder: Add function and method definitions to the list of all subprograms Previously we seemed to be assuming that all functions were definitions and all methods were declarations. This may be consistent with how Clang uses DIBuilder but doesn't have to be true of all clients (such as DragonEgg). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175423 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/IR/DIBuilder.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/IR/DIBuilder.cpp b/lib/IR/DIBuilder.cpp index af055c9f2fa..2fe13c44c63 100644 --- a/lib/IR/DIBuilder.cpp +++ b/lib/IR/DIBuilder.cpp @@ -924,7 +924,8 @@ DISubprogram DIBuilder::createFunction(DIDescriptor Context, MDNode *Node = MDNode::get(VMContext, Elts); // Create a named metadata so that we do not lose this mdnode. - AllSubprograms.push_back(Node); + if (isDefinition) + AllSubprograms.push_back(Node); return DISubprogram(Node); } @@ -968,6 +969,8 @@ DISubprogram DIBuilder::createMethod(DIDescriptor Context, ConstantInt::get(Type::getInt32Ty(VMContext), LineNo) }; MDNode *Node = MDNode::get(VMContext, Elts); + if (isDefinition) + AllSubprograms.push_back(Node); return DISubprogram(Node); }