diff options
author | David Blaikie <dblaikie@gmail.com> | 2014-05-25 18:11:35 +0000 |
---|---|---|
committer | David Blaikie <dblaikie@gmail.com> | 2014-05-25 18:11:35 +0000 |
commit | cec37248b2fb801d43718c810faa1736a1c95b60 (patch) | |
tree | 54f3e6deb3a190ce32d5878705d9ff884b60fea4 /lib/CodeGen/LexicalScopes.cpp | |
parent | 7e79a350b58a1e40d090e5ec3dc5cb339358ed5a (diff) | |
download | llvm-cec37248b2fb801d43718c810faa1736a1c95b60.tar.gz llvm-cec37248b2fb801d43718c810faa1736a1c95b60.tar.bz2 llvm-cec37248b2fb801d43718c810faa1736a1c95b60.tar.xz |
DebugInfo: Fix inlining with #file directives a little harder
Seems my previous fix was insufficient - we were still not adding the
inlined function to the abstract scope list. Which meant it wasn't
flagged as inline, didn't have nested lexical scopes in the abstract
definition, and didn't have abstract variables - so the inlined variable
didn't reference an abstract variable, instead being described
completely inline.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209602 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/LexicalScopes.cpp')
-rw-r--r-- | lib/CodeGen/LexicalScopes.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/lib/CodeGen/LexicalScopes.cpp b/lib/CodeGen/LexicalScopes.cpp index d965968fb4..d12c234bf3 100644 --- a/lib/CodeGen/LexicalScopes.cpp +++ b/lib/CodeGen/LexicalScopes.cpp @@ -210,21 +210,21 @@ LexicalScope *LexicalScopes::getOrCreateAbstractScope(const MDNode *N) { DIDescriptor Scope(N); if (Scope.isLexicalBlockFile()) Scope = DILexicalBlockFile(Scope).getScope(); - auto I = AbstractScopeMap.find(N); + auto I = AbstractScopeMap.find(Scope); if (I != AbstractScopeMap.end()) return &I->second; LexicalScope *Parent = nullptr; if (Scope.isLexicalBlock()) { - DILexicalBlock DB(N); + DILexicalBlock DB(Scope); DIDescriptor ParentDesc = DB.getContext(); Parent = getOrCreateAbstractScope(ParentDesc); } I = AbstractScopeMap.emplace(std::piecewise_construct, - std::forward_as_tuple(N), - std::forward_as_tuple(Parent, DIDescriptor(N), + std::forward_as_tuple(Scope), + std::forward_as_tuple(Parent, Scope, nullptr, true)).first; - if (DIDescriptor(N).isSubprogram()) + if (Scope.isSubprogram()) AbstractScopesList.push_back(&I->second); return &I->second; } |