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
This commit is contained in:
Owen Anderson 2011-10-10 18:09:38 +00:00
parent 475fa2608c
commit 042aadd8ee
2 changed files with 20 additions and 9 deletions

View File

@ -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

View File

@ -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!");