parent
b36914421b
commit
998dedac98
|
@ -152,7 +152,8 @@ LexicalScope *LexicalScopes::getOrCreateRegularScope(MDNode *Scope) {
|
||||||
D = DIDescriptor(Scope);
|
D = DIDescriptor(Scope);
|
||||||
}
|
}
|
||||||
|
|
||||||
auto IterBool = LexicalScopeMap.insert(std::make_pair(Scope, std::unique_ptr<LexicalScope>()));
|
auto IterBool = LexicalScopeMap.insert(
|
||||||
|
std::make_pair(Scope, std::unique_ptr<LexicalScope>()));
|
||||||
auto &MapValue = *IterBool.first;
|
auto &MapValue = *IterBool.first;
|
||||||
if (!IterBool.second)
|
if (!IterBool.second)
|
||||||
return MapValue.second.get();
|
return MapValue.second.get();
|
||||||
|
@ -160,7 +161,8 @@ LexicalScope *LexicalScopes::getOrCreateRegularScope(MDNode *Scope) {
|
||||||
LexicalScope *Parent = nullptr;
|
LexicalScope *Parent = nullptr;
|
||||||
if (D.isLexicalBlock())
|
if (D.isLexicalBlock())
|
||||||
Parent = getOrCreateLexicalScope(DebugLoc::getFromDILexicalBlock(Scope));
|
Parent = getOrCreateLexicalScope(DebugLoc::getFromDILexicalBlock(Scope));
|
||||||
MapValue.second = make_unique<LexicalScope>(Parent, DIDescriptor(Scope), nullptr, false);
|
MapValue.second =
|
||||||
|
make_unique<LexicalScope>(Parent, DIDescriptor(Scope), nullptr, false);
|
||||||
if (!Parent && DIDescriptor(Scope).isSubprogram() &&
|
if (!Parent && DIDescriptor(Scope).isSubprogram() &&
|
||||||
DISubprogram(Scope).describes(MF->getFunction()))
|
DISubprogram(Scope).describes(MF->getFunction()))
|
||||||
CurrentFnLexicalScope = MapValue.second.get();
|
CurrentFnLexicalScope = MapValue.second.get();
|
||||||
|
@ -171,14 +173,16 @@ LexicalScope *LexicalScopes::getOrCreateRegularScope(MDNode *Scope) {
|
||||||
/// getOrCreateInlinedScope - Find or create an inlined lexical scope.
|
/// getOrCreateInlinedScope - Find or create an inlined lexical scope.
|
||||||
LexicalScope *LexicalScopes::getOrCreateInlinedScope(MDNode *Scope,
|
LexicalScope *LexicalScopes::getOrCreateInlinedScope(MDNode *Scope,
|
||||||
MDNode *InlinedAt) {
|
MDNode *InlinedAt) {
|
||||||
auto IterBool = LexicalScopeMap.insert(std::make_pair(InlinedAt, std::unique_ptr<LexicalScope>()));
|
auto IterBool = LexicalScopeMap.insert(
|
||||||
|
std::make_pair(InlinedAt, std::unique_ptr<LexicalScope>()));
|
||||||
auto &MapValue = *IterBool.first;
|
auto &MapValue = *IterBool.first;
|
||||||
if (!IterBool.second)
|
if (!IterBool.second)
|
||||||
return MapValue.second.get();
|
return MapValue.second.get();
|
||||||
|
|
||||||
DebugLoc InlinedLoc = DebugLoc::getFromDILocation(InlinedAt);
|
DebugLoc InlinedLoc = DebugLoc::getFromDILocation(InlinedAt);
|
||||||
MapValue.second = make_unique<LexicalScope>(getOrCreateLexicalScope(InlinedLoc),
|
MapValue.second =
|
||||||
DIDescriptor(Scope), InlinedAt, false);
|
make_unique<LexicalScope>(getOrCreateLexicalScope(InlinedLoc),
|
||||||
|
DIDescriptor(Scope), InlinedAt, false);
|
||||||
InlinedLexicalScopeMap[InlinedLoc] = MapValue.second.get();
|
InlinedLexicalScopeMap[InlinedLoc] = MapValue.second.get();
|
||||||
return MapValue.second.get();
|
return MapValue.second.get();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue