forked from OSchip/llvm-project
DebugInfo: Move DIExpression bit-piece API to MDExpression
llvm-svn: 234286
This commit is contained in:
parent
76c9184434
commit
86cc332462
|
@ -860,18 +860,11 @@ public:
|
|||
return *get();
|
||||
}
|
||||
|
||||
/// \brief Return the number of elements in the complex expression.
|
||||
unsigned getNumElements() const { return get()->getNumElements(); }
|
||||
|
||||
/// \brief return the Idx'th complex address element.
|
||||
uint64_t getElement(unsigned I) const { return get()->getElement(I); }
|
||||
|
||||
/// \brief Return whether this is a piece of an aggregate variable.
|
||||
bool isBitPiece() const;
|
||||
/// \brief Return the offset of this piece in bits.
|
||||
uint64_t getBitPieceOffset() const;
|
||||
/// \brief Return the size of this piece in bits.
|
||||
uint64_t getBitPieceSize() const;
|
||||
bool isBitPiece() const { return get()->isBitPiece(); }
|
||||
uint64_t getBitPieceOffset() const { return get()->getBitPieceOffset(); }
|
||||
uint64_t getBitPieceSize() const { return get()->getBitPieceSize(); }
|
||||
};
|
||||
|
||||
/// \brief This object holds location information.
|
||||
|
|
|
@ -1831,6 +1831,15 @@ public:
|
|||
return Elements[I];
|
||||
}
|
||||
|
||||
/// \brief Return whether this is a piece of an aggregate variable.
|
||||
bool isBitPiece() const;
|
||||
|
||||
/// \brief Return the offset of this piece in bits.
|
||||
uint64_t getBitPieceOffset() const;
|
||||
|
||||
/// \brief Return the size of this piece in bits.
|
||||
uint64_t getBitPieceSize() const;
|
||||
|
||||
typedef ArrayRef<uint64_t>::iterator element_iterator;
|
||||
element_iterator elements_begin() const { return getElements().begin(); }
|
||||
element_iterator elements_end() const { return getElements().end(); }
|
||||
|
|
|
@ -65,21 +65,6 @@ unsigned DIVariable::getSizeInBits(const DITypeIdentifierMap &Map) {
|
|||
return Ty.getSizeInBits();
|
||||
}
|
||||
|
||||
bool DIExpression::isBitPiece() const {
|
||||
unsigned N = getNumElements();
|
||||
return N >=3 && getElement(N-3) == dwarf::DW_OP_bit_piece;
|
||||
}
|
||||
|
||||
uint64_t DIExpression::getBitPieceOffset() const {
|
||||
assert(isBitPiece() && "not a piece");
|
||||
return getElement(getNumElements()-2);
|
||||
}
|
||||
|
||||
uint64_t DIExpression::getBitPieceSize() const {
|
||||
assert(isBitPiece() && "not a piece");
|
||||
return getElement(getNumElements()-1);
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Simple Descriptor Constructors and other Methods
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
|
|
@ -445,6 +445,24 @@ bool MDExpression::isValid() const {
|
|||
return true;
|
||||
}
|
||||
|
||||
bool MDExpression::isBitPiece() const {
|
||||
assert(isValid() && "Expected valid expression");
|
||||
if (unsigned N = getNumElements())
|
||||
if (N >= 3)
|
||||
return getElement(N - 3) == dwarf::DW_OP_bit_piece;
|
||||
return false;
|
||||
}
|
||||
|
||||
uint64_t MDExpression::getBitPieceOffset() const {
|
||||
assert(isBitPiece() && "Expected bit piece");
|
||||
return getElement(getNumElements() - 2);
|
||||
}
|
||||
|
||||
uint64_t MDExpression::getBitPieceSize() const {
|
||||
assert(isBitPiece() && "Expected bit piece");
|
||||
return getElement(getNumElements() - 1);
|
||||
}
|
||||
|
||||
MDObjCProperty *MDObjCProperty::getImpl(
|
||||
LLVMContext &Context, MDString *Name, Metadata *File, unsigned Line,
|
||||
MDString *GetterName, MDString *SetterName, unsigned Attributes,
|
||||
|
|
Loading…
Reference in New Issue