aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Blaikie <dblaikie@gmail.com>2013-02-18 07:10:22 +0000
committerDavid Blaikie <dblaikie@gmail.com>2013-02-18 07:10:22 +0000
commit139f7e50688ce120b275ae368f563d03d9c18184 (patch)
tree6b9919937e6b35e265d74de7b2fc98f142b43395
parent3ef669c7175f959c39b7652f10c2b6ed9d8f83ae (diff)
downloadexternal_llvm-139f7e50688ce120b275ae368f563d03d9c18184.zip
external_llvm-139f7e50688ce120b275ae368f563d03d9c18184.tar.gz
external_llvm-139f7e50688ce120b275ae368f563d03d9c18184.tar.bz2
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
-rw-r--r--lib/IR/DIBuilder.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/IR/DIBuilder.cpp b/lib/IR/DIBuilder.cpp
index af055c9..2fe13c4 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);
}