mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-26 14:15:53 +00:00
Add a way to get the context of any particular scope.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187212 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
65985348c5
commit
956e5aa3bd
@ -187,6 +187,9 @@ namespace llvm {
|
||||
public:
|
||||
explicit DIScope(const MDNode *N = 0) : DIDescriptor (N) {}
|
||||
|
||||
/// Gets the parent scope for this scope node or returns a
|
||||
/// default constructed scope.
|
||||
DIScope getContext() const;
|
||||
StringRef getFilename() const;
|
||||
StringRef getDirectory() const;
|
||||
};
|
||||
|
@ -692,6 +692,31 @@ Value *DITemplateValueParameter::getValue() const {
|
||||
return getField(DbgNode, 4);
|
||||
}
|
||||
|
||||
// If the current node has a parent scope then return that,
|
||||
// else return an empty scope.
|
||||
DIScope DIScope::getContext() const {
|
||||
|
||||
if (isType())
|
||||
return DIType(DbgNode).getContext();
|
||||
|
||||
if (isSubprogram())
|
||||
return DISubprogram(DbgNode).getContext();
|
||||
|
||||
if (isLexicalBlock())
|
||||
return DILexicalBlock(DbgNode).getContext();
|
||||
|
||||
if (isLexicalBlockFile())
|
||||
return DILexicalBlockFile(DbgNode).getContext();
|
||||
|
||||
if (isNameSpace())
|
||||
return DINameSpace(DbgNode).getContext();
|
||||
|
||||
if (isFile() || isCompileUnit())
|
||||
return DIScope();
|
||||
|
||||
return DIScope();
|
||||
}
|
||||
|
||||
StringRef DIScope::getFilename() const {
|
||||
if (!DbgNode)
|
||||
return StringRef();
|
||||
|
Loading…
Reference in New Issue
Block a user