forked from OSchip/llvm-project
DebugInfo: Make DWARFExpression::iterator a const iterator
3d1d8c767b
made
DWARFExpression::iterator's Operation member `mutable`. After a few prep
commits, the iterator can instead be made a `const` iterator since no
caller can change the Operation.
Differential Revision: https://reviews.llvm.org/D113958
This commit is contained in:
parent
a0f1f17131
commit
fd6018072a
|
@ -109,11 +109,11 @@ public:
|
|||
/// An iterator to go through the expression operations.
|
||||
class iterator
|
||||
: public iterator_facade_base<iterator, std::forward_iterator_tag,
|
||||
Operation> {
|
||||
const Operation> {
|
||||
friend class DWARFExpression;
|
||||
const DWARFExpression *Expr;
|
||||
uint64_t Offset;
|
||||
mutable Operation Op;
|
||||
Operation Op;
|
||||
iterator(const DWARFExpression *Expr, uint64_t Offset)
|
||||
: Expr(Expr), Offset(Offset) {
|
||||
Op.Error =
|
||||
|
@ -130,9 +130,7 @@ public:
|
|||
return *this;
|
||||
}
|
||||
|
||||
class Operation &operator*() const {
|
||||
return Op;
|
||||
}
|
||||
const Operation &operator*() const { return Op; }
|
||||
|
||||
iterator skipBytes(uint64_t Add) const {
|
||||
return iterator(Expr, Op.EndOffset + Add);
|
||||
|
|
|
@ -408,7 +408,7 @@ static bool printCompactDWARFExpr(raw_ostream &OS, DWARFExpression::iterator I,
|
|||
SmallVector<PrintedExpr, 4> Stack;
|
||||
|
||||
while (I != E) {
|
||||
DWARFExpression::Operation &Op = *I;
|
||||
const DWARFExpression::Operation &Op = *I;
|
||||
uint8_t Opcode = Op.getCode();
|
||||
switch (Opcode) {
|
||||
case dwarf::DW_OP_regx: {
|
||||
|
|
|
@ -552,9 +552,10 @@ unsigned DWARFVerifier::verifyDebugInfoAttribute(const DWARFDie &Die,
|
|||
DataExtractor Data(toStringRef(Entry.Expr), DCtx.isLittleEndian(), 0);
|
||||
DWARFExpression Expression(Data, U->getAddressByteSize(),
|
||||
U->getFormParams().Format);
|
||||
bool Error = any_of(Expression, [](DWARFExpression::Operation &Op) {
|
||||
return Op.isError();
|
||||
});
|
||||
bool Error =
|
||||
any_of(Expression, [](const DWARFExpression::Operation &Op) {
|
||||
return Op.isError();
|
||||
});
|
||||
if (Error || !Expression.verify(U))
|
||||
ReportError("DIE contains invalid DWARF expression:");
|
||||
}
|
||||
|
@ -1400,11 +1401,12 @@ static bool isVariableIndexable(const DWARFDie &Die, DWARFContext &DCtx) {
|
|||
U->getAddressByteSize());
|
||||
DWARFExpression Expression(Data, U->getAddressByteSize(),
|
||||
U->getFormParams().Format);
|
||||
bool IsInteresting = any_of(Expression, [](DWARFExpression::Operation &Op) {
|
||||
return !Op.isError() && (Op.getCode() == DW_OP_addr ||
|
||||
Op.getCode() == DW_OP_form_tls_address ||
|
||||
Op.getCode() == DW_OP_GNU_push_tls_address);
|
||||
});
|
||||
bool IsInteresting =
|
||||
any_of(Expression, [](const DWARFExpression::Operation &Op) {
|
||||
return !Op.isError() && (Op.getCode() == DW_OP_addr ||
|
||||
Op.getCode() == DW_OP_form_tls_address ||
|
||||
Op.getCode() == DW_OP_GNU_push_tls_address);
|
||||
});
|
||||
if (IsInteresting)
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -322,7 +322,7 @@ static void collectStatsForDie(DWARFDie Die, const std::string &FnPrefix,
|
|||
U->getFormParams().Format);
|
||||
// Consider the expression containing the DW_OP_entry_value as
|
||||
// an entry value.
|
||||
return llvm::any_of(Expression, [](DWARFExpression::Operation &Op) {
|
||||
return llvm::any_of(Expression, [](const DWARFExpression::Operation &Op) {
|
||||
return Op.getCode() == dwarf::DW_OP_entry_value ||
|
||||
Op.getCode() == dwarf::DW_OP_GNU_entry_value;
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue