mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
Use bidirectional bundle flags to simplify important functions.
The bundle_iterator::operator++ function now doesn't need to dig out the basic block and check against end(). It can use the isBundledWithSucc() flag to find the last bundled instruction safely. Similarly, MachineInstr::isBundled() no longer needs to look at iterators etc. It only has to look at flags. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170473 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
1a3150098c
commit
2e4b639790
@ -146,11 +146,11 @@ public:
|
|||||||
bundle_iterator(IterTy mii) : MII(mii) {}
|
bundle_iterator(IterTy mii) : MII(mii) {}
|
||||||
|
|
||||||
bundle_iterator(Ty &mi) : MII(mi) {
|
bundle_iterator(Ty &mi) : MII(mi) {
|
||||||
assert(!mi.isInsideBundle() &&
|
assert(!mi.isBundledWithPred() &&
|
||||||
"It's not legal to initialize bundle_iterator with a bundled MI");
|
"It's not legal to initialize bundle_iterator with a bundled MI");
|
||||||
}
|
}
|
||||||
bundle_iterator(Ty *mi) : MII(mi) {
|
bundle_iterator(Ty *mi) : MII(mi) {
|
||||||
assert((!mi || !mi->isInsideBundle()) &&
|
assert((!mi || !mi->isBundledWithPred()) &&
|
||||||
"It's not legal to initialize bundle_iterator with a bundled MI");
|
"It's not legal to initialize bundle_iterator with a bundled MI");
|
||||||
}
|
}
|
||||||
// Template allows conversion from const to nonconst.
|
// Template allows conversion from const to nonconst.
|
||||||
@ -174,13 +174,13 @@ public:
|
|||||||
// Increment and decrement operators...
|
// Increment and decrement operators...
|
||||||
bundle_iterator &operator--() { // predecrement - Back up
|
bundle_iterator &operator--() { // predecrement - Back up
|
||||||
do --MII;
|
do --MII;
|
||||||
while (MII->isInsideBundle());
|
while (MII->isBundledWithPred());
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
bundle_iterator &operator++() { // preincrement - Advance
|
bundle_iterator &operator++() { // preincrement - Advance
|
||||||
IterTy E = MII->getParent()->instr_end();
|
while (MII->isBundledWithSucc())
|
||||||
do ++MII;
|
++MII;
|
||||||
while (MII != E && MII->isInsideBundle());
|
++MII;
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
bundle_iterator operator--(int) { // postdecrement operators...
|
bundle_iterator operator--(int) { // postdecrement operators...
|
||||||
|
@ -211,7 +211,9 @@ public:
|
|||||||
|
|
||||||
/// isBundled - Return true if this instruction part of a bundle. This is true
|
/// isBundled - Return true if this instruction part of a bundle. This is true
|
||||||
/// if either itself or its following instruction is marked "InsideBundle".
|
/// if either itself or its following instruction is marked "InsideBundle".
|
||||||
bool isBundled() const;
|
bool isBundled() const {
|
||||||
|
return isBundledWithPred() || isBundledWithSucc();
|
||||||
|
}
|
||||||
|
|
||||||
/// Return true if this instruction is part of a bundle, and it is not the
|
/// Return true if this instruction is part of a bundle, and it is not the
|
||||||
/// first instruction in the bundle.
|
/// first instruction in the bundle.
|
||||||
|
@ -909,16 +909,6 @@ void MachineInstr::unbundleFromSucc() {
|
|||||||
Succ->clearFlag(BundledPred);
|
Succ->clearFlag(BundledPred);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// isBundled - Return true if this instruction part of a bundle. This is true
|
|
||||||
/// if either itself or its following instruction is marked "InsideBundle".
|
|
||||||
bool MachineInstr::isBundled() const {
|
|
||||||
if (isInsideBundle())
|
|
||||||
return true;
|
|
||||||
MachineBasicBlock::const_instr_iterator nextMI = this;
|
|
||||||
++nextMI;
|
|
||||||
return nextMI != Parent->instr_end() && nextMI->isInsideBundle();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool MachineInstr::isStackAligningInlineAsm() const {
|
bool MachineInstr::isStackAligningInlineAsm() const {
|
||||||
if (isInlineAsm()) {
|
if (isInlineAsm()) {
|
||||||
unsigned ExtraInfo = getOperand(InlineAsm::MIOp_ExtraInfo).getImm();
|
unsigned ExtraInfo = getOperand(InlineAsm::MIOp_ExtraInfo).getImm();
|
||||||
|
Loading…
Reference in New Issue
Block a user