Debug Info: Rename DITypeRef to DIScopeRef.

A reference to a scope is more general than a reference to a type since
DIType is a subclass of DIScope.

A reference to a type can be either an identifier for the type or
the DIType itself, while a reference to a scope can be either an
identifier for the type (when the scope is indeed a type) or the
DIScope itself. A reference to a type and a reference to a scope
will be resolved in the same way. The only difference is in the
verifier when a field is a reference to a type (i.e. the containing
type field of a DICompositeType) or a field is a reference to a scope
(i.e. the context field of a DIType).

This is to get ready for switching DIType::getContext to return
DIScopeRef instead of DIScope.

Tighten up isTypeRef and isScopeRef to make sure the identifier is not
empty and the MDNode is DIType for TypeRef and DIScope for ScopeRef.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190322 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Manman Ren
2013-09-09 19:03:51 +00:00
parent 626a4b785b
commit c573305bce
4 changed files with 65 additions and 60 deletions

View File

@@ -2633,7 +2633,7 @@ void DwarfDebug::emitDebugStrDWO() {
OffSec, StrSym);
}
/// Find the MDNode for the given type reference.
MDNode *DwarfDebug::resolve(DITypeRef TRef) const {
return TRef.resolve(TypeIdentifierMap);
/// Find the MDNode for the given scope reference.
DIScope DwarfDebug::resolve(DIScopeRef SRef) const {
return SRef.resolve(TypeIdentifierMap);
}

View File

@@ -683,8 +683,8 @@ public:
/// Returns the Dwarf Version.
unsigned getDwarfVersion() const { return DwarfVersion; }
/// Find the MDNode for the given type reference.
MDNode *resolve(DITypeRef TRef) const;
/// Find the MDNode for the given scope reference.
DIScope resolve(DIScopeRef SRef) const;
};
} // End of namespace llvm