diff options
Diffstat (limited to 'lldb/source')
4 files changed, 29 insertions, 24 deletions
diff --git a/lldb/source/Expression/ClangExpressionDeclMap.cpp b/lldb/source/Expression/ClangExpressionDeclMap.cpp index 42696a04fda..db05cbb4240 100644 --- a/lldb/source/Expression/ClangExpressionDeclMap.cpp +++ b/lldb/source/Expression/ClangExpressionDeclMap.cpp @@ -136,7 +136,7 @@ ClangExpressionDeclMap::DidParse() { ExpressionVariableSP var_sp(m_found_entities.GetVariableAtIndex(entity_index)); if (var_sp) - var_sp->AsClangExpressionVariable()->DisableParserVars(GetParserID()); + llvm::cast<ClangExpressionVariable>(var_sp.get())->DisableParserVars(GetParserID()); } for (size_t pvar_index = 0, num_pvars = m_parser_vars->m_persistent_vars->GetSize(); @@ -145,7 +145,7 @@ ClangExpressionDeclMap::DidParse() { ExpressionVariableSP pvar_sp(m_parser_vars->m_persistent_vars->GetVariableAtIndex(pvar_index)); if (pvar_sp) - pvar_sp->AsClangExpressionVariable()->DisableParserVars(GetParserID()); + llvm::cast<ClangExpressionVariable>(pvar_sp.get())->DisableParserVars(GetParserID()); } DisableParserVars(); @@ -350,11 +350,11 @@ ClangExpressionDeclMap::AddValueToStruct // We know entity->m_parser_vars is valid because we used a parser variable // to find it - ClangExpressionVariable::ParserVars *parser_vars = var->AsClangExpressionVariable()->GetParserVars(GetParserID()); + ClangExpressionVariable::ParserVars *parser_vars = llvm::cast<ClangExpressionVariable>(var)->GetParserVars(GetParserID()); parser_vars->m_llvm_value = value; - if (ClangExpressionVariable::JITVars *jit_vars = var->AsClangExpressionVariable()->GetJITVars(GetParserID())) + if (ClangExpressionVariable::JITVars *jit_vars = llvm::cast<ClangExpressionVariable>(var)->GetJITVars(GetParserID())) { // We already laid this out; do not touch @@ -362,9 +362,9 @@ ClangExpressionDeclMap::AddValueToStruct log->Printf("Already placed at 0x%llx", (unsigned long long)jit_vars->m_offset); } - var->AsClangExpressionVariable()->EnableJITVars(GetParserID()); + llvm::cast<ClangExpressionVariable>(var)->EnableJITVars(GetParserID()); - ClangExpressionVariable::JITVars *jit_vars = var->AsClangExpressionVariable()->GetJITVars(GetParserID()); + ClangExpressionVariable::JITVars *jit_vars = llvm::cast<ClangExpressionVariable>(var)->GetJITVars(GetParserID()); jit_vars->m_alignment = alignment; jit_vars->m_size = size; @@ -463,8 +463,8 @@ ClangExpressionDeclMap::GetStructElement if (!member_sp) return false; - ClangExpressionVariable::ParserVars *parser_vars = member_sp->AsClangExpressionVariable()->GetParserVars(GetParserID()); - ClangExpressionVariable::JITVars *jit_vars = member_sp->AsClangExpressionVariable()->GetJITVars(GetParserID()); + ClangExpressionVariable::ParserVars *parser_vars = llvm::cast<ClangExpressionVariable>(member_sp.get())->GetParserVars(GetParserID()); + ClangExpressionVariable::JITVars *jit_vars = llvm::cast<ClangExpressionVariable>(member_sp.get())->GetJITVars(GetParserID()); if (!parser_vars || !jit_vars || @@ -1806,7 +1806,7 @@ ClangExpressionDeclMap::AddOneVariable(NameSearchContext &context, { Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_EXPRESSIONS)); - TypeFromUser user_type (pvar_sp->AsClangExpressionVariable()->GetTypeFromUser()); + TypeFromUser user_type (llvm::cast<ClangExpressionVariable>(pvar_sp.get())->GetTypeFromUser()); TypeFromParser parser_type (GuardedCopyType(user_type)); @@ -1819,8 +1819,8 @@ ClangExpressionDeclMap::AddOneVariable(NameSearchContext &context, NamedDecl *var_decl = context.AddVarDecl(ClangASTContext::GetLValueReferenceType(parser_type)); - pvar_sp->AsClangExpressionVariable()->EnableParserVars(GetParserID()); - ClangExpressionVariable::ParserVars *parser_vars = pvar_sp->AsClangExpressionVariable()->GetParserVars(GetParserID()); + llvm::cast<ClangExpressionVariable>(pvar_sp.get())->EnableParserVars(GetParserID()); + ClangExpressionVariable::ParserVars *parser_vars = llvm::cast<ClangExpressionVariable>(pvar_sp.get())->GetParserVars(GetParserID()); parser_vars->m_parser_type = parser_type; parser_vars->m_named_decl = var_decl; parser_vars->m_llvm_value = NULL; @@ -1901,7 +1901,7 @@ ClangExpressionDeclMap::ResolveUnknownTypes() { ExpressionVariableSP entity = m_found_entities.GetVariableAtIndex(index); - ClangExpressionVariable::ParserVars *parser_vars = entity->AsClangExpressionVariable()->GetParserVars(GetParserID()); + ClangExpressionVariable::ParserVars *parser_vars = llvm::cast<ClangExpressionVariable>(entity.get())->GetParserVars(GetParserID()); if (entity->m_flags & ClangExpressionVariable::EVUnknownType) { diff --git a/lldb/source/Expression/Materializer.cpp b/lldb/source/Expression/Materializer.cpp index 71467d86870..afc39bcf408 100644 --- a/lldb/source/Expression/Materializer.cpp +++ b/lldb/source/Expression/Materializer.cpp @@ -101,7 +101,7 @@ public: // Put the location of the spare memory into the live data of the ValueObject. m_persistent_variable_sp->m_live_sp = ValueObjectConstResult::Create (map.GetBestExecutionContextScope(), - m_persistent_variable_sp->AsClangExpressionVariable()->GetTypeFromUser(), + llvm::cast<ClangExpressionVariable>(m_persistent_variable_sp.get())->GetTypeFromUser(), m_persistent_variable_sp->GetName(), mem, eAddressTypeLoad, @@ -232,7 +232,7 @@ public: } m_persistent_variable_sp->m_live_sp = ValueObjectConstResult::Create (map.GetBestExecutionContextScope (), - m_persistent_variable_sp->AsClangExpressionVariable()->GetTypeFromUser(), + llvm::cast<ClangExpressionVariable>(m_persistent_variable_sp.get())->GetTypeFromUser(), m_persistent_variable_sp->GetName(), location, eAddressTypeLoad, diff --git a/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionVariable.cpp b/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionVariable.cpp index 735a843bc81..f78ee3a8f62 100644 --- a/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionVariable.cpp +++ b/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionVariable.cpp @@ -24,7 +24,7 @@ using namespace clang; const char *g_clang_expression_variable_kind_name = "ClangExpressionVariable"; ClangExpressionVariable::ClangExpressionVariable(ExecutionContextScope *exe_scope, lldb::ByteOrder byte_order, uint32_t addr_byte_size) : - ExpressionVariable(), + ExpressionVariable(LLVMCastKind::eKindClang), m_parser_vars(), m_jit_vars () { @@ -36,7 +36,7 @@ ClangExpressionVariable::ClangExpressionVariable (ExecutionContextScope *exe_sco Value &value, const ConstString &name, uint16_t flags) : - ExpressionVariable(), + ExpressionVariable(LLVMCastKind::eKindClang), m_parser_vars(), m_jit_vars () { @@ -45,7 +45,7 @@ ClangExpressionVariable::ClangExpressionVariable (ExecutionContextScope *exe_sco } ClangExpressionVariable::ClangExpressionVariable (const lldb::ValueObjectSP &valobj_sp) : - ExpressionVariable(), + ExpressionVariable(LLVMCastKind::eKindClang), m_parser_vars(), m_jit_vars () { diff --git a/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionVariable.h b/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionVariable.h index ed3e908aa98..c38e6c040a7 100644 --- a/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionVariable.h +++ b/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionVariable.h @@ -21,6 +21,8 @@ #include <vector> // Other libraries and framework includes +#include "llvm/Support/Casting.h" + // Project includes #include "lldb/lldb-public.h" #include "lldb/Core/ClangForward.h" @@ -71,12 +73,7 @@ public: uint16_t flags = EVNone); ClangExpressionVariable(const lldb::ValueObjectSP &valobj_sp); - - ClangExpressionVariable *AsClangExpressionVariable() override - { - return this; - } - + //---------------------------------------------------------------------- /// Utility functions for dealing with ExpressionVariableLists in Clang-specific ways //---------------------------------------------------------------------- @@ -98,7 +95,7 @@ public: { var_sp = list.GetVariableAtIndex(index); - if (ClangExpressionVariable *clang_var = var_sp->AsClangExpressionVariable()) + if (ClangExpressionVariable *clang_var = llvm::dyn_cast<ClangExpressionVariable>(var_sp.get())) { ClangExpressionVariable::ParserVars *parser_vars = clang_var->GetParserVars(parser_id); @@ -277,6 +274,14 @@ public: TypeFromUser GetTypeFromUser (); + //------------------------------------------------------------------ + // llvm casting support + //------------------------------------------------------------------ + static bool classof(const ExpressionVariable *ev) + { + return ev->getKind() == ExpressionVariable::eKindClang; + } + //---------------------------------------------------------------------- /// Members //---------------------------------------------------------------------- |