[lldb] Remove single-case switch statement (NFC)
Use an early continue instead and save a level of indentation. This is a Maison Riss 2019 vintage, made in France and aged in California.
This commit is contained in:
parent
199497086e
commit
1eee24677b
|
@ -3049,88 +3049,85 @@ DWARFASTParser::ParseChildArrayInfo(const DWARFDIE &parent_die,
|
|||
for (DWARFDIE die = parent_die.GetFirstChild(); die.IsValid();
|
||||
die = die.GetSibling()) {
|
||||
const dw_tag_t tag = die.Tag();
|
||||
switch (tag) {
|
||||
case DW_TAG_subrange_type: {
|
||||
DWARFAttributes attributes;
|
||||
const size_t num_child_attributes = die.GetAttributes(attributes);
|
||||
if (num_child_attributes > 0) {
|
||||
uint64_t num_elements = 0;
|
||||
uint64_t lower_bound = 0;
|
||||
uint64_t upper_bound = 0;
|
||||
bool upper_bound_valid = false;
|
||||
uint32_t i;
|
||||
for (i = 0; i < num_child_attributes; ++i) {
|
||||
const dw_attr_t attr = attributes.AttributeAtIndex(i);
|
||||
DWARFFormValue form_value;
|
||||
if (attributes.ExtractFormValueAtIndex(i, form_value)) {
|
||||
switch (attr) {
|
||||
case DW_AT_name:
|
||||
break;
|
||||
if (tag != DW_TAG_subrange_type)
|
||||
continue;
|
||||
|
||||
case DW_AT_count:
|
||||
if (DWARFDIE var_die = die.GetReferencedDIE(DW_AT_count)) {
|
||||
if (var_die.Tag() == DW_TAG_variable)
|
||||
if (exe_ctx) {
|
||||
if (auto frame = exe_ctx->GetFrameSP()) {
|
||||
Status error;
|
||||
lldb::VariableSP var_sp;
|
||||
auto valobj_sp = frame->GetValueForVariableExpressionPath(
|
||||
var_die.GetName(), eNoDynamicValues, 0, var_sp,
|
||||
error);
|
||||
if (valobj_sp) {
|
||||
num_elements = valobj_sp->GetValueAsUnsigned(0);
|
||||
break;
|
||||
}
|
||||
DWARFAttributes attributes;
|
||||
const size_t num_child_attributes = die.GetAttributes(attributes);
|
||||
if (num_child_attributes > 0) {
|
||||
uint64_t num_elements = 0;
|
||||
uint64_t lower_bound = 0;
|
||||
uint64_t upper_bound = 0;
|
||||
bool upper_bound_valid = false;
|
||||
uint32_t i;
|
||||
for (i = 0; i < num_child_attributes; ++i) {
|
||||
const dw_attr_t attr = attributes.AttributeAtIndex(i);
|
||||
DWARFFormValue form_value;
|
||||
if (attributes.ExtractFormValueAtIndex(i, form_value)) {
|
||||
switch (attr) {
|
||||
case DW_AT_name:
|
||||
break;
|
||||
|
||||
case DW_AT_count:
|
||||
if (DWARFDIE var_die = die.GetReferencedDIE(DW_AT_count)) {
|
||||
if (var_die.Tag() == DW_TAG_variable)
|
||||
if (exe_ctx) {
|
||||
if (auto frame = exe_ctx->GetFrameSP()) {
|
||||
Status error;
|
||||
lldb::VariableSP var_sp;
|
||||
auto valobj_sp = frame->GetValueForVariableExpressionPath(
|
||||
var_die.GetName(), eNoDynamicValues, 0, var_sp,
|
||||
error);
|
||||
if (valobj_sp) {
|
||||
num_elements = valobj_sp->GetValueAsUnsigned(0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else
|
||||
num_elements = form_value.Unsigned();
|
||||
break;
|
||||
}
|
||||
} else
|
||||
num_elements = form_value.Unsigned();
|
||||
break;
|
||||
|
||||
case DW_AT_bit_stride:
|
||||
array_info.bit_stride = form_value.Unsigned();
|
||||
break;
|
||||
case DW_AT_bit_stride:
|
||||
array_info.bit_stride = form_value.Unsigned();
|
||||
break;
|
||||
|
||||
case DW_AT_byte_stride:
|
||||
array_info.byte_stride = form_value.Unsigned();
|
||||
break;
|
||||
case DW_AT_byte_stride:
|
||||
array_info.byte_stride = form_value.Unsigned();
|
||||
break;
|
||||
|
||||
case DW_AT_lower_bound:
|
||||
lower_bound = form_value.Unsigned();
|
||||
break;
|
||||
case DW_AT_lower_bound:
|
||||
lower_bound = form_value.Unsigned();
|
||||
break;
|
||||
|
||||
case DW_AT_upper_bound:
|
||||
upper_bound_valid = true;
|
||||
upper_bound = form_value.Unsigned();
|
||||
break;
|
||||
case DW_AT_upper_bound:
|
||||
upper_bound_valid = true;
|
||||
upper_bound = form_value.Unsigned();
|
||||
break;
|
||||
|
||||
default:
|
||||
case DW_AT_abstract_origin:
|
||||
case DW_AT_accessibility:
|
||||
case DW_AT_allocated:
|
||||
case DW_AT_associated:
|
||||
case DW_AT_data_location:
|
||||
case DW_AT_declaration:
|
||||
case DW_AT_description:
|
||||
case DW_AT_sibling:
|
||||
case DW_AT_threads_scaled:
|
||||
case DW_AT_type:
|
||||
case DW_AT_visibility:
|
||||
break;
|
||||
}
|
||||
default:
|
||||
case DW_AT_abstract_origin:
|
||||
case DW_AT_accessibility:
|
||||
case DW_AT_allocated:
|
||||
case DW_AT_associated:
|
||||
case DW_AT_data_location:
|
||||
case DW_AT_declaration:
|
||||
case DW_AT_description:
|
||||
case DW_AT_sibling:
|
||||
case DW_AT_threads_scaled:
|
||||
case DW_AT_type:
|
||||
case DW_AT_visibility:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (num_elements == 0) {
|
||||
if (upper_bound_valid && upper_bound >= lower_bound)
|
||||
num_elements = upper_bound - lower_bound + 1;
|
||||
}
|
||||
|
||||
array_info.element_orders.push_back(num_elements);
|
||||
}
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
|
||||
if (num_elements == 0) {
|
||||
if (upper_bound_valid && upper_bound >= lower_bound)
|
||||
num_elements = upper_bound - lower_bound + 1;
|
||||
}
|
||||
|
||||
array_info.element_orders.push_back(num_elements);
|
||||
}
|
||||
}
|
||||
return array_info;
|
||||
|
|
Loading…
Reference in New Issue