diff --git a/include/llvm/Analysis/DIBuilder.h b/include/llvm/Analysis/DIBuilder.h index 2d109cdbf08..d79c2d5c2a4 100644 --- a/include/llvm/Analysis/DIBuilder.h +++ b/include/llvm/Analysis/DIBuilder.h @@ -348,8 +348,8 @@ namespace llvm { DIType createTemporaryType(DIFile F); /// createForwardDecl - Create a temporary forward-declared type. - DIType createForwardDecl(unsigned Tag, StringRef Name, DIFile F, - unsigned Line, unsigned RuntimeLang = 0); + DIType createForwardDecl(unsigned Tag, StringRef Name, DIDescriptor Scope, + DIFile F, unsigned Line, unsigned RuntimeLang = 0); /// retainType - Retain DIType in a module even if it is not referenced /// through debug info anchors. diff --git a/lib/Analysis/DIBuilder.cpp b/lib/Analysis/DIBuilder.cpp index 85913b11bef..a227a3b555a 100644 --- a/lib/Analysis/DIBuilder.cpp +++ b/lib/Analysis/DIBuilder.cpp @@ -47,16 +47,16 @@ void DIBuilder::finalize() { DIType(TempSubprograms).replaceAllUsesWith(SPs); for (unsigned i = 0, e = SPs.getNumElements(); i != e; ++i) { DISubprogram SP(SPs.getElement(i)); + SmallVector<Value *, 4> Variables; if (NamedMDNode *NMD = getFnSpecificMDNode(M, SP)) { - SmallVector<Value *, 4> Variables; for (unsigned ii = 0, ee = NMD->getNumOperands(); ii != ee; ++ii) Variables.push_back(NMD->getOperand(ii)); - if (MDNode *Temp = SP.getVariablesNodes()) { - DIArray AV = getOrCreateArray(Variables); - DIType(Temp).replaceAllUsesWith(AV); - } NMD->eraseFromParent(); } + if (MDNode *Temp = SP.getVariablesNodes()) { + DIArray AV = getOrCreateArray(Variables); + DIType(Temp).replaceAllUsesWith(AV); + } } DIArray GVs = getOrCreateArray(AllGVs); @@ -677,12 +677,13 @@ DIType DIBuilder::createTemporaryType(DIFile F) { /// createForwardDecl - Create a temporary forward-declared type that /// can be RAUW'd if the full type is seen. -DIType DIBuilder::createForwardDecl(unsigned Tag, StringRef Name, DIFile F, +DIType DIBuilder::createForwardDecl(unsigned Tag, StringRef Name, + DIDescriptor Scope, DIFile F, unsigned Line, unsigned RuntimeLang) { // Create a temporary MDNode. Value *Elts[] = { GetTagConstant(VMContext, Tag), - NULL, // TheCU + getNonCompileUnitScope(Scope), MDString::get(VMContext, Name), F, ConstantInt::get(Type::getInt32Ty(VMContext), Line),