summaryrefslogtreecommitdiffstats
path: root/lldb/source
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source')
-rw-r--r--lldb/source/Expression/ClangExpressionDeclMap.cpp24
-rw-r--r--lldb/source/Expression/Materializer.cpp4
-rw-r--r--lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionVariable.cpp6
-rw-r--r--lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionVariable.h19
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
//----------------------------------------------------------------------
OpenPOWER on IntegriCloud