diff options
| author | Adrian Prantl <aprantl@apple.com> | 2014-04-01 03:41:04 +0000 |
|---|---|---|
| committer | Adrian Prantl <aprantl@apple.com> | 2014-04-01 03:41:04 +0000 |
| commit | d09ba23fafcff122eaee90886345d1088936f408 (patch) | |
| tree | a94661924fafb77f5707e4031321adba5a04d9a9 /llvm/lib/IR | |
| parent | 6cdce9ed109e7f7bf4cf4814212388a83e142d66 (diff) | |
| download | bcm5719-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')
| -rw-r--r-- | llvm/lib/IR/DIBuilder.cpp | 4 | ||||
| -rw-r--r-- | llvm/lib/IR/DebugInfo.cpp | 4 |
2 files changed, 4 insertions, 4 deletions
diff --git a/llvm/lib/IR/DIBuilder.cpp b/llvm/lib/IR/DIBuilder.cpp index 8f3d979712a..1ea381a454c 100644 --- a/llvm/lib/IR/DIBuilder.cpp +++ b/llvm/lib/IR/DIBuilder.cpp @@ -190,12 +190,12 @@ DIImportedEntity DIBuilder::createImportedModule(DIScope Context, } DIImportedEntity DIBuilder::createImportedDeclaration(DIScope Context, - DIDescriptor Decl, + DIScope Decl, unsigned Line) { Value *Elts[] = { GetTagConstant(VMContext, dwarf::DW_TAG_imported_declaration), Context, - Decl, + Decl.getRef(), ConstantInt::get(Type::getInt32Ty(VMContext), Line), }; DIImportedEntity M(MDNode::get(VMContext, Elts)); 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()) |

