summaryrefslogtreecommitdiffstats
path: root/llvm/lib/IR/DebugInfo.cpp
diff options
context:
space:
mode:
authorAdrian Prantl <aprantl@apple.com>2014-04-01 03:41:04 +0000
committerAdrian Prantl <aprantl@apple.com>2014-04-01 03:41:04 +0000
commitd09ba23fafcff122eaee90886345d1088936f408 (patch)
treea94661924fafb77f5707e4031321adba5a04d9a9 /llvm/lib/IR/DebugInfo.cpp
parent6cdce9ed109e7f7bf4cf4814212388a83e142d66 (diff)
downloadbcm5719-llvm-d09ba23fafcff122eaee90886345d1088936f408.tar.gz
bcm5719-llvm-d09ba23fafcff122eaee90886345d1088936f408.zip
LTO type uniquing: store the Decl field of a DIImportedEntity as a DIRef.
No other functionality changes, DIBuilder testcase is included in a paired CFE commit. This relaxes the assertion in isScopeRef to also accept subclasses of DIScope. llvm-svn: 205279
Diffstat (limited to 'llvm/lib/IR/DebugInfo.cpp')
-rw-r--r--llvm/lib/IR/DebugInfo.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/llvm/lib/IR/DebugInfo.cpp b/llvm/lib/IR/DebugInfo.cpp
index 9d708c6fce0..f9bc63b389e 100644
--- a/llvm/lib/IR/DebugInfo.cpp
+++ b/llvm/lib/IR/DebugInfo.cpp
@@ -430,7 +430,7 @@ static bool fieldIsTypeRef(const MDNode *DbgNode, unsigned Elt) {
static bool isScopeRef(const Value *Val) {
return !Val ||
(isa<MDString>(Val) && !cast<MDString>(Val)->getString().empty()) ||
- (isa<MDNode>(Val) && DIScope(cast<MDNode>(Val)).isScope());
+ isa<MDNode>(Val);
}
/// Check if a field at position Elt of a MDNode can be a ScopeRef.
@@ -1016,7 +1016,7 @@ void DebugInfoFinder::processModule(const Module &M) {
DIArray Imports = CU.getImportedEntities();
for (unsigned i = 0, e = Imports.getNumElements(); i != e; ++i) {
DIImportedEntity Import = DIImportedEntity(Imports.getElement(i));
- DIDescriptor Entity = Import.getEntity();
+ DIDescriptor Entity = Import.getEntity().resolve(TypeIdentifierMap);
if (Entity.isType())
processType(DIType(Entity));
else if (Entity.isSubprogram())
OpenPOWER on IntegriCloud