DebugInfo: Move DISubprogram::is*() queries to MDSubprogram

Move body of `DISubprogram::isPrivate()` (etc.) to `MDSubprogram`, and
change the versions in `DISubprogram` to forward there.

This is just like r234275, but for subprograms instead of types.

llvm-svn: 234282
This commit is contained in:
Duncan P. N. Exon Smith 2015-04-07 03:33:57 +00:00
parent 0e46755821
commit a1384912b2
2 changed files with 37 additions and 33 deletions

View File

@ -621,39 +621,14 @@ public:
MDNode *getVariablesNodes() const { return getVariables(); }
DIArray getVariables() const { return DIArray(get()->getVariables()); }
unsigned isArtificial() const { return (getFlags() & FlagArtificial) != 0; }
/// \brief Check for the "private" access specifier.
bool isPrivate() const {
return (getFlags() & FlagAccessibility) == FlagPrivate;
}
/// \brief Check for the "protected" access specifier.
bool isProtected() const {
return (getFlags() & FlagAccessibility) == FlagProtected;
}
/// \brief Check for the "public" access specifier.
bool isPublic() const {
return (getFlags() & FlagAccessibility) == FlagPublic;
}
/// \brief Check for "explicit".
bool isExplicit() const { return (getFlags() & FlagExplicit) != 0; }
/// \brief Check if this is prototyped.
bool isPrototyped() const { return (getFlags() & FlagPrototyped) != 0; }
/// \brief Check if this is reference-qualified.
///
/// Return true if this subprogram is a C++11 reference-qualified non-static
/// member function (void foo() &).
unsigned isLValueReference() const {
return (getFlags() & FlagLValueReference) != 0;
}
/// \brief Check if this is rvalue-reference-qualified.
///
/// Return true if this subprogram is a C++11 rvalue-reference-qualified
/// non-static member function (void foo() &&).
unsigned isRValueReference() const {
return (getFlags() & FlagRValueReference) != 0;
}
unsigned isArtificial() const { return get()->isArtificial(); }
bool isPrivate() const { return get()->isPrivate(); }
bool isProtected() const { return get()->isProtected(); }
bool isPublic() const { return get()->isPublic(); }
bool isExplicit() const { return get()->isExplicit(); }
bool isPrototyped() const { return get()->isPrototyped(); }
unsigned isLValueReference() const { return get()->isLValueReference(); }
unsigned isRValueReference() const { return get()->isRValueReference(); }
};
/// \brief This is a wrapper for a lexical block.

View File

@ -1236,6 +1236,35 @@ public:
bool isDefinition() const { return IsDefinition; }
bool isOptimized() const { return IsOptimized; }
unsigned isArtificial() const { return getFlags() & FlagArtificial; }
bool isPrivate() const {
return (getFlags() & FlagAccessibility) == FlagPrivate;
}
bool isProtected() const {
return (getFlags() & FlagAccessibility) == FlagProtected;
}
bool isPublic() const {
return (getFlags() & FlagAccessibility) == FlagPublic;
}
bool isExplicit() const { return getFlags() & FlagExplicit; }
bool isPrototyped() const { return getFlags() & FlagPrototyped; }
/// \brief Check if this is reference-qualified.
///
/// Return true if this subprogram is a C++11 reference-qualified non-static
/// member function (void foo() &).
unsigned isLValueReference() const {
return getFlags() & FlagLValueReference;
}
/// \brief Check if this is rvalue-reference-qualified.
///
/// Return true if this subprogram is a C++11 rvalue-reference-qualified
/// non-static member function (void foo() &&).
unsigned isRValueReference() const {
return getFlags() & FlagRValueReference;
}
MDScopeRef getScope() const { return MDScopeRef(getRawScope()); }
StringRef getName() const { return getStringOperand(2); }