From 71676d492a0c7a69f8bd9317ab98c2385911fb06 Mon Sep 17 00:00:00 2001 From: Adrian Prantl Date: Thu, 22 Jan 2015 16:55:20 +0000 Subject: [PATCH] Rename DIExpressionIterator to DIExpression::iterator. Addresses review feedback from Duncan. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@226835 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/IR/DebugInfo.h | 97 +++++++++++----------- lib/CodeGen/AsmPrinter/DwarfExpression.cpp | 4 +- lib/CodeGen/AsmPrinter/DwarfExpression.h | 2 +- lib/IR/DebugInfo.cpp | 8 +- 4 files changed, 54 insertions(+), 57 deletions(-) diff --git a/include/llvm/IR/DebugInfo.h b/include/llvm/IR/DebugInfo.h index 7b66e1c2ad5..ebdd3268239 100644 --- a/include/llvm/IR/DebugInfo.h +++ b/include/llvm/IR/DebugInfo.h @@ -850,8 +850,6 @@ public: void printExtendedName(raw_ostream &OS) const; }; -class DIExpressionIterator; - /// \brief A complex location expression. class DIExpression : public DIDescriptor { friend class DIDescriptor; @@ -881,56 +879,55 @@ public: /// \brief Return the size of this piece in bytes. uint64_t getPieceSize() const; - DIExpressionIterator begin() const; - DIExpressionIterator end() const; -}; - -/// \brief An iterator for DIExpression elments. -class DIExpressionIterator - : public std::iterator { - DIHeaderFieldIterator I; - DIExpressionIterator(DIHeaderFieldIterator I) : I(I) {} -public: - DIExpressionIterator() {} - DIExpressionIterator(const DIExpression &Expr) : I(++Expr.header_begin()) {} - uint64_t operator*() const { return I.getNumber(); } - DIExpressionIterator &operator++() { - increment(); - return *this; - } - DIExpressionIterator operator++(int) { - DIExpressionIterator X(*this); - increment(); - return X; - } - bool operator==(const DIExpressionIterator &X) const { - return I == X.I; - } - bool operator!=(const DIExpressionIterator &X) const { - return !(*this == X); - } - - uint64_t getArg(unsigned N) const { - auto In = I; - std::advance(In, N); - return In.getNumber(); - } - - const DIHeaderFieldIterator& getBase() const { return I; } - -private: - void increment() { - switch (**this) { - case dwarf::DW_OP_piece: std::advance(I, 3); break; - case dwarf::DW_OP_plus: std::advance(I, 2); break; - case dwarf::DW_OP_deref: std::advance(I, 1); break; - default: - assert("unsupported operand"); + /// \brief An iterator for DIExpression elements. + class iterator + : public std::iterator { + DIHeaderFieldIterator I; + iterator(DIHeaderFieldIterator I) : I(I) {} + public: + iterator() {} + iterator(const DIExpression &Expr) : I(++Expr.header_begin()) {} + uint64_t operator*() const { return I.getNumber(); } + iterator &operator++() { + increment(); + return *this; } - } -}; + iterator operator++(int) { + iterator X(*this); + increment(); + return X; + } + bool operator==(const iterator &X) const { + return I == X.I; + } + bool operator!=(const iterator &X) const { + return !(*this == X); + } + + uint64_t getArg(unsigned N) const { + auto In = I; + std::advance(In, N); + return In.getNumber(); + } + + const DIHeaderFieldIterator& getBase() const { return I; } + + private: + void increment() { + switch (**this) { + case dwarf::DW_OP_piece: std::advance(I, 3); break; + case dwarf::DW_OP_plus: std::advance(I, 2); break; + case dwarf::DW_OP_deref: std::advance(I, 1); break; + default: + assert("unsupported operand"); + } + } + }; + iterator begin() const; + iterator end() const; +}; /// \brief This object holds location information. /// diff --git a/lib/CodeGen/AsmPrinter/DwarfExpression.cpp b/lib/CodeGen/AsmPrinter/DwarfExpression.cpp index d1b648ffabc..eb101ca2dcb 100644 --- a/lib/CodeGen/AsmPrinter/DwarfExpression.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfExpression.cpp @@ -242,9 +242,9 @@ bool DwarfExpression::AddMachineRegExpression(DIExpression Expr, return true; } -void DwarfExpression::AddExpression(DIExpressionIterator I, +void DwarfExpression::AddExpression(DIExpression::iterator I, unsigned PieceOffsetInBits) { - for (; I != DIExpressionIterator(); ++I) { + for (; I != DIExpression::iterator(); ++I) { switch (*I) { case dwarf::DW_OP_piece: { unsigned SizeOfByte = 8; diff --git a/lib/CodeGen/AsmPrinter/DwarfExpression.h b/lib/CodeGen/AsmPrinter/DwarfExpression.h index 11db59eadb0..14e07fcdb98 100644 --- a/lib/CodeGen/AsmPrinter/DwarfExpression.h +++ b/lib/CodeGen/AsmPrinter/DwarfExpression.h @@ -96,7 +96,7 @@ public: /// Emit a the operations remaining the DIExpressionIterator I. /// \param PieceOffsetInBits If this is one piece out of a fragmented /// location, this is the offset of the piece inside the entire variable. - void AddExpression(DIExpressionIterator I, unsigned PieceOffsetInBits = 0); +void AddExpression(DIExpression::iterator I, unsigned PieceOffsetInBits = 0); }; /// DwarfExpression implementation for .debug_loc entries. diff --git a/lib/IR/DebugInfo.cpp b/lib/IR/DebugInfo.cpp index f7892dd3497..da77c9bb6f9 100644 --- a/lib/IR/DebugInfo.cpp +++ b/lib/IR/DebugInfo.cpp @@ -162,12 +162,12 @@ uint64_t DIExpression::getPieceSize() const { return getElement(getNumElements()-1); } -DIExpressionIterator DIExpression::begin() const { - return DIExpressionIterator(*this); +DIExpression::iterator DIExpression::begin() const { + return DIExpression::iterator(*this); } -DIExpressionIterator DIExpression::end() const { - return DIExpressionIterator(); +DIExpression::iterator DIExpression::end() const { + return DIExpression::iterator(); } //===----------------------------------------------------------------------===//