diff options
author | Owen Anderson <resistor@mac.com> | 2011-10-10 18:09:38 +0000 |
---|---|---|
committer | Owen Anderson <resistor@mac.com> | 2011-10-10 18:09:38 +0000 |
commit | 042aadd8ee1e532e7ef7b6c3d42bcc94e7a6f156 (patch) | |
tree | 964a4bae1905eead1a8e4643a4ba66c2e8243b69 | |
parent | 475fa2608ca3c9f754ec7979172f8ab0a3b138f0 (diff) | |
download | external_llvm-042aadd8ee1e532e7ef7b6c3d42bcc94e7a6f156.zip external_llvm-042aadd8ee1e532e7ef7b6c3d42bcc94e7a6f156.tar.gz external_llvm-042aadd8ee1e532e7ef7b6c3d42bcc94e7a6f156.tar.bz2 |
MCAtom extending methods need to extend the range of the atom as well.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141557 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/MC/MCAtom.h | 11 | ||||
-rw-r--r-- | lib/MC/MCAtom.cpp | 18 |
2 files changed, 20 insertions, 9 deletions
diff --git a/include/llvm/MC/MCAtom.h b/include/llvm/MC/MCAtom.h index 6805c39..682cf7c 100644 --- a/include/llvm/MC/MCAtom.h +++ b/include/llvm/MC/MCAtom.h @@ -49,15 +49,8 @@ public: bool isTextAtom() { return Type == TextAtom; } bool isDataAtom() { return Type == DataAtom; } - void addInst(const MCInst &I, uint64_t Address) { - assert(Type == TextAtom && "Trying to add MCInst to a non-text atom!"); - Text.push_back(std::make_pair(Address, I)); - } - - void addData(const MCData &D) { - assert(Type == DataAtom && "Trying to add MCData to a non-data atom!"); - Data.push_back(D); - } + void addInst(const MCInst &I, uint64_t Address, unsigned Size); + void addData(const MCData &D); /// split - Splits the atom in two at a given address, which must align with /// and instruction boundary if this is a TextAtom. Returns the newly created diff --git a/lib/MC/MCAtom.cpp b/lib/MC/MCAtom.cpp index cd7dbf3..d714443 100644 --- a/lib/MC/MCAtom.cpp +++ b/lib/MC/MCAtom.cpp @@ -13,6 +13,24 @@ using namespace llvm; +void MCAtom::addInst(const MCInst &I, uint64_t Address, unsigned Size) { + assert(Type == TextAtom && "Trying to add MCInst to a non-text atom!"); + + assert(Address < End+Size && + "Instruction not contiguous with end of atom!"); + if (Address > End) + Parent->remap(this, Begin, End+Size); + + Text.push_back(std::make_pair(Address, I)); +} + +void MCAtom::addData(const MCData &D) { + assert(Type == DataAtom && "Trying to add MCData to a non-data atom!"); + Parent->remap(this, Begin, End+1); + + Data.push_back(D); +} + MCAtom *MCAtom::split(uint64_t SplitPt) { assert((SplitPt > Begin && SplitPt <= End) && "Splitting at point not contained in atom!"); |