mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 11:13:28 +01:00
[Debuginfo] Remove redundand variable from getAttributeValue()
Summary: AttrIndex could be removed from DWARFAbbreviationDeclaration::getAttributeValue. Reviewers: clayborg, dblaikie Differential Revision: https://reviews.llvm.org/D78672
This commit is contained in:
parent
081145a3ea
commit
a3b84a0498
@ -150,6 +150,8 @@ DWARFAbbreviationDeclaration::findAttributeIndex(dwarf::Attribute Attr) const {
|
||||
Optional<DWARFFormValue> DWARFAbbreviationDeclaration::getAttributeValue(
|
||||
const uint64_t DIEOffset, const dwarf::Attribute Attr,
|
||||
const DWARFUnit &U) const {
|
||||
// Check if this abbreviation has this attribute without needing to skip
|
||||
// any data so we can return quickly if it doesn't.
|
||||
Optional<uint32_t> MatchAttrIndex = findAttributeIndex(Attr);
|
||||
if (!MatchAttrIndex)
|
||||
return None;
|
||||
@ -159,26 +161,24 @@ Optional<DWARFFormValue> DWARFAbbreviationDeclaration::getAttributeValue(
|
||||
// Add the byte size of ULEB that for the abbrev Code so we can start
|
||||
// skipping the attribute data.
|
||||
uint64_t Offset = DIEOffset + CodeByteSize;
|
||||
uint32_t AttrIndex = 0;
|
||||
for (const auto &Spec : AttributeSpecs) {
|
||||
if (*MatchAttrIndex == AttrIndex) {
|
||||
// We have arrived at the attribute to extract, extract if from Offset.
|
||||
if (Spec.isImplicitConst())
|
||||
return DWARFFormValue::createFromSValue(Spec.Form,
|
||||
Spec.getImplicitConstValue());
|
||||
|
||||
DWARFFormValue FormValue(Spec.Form);
|
||||
if (FormValue.extractValue(DebugInfoData, &Offset, U.getFormParams(), &U))
|
||||
return FormValue;
|
||||
}
|
||||
// March Offset along until we get to the attribute we want.
|
||||
if (auto FixedSize = Spec.getByteSize(U))
|
||||
for (uint32_t CurAttrIdx = 0; CurAttrIdx != *MatchAttrIndex; ++CurAttrIdx)
|
||||
// Match Offset along until we get to the attribute we want.
|
||||
if (auto FixedSize = AttributeSpecs[CurAttrIdx].getByteSize(U))
|
||||
Offset += *FixedSize;
|
||||
else
|
||||
DWARFFormValue::skipValue(Spec.Form, DebugInfoData, &Offset,
|
||||
U.getFormParams());
|
||||
++AttrIndex;
|
||||
}
|
||||
DWARFFormValue::skipValue(AttributeSpecs[CurAttrIdx].Form, DebugInfoData,
|
||||
&Offset, U.getFormParams());
|
||||
|
||||
// We have arrived at the attribute to extract, extract if from Offset.
|
||||
const AttributeSpec &Spec = AttributeSpecs[*MatchAttrIndex];
|
||||
if (Spec.isImplicitConst())
|
||||
return DWARFFormValue::createFromSValue(Spec.Form,
|
||||
Spec.getImplicitConstValue());
|
||||
|
||||
DWARFFormValue FormValue(Spec.Form);
|
||||
if (FormValue.extractValue(DebugInfoData, &Offset, U.getFormParams(), &U))
|
||||
return FormValue;
|
||||
|
||||
return None;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user