diff --git a/llvm/include/llvm/CodeGen/LexicalScopes.h b/llvm/include/llvm/CodeGen/LexicalScopes.h index ccbd6dae6c5e..709681b98217 100644 --- a/llvm/include/llvm/CodeGen/LexicalScopes.h +++ b/llvm/include/llvm/CodeGen/LexicalScopes.h @@ -18,6 +18,7 @@ #define LLVM_CODEGEN_LEXICALSCOPES_H #include "llvm/Metadata.h" +#include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/DenseMap.h" #include "llvm/ADT/SmallPtrSet.h" #include "llvm/ADT/SmallVector.h" @@ -79,7 +80,7 @@ public: LexicalScope *findLexicalScope(DebugLoc DL); /// getAbstractScopesList - Return a reference to list of abstract scopes. - SmallVector &getAbstractScopesList() { + ArrayRef getAbstractScopesList() const { return AbstractScopesList; } diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index 76dc43feae91..f5c762b18ea6 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -1680,10 +1680,10 @@ void DwarfDebug::endFunction(const MachineFunction *MF) { collectVariableInfo(MF, ProcessedVars); // Construct abstract scopes. - SmallVector &AList = LScopes.getAbstractScopesList(); - for (SmallVector::iterator AI = AList.begin(), - AE = AList.end(); AI != AE; ++AI) { - DISubprogram SP((*AI)->getScopeNode()); + ArrayRef AList = LScopes.getAbstractScopesList(); + for (unsigned i = 0, e = AList.size(); i != e; ++i) { + LexicalScope *AScope = AList[i]; + DISubprogram SP(AScope->getScopeNode()); if (SP.Verify()) { // Collect info for variables that were optimized out. StringRef FName = SP.getLinkageName(); @@ -1700,8 +1700,8 @@ void DwarfDebug::endFunction(const MachineFunction *MF) { } } } - if (ProcessedSPNodes.count((*AI)->getScopeNode()) == 0) - constructScopeDIE(*AI); + if (ProcessedSPNodes.count(AScope->getScopeNode()) == 0) + constructScopeDIE(AScope); } DIE *CurFnDIE = constructScopeDIE(LScopes.getCurrentFunctionScope());