[Lldb-commits] [lldb] fe8e25a - [lldb][NFC] Create type-safe function for creating a CompilerType from a QualType
Raphael “Teemperor” Isemann via lldb-commits
lldb-commits at lists.llvm.org
Thu Jan 2 14:13:09 PST 2020
Somehow your mail is missing examples after the ‘… like:’ but the method is named similar to the GetType* methods directly below it. Don’t really have an opinion about whether this should be GetType* or GetCompilerType* (though I wouldn’t add the ‘As’ to it though as that’s usually used for casting utilities). I can rename the whole pack of function to GetCompilerType(…), that sounds good to me.
> On Jan 2, 2020, at 11:05 PM, Shafik Yaghmour <syaghmour at apple.com> wrote:
>
> Instead of GetType(...) I think GetCompilerType(…) is better or maybe even GetAsCompilerType(…). It adds a bit more context, we have so many types. It also feels a bit more consistent with methods like:
>
>
>
>> On Jan 2, 2020, at 2:55 AM, Raphael Isemann via lldb-commits <lldb-commits at lists.llvm.org> wrote:
>>
>>
>> Author: Raphael Isemann
>> Date: 2020-01-02T11:54:45+01:00
>> New Revision: fe8e25a48a2a0f8f508499ba950181dba3d600b0
>>
>> URL: https://github.com/llvm/llvm-project/commit/fe8e25a48a2a0f8f508499ba950181dba3d600b0
>> DIFF: https://github.com/llvm/llvm-project/commit/fe8e25a48a2a0f8f508499ba950181dba3d600b0.diff
>>
>> LOG: [lldb][NFC] Create type-safe function for creating a CompilerType from a QualType
>>
>> LLDB frequently converts QualType to CompilerType. This is currently done like this:
>> result = CompilerType(this, qual_type_var.getAsOpaquePtr())
>> There are a few shortcomings in this current approach:
>> 1. CompilerType's constructor takes a void* pointer so it isn't type safe.
>> 2. We can't add any sanity checks to the CompilerType constructor (e.g. that the type
>> actually belongs to the passed ClangASTContext) without expanding the TypeSystem API.
>> 3. The logic for converting QualType->CompilerType is spread out over all of LLDB so
>> changing it is difficult (e.g., what if we want to just pass the type ptr and not the
>> 1type_ptr | qual_flags1 to CompilerType).
>>
>> This patch adds a `ClangASTContext::GetType` function similar to the other GetTypeForDecl
>> functions that does this conversion in a type safe way.
>>
>> It also adds a sanity check for Tag-based types that the type actually belongs to the
>> current ClangASTContext (Types don't seem to know their ASTContext, so we have to
>> workaround by looking at the decl for the underlying TagDecl. This doesn't cover all types
>> we construct but it's better than no sanity check).
>>
>> Added:
>>
>>
>> Modified:
>> lldb/include/lldb/Symbol/ClangASTContext.h
>> lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.cpp
>> lldb/source/Plugins/Language/ObjC/NSArray.cpp
>> lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTypeEncodingParser.cpp
>> lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
>> lldb/source/Plugins/SymbolFile/NativePDB/PdbAstBuilder.cpp
>> lldb/source/Symbol/ClangASTContext.cpp
>>
>> Removed:
>>
>>
>>
>> ################################################################################
>> diff --git a/lldb/include/lldb/Symbol/ClangASTContext.h b/lldb/include/lldb/Symbol/ClangASTContext.h
>> index e9a1d536ca8e..53ecd1bb78fc 100644
>> --- a/lldb/include/lldb/Symbol/ClangASTContext.h
>> +++ b/lldb/include/lldb/Symbol/ClangASTContext.h
>> @@ -164,6 +164,22 @@ class ClangASTContext : public TypeSystem {
>> static bool AreTypesSame(CompilerType type1, CompilerType type2,
>> bool ignore_qualifiers = false);
>>
>> + /// Creates a CompilerType form the given QualType with the current
>> + /// ClangASTContext instance as the CompilerType's typesystem.
>> + /// \param qt The QualType for a type that belongs to the ASTContext of this
>> + /// ClangASTContext.
>> + /// \return The CompilerType representing the given QualType. If the
>> + /// QualType's type pointer is a nullptr then the function returns an
>> + /// invalid CompilerType.
>> + CompilerType GetType(clang::QualType qt) {
>> + if (qt.getTypePtrOrNull() == nullptr)
>> + return CompilerType();
>> + // Check that the type actually belongs to this ClangASTContext.
>> + assert(qt->getAsTagDecl() == nullptr ||
>> + &qt->getAsTagDecl()->getASTContext() == &getASTContext());
>> + return CompilerType(this, qt.getAsOpaquePtr());
>> + }
>> +
>> CompilerType GetTypeForDecl(clang::NamedDecl *decl);
>>
>> CompilerType GetTypeForDecl(clang::TagDecl *decl);
>>
>> diff --git a/lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.cpp b/lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.cpp
>> index ff86f9f818b2..b0043f9c0f64 100644
>> --- a/lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.cpp
>> +++ b/lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.cpp
>> @@ -1861,7 +1861,7 @@ CompilerType ClangASTSource::GuardedCopyType(const CompilerType &src_type) {
>> // seems to be generating bad types on occasion.
>> return CompilerType();
>>
>> - return CompilerType(m_clang_ast_context, copied_qual_type.getAsOpaquePtr());
>> + return m_clang_ast_context->GetType(copied_qual_type);
>> }
>>
>> clang::NamedDecl *NameSearchContext::AddVarDecl(const CompilerType &type) {
>> @@ -1988,9 +1988,8 @@ clang::NamedDecl *NameSearchContext::AddGenericFunDecl() {
>> ArrayRef<QualType>(), // argument types
>> proto_info));
>>
>> - return AddFunDecl(CompilerType(m_ast_source.m_clang_ast_context,
>> - generic_function_type.getAsOpaquePtr()),
>> - true);
>> + return AddFunDecl(
>> + m_ast_source.m_clang_ast_context->GetType(generic_function_type), true);
>> }
>>
>> clang::NamedDecl *
>>
>> diff --git a/lldb/source/Plugins/Language/ObjC/NSArray.cpp b/lldb/source/Plugins/Language/ObjC/NSArray.cpp
>> index 64461fc2bc0f..0ac7fb6d2330 100644
>> --- a/lldb/source/Plugins/Language/ObjC/NSArray.cpp
>> +++ b/lldb/source/Plugins/Language/ObjC/NSArray.cpp
>> @@ -612,9 +612,8 @@ lldb_private::formatters::GenericNSArrayISyntheticFrontEnd<D32, D64, Inline>::
>> auto *clang_ast_context = ClangASTContext::GetScratch(
>> *valobj_sp->GetExecutionContextRef().GetTargetSP());
>> if (clang_ast_context)
>> - m_id_type = CompilerType(clang_ast_context,
>> - clang_ast_context->getASTContext()
>> - .ObjCBuiltinIdTy.getAsOpaquePtr());
>> + m_id_type = clang_ast_context->GetType(
>> + clang_ast_context->getASTContext().ObjCBuiltinIdTy);
>> }
>> }
>> }
>>
>> diff --git a/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTypeEncodingParser.cpp b/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTypeEncodingParser.cpp
>> index 5fa4073f40b1..d92f782c72e9 100644
>> --- a/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTypeEncodingParser.cpp
>> +++ b/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTypeEncodingParser.cpp
>> @@ -137,8 +137,7 @@ clang::QualType AppleObjCTypeEncodingParser::BuildAggregate(
>> element.name = elem_name.GetString();
>> }
>> ClangASTContext::AddFieldToRecordType(
>> - union_type, element.name.c_str(),
>> - CompilerType(&ast_ctx, element.type.getAsOpaquePtr()),
>> + union_type, element.name.c_str(), ast_ctx.GetType(element.type),
>> lldb::eAccessPublic, element.bitfield);
>> ++count;
>> }
>> @@ -362,7 +361,7 @@ CompilerType AppleObjCTypeEncodingParser::RealizeType(ClangASTContext &ast_ctx,
>> if (name && name[0]) {
>> StringLexer lexer(name);
>> clang::QualType qual_type = BuildType(ast_ctx, lexer, for_expression);
>> - return CompilerType(&ast_ctx, qual_type.getAsOpaquePtr());
>> + return ast_ctx.GetType(qual_type);
>> }
>> return CompilerType();
>> }
>>
>> diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
>> index 96dd72bb1009..3cae9a190010 100644
>> --- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
>> +++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
>> @@ -2086,8 +2086,8 @@ bool DWARFASTParserClang::CompleteRecordType(const DWARFDIE &die,
>> clang::TypeSourceInfo *type_source_info =
>> base_class->getTypeSourceInfo();
>> if (type_source_info) {
>> - CompilerType base_class_type(
>> - &m_ast, type_source_info->getType().getAsOpaquePtr());
>> + CompilerType base_class_type =
>> + m_ast.GetType(type_source_info->getType());
>> if (!base_class_type.GetCompleteType()) {
>> auto module = dwarf->GetObjectFile()->GetModule();
>> module->ReportError(":: Class '%s' has a base class '%s' which "
>>
>> diff --git a/lldb/source/Plugins/SymbolFile/NativePDB/PdbAstBuilder.cpp b/lldb/source/Plugins/SymbolFile/NativePDB/PdbAstBuilder.cpp
>> index 7a1a64816f46..4588c80aa1b1 100644
>> --- a/lldb/source/Plugins/SymbolFile/NativePDB/PdbAstBuilder.cpp
>> +++ b/lldb/source/Plugins/SymbolFile/NativePDB/PdbAstBuilder.cpp
>> @@ -1078,7 +1078,7 @@ void PdbAstBuilder::CreateFunctionParameters(PdbCompilandSymId func_id,
>> PdbCompilandSymId param_uid(func_id.modi, record_offset);
>> clang::QualType qt = GetOrCreateType(param_type);
>>
>> - CompilerType param_type_ct(&m_clang, qt.getAsOpaquePtr());
>> + CompilerType param_type_ct = m_clang.GetType(qt);
>> clang::ParmVarDecl *param = m_clang.CreateParameterDeclaration(
>> &function_decl, param_name.str().c_str(), param_type_ct,
>> clang::SC_None, true);
>>
>> diff --git a/lldb/source/Symbol/ClangASTContext.cpp b/lldb/source/Symbol/ClangASTContext.cpp
>> index d226a34b1ac4..4cf70fa9c1cb 100644
>> --- a/lldb/source/Symbol/ClangASTContext.cpp
>> +++ b/lldb/source/Symbol/ClangASTContext.cpp
>> @@ -764,56 +764,54 @@ ClangASTContext::GetBuiltinTypeForEncodingAndBitSize(Encoding encoding,
>> switch (encoding) {
>> case eEncodingInvalid:
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.VoidPtrTy))
>> - return CompilerType(this, ast.VoidPtrTy.getAsOpaquePtr());
>> + return GetType(ast.VoidPtrTy);
>> break;
>>
>> case eEncodingUint:
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.UnsignedCharTy))
>> - return CompilerType(this, ast.UnsignedCharTy.getAsOpaquePtr());
>> + return GetType(ast.UnsignedCharTy);
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.UnsignedShortTy))
>> - return CompilerType(this, ast.UnsignedShortTy.getAsOpaquePtr());
>> + return GetType(ast.UnsignedShortTy);
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.UnsignedIntTy))
>> - return CompilerType(this, ast.UnsignedIntTy.getAsOpaquePtr());
>> + return GetType(ast.UnsignedIntTy);
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.UnsignedLongTy))
>> - return CompilerType(this, ast.UnsignedLongTy.getAsOpaquePtr());
>> + return GetType(ast.UnsignedLongTy);
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.UnsignedLongLongTy))
>> - return CompilerType(this, ast.UnsignedLongLongTy.getAsOpaquePtr());
>> + return GetType(ast.UnsignedLongLongTy);
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.UnsignedInt128Ty))
>> - return CompilerType(this, ast.UnsignedInt128Ty.getAsOpaquePtr());
>> + return GetType(ast.UnsignedInt128Ty);
>> break;
>>
>> case eEncodingSint:
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.SignedCharTy))
>> - return CompilerType(this, ast.SignedCharTy.getAsOpaquePtr());
>> + return GetType(ast.SignedCharTy);
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.ShortTy))
>> - return CompilerType(this, ast.ShortTy.getAsOpaquePtr());
>> + return GetType(ast.ShortTy);
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.IntTy))
>> - return CompilerType(this, ast.IntTy.getAsOpaquePtr());
>> + return GetType(ast.IntTy);
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.LongTy))
>> - return CompilerType(this, ast.LongTy.getAsOpaquePtr());
>> + return GetType(ast.LongTy);
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.LongLongTy))
>> - return CompilerType(this, ast.LongLongTy.getAsOpaquePtr());
>> + return GetType(ast.LongLongTy);
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.Int128Ty))
>> - return CompilerType(this, ast.Int128Ty.getAsOpaquePtr());
>> + return GetType(ast.Int128Ty);
>> break;
>>
>> case eEncodingIEEE754:
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.FloatTy))
>> - return CompilerType(this, ast.FloatTy.getAsOpaquePtr());
>> + return GetType(ast.FloatTy);
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.DoubleTy))
>> - return CompilerType(this, ast.DoubleTy.getAsOpaquePtr());
>> + return GetType(ast.DoubleTy);
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.LongDoubleTy))
>> - return CompilerType(this, ast.LongDoubleTy.getAsOpaquePtr());
>> + return GetType(ast.LongDoubleTy);
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.HalfTy))
>> - return CompilerType(this, ast.HalfTy.getAsOpaquePtr());
>> + return GetType(ast.HalfTy);
>> break;
>>
>> case eEncodingVector:
>> // Sanity check that bit_size is a multiple of 8's.
>> if (bit_size && !(bit_size & 0x7u))
>> - return CompilerType(this,
>> - ast.getExtVectorType(ast.UnsignedCharTy, bit_size / 8)
>> - .getAsOpaquePtr());
>> + return GetType(ast.getExtVectorType(ast.UnsignedCharTy, bit_size / 8));
>> break;
>> }
>>
>> @@ -916,18 +914,18 @@ CompilerType ClangASTContext::GetBuiltinTypeForDWARFEncodingAndBitSize(
>>
>> case DW_ATE_address:
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.VoidPtrTy))
>> - return CompilerType(this, ast.VoidPtrTy.getAsOpaquePtr());
>> + return GetType(ast.VoidPtrTy);
>> break;
>>
>> case DW_ATE_boolean:
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.BoolTy))
>> - return CompilerType(this, ast.BoolTy.getAsOpaquePtr());
>> + return GetType(ast.BoolTy);
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.UnsignedCharTy))
>> - return CompilerType(this, ast.UnsignedCharTy.getAsOpaquePtr());
>> + return GetType(ast.UnsignedCharTy);
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.UnsignedShortTy))
>> - return CompilerType(this, ast.UnsignedShortTy.getAsOpaquePtr());
>> + return GetType(ast.UnsignedShortTy);
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.UnsignedIntTy))
>> - return CompilerType(this, ast.UnsignedIntTy.getAsOpaquePtr());
>> + return GetType(ast.UnsignedIntTy);
>> break;
>>
>> case DW_ATE_lo_user:
>> @@ -936,49 +934,46 @@ CompilerType ClangASTContext::GetBuiltinTypeForDWARFEncodingAndBitSize(
>> CompilerType complex_int_clang_type =
>> GetBuiltinTypeForDWARFEncodingAndBitSize("int", DW_ATE_signed,
>> bit_size / 2);
>> - return CompilerType(this, ast.getComplexType(ClangUtil::GetQualType(
>> - complex_int_clang_type))
>> - .getAsOpaquePtr());
>> + return GetType(
>> + ast.getComplexType(ClangUtil::GetQualType(complex_int_clang_type)));
>> }
>> break;
>>
>> case DW_ATE_complex_float:
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.FloatComplexTy))
>> - return CompilerType(this, ast.FloatComplexTy.getAsOpaquePtr());
>> + return GetType(ast.FloatComplexTy);
>> else if (QualTypeMatchesBitSize(bit_size, ast, ast.DoubleComplexTy))
>> - return CompilerType(this, ast.DoubleComplexTy.getAsOpaquePtr());
>> + return GetType(ast.DoubleComplexTy);
>> else if (QualTypeMatchesBitSize(bit_size, ast, ast.LongDoubleComplexTy))
>> - return CompilerType(this, ast.LongDoubleComplexTy.getAsOpaquePtr());
>> + return GetType(ast.LongDoubleComplexTy);
>> else {
>> CompilerType complex_float_clang_type =
>> GetBuiltinTypeForDWARFEncodingAndBitSize("float", DW_ATE_float,
>> bit_size / 2);
>> - return CompilerType(
>> - this,
>> - ast.getComplexType(ClangUtil::GetQualType(complex_float_clang_type))
>> - .getAsOpaquePtr());
>> + return GetType(
>> + ast.getComplexType(ClangUtil::GetQualType(complex_float_clang_type)));
>> }
>> break;
>>
>> case DW_ATE_float:
>> if (type_name == "float" &&
>> QualTypeMatchesBitSize(bit_size, ast, ast.FloatTy))
>> - return CompilerType(this, ast.FloatTy.getAsOpaquePtr());
>> + return GetType(ast.FloatTy);
>> if (type_name == "double" &&
>> QualTypeMatchesBitSize(bit_size, ast, ast.DoubleTy))
>> - return CompilerType(this, ast.DoubleTy.getAsOpaquePtr());
>> + return GetType(ast.DoubleTy);
>> if (type_name == "long double" &&
>> QualTypeMatchesBitSize(bit_size, ast, ast.LongDoubleTy))
>> - return CompilerType(this, ast.LongDoubleTy.getAsOpaquePtr());
>> + return GetType(ast.LongDoubleTy);
>> // Fall back to not requiring a name match
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.FloatTy))
>> - return CompilerType(this, ast.FloatTy.getAsOpaquePtr());
>> + return GetType(ast.FloatTy);
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.DoubleTy))
>> - return CompilerType(this, ast.DoubleTy.getAsOpaquePtr());
>> + return GetType(ast.DoubleTy);
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.LongDoubleTy))
>> - return CompilerType(this, ast.LongDoubleTy.getAsOpaquePtr());
>> + return GetType(ast.LongDoubleTy);
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.HalfTy))
>> - return CompilerType(this, ast.HalfTy.getAsOpaquePtr());
>> + return GetType(ast.HalfTy);
>> break;
>>
>> case DW_ATE_signed:
>> @@ -987,54 +982,54 @@ CompilerType ClangASTContext::GetBuiltinTypeForDWARFEncodingAndBitSize(
>> QualTypeMatchesBitSize(bit_size, ast, ast.WCharTy) &&
>> (getTargetInfo() &&
>> TargetInfo::isTypeSigned(getTargetInfo()->getWCharType())))
>> - return CompilerType(this, ast.WCharTy.getAsOpaquePtr());
>> + return GetType(ast.WCharTy);
>> if (type_name == "void" &&
>> QualTypeMatchesBitSize(bit_size, ast, ast.VoidTy))
>> - return CompilerType(this, ast.VoidTy.getAsOpaquePtr());
>> + return GetType(ast.VoidTy);
>> if (type_name.contains("long long") &&
>> QualTypeMatchesBitSize(bit_size, ast, ast.LongLongTy))
>> - return CompilerType(this, ast.LongLongTy.getAsOpaquePtr());
>> + return GetType(ast.LongLongTy);
>> if (type_name.contains("long") &&
>> QualTypeMatchesBitSize(bit_size, ast, ast.LongTy))
>> - return CompilerType(this, ast.LongTy.getAsOpaquePtr());
>> + return GetType(ast.LongTy);
>> if (type_name.contains("short") &&
>> QualTypeMatchesBitSize(bit_size, ast, ast.ShortTy))
>> - return CompilerType(this, ast.ShortTy.getAsOpaquePtr());
>> + return GetType(ast.ShortTy);
>> if (type_name.contains("char")) {
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.CharTy))
>> - return CompilerType(this, ast.CharTy.getAsOpaquePtr());
>> + return GetType(ast.CharTy);
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.SignedCharTy))
>> - return CompilerType(this, ast.SignedCharTy.getAsOpaquePtr());
>> + return GetType(ast.SignedCharTy);
>> }
>> if (type_name.contains("int")) {
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.IntTy))
>> - return CompilerType(this, ast.IntTy.getAsOpaquePtr());
>> + return GetType(ast.IntTy);
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.Int128Ty))
>> - return CompilerType(this, ast.Int128Ty.getAsOpaquePtr());
>> + return GetType(ast.Int128Ty);
>> }
>> }
>> // We weren't able to match up a type name, just search by size
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.CharTy))
>> - return CompilerType(this, ast.CharTy.getAsOpaquePtr());
>> + return GetType(ast.CharTy);
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.ShortTy))
>> - return CompilerType(this, ast.ShortTy.getAsOpaquePtr());
>> + return GetType(ast.ShortTy);
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.IntTy))
>> - return CompilerType(this, ast.IntTy.getAsOpaquePtr());
>> + return GetType(ast.IntTy);
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.LongTy))
>> - return CompilerType(this, ast.LongTy.getAsOpaquePtr());
>> + return GetType(ast.LongTy);
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.LongLongTy))
>> - return CompilerType(this, ast.LongLongTy.getAsOpaquePtr());
>> + return GetType(ast.LongLongTy);
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.Int128Ty))
>> - return CompilerType(this, ast.Int128Ty.getAsOpaquePtr());
>> + return GetType(ast.Int128Ty);
>> break;
>>
>> case DW_ATE_signed_char:
>> if (ast.getLangOpts().CharIsSigned && type_name == "char") {
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.CharTy))
>> - return CompilerType(this, ast.CharTy.getAsOpaquePtr());
>> + return GetType(ast.CharTy);
>> }
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.SignedCharTy))
>> - return CompilerType(this, ast.SignedCharTy.getAsOpaquePtr());
>> + return GetType(ast.SignedCharTy);
>> break;
>>
>> case DW_ATE_unsigned:
>> @@ -1043,52 +1038,52 @@ CompilerType ClangASTContext::GetBuiltinTypeForDWARFEncodingAndBitSize(
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.WCharTy)) {
>> if (!(getTargetInfo() &&
>> TargetInfo::isTypeSigned(getTargetInfo()->getWCharType())))
>> - return CompilerType(this, ast.WCharTy.getAsOpaquePtr());
>> + return GetType(ast.WCharTy);
>> }
>> }
>> if (type_name.contains("long long")) {
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.UnsignedLongLongTy))
>> - return CompilerType(this, ast.UnsignedLongLongTy.getAsOpaquePtr());
>> + return GetType(ast.UnsignedLongLongTy);
>> } else if (type_name.contains("long")) {
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.UnsignedLongTy))
>> - return CompilerType(this, ast.UnsignedLongTy.getAsOpaquePtr());
>> + return GetType(ast.UnsignedLongTy);
>> } else if (type_name.contains("short")) {
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.UnsignedShortTy))
>> - return CompilerType(this, ast.UnsignedShortTy.getAsOpaquePtr());
>> + return GetType(ast.UnsignedShortTy);
>> } else if (type_name.contains("char")) {
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.UnsignedCharTy))
>> - return CompilerType(this, ast.UnsignedCharTy.getAsOpaquePtr());
>> + return GetType(ast.UnsignedCharTy);
>> } else if (type_name.contains("int")) {
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.UnsignedIntTy))
>> - return CompilerType(this, ast.UnsignedIntTy.getAsOpaquePtr());
>> + return GetType(ast.UnsignedIntTy);
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.UnsignedInt128Ty))
>> - return CompilerType(this, ast.UnsignedInt128Ty.getAsOpaquePtr());
>> + return GetType(ast.UnsignedInt128Ty);
>> }
>> }
>> // We weren't able to match up a type name, just search by size
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.UnsignedCharTy))
>> - return CompilerType(this, ast.UnsignedCharTy.getAsOpaquePtr());
>> + return GetType(ast.UnsignedCharTy);
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.UnsignedShortTy))
>> - return CompilerType(this, ast.UnsignedShortTy.getAsOpaquePtr());
>> + return GetType(ast.UnsignedShortTy);
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.UnsignedIntTy))
>> - return CompilerType(this, ast.UnsignedIntTy.getAsOpaquePtr());
>> + return GetType(ast.UnsignedIntTy);
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.UnsignedLongTy))
>> - return CompilerType(this, ast.UnsignedLongTy.getAsOpaquePtr());
>> + return GetType(ast.UnsignedLongTy);
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.UnsignedLongLongTy))
>> - return CompilerType(this, ast.UnsignedLongLongTy.getAsOpaquePtr());
>> + return GetType(ast.UnsignedLongLongTy);
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.UnsignedInt128Ty))
>> - return CompilerType(this, ast.UnsignedInt128Ty.getAsOpaquePtr());
>> + return GetType(ast.UnsignedInt128Ty);
>> break;
>>
>> case DW_ATE_unsigned_char:
>> if (!ast.getLangOpts().CharIsSigned && type_name == "char") {
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.CharTy))
>> - return CompilerType(this, ast.CharTy.getAsOpaquePtr());
>> + return GetType(ast.CharTy);
>> }
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.UnsignedCharTy))
>> - return CompilerType(this, ast.UnsignedCharTy.getAsOpaquePtr());
>> + return GetType(ast.UnsignedCharTy);
>> if (QualTypeMatchesBitSize(bit_size, ast, ast.UnsignedShortTy))
>> - return CompilerType(this, ast.UnsignedShortTy.getAsOpaquePtr());
>> + return GetType(ast.UnsignedShortTy);
>> break;
>>
>> case DW_ATE_imaginary_float:
>> @@ -1097,11 +1092,11 @@ CompilerType ClangASTContext::GetBuiltinTypeForDWARFEncodingAndBitSize(
>> case DW_ATE_UTF:
>> if (!type_name.empty()) {
>> if (type_name == "char16_t")
>> - return CompilerType(this, ast.Char16Ty.getAsOpaquePtr());
>> + return GetType(ast.Char16Ty);
>> if (type_name == "char32_t")
>> - return CompilerType(this, ast.Char32Ty.getAsOpaquePtr());
>> + return GetType(ast.Char32Ty);
>> if (type_name == "char8_t")
>> - return CompilerType(this, ast.Char8Ty.getAsOpaquePtr());
>> + return GetType(ast.Char8Ty);
>> }
>> break;
>> }
>> @@ -1129,7 +1124,7 @@ CompilerType ClangASTContext::GetCStringType(bool is_const) {
>> if (is_const)
>> char_type.addConst();
>>
>> - return CompilerType(this, ast.getPointerType(char_type).getAsOpaquePtr());
>> + return GetType(ast.getPointerType(char_type));
>> }
>>
>> bool ClangASTContext::AreTypesSame(CompilerType type1, CompilerType type2,
>> @@ -1179,13 +1174,11 @@ CompilerType ClangASTContext::GetTypeForDecl(clang::NamedDecl *decl) {
>> }
>>
>> CompilerType ClangASTContext::GetTypeForDecl(TagDecl *decl) {
>> - return CompilerType(this,
>> - getASTContext().getTagDeclType(decl).getAsOpaquePtr());
>> + return GetType(getASTContext().getTagDeclType(decl));
>> }
>>
>> CompilerType ClangASTContext::GetTypeForDecl(ObjCInterfaceDecl *decl) {
>> - return CompilerType(
>> - this, getASTContext().getObjCInterfaceType(decl).getAsOpaquePtr());
>> + return GetType(getASTContext().getObjCInterfaceType(decl));
>> }
>>
>> #pragma mark Structure, Unions, Classes
>> @@ -1259,7 +1252,7 @@ CompilerType ClangASTContext::CreateRecordType(DeclContext *decl_ctx,
>> if (decl_ctx)
>> decl_ctx->addDecl(decl);
>>
>> - return CompilerType(this, ast.getTagDeclType(decl).getAsOpaquePtr());
>> + return GetType(ast.getTagDeclType(decl));
>> }
>> return CompilerType();
>> }
>> @@ -1479,9 +1472,7 @@ CompilerType ClangASTContext::CreateClassTemplateSpecializationType(
>> ClassTemplateSpecializationDecl *class_template_specialization_decl) {
>> if (class_template_specialization_decl) {
>> ASTContext &ast = getASTContext();
>> - return CompilerType(this,
>> - ast.getTagDeclType(class_template_specialization_decl)
>> - .getAsOpaquePtr());
>> + return GetType(ast.getTagDeclType(class_template_specialization_decl));
>> }
>> return CompilerType();
>> }
>> @@ -1607,7 +1598,7 @@ CompilerType ClangASTContext::CreateObjCClass(llvm::StringRef name,
>> if (decl && metadata)
>> SetMetadata(decl, *metadata);
>>
>> - return CompilerType(this, ast.getObjCInterfaceType(decl).getAsOpaquePtr());
>> + return GetType(ast.getObjCInterfaceType(decl));
>> }
>>
>> static inline bool BaseSpecifierIsEmpty(const CXXBaseSpecifier *b) {
>> @@ -1940,11 +1931,8 @@ ClangASTContext::CreateFunctionType(const CompilerType &result_type,
>> proto_info.TypeQuals = clang::Qualifiers::fromFastMask(type_quals);
>> proto_info.RefQualifier = RQ_None;
>>
>> - return CompilerType(this,
>> - getASTContext()
>> - .getFunctionType(ClangUtil::GetQualType(result_type),
>> - qual_type_args, proto_info)
>> - .getAsOpaquePtr());
>> + return GetType(getASTContext().getFunctionType(
>> + ClangUtil::GetQualType(result_type), qual_type_args, proto_info));
>> }
>>
>> ParmVarDecl *ClangASTContext::CreateParameterDeclaration(
>> @@ -1974,7 +1962,7 @@ ClangASTContext::CreateBlockPointerType(const CompilerType &function_type) {
>> QualType block_type = m_ast_up->getBlockPointerType(
>> clang::QualType::getFromOpaquePtr(function_type.GetOpaqueQualType()));
>>
>> - return CompilerType(this, block_type.getAsOpaquePtr());
>> + return GetType(block_type);
>> }
>>
>> #pragma mark Array Types
>> @@ -1986,24 +1974,18 @@ CompilerType ClangASTContext::CreateArrayType(const CompilerType &element_type,
>> ASTContext &ast = getASTContext();
>>
>> if (is_vector) {
>> - return CompilerType(
>> - this, ast.getExtVectorType(ClangUtil::GetQualType(element_type),
>> - element_count)
>> - .getAsOpaquePtr());
>> + return GetType(ast.getExtVectorType(ClangUtil::GetQualType(element_type),
>> + element_count));
>> } else {
>>
>> llvm::APInt ap_element_count(64, element_count);
>> if (element_count == 0) {
>> - return CompilerType(this, ast.getIncompleteArrayType(
>> - ClangUtil::GetQualType(element_type),
>> - clang::ArrayType::Normal, 0)
>> - .getAsOpaquePtr());
>> + return GetType(ast.getIncompleteArrayType(
>> + ClangUtil::GetQualType(element_type), clang::ArrayType::Normal, 0));
>> } else {
>> - return CompilerType(
>> - this, ast.getConstantArrayType(ClangUtil::GetQualType(element_type),
>> - ap_element_count, nullptr,
>> - clang::ArrayType::Normal, 0)
>> - .getAsOpaquePtr());
>> + return GetType(ast.getConstantArrayType(
>> + ClangUtil::GetQualType(element_type), ap_element_count, nullptr,
>> + clang::ArrayType::Normal, 0));
>> }
>> }
>> }
>> @@ -2077,7 +2059,7 @@ ClangASTContext::CreateEnumerationType(const char *name, DeclContext *decl_ctx,
>>
>> enum_decl->setAccess(AS_public); // TODO respect what's in the debug info
>>
>> - return CompilerType(this, ast.getTagDeclType(enum_decl).getAsOpaquePtr());
>> + return GetType(ast.getTagDeclType(enum_decl));
>> }
>> return CompilerType();
>> }
>> @@ -2088,40 +2070,40 @@ CompilerType ClangASTContext::GetIntTypeFromBitSize(size_t bit_size,
>>
>> if (is_signed) {
>> if (bit_size == ast.getTypeSize(ast.SignedCharTy))
>> - return CompilerType(this, ast.SignedCharTy.getAsOpaquePtr());
>> + return GetType(ast.SignedCharTy);
>>
>> if (bit_size == ast.getTypeSize(ast.ShortTy))
>> - return CompilerType(this, ast.ShortTy.getAsOpaquePtr());
>> + return GetType(ast.ShortTy);
>>
>> if (bit_size == ast.getTypeSize(ast.IntTy))
>> - return CompilerType(this, ast.IntTy.getAsOpaquePtr());
>> + return GetType(ast.IntTy);
>>
>> if (bit_size == ast.getTypeSize(ast.LongTy))
>> - return CompilerType(this, ast.LongTy.getAsOpaquePtr());
>> + return GetType(ast.LongTy);
>>
>> if (bit_size == ast.getTypeSize(ast.LongLongTy))
>> - return CompilerType(this, ast.LongLongTy.getAsOpaquePtr());
>> + return GetType(ast.LongLongTy);
>>
>> if (bit_size == ast.getTypeSize(ast.Int128Ty))
>> - return CompilerType(this, ast.Int128Ty.getAsOpaquePtr());
>> + return GetType(ast.Int128Ty);
>> } else {
>> if (bit_size == ast.getTypeSize(ast.UnsignedCharTy))
>> - return CompilerType(this, ast.UnsignedCharTy.getAsOpaquePtr());
>> + return GetType(ast.UnsignedCharTy);
>>
>> if (bit_size == ast.getTypeSize(ast.UnsignedShortTy))
>> - return CompilerType(this, ast.UnsignedShortTy.getAsOpaquePtr());
>> + return GetType(ast.UnsignedShortTy);
>>
>> if (bit_size == ast.getTypeSize(ast.UnsignedIntTy))
>> - return CompilerType(this, ast.UnsignedIntTy.getAsOpaquePtr());
>> + return GetType(ast.UnsignedIntTy);
>>
>> if (bit_size == ast.getTypeSize(ast.UnsignedLongTy))
>> - return CompilerType(this, ast.UnsignedLongTy.getAsOpaquePtr());
>> + return GetType(ast.UnsignedLongTy);
>>
>> if (bit_size == ast.getTypeSize(ast.UnsignedLongLongTy))
>> - return CompilerType(this, ast.UnsignedLongLongTy.getAsOpaquePtr());
>> + return GetType(ast.UnsignedLongLongTy);
>>
>> if (bit_size == ast.getTypeSize(ast.UnsignedInt128Ty))
>> - return CompilerType(this, ast.UnsignedInt128Ty.getAsOpaquePtr());
>> + return GetType(ast.UnsignedInt128Ty);
>> }
>> return CompilerType();
>> }
>> @@ -2682,8 +2664,7 @@ bool ClangASTContext::IsVectorType(lldb::opaque_compiler_type_t type,
>> if (size)
>> *size = vector_type->getNumElements();
>> if (element_type)
>> - *element_type =
>> - CompilerType(this, vector_type->getElementType().getAsOpaquePtr());
>> + *element_type = GetType(vector_type->getElementType());
>> }
>> return true;
>> } break;
>> @@ -3372,9 +3353,7 @@ bool ClangASTContext::IsPossibleDynamicType(lldb::opaque_compiler_type_t type,
>> if (metadata)
>> success = metadata->GetIsDynamicCXXType();
>> else {
>> - is_complete =
>> - CompilerType(this, pointee_qual_type.getAsOpaquePtr())
>> - .GetCompleteType();
>> + is_complete = GetType(pointee_qual_type).GetCompleteType();
>> if (is_complete)
>> success = cxx_record_decl->isDynamicClass();
>> else
>> @@ -3708,12 +3687,10 @@ ClangASTContext::GetTypeInfo(lldb::opaque_compiler_type_t type,
>> return eTypeIsTemplate;
>>
>> case clang::Type::Typedef:
>> - return eTypeIsTypedef |
>> - CompilerType(this, llvm::cast<clang::TypedefType>(qual_type)
>> - ->getDecl()
>> - ->getUnderlyingType()
>> - .getAsOpaquePtr())
>> - .GetTypeInfo(pointee_or_element_clang_type);
>> + return eTypeIsTypedef | GetType(llvm::cast<clang::TypedefType>(qual_type)
>> + ->getDecl()
>> + ->getUnderlyingType())
>> + .GetTypeInfo(pointee_or_element_clang_type);
>> case clang::Type::UnresolvedUsing:
>> return 0;
>>
>> @@ -3811,10 +3788,9 @@ ClangASTContext::GetMinimumLanguage(lldb::opaque_compiler_type_t type) {
>> }
>> break;
>> case clang::Type::Typedef:
>> - return CompilerType(this, llvm::cast<clang::TypedefType>(qual_type)
>> - ->getDecl()
>> - ->getUnderlyingType()
>> - .getAsOpaquePtr())
>> + return GetType(llvm::cast<clang::TypedefType>(qual_type)
>> + ->getDecl()
>> + ->getUnderlyingType())
>> .GetMinimumLanguage();
>> }
>> }
>> @@ -3962,8 +3938,8 @@ ClangASTContext::GetArrayElementType(lldb::opaque_compiler_type_t type,
>> if (!array_eletype)
>> return CompilerType();
>>
>> - CompilerType element_type(
>> - this, array_eletype->getCanonicalTypeUnqualified().getAsOpaquePtr());
>> + CompilerType element_type =
>> + GetType(array_eletype->getCanonicalTypeUnqualified());
>>
>> // TODO: the real stride will be >= this value.. find the real one!
>> if (stride)
>> @@ -3981,19 +3957,12 @@ CompilerType ClangASTContext::GetArrayType(lldb::opaque_compiler_type_t type,
>> clang::QualType qual_type(GetCanonicalQualType(type));
>> clang::ASTContext &ast_ctx = getASTContext();
>> if (size != 0)
>> - return CompilerType(
>> - this, ast_ctx
>> - .getConstantArrayType(
>> - qual_type, llvm::APInt(64, size), nullptr,
>> - clang::ArrayType::ArraySizeModifier::Normal, 0)
>> - .getAsOpaquePtr());
>> + return GetType(ast_ctx.getConstantArrayType(
>> + qual_type, llvm::APInt(64, size), nullptr,
>> + clang::ArrayType::ArraySizeModifier::Normal, 0));
>> else
>> - return CompilerType(
>> - this,
>> - ast_ctx
>> - .getIncompleteArrayType(
>> - qual_type, clang::ArrayType::ArraySizeModifier::Normal, 0)
>> - .getAsOpaquePtr());
>> + return GetType(ast_ctx.getIncompleteArrayType(
>> + qual_type, clang::ArrayType::ArraySizeModifier::Normal, 0));
>> }
>>
>> return CompilerType();
>> @@ -4002,7 +3971,7 @@ CompilerType ClangASTContext::GetArrayType(lldb::opaque_compiler_type_t type,
>> CompilerType
>> ClangASTContext::GetCanonicalType(lldb::opaque_compiler_type_t type) {
>> if (type)
>> - return CompilerType(this, GetCanonicalQualType(type).getAsOpaquePtr());
>> + return GetType(GetCanonicalQualType(type));
>> return CompilerType();
>> }
>>
>> @@ -4022,9 +3991,8 @@ static clang::QualType GetFullyUnqualifiedType_Impl(clang::ASTContext *ast,
>> CompilerType
>> ClangASTContext::GetFullyUnqualifiedType(lldb::opaque_compiler_type_t type) {
>> if (type)
>> - return CompilerType(
>> - this, GetFullyUnqualifiedType_Impl(&getASTContext(), GetQualType(type))
>> - .getAsOpaquePtr());
>> + return GetType(
>> + GetFullyUnqualifiedType_Impl(&getASTContext(), GetQualType(type)));
>> return CompilerType();
>> }
>>
>> @@ -4047,7 +4015,7 @@ CompilerType ClangASTContext::GetFunctionArgumentTypeAtIndex(
>> if (func) {
>> const uint32_t num_args = func->getNumParams();
>> if (idx < num_args)
>> - return CompilerType(this, func->getParamType(idx).getAsOpaquePtr());
>> + return GetType(func->getParamType(idx));
>> }
>> }
>> return CompilerType();
>> @@ -4060,7 +4028,7 @@ ClangASTContext::GetFunctionReturnType(lldb::opaque_compiler_type_t type) {
>> const clang::FunctionProtoType *func =
>> llvm::dyn_cast<clang::FunctionProtoType>(qual_type.getTypePtr());
>> if (func)
>> - return CompilerType(this, func->getReturnType().getAsOpaquePtr());
>> + return GetType(func->getReturnType());
>> }
>> return CompilerType();
>> }
>> @@ -4161,8 +4129,7 @@ ClangASTContext::GetMemberFunctionAtIndex(lldb::opaque_compiler_type_t type,
>> kind = lldb::eMemberFunctionKindDestructor;
>> else
>> kind = lldb::eMemberFunctionKindInstanceMethod;
>> - clang_type = CompilerType(
>> - this, cxx_method_decl->getType().getAsOpaquePtr());
>> + clang_type = GetType(cxx_method_decl->getType());
>> clang_decl = CompilerDecl(this, cxx_method_decl);
>> }
>> }
>> @@ -4246,8 +4213,7 @@ ClangASTContext::GetMemberFunctionAtIndex(lldb::opaque_compiler_type_t type,
>> CompilerType
>> ClangASTContext::GetNonReferenceType(lldb::opaque_compiler_type_t type) {
>> if (type)
>> - return CompilerType(
>> - this, GetQualType(type).getNonReferenceType().getAsOpaquePtr());
>> + return GetType(GetQualType(type).getNonReferenceType());
>> return CompilerType();
>> }
>>
>> @@ -4277,7 +4243,7 @@ CompilerType ClangASTContext::CreateTypedefType(
>> decl_ctx->addDecl(decl);
>>
>> // Get a uniqued clang::QualType for the typedef decl type
>> - return CompilerType(ast, clang_ast.getTypedefType(decl).getAsOpaquePtr());
>> + return ast->GetType(clang_ast.getTypedefType(decl));
>> }
>> return CompilerType();
>> }
>> @@ -4286,8 +4252,7 @@ CompilerType
>> ClangASTContext::GetPointeeType(lldb::opaque_compiler_type_t type) {
>> if (type) {
>> clang::QualType qual_type(GetQualType(type));
>> - return CompilerType(
>> - this, qual_type.getTypePtr()->getPointeeType().getAsOpaquePtr());
>> + return GetType(qual_type.getTypePtr()->getPointeeType());
>> }
>> return CompilerType();
>> }
>> @@ -4301,13 +4266,10 @@ ClangASTContext::GetPointerType(lldb::opaque_compiler_type_t type) {
>> switch (type_class) {
>> case clang::Type::ObjCObject:
>> case clang::Type::ObjCInterface:
>> - return CompilerType(
>> - this,
>> - getASTContext().getObjCObjectPointerType(qual_type).getAsOpaquePtr());
>> + return GetType(getASTContext().getObjCObjectPointerType(qual_type));
>>
>> default:
>> - return CompilerType(
>> - this, getASTContext().getPointerType(qual_type).getAsOpaquePtr());
>> + return GetType(getASTContext().getPointerType(qual_type));
>> }
>> }
>> return CompilerType();
>> @@ -4316,9 +4278,7 @@ ClangASTContext::GetPointerType(lldb::opaque_compiler_type_t type) {
>> CompilerType
>> ClangASTContext::GetLValueReferenceType(lldb::opaque_compiler_type_t type) {
>> if (type)
>> - return CompilerType(this, getASTContext()
>> - .getLValueReferenceType(GetQualType(type))
>> - .getAsOpaquePtr());
>> + return GetType(getASTContext().getLValueReferenceType(GetQualType(type)));
>> else
>> return CompilerType();
>> }
>> @@ -4326,9 +4286,7 @@ ClangASTContext::GetLValueReferenceType(lldb::opaque_compiler_type_t type) {
>> CompilerType
>> ClangASTContext::GetRValueReferenceType(lldb::opaque_compiler_type_t type) {
>> if (type)
>> - return CompilerType(this, getASTContext()
>> - .getRValueReferenceType(GetQualType(type))
>> - .getAsOpaquePtr());
>> + return GetType(getASTContext().getRValueReferenceType(GetQualType(type)));
>> else
>> return CompilerType();
>> }
>> @@ -4336,8 +4294,7 @@ ClangASTContext::GetRValueReferenceType(lldb::opaque_compiler_type_t type) {
>> CompilerType ClangASTContext::GetAtomicType(lldb::opaque_compiler_type_t type) {
>> if (!type)
>> return CompilerType();
>> - return CompilerType(
>> - this, getASTContext().getAtomicType(GetQualType(type)).getAsOpaquePtr());
>> + return GetType(getASTContext().getAtomicType(GetQualType(type)));
>> }
>>
>> CompilerType
>> @@ -4345,7 +4302,7 @@ ClangASTContext::AddConstModifier(lldb::opaque_compiler_type_t type) {
>> if (type) {
>> clang::QualType result(GetQualType(type));
>> result.addConst();
>> - return CompilerType(this, result.getAsOpaquePtr());
>> + return GetType(result);
>> }
>> return CompilerType();
>> }
>> @@ -4355,7 +4312,7 @@ ClangASTContext::AddVolatileModifier(lldb::opaque_compiler_type_t type) {
>> if (type) {
>> clang::QualType result(GetQualType(type));
>> result.addVolatile();
>> - return CompilerType(this, result.getAsOpaquePtr());
>> + return GetType(result);
>> }
>> return CompilerType();
>> }
>> @@ -4365,7 +4322,7 @@ ClangASTContext::AddRestrictModifier(lldb::opaque_compiler_type_t type) {
>> if (type) {
>> clang::QualType result(GetQualType(type));
>> result.addRestrict();
>> - return CompilerType(this, result.getAsOpaquePtr());
>> + return GetType(result);
>> }
>> return CompilerType();
>> }
>> @@ -4405,7 +4362,7 @@ ClangASTContext::CreateTypedef(lldb::opaque_compiler_type_t type,
>> decl->setAccess(clang::AS_public); // TODO respect proper access specifier
>>
>> // Get a uniqued clang::QualType for the typedef decl type
>> - return CompilerType(this, clang_ast.getTypedefType(decl).getAsOpaquePtr());
>> + return GetType(clang_ast.getTypedefType(decl));
>> }
>> return CompilerType();
>> }
>> @@ -4416,8 +4373,7 @@ ClangASTContext::GetTypedefedType(lldb::opaque_compiler_type_t type) {
>> const clang::TypedefType *typedef_type =
>> llvm::dyn_cast<clang::TypedefType>(GetQualType(type));
>> if (typedef_type)
>> - return CompilerType(
>> - this, typedef_type->getDecl()->getUnderlyingType().getAsOpaquePtr());
>> + return GetType(typedef_type->getDecl()->getUnderlyingType());
>> }
>> return CompilerType();
>> }
>> @@ -4466,8 +4422,7 @@ ClangASTContext::GetBitSize(lldb::opaque_compiler_type_t type,
>> ObjCLanguageRuntime *objc_runtime = ObjCLanguageRuntime::Get(*process);
>> if (objc_runtime) {
>> uint64_t bit_size = 0;
>> - if (objc_runtime->GetTypeBitSize(
>> - CompilerType(this, qual_type.getAsOpaquePtr()), bit_size))
>> + if (objc_runtime->GetTypeBitSize(GetType(qual_type), bit_size))
>> return bit_size;
>> }
>> } else {
>> @@ -4725,9 +4680,7 @@ lldb::Encoding ClangASTContext::GetEncoding(lldb::opaque_compiler_type_t type,
>> const clang::ComplexType *complex_type =
>> qual_type->getAsComplexIntegerType();
>> if (complex_type)
>> - encoding =
>> - CompilerType(this, complex_type->getElementType().getAsOpaquePtr())
>> - .GetEncoding(count);
>> + encoding = GetType(complex_type->getElementType()).GetEncoding(count);
>> else
>> encoding = lldb::eEncodingSint;
>> }
>> @@ -5042,8 +4995,7 @@ uint32_t ClangASTContext::GetNumChildren(lldb::opaque_compiler_type_t type,
>> llvm::cast<clang::ObjCObjectPointerType>(qual_type.getTypePtr());
>> clang::QualType pointee_type = pointer_type->getPointeeType();
>> uint32_t num_pointee_children =
>> - CompilerType(this, pointee_type.getAsOpaquePtr())
>> - .GetNumChildren(omit_empty_base_classes, exe_ctx);
>> + GetType(pointee_type).GetNumChildren(omit_empty_base_classes, exe_ctx);
>> // If this type points to a simple type, then it has 1 child
>> if (num_pointee_children == 0)
>> num_children = 1;
>> @@ -5076,8 +5028,7 @@ uint32_t ClangASTContext::GetNumChildren(lldb::opaque_compiler_type_t type,
>> llvm::cast<clang::PointerType>(qual_type.getTypePtr());
>> clang::QualType pointee_type(pointer_type->getPointeeType());
>> uint32_t num_pointee_children =
>> - CompilerType(this, pointee_type.getAsOpaquePtr())
>> - .GetNumChildren(omit_empty_base_classes, exe_ctx);
>> + GetType(pointee_type).GetNumChildren(omit_empty_base_classes, exe_ctx);
>> if (num_pointee_children == 0) {
>> // We have a pointer to a pointee type that claims it has no children. We
>> // will want to look at
>> @@ -5092,8 +5043,7 @@ uint32_t ClangASTContext::GetNumChildren(lldb::opaque_compiler_type_t type,
>> llvm::cast<clang::ReferenceType>(qual_type.getTypePtr());
>> clang::QualType pointee_type = reference_type->getPointeeType();
>> uint32_t num_pointee_children =
>> - CompilerType(this, pointee_type.getAsOpaquePtr())
>> - .GetNumChildren(omit_empty_base_classes, exe_ctx);
>> + GetType(pointee_type).GetNumChildren(omit_empty_base_classes, exe_ctx);
>> // If this type points to a simple type, then it has 1 child
>> if (num_pointee_children == 0)
>> num_children = 1;
>> @@ -5194,8 +5144,7 @@ void ClangASTContext::ForEachEnumerator(
>> if (enum_type) {
>> const clang::EnumDecl *enum_decl = enum_type->getDecl();
>> if (enum_decl) {
>> - CompilerType integer_type(this,
>> - enum_decl->getIntegerType().getAsOpaquePtr());
>> + CompilerType integer_type = GetType(enum_decl->getIntegerType());
>>
>> clang::EnumDecl::enumerator_iterator enum_pos, enum_end_pos;
>> for (enum_pos = enum_decl->enumerator_begin(),
>> @@ -5381,7 +5330,7 @@ CompilerType ClangASTContext::GetFieldAtIndex(lldb::opaque_compiler_type_t type,
>> if (is_bitfield_ptr)
>> *is_bitfield_ptr = is_bitfield;
>>
>> - return CompilerType(this, field->getType().getAsOpaquePtr());
>> + return GetType(field->getType());
>> }
>> }
>> }
>> @@ -5539,7 +5488,7 @@ CompilerType ClangASTContext::GetDirectBaseClassAtIndex(
>> .getQuantity() *
>> 8;
>> }
>> - return CompilerType(this, base_class->getType().getAsOpaquePtr());
>> + return GetType(base_class->getType());
>> }
>> }
>> }
>> @@ -5563,10 +5512,8 @@ CompilerType ClangASTContext::GetDirectBaseClassAtIndex(
>> if (superclass_interface_decl) {
>> if (bit_offset_ptr)
>> *bit_offset_ptr = 0;
>> - return CompilerType(
>> - this, getASTContext()
>> - .getObjCInterfaceType(superclass_interface_decl)
>> - .getAsOpaquePtr());
>> + return GetType(getASTContext().getObjCInterfaceType(
>> + superclass_interface_decl));
>> }
>> }
>> }
>> @@ -5586,10 +5533,8 @@ CompilerType ClangASTContext::GetDirectBaseClassAtIndex(
>> if (superclass_interface_decl) {
>> if (bit_offset_ptr)
>> *bit_offset_ptr = 0;
>> - return CompilerType(
>> - this, getASTContext()
>> - .getObjCInterfaceType(superclass_interface_decl)
>> - .getAsOpaquePtr());
>> + return GetType(getASTContext().getObjCInterfaceType(
>> + superclass_interface_decl));
>> }
>> }
>> }
>> @@ -5632,7 +5577,7 @@ CompilerType ClangASTContext::GetVirtualBaseClassAtIndex(
>> .getQuantity() *
>> 8;
>> }
>> - return CompilerType(this, base_class->getType().getAsOpaquePtr());
>> + return GetType(base_class->getType());
>> }
>> }
>> }
>> @@ -5820,8 +5765,7 @@ CompilerType ClangASTContext::GetChildCompilerTypeAtIndex(
>> child_byte_size =
>> getASTContext().getTypeSize(getASTContext().ObjCBuiltinClassTy) /
>> CHAR_BIT;
>> - return CompilerType(
>> - this, getASTContext().ObjCBuiltinClassTy.getAsOpaquePtr());
>> + return GetType(getASTContext().ObjCBuiltinClassTy);
>>
>> default:
>> break;
>> @@ -5884,8 +5828,7 @@ CompilerType ClangASTContext::GetChildCompilerTypeAtIndex(
>>
>> // Base classes should be a multiple of 8 bits in size
>> child_byte_offset = bit_offset / 8;
>> - CompilerType base_class_clang_type(
>> - this, base_class->getType().getAsOpaquePtr());
>> + CompilerType base_class_clang_type = GetType(base_class->getType());
>> child_name = base_class_clang_type.GetTypeName().AsCString("");
>> Optional<uint64_t> size =
>> base_class_clang_type.GetBitSize(get_exe_scope());
>> @@ -5917,8 +5860,7 @@ CompilerType ClangASTContext::GetChildCompilerTypeAtIndex(
>>
>> // Figure out the type byte size (field_type_info.first) and
>> // alignment (field_type_info.second) from the AST context.
>> - CompilerType field_clang_type(this,
>> - field->getType().getAsOpaquePtr());
>> + CompilerType field_clang_type = GetType(field->getType());
>> assert(field_idx < record_layout.getFieldCount());
>> Optional<uint64_t> size =
>> field_clang_type.GetByteSize(get_exe_scope());
>> @@ -5964,10 +5906,9 @@ CompilerType ClangASTContext::GetChildCompilerTypeAtIndex(
>> class_interface_decl->getSuperClass();
>> if (superclass_interface_decl) {
>> if (omit_empty_base_classes) {
>> - CompilerType base_class_clang_type(
>> - this, getASTContext()
>> - .getObjCInterfaceType(superclass_interface_decl)
>> - .getAsOpaquePtr());
>> + CompilerType base_class_clang_type =
>> + GetType(getASTContext().getObjCInterfaceType(
>> + superclass_interface_decl));
>> if (base_class_clang_type.GetNumChildren(omit_empty_base_classes,
>> exe_ctx) > 0) {
>> if (idx == 0) {
>> @@ -5985,7 +5926,7 @@ CompilerType ClangASTContext::GetChildCompilerTypeAtIndex(
>> child_byte_offset = 0;
>> child_is_base_class = true;
>>
>> - return CompilerType(this, ivar_qual_type.getAsOpaquePtr());
>> + return GetType(ivar_qual_type);
>> }
>>
>> ++child_idx;
>> @@ -6029,8 +5970,7 @@ CompilerType ClangASTContext::GetChildCompilerTypeAtIndex(
>> ObjCLanguageRuntime *objc_runtime =
>> ObjCLanguageRuntime::Get(*process);
>> if (objc_runtime != nullptr) {
>> - CompilerType parent_ast_type(
>> - this, parent_qual_type.getAsOpaquePtr());
>> + CompilerType parent_ast_type = GetType(parent_qual_type);
>> child_byte_offset = objc_runtime->GetByteOffsetForIvar(
>> parent_ast_type, ivar_decl->getNameAsString().c_str());
>> }
>> @@ -6060,7 +6000,7 @@ CompilerType ClangASTContext::GetChildCompilerTypeAtIndex(
>>
>> child_bitfield_bit_offset = bit_offset % 8;
>> }
>> - return CompilerType(this, ivar_qual_type.getAsOpaquePtr());
>> + return GetType(ivar_qual_type);
>> }
>> ++child_idx;
>> }
>> @@ -6111,8 +6051,7 @@ CompilerType ClangASTContext::GetChildCompilerTypeAtIndex(
>> const clang::VectorType *array =
>> llvm::cast<clang::VectorType>(parent_qual_type.getTypePtr());
>> if (array) {
>> - CompilerType element_type(this,
>> - array->getElementType().getAsOpaquePtr());
>> + CompilerType element_type = GetType(array->getElementType());
>> if (element_type.GetCompleteType()) {
>> char element_name[64];
>> ::snprintf(element_name, sizeof(element_name), "[%" PRIu64 "]",
>> @@ -6134,8 +6073,7 @@ CompilerType ClangASTContext::GetChildCompilerTypeAtIndex(
>> if (ignore_array_bounds || idx_is_valid) {
>> const clang::ArrayType *array = GetQualType(type)->getAsArrayTypeUnsafe();
>> if (array) {
>> - CompilerType element_type(this,
>> - array->getElementType().getAsOpaquePtr());
>> + CompilerType element_type = GetType(array->getElementType());
>> if (element_type.GetCompleteType()) {
>> child_name = llvm::formatv("[{0}]", idx);
>> if (Optional<uint64_t> size =
>> @@ -6193,8 +6131,8 @@ CompilerType ClangASTContext::GetChildCompilerTypeAtIndex(
>> if (idx_is_valid) {
>> const clang::ReferenceType *reference_type =
>> llvm::cast<clang::ReferenceType>(parent_qual_type.getTypePtr());
>> - CompilerType pointee_clang_type(
>> - this, reference_type->getPointeeType().getAsOpaquePtr());
>> + CompilerType pointee_clang_type =
>> + GetType(reference_type->getPointeeType());
>> if (transparent_pointers && pointee_clang_type.IsAggregateType()) {
>> child_is_deref_of_parent = false;
>> bool tmp_child_is_deref_of_parent = false;
>> @@ -6346,7 +6284,7 @@ size_t ClangASTContext::GetIndexOfChildMemberWithName(
>> field != field_end; ++field, ++child_idx) {
>> llvm::StringRef field_name = field->getName();
>> if (field_name.empty()) {
>> - CompilerType field_type(this, field->getType().getAsOpaquePtr());
>> + CompilerType field_type = GetType(field->getType());
>> child_indexes.push_back(child_idx);
>> if (field_type.GetIndexOfChildMemberWithName(
>> name, omit_empty_base_classes, child_indexes))
>> @@ -6457,10 +6395,9 @@ size_t ClangASTContext::GetIndexOfChildMemberWithName(
>> // superclass...
>> child_indexes.push_back(0);
>>
>> - CompilerType superclass_clang_type(
>> - this, getASTContext()
>> - .getObjCInterfaceType(superclass_interface_decl)
>> - .getAsOpaquePtr());
>> + CompilerType superclass_clang_type =
>> + GetType(getASTContext().getObjCInterfaceType(
>> + superclass_interface_decl));
>> if (superclass_clang_type.GetIndexOfChildMemberWithName(
>> name, omit_empty_base_classes, child_indexes)) {
>> // We did find an ivar in a superclass so just return the
>> @@ -6478,10 +6415,9 @@ size_t ClangASTContext::GetIndexOfChildMemberWithName(
>> break;
>>
>> case clang::Type::ObjCObjectPointer: {
>> - CompilerType objc_object_clang_type(
>> - this, llvm::cast<clang::ObjCObjectPointerType>(qual_type.getTypePtr())
>> - ->getPointeeType()
>> - .getAsOpaquePtr());
>> + CompilerType objc_object_clang_type = GetType(
>> + llvm::cast<clang::ObjCObjectPointerType>(qual_type.getTypePtr())
>> + ->getPointeeType());
>> return objc_object_clang_type.GetIndexOfChildMemberWithName(
>> name, omit_empty_base_classes, child_indexes);
>> } break;
>> @@ -6531,7 +6467,7 @@ size_t ClangASTContext::GetIndexOfChildMemberWithName(
>> const clang::ReferenceType *reference_type =
>> llvm::cast<clang::ReferenceType>(qual_type.getTypePtr());
>> clang::QualType pointee_type(reference_type->getPointeeType());
>> - CompilerType pointee_clang_type(this, pointee_type.getAsOpaquePtr());
>> + CompilerType pointee_clang_type = GetType(pointee_type);
>>
>> if (pointee_clang_type.IsAggregateType()) {
>> return pointee_clang_type.GetIndexOfChildMemberWithName(
>> @@ -6597,8 +6533,7 @@ ClangASTContext::GetIndexOfChildWithName(lldb::opaque_compiler_type_t type,
>> !ClangASTContext::RecordHasFields(base_class_decl))
>> continue;
>>
>> - CompilerType base_class_clang_type(
>> - this, base_class->getType().getAsOpaquePtr());
>> + CompilerType base_class_clang_type = GetType(base_class->getType());
>> std::string base_class_type_name(
>> base_class_clang_type.GetTypeName().AsCString(""));
>> if (base_class_type_name == name)
>> @@ -6661,10 +6596,9 @@ ClangASTContext::GetIndexOfChildWithName(lldb::opaque_compiler_type_t type,
>> break;
>>
>> case clang::Type::ObjCObjectPointer: {
>> - CompilerType pointee_clang_type(
>> - this, llvm::cast<clang::ObjCObjectPointerType>(qual_type.getTypePtr())
>> - ->getPointeeType()
>> - .getAsOpaquePtr());
>> + CompilerType pointee_clang_type = GetType(
>> + llvm::cast<clang::ObjCObjectPointerType>(qual_type.getTypePtr())
>> + ->getPointeeType());
>> return pointee_clang_type.GetIndexOfChildWithName(
>> name, omit_empty_base_classes);
>> } break;
>> @@ -6713,8 +6647,7 @@ ClangASTContext::GetIndexOfChildWithName(lldb::opaque_compiler_type_t type,
>> case clang::Type::RValueReference: {
>> const clang::ReferenceType *reference_type =
>> llvm::cast<clang::ReferenceType>(qual_type.getTypePtr());
>> - CompilerType pointee_type(
>> - this, reference_type->getPointeeType().getAsOpaquePtr());
>> + CompilerType pointee_type = GetType(reference_type->getPointeeType());
>>
>> if (pointee_type.IsAggregateType()) {
>> return pointee_type.GetIndexOfChildWithName(name,
>> @@ -6725,8 +6658,7 @@ ClangASTContext::GetIndexOfChildWithName(lldb::opaque_compiler_type_t type,
>> case clang::Type::Pointer: {
>> const clang::PointerType *pointer_type =
>> llvm::cast<clang::PointerType>(qual_type.getTypePtr());
>> - CompilerType pointee_type(
>> - this, pointer_type->getPointeeType().getAsOpaquePtr());
>> + CompilerType pointee_type = GetType(pointer_type->getPointeeType());
>>
>> if (pointee_type.IsAggregateType()) {
>> return pointee_type.GetIndexOfChildWithName(name,
>> @@ -6864,7 +6796,7 @@ ClangASTContext::GetTypeTemplateArgument(lldb::opaque_compiler_type_t type,
>> if (template_arg.getKind() != clang::TemplateArgument::Type)
>> return CompilerType();
>>
>> - return CompilerType(this, template_arg.getAsType().getAsOpaquePtr());
>> + return GetType(template_arg.getAsType());
>> }
>>
>> Optional<CompilerType::IntegralTemplateArgument>
>> @@ -6881,8 +6813,7 @@ ClangASTContext::GetIntegralTemplateArgument(lldb::opaque_compiler_type_t type,
>> return llvm::None;
>>
>> return {
>> - {template_arg.getAsIntegral(),
>> - CompilerType(this, template_arg.getIntegralType().getAsOpaquePtr())}};
>> + {template_arg.getAsIntegral(), GetType(template_arg.getIntegralType())}};
>> }
>>
>> CompilerType ClangASTContext::GetTypeForFormatters(void *type) {
>> @@ -7461,8 +7392,7 @@ bool ClangASTContext::AddObjCClassProperty(
>> if (property_clang_type.IsValid())
>> property_clang_type_to_access = property_clang_type;
>> else if (ivar_decl)
>> - property_clang_type_to_access =
>> - CompilerType(ast, ivar_decl->getType().getAsOpaquePtr());
>> + property_clang_type_to_access = ast->GetType(ivar_decl->getType());
>>
>> if (!class_interface_decl || !property_clang_type_to_access.IsValid())
>> return false;
>> @@ -7985,7 +7915,7 @@ ClangASTContext::GetEnumerationIntegerType(lldb::opaque_compiler_type_t type) {
>> if (enutype) {
>> clang::EnumDecl *enum_decl = enutype->getDecl();
>> if (enum_decl)
>> - return CompilerType(this, enum_decl->getIntegerType().getAsOpaquePtr());
>> + return GetType(enum_decl->getIntegerType());
>> }
>> }
>> return CompilerType();
>> @@ -8000,11 +7930,9 @@ ClangASTContext::CreateMemberPointerType(const CompilerType &type,
>> llvm::dyn_cast<ClangASTContext>(type.GetTypeSystem());
>> if (!ast)
>> return CompilerType();
>> - return CompilerType(ast, ast->getASTContext()
>> - .getMemberPointerType(
>> - ClangUtil::GetQualType(pointee_type),
>> - ClangUtil::GetQualType(type).getTypePtr())
>> - .getAsOpaquePtr());
>> + return ast->GetType(ast->getASTContext().getMemberPointerType(
>> + ClangUtil::GetQualType(pointee_type),
>> + ClangUtil::GetQualType(type).getTypePtr()));
>> }
>> return CompilerType();
>> }
>> @@ -8134,8 +8062,7 @@ void ClangASTContext::DumpValue(
>> getASTContext().getTypeInfo(base_class_qual_type);
>>
>> // Dump the value of the member
>> - CompilerType base_clang_type(this,
>> - base_class_qual_type.getAsOpaquePtr());
>> + CompilerType base_clang_type = GetType(base_class_qual_type);
>> base_clang_type.DumpValue(
>> exe_ctx,
>> s, // Stream to dump to
>> @@ -8201,7 +8128,7 @@ void ClangASTContext::DumpValue(
>> s->Printf("%s = ", field->getNameAsString().c_str());
>>
>> // Dump the value of the member
>> - CompilerType field_clang_type(this, field_type.getAsOpaquePtr());
>> + CompilerType field_clang_type = GetType(field_type);
>> field_clang_type.DumpValue(
>> exe_ctx,
>> s, // Stream to dump to
>> @@ -8281,7 +8208,7 @@ void ClangASTContext::DumpValue(
>> s->PutChar('"');
>> return;
>> } else {
>> - CompilerType element_clang_type(this, element_qual_type.getAsOpaquePtr());
>> + CompilerType element_clang_type = GetType(element_qual_type);
>> lldb::Format element_format = element_clang_type.GetFormat();
>>
>> for (element_idx = 0; element_idx < element_count; ++element_idx) {
>> @@ -8332,7 +8259,7 @@ void ClangASTContext::DumpValue(
>> ->getDecl()
>> ->getUnderlyingType();
>>
>> - CompilerType typedef_clang_type(this, typedef_qual_type.getAsOpaquePtr());
>> + CompilerType typedef_clang_type = GetType(typedef_qual_type);
>> lldb::Format typedef_format = typedef_clang_type.GetFormat();
>> clang::TypeInfo typedef_type_info =
>> getASTContext().getTypeInfo(typedef_qual_type);
>> @@ -8357,8 +8284,7 @@ void ClangASTContext::DumpValue(
>> case clang::Type::Auto: {
>> clang::QualType elaborated_qual_type =
>> llvm::cast<clang::AutoType>(qual_type)->getDeducedType();
>> - CompilerType elaborated_clang_type(this,
>> - elaborated_qual_type.getAsOpaquePtr());
>> + CompilerType elaborated_clang_type = GetType(elaborated_qual_type);
>> lldb::Format elaborated_format = elaborated_clang_type.GetFormat();
>> clang::TypeInfo elaborated_type_info =
>> getASTContext().getTypeInfo(elaborated_qual_type);
>> @@ -8383,8 +8309,7 @@ void ClangASTContext::DumpValue(
>> case clang::Type::Elaborated: {
>> clang::QualType elaborated_qual_type =
>> llvm::cast<clang::ElaboratedType>(qual_type)->getNamedType();
>> - CompilerType elaborated_clang_type(this,
>> - elaborated_qual_type.getAsOpaquePtr());
>> + CompilerType elaborated_clang_type = GetType(elaborated_qual_type);
>> lldb::Format elaborated_format = elaborated_clang_type.GetFormat();
>> clang::TypeInfo elaborated_type_info =
>> getASTContext().getTypeInfo(elaborated_qual_type);
>> @@ -8409,7 +8334,7 @@ void ClangASTContext::DumpValue(
>> case clang::Type::Paren: {
>> clang::QualType desugar_qual_type =
>> llvm::cast<clang::ParenType>(qual_type)->desugar();
>> - CompilerType desugar_clang_type(this, desugar_qual_type.getAsOpaquePtr());
>> + CompilerType desugar_clang_type = GetType(desugar_qual_type);
>>
>> lldb::Format desugar_format = desugar_clang_type.GetFormat();
>> clang::TypeInfo desugar_type_info =
>> @@ -8550,7 +8475,7 @@ bool ClangASTContext::DumpTypeValue(
>> llvm::cast<clang::TypedefType>(qual_type)
>> ->getDecl()
>> ->getUnderlyingType();
>> - CompilerType typedef_clang_type(this, typedef_qual_type.getAsOpaquePtr());
>> + CompilerType typedef_clang_type = GetType(typedef_qual_type);
>> if (format == eFormatDefault)
>> format = typedef_clang_type.GetFormat();
>> clang::TypeInfo typedef_type_info =
>> @@ -8969,10 +8894,10 @@ CompilerDeclContext ClangASTContext::DeclGetDeclContext(void *opaque_decl) {
>> CompilerType ClangASTContext::DeclGetFunctionReturnType(void *opaque_decl) {
>> if (clang::FunctionDecl *func_decl =
>> llvm::dyn_cast<clang::FunctionDecl>((clang::Decl *)opaque_decl))
>> - return CompilerType(this, func_decl->getReturnType().getAsOpaquePtr());
>> + return GetType(func_decl->getReturnType());
>> if (clang::ObjCMethodDecl *objc_method =
>> llvm::dyn_cast<clang::ObjCMethodDecl>((clang::Decl *)opaque_decl))
>> - return CompilerType(this, objc_method->getReturnType().getAsOpaquePtr());
>> + return GetType(objc_method->getReturnType());
>> else
>> return CompilerType();
>> }
>> @@ -8995,15 +8920,13 @@ CompilerType ClangASTContext::DeclGetFunctionArgumentType(void *opaque_decl,
>> if (idx < func_decl->param_size()) {
>> ParmVarDecl *var_decl = func_decl->getParamDecl(idx);
>> if (var_decl)
>> - return CompilerType(this, var_decl->getOriginalType().getAsOpaquePtr());
>> + return GetType(var_decl->getOriginalType());
>> }
>> } else if (clang::ObjCMethodDecl *objc_method =
>> llvm::dyn_cast<clang::ObjCMethodDecl>(
>> (clang::Decl *)opaque_decl)) {
>> if (idx < objc_method->param_size())
>> - return CompilerType(
>> - this,
>> - objc_method->parameters()[idx]->getOriginalType().getAsOpaquePtr());
>> + return GetType(objc_method->parameters()[idx]->getOriginalType());
>> }
>> return CompilerType();
>> }
>>
>>
>>
>> _______________________________________________
>> lldb-commits mailing list
>> lldb-commits at lists.llvm.org
>> https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
>
More information about the lldb-commits
mailing list