Improvements to the ValueObjectPrinter to behave correctly in more dynamic value cases

llvm-svn: 193204
This commit is contained in:
Enrico Granata 2013-10-22 22:42:14 +00:00
parent 3ac84e6ae8
commit 106260c574
1 changed files with 29 additions and 8 deletions

View File

@ -99,17 +99,38 @@ ValueObjectPrinter::GetDynamicValueIfNeeded ()
return true;
bool update_success = m_orig_valobj->UpdateValueIfNeeded (true);
if (!update_success)
return false;
if (options.m_use_dynamic != eNoDynamicValues)
{
ValueObject *dynamic_value = m_orig_valobj->GetDynamicValue(options.m_use_dynamic).get();
if (dynamic_value)
m_valobj = dynamic_value;
else
m_valobj = m_orig_valobj;
m_valobj = m_orig_valobj;
}
else
m_valobj = m_orig_valobj;
{
if (m_orig_valobj->IsDynamic())
{
if (options.m_use_dynamic == eNoDynamicValues)
{
ValueObject *static_value = m_orig_valobj->GetStaticValue().get();
if (static_value)
m_valobj = static_value;
else
m_valobj = m_orig_valobj;
}
else
m_valobj = m_orig_valobj;
}
else
{
if (options.m_use_dynamic != eNoDynamicValues)
{
ValueObject *dynamic_value = m_orig_valobj->GetDynamicValue(options.m_use_dynamic).get();
if (dynamic_value)
m_valobj = dynamic_value;
else
m_valobj = m_orig_valobj;
}
else
m_valobj = m_orig_valobj;
}
}
m_clang_type = m_valobj->GetClangType();
m_type_flags = m_clang_type.GetTypeInfo ();
return true;