[llvm] r261504 - CodeGen: MachineInstr::getIterator() => getInstrIterator(), NFC
Duncan P. N. Exon Smith via llvm-commits
llvm-commits at lists.llvm.org
Mon Feb 22 13:17:48 PST 2016
> On 2016-Feb-22, at 12:26, Justin Bogner <mail at justinbogner.com> wrote:
>
> "Duncan P. N. Exon Smith via llvm-commits" <llvm-commits at lists.llvm.org>
> writes:
>> Author: dexonsmith
>> Date: Sun Feb 21 16:58:35 2016
>> New Revision: 261504
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=261504&view=rev
>> Log:
>> CodeGen: MachineInstr::getIterator() => getInstrIterator(), NFC
>>
>> Delete MachineInstr::getIterator(), since the term "iterator" is
>> overloaded when talking about MachineInstr.
>>
>> - Downcast to ilist_node in iplist::getNextNode() and getPrevNode() so
>> that ilist_node::getIterator() is still available.
>> - Add it back as MachineInstr::getInstrIterator(). This matches the
>> naming in MachineBasicBlock.
>> - Add MachineInstr::getBundleIterator(). This is explicitly called
>> "bundle" (not matching MachineBasicBlock) to disintinguish it clearly
>> from ilist_node::getIterator().
>> - Update all calls. Some of these I switched to `auto` to remove
>> boiler-plate, since the new name is clear about the type.
>
> This causes a fair amount of code churn and I'm not completely convinced
> I like the direction. Could we maybe revert for now while we discuss it?
r261567
> I find the getInstrIterator name a bit confusing, since it makes
> MachineInstr's API different from any other ilist_node's. I can see why
> it makes sense if we add getBundleIterator, since it would be confusing
> to have getIterator and getBundleIterator, but is the implicit
> conversion from an MI to a bundle_iterator really so bad? Certainly
> you'd be signing up for a lot of work if you plan to update everywhere
> this happens today.
There is a *ton* of backend API that takes `bundle_iterator` as a
parameter, and making the bundle iterator constructor explicit looks
harder than I thought.
The conversion that's really bad -- that's blocking my quest to remove
UB from ilist_iterator -- is the one in the other direction. I was
planning to remove both for symmetry (and to catch bugs). I.e.:
```
bundle_iterator(MachineInstr *); // Bug-prone.
bundle_iterator(instr_iterator); // Bug-prone.
operator MachineInstr*() const; // Bug-prone and relies on ilist UB.
```
I still kind of want to kill the constructors, if we can come up with
appropriate naming. For example, this code looks perfectly sane:
```
MachineBasicBlock::iterator I = std::next(MI->getIterator());
```
but it's actually very likely to be wrong, since `MI` could be
bundled. This similar code is probably what the caller meant:
```
auto I = std::next(MachineBasicBlock::iterator(MI));
// or equivalently with my commit:
MachineBasicBlock::iterator I = std::next(MI->getBundleIterator());
```
The really confusing thing is that `MachineBasicBlock::iterator`
iterates through bundles instead of instructions. This would all be
straightforward if `MachineBasicBlock::begin()` returned an
instruction iterator and `MachineBasicBlock::bundles_begin()` returned
a bundle iterator. That would be *really* hard to reverse though :/.
Short term, I'll focus on the conversion that's blocking me.
Long term, I'd welcome others' thoughts on how to make this API less
bug-prone, whether there's any reasonable transition plan, and what
the names should be if so.
> Then, if we don't end up using getBundleIterator, we should probably
> remove it - in which case getInstrIterator is back to being confusing as
> to why it's different.
The one place I thought I needed it, I decided to add a FIXME instead
(which I converted to an assertion in r261507).
>
>> There was one call I updated that looked fishy, but it wasn't clear what
>> the right answer was. This was in X86FrameLowering::inlineStackProbe(),
>> added in r252578 in lib/Target/X86/X86FrameLowering.cpp. I opted to
>> leave the behaviour unchanged, but I'll reply to the original commit on
>> the list in a moment.
>>
>> Modified:
>> llvm/trunk/include/llvm/ADT/ilist.h
>> llvm/trunk/include/llvm/CodeGen/MachineInstr.h
>> llvm/trunk/include/llvm/CodeGen/MachineInstrBuilder.h
>> llvm/trunk/include/llvm/CodeGen/MachineInstrBundle.h
>> llvm/trunk/lib/CodeGen/DFAPacketizer.cpp
>> llvm/trunk/lib/CodeGen/MachineCopyPropagation.cpp
>> llvm/trunk/lib/CodeGen/MachineInstr.cpp
>> llvm/trunk/lib/CodeGen/ProcessImplicitDefs.cpp
>> llvm/trunk/lib/CodeGen/ScheduleDAGInstrs.cpp
>> llvm/trunk/lib/Target/AArch64/AArch64CleanupLocalDynamicTLSPass.cpp
>> llvm/trunk/lib/Target/AArch64/AArch64RedundantCopyElimination.cpp
>> llvm/trunk/lib/Target/AMDGPU/AMDGPUMCInstLower.cpp
>> llvm/trunk/lib/Target/ARM/ARMBaseInstrInfo.cpp
>> llvm/trunk/lib/Target/ARM/ARMExpandPseudoInsts.cpp
>> llvm/trunk/lib/Target/ARM/Thumb2ITBlockPass.cpp
>> llvm/trunk/lib/Target/Hexagon/HexagonAsmPrinter.cpp
>> llvm/trunk/lib/Target/Hexagon/HexagonHardwareLoops.cpp
>> llvm/trunk/lib/Target/Hexagon/HexagonInstrInfo.cpp
>> llvm/trunk/lib/Target/Mips/MipsAsmPrinter.cpp
>> llvm/trunk/lib/Target/Sparc/SparcAsmPrinter.cpp
>> llvm/trunk/lib/Target/X86/X86FrameLowering.cpp
>>
>> Modified: llvm/trunk/include/llvm/ADT/ilist.h
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/ilist.h?rev=261504&r1=261503&r2=261504&view=diff
>> ==============================================================================
>> --- llvm/trunk/include/llvm/ADT/ilist.h (original)
>> +++ llvm/trunk/include/llvm/ADT/ilist.h Sun Feb 21 16:58:35 2016
>> @@ -638,7 +638,7 @@ public:
>>
>> /// \brief Get the previous node, or \c nullptr for the list head.
>> NodeTy *getPrevNode(NodeTy &N) const {
>> - auto I = N.getIterator();
>> + auto I = static_cast<ilist_node<NodeTy> &>(N).getIterator();
>> if (I == begin())
>> return nullptr;
>> return &*std::prev(I);
>> @@ -650,7 +650,7 @@ public:
>>
>> /// \brief Get the next node, or \c nullptr for the list tail.
>> NodeTy *getNextNode(NodeTy &N) const {
>> - auto Next = std::next(N.getIterator());
>> + auto Next = std::next(static_cast<ilist_node<NodeTy> &>(N).getIterator());
>> if (Next == end())
>> return nullptr;
>> return &*Next;
>>
>> Modified: llvm/trunk/include/llvm/CodeGen/MachineInstr.h
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/MachineInstr.h?rev=261504&r1=261503&r2=261504&view=diff
>> ==============================================================================
>> --- llvm/trunk/include/llvm/CodeGen/MachineInstr.h (original)
>> +++ llvm/trunk/include/llvm/CodeGen/MachineInstr.h Sun Feb 21 16:58:35 2016
>> @@ -25,6 +25,7 @@
>> #include "llvm/ADT/iterator_range.h"
>> #include "llvm/Analysis/AliasAnalysis.h"
>> #include "llvm/CodeGen/MachineOperand.h"
>> +#include "llvm/CodeGen/MachineInstrBundleIterator.h"
>> #include "llvm/IR/DebugInfo.h"
>> #include "llvm/IR/DebugLoc.h"
>> #include "llvm/IR/InlineAsm.h"
>> @@ -139,6 +140,21 @@ public:
>> const MachineBasicBlock* getParent() const { return Parent; }
>> MachineBasicBlock* getParent() { return Parent; }
>>
>> + // Disallow getIterator(), since it's ambiguous.
>> + void getIterator() = delete;
>> + typedef ilist_iterator<MachineInstr> instr_iterator;
>> + typedef ilist_iterator<const MachineInstr> const_instr_iterator;
>> + instr_iterator getInstrIterator() { return instr_iterator(this); }
>> + const_instr_iterator getInstrIterator() const {
>> + return const_instr_iterator(this);
>> + }
>> + typedef MachineInstrBundleIterator<MachineInstr> bundle_iterator;
>> + typedef MachineInstrBundleIterator<const MachineInstr> const_bundle_iterator;
>> + bundle_iterator getBundleIterator() { return bundle_iterator(this); }
>> + const_bundle_iterator getBundleIterator() const {
>> + return const_bundle_iterator(this);
>> + }
>> +
>> /// Return the asm printer flags bitvector.
>> uint8_t getAsmPrinterFlags() const { return AsmPrinterFlags; }
>>
>>
>> Modified: llvm/trunk/include/llvm/CodeGen/MachineInstrBuilder.h
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/MachineInstrBuilder.h?rev=261504&r1=261503&r2=261504&view=diff
>> ==============================================================================
>> --- llvm/trunk/include/llvm/CodeGen/MachineInstrBuilder.h (original)
>> +++ llvm/trunk/include/llvm/CodeGen/MachineInstrBuilder.h Sun Feb 21 16:58:35 2016
>> @@ -472,7 +472,7 @@ public:
>> if (I == Begin) {
>> if (!empty())
>> MI->bundleWithSucc();
>> - Begin = MI->getIterator();
>> + Begin = MI->getInstrIterator();
>> return *this;
>> }
>> if (I == End) {
>>
>> Modified: llvm/trunk/include/llvm/CodeGen/MachineInstrBundle.h
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/MachineInstrBundle.h?rev=261504&r1=261503&r2=261504&view=diff
>> ==============================================================================
>> --- llvm/trunk/include/llvm/CodeGen/MachineInstrBundle.h (original)
>> +++ llvm/trunk/include/llvm/CodeGen/MachineInstrBundle.h Sun Feb 21 16:58:35 2016
>> @@ -116,10 +116,10 @@ protected:
>> ///
>> explicit MachineOperandIteratorBase(MachineInstr *MI, bool WholeBundle) {
>> if (WholeBundle) {
>> - InstrI = getBundleStart(MI)->getIterator();
>> + InstrI = getBundleStart(MI)->getInstrIterator();
>> InstrE = MI->getParent()->instr_end();
>> } else {
>> - InstrI = InstrE = MI->getIterator();
>> + InstrI = InstrE = MI->getInstrIterator();
>> ++InstrE;
>> }
>> OpI = InstrI->operands_begin();
>>
>> Modified: llvm/trunk/lib/CodeGen/DFAPacketizer.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/DFAPacketizer.cpp?rev=261504&r1=261503&r2=261504&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/CodeGen/DFAPacketizer.cpp (original)
>> +++ llvm/trunk/lib/CodeGen/DFAPacketizer.cpp Sun Feb 21 16:58:35 2016
>> @@ -198,7 +198,7 @@ VLIWPacketizerList::~VLIWPacketizerList(
>> void VLIWPacketizerList::endPacket(MachineBasicBlock *MBB, MachineInstr *MI) {
>> if (CurrentPacketMIs.size() > 1) {
>> MachineInstr *MIFirst = CurrentPacketMIs.front();
>> - finalizeBundle(*MBB, MIFirst->getIterator(), MI->getIterator());
>> + finalizeBundle(*MBB, MIFirst->getInstrIterator(), MI->getInstrIterator());
>> }
>> CurrentPacketMIs.clear();
>> ResourceTracker->clearResources();
>>
>> Modified: llvm/trunk/lib/CodeGen/MachineCopyPropagation.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/MachineCopyPropagation.cpp?rev=261504&r1=261503&r2=261504&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/CodeGen/MachineCopyPropagation.cpp (original)
>> +++ llvm/trunk/lib/CodeGen/MachineCopyPropagation.cpp Sun Feb 21 16:58:35 2016
>> @@ -90,8 +90,10 @@ static bool NoInterveningSideEffect(cons
>> if (MI->getParent() != MBB)
>> return false;
>>
>> - for (MachineBasicBlock::const_iterator I = std::next(CopyMI->getIterator()),
>> - E = MBB->end(), E2 = MI->getIterator(); I != E && I != E2; ++I) {
>> + for (MachineBasicBlock::const_instr_iterator
>> + I = std::next(CopyMI->getInstrIterator()),
>> + E = MBB->instr_end(), E2 = MI->getInstrIterator();
>> + I != E && I != E2; ++I) {
>> if (I->hasUnmodeledSideEffects() || I->isCall() ||
>> I->isTerminator())
>> return false;
>> @@ -163,8 +165,8 @@ void MachineCopyPropagation::CopyPropaga
>>
>> // Clear any kills of Def between CopyMI and MI. This extends the
>> // live range.
>> - for (MachineInstr &MMI
>> - : make_range(CopyMI->getIterator(), MI->getIterator()))
>> + for (MachineInstr &MMI :
>> + make_range(CopyMI->getInstrIterator(), MI->getInstrIterator()))
>> MMI.clearRegisterKills(Def, TRI);
>>
>> MI->eraseFromParent();
>>
>> Modified: llvm/trunk/lib/CodeGen/MachineInstr.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/MachineInstr.cpp?rev=261504&r1=261503&r2=261504&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/CodeGen/MachineInstr.cpp (original)
>> +++ llvm/trunk/lib/CodeGen/MachineInstr.cpp Sun Feb 21 16:58:35 2016
>> @@ -934,7 +934,7 @@ MachineInstr::mergeMemRefsWith(const Mac
>>
>> bool MachineInstr::hasPropertyInBundle(unsigned Mask, QueryType Type) const {
>> assert(!isBundledWithPred() && "Must be called on bundle header");
>> - for (MachineBasicBlock::const_instr_iterator MII = getIterator();; ++MII) {
>> + for (auto MII = getInstrIterator();; ++MII) {
>> if (MII->getDesc().getFlags() & Mask) {
>> if (Type == AnyInBundle)
>> return true;
>> @@ -958,10 +958,10 @@ bool MachineInstr::isIdenticalTo(const M
>>
>> if (isBundle()) {
>> // Both instructions are bundles, compare MIs inside the bundle.
>> - MachineBasicBlock::const_instr_iterator I1 = getIterator();
>> - MachineBasicBlock::const_instr_iterator E1 = getParent()->instr_end();
>> - MachineBasicBlock::const_instr_iterator I2 = Other->getIterator();
>> - MachineBasicBlock::const_instr_iterator E2= Other->getParent()->instr_end();
>> + auto I1 = getInstrIterator();
>> + auto E1 = getParent()->instr_end();
>> + auto I2 = Other->getInstrIterator();
>> + auto E2 = Other->getParent()->instr_end();
>> while (++I1 != E1 && I1->isInsideBundle()) {
>> ++I2;
>> if (I2 == E2 || !I2->isInsideBundle() || !I1->isIdenticalTo(&*I2, Check))
>> @@ -1069,8 +1069,7 @@ unsigned MachineInstr::getNumExplicitOpe
>> void MachineInstr::bundleWithPred() {
>> assert(!isBundledWithPred() && "MI is already bundled with its predecessor");
>> setFlag(BundledPred);
>> - MachineBasicBlock::instr_iterator Pred = getIterator();
>> - --Pred;
>> + auto Pred = --getInstrIterator();
>> assert(!Pred->isBundledWithSucc() && "Inconsistent bundle flags");
>> Pred->setFlag(BundledSucc);
>> }
>> @@ -1078,8 +1077,7 @@ void MachineInstr::bundleWithPred() {
>> void MachineInstr::bundleWithSucc() {
>> assert(!isBundledWithSucc() && "MI is already bundled with its successor");
>> setFlag(BundledSucc);
>> - MachineBasicBlock::instr_iterator Succ = getIterator();
>> - ++Succ;
>> + auto Succ = ++getInstrIterator();
>> assert(!Succ->isBundledWithPred() && "Inconsistent bundle flags");
>> Succ->setFlag(BundledPred);
>> }
>> @@ -1087,8 +1085,7 @@ void MachineInstr::bundleWithSucc() {
>> void MachineInstr::unbundleFromPred() {
>> assert(isBundledWithPred() && "MI isn't bundled with its predecessor");
>> clearFlag(BundledPred);
>> - MachineBasicBlock::instr_iterator Pred = getIterator();
>> - --Pred;
>> + auto Pred = --getInstrIterator();
>> assert(Pred->isBundledWithSucc() && "Inconsistent bundle flags");
>> Pred->clearFlag(BundledSucc);
>> }
>> @@ -1096,8 +1093,7 @@ void MachineInstr::unbundleFromPred() {
>> void MachineInstr::unbundleFromSucc() {
>> assert(isBundledWithSucc() && "MI isn't bundled with its successor");
>> clearFlag(BundledSucc);
>> - MachineBasicBlock::instr_iterator Succ = getIterator();
>> - ++Succ;
>> + auto Succ = ++getInstrIterator();
>> assert(Succ->isBundledWithPred() && "Inconsistent bundle flags");
>> Succ->clearFlag(BundledPred);
>> }
>> @@ -1232,7 +1228,7 @@ const TargetRegisterClass *MachineInstr:
>> /// Return the number of instructions inside the MI bundle, not counting the
>> /// header instruction.
>> unsigned MachineInstr::getBundleSize() const {
>> - MachineBasicBlock::const_instr_iterator I = getIterator();
>> + auto I = getInstrIterator();
>> unsigned Size = 0;
>> while (I->isBundledWithSucc()) {
>> ++Size;
>>
>> Modified: llvm/trunk/lib/CodeGen/ProcessImplicitDefs.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/ProcessImplicitDefs.cpp?rev=261504&r1=261503&r2=261504&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/CodeGen/ProcessImplicitDefs.cpp (original)
>> +++ llvm/trunk/lib/CodeGen/ProcessImplicitDefs.cpp Sun Feb 21 16:58:35 2016
>> @@ -96,8 +96,8 @@ void ProcessImplicitDefs::processImplici
>>
>> // This is a physreg implicit-def.
>> // Look for the first instruction to use or define an alias.
>> - MachineBasicBlock::instr_iterator UserMI = MI->getIterator();
>> - MachineBasicBlock::instr_iterator UserE = MI->getParent()->instr_end();
>> + auto UserMI = MI->getInstrIterator();
>> + auto UserE = MI->getParent()->instr_end();
>> bool Found = false;
>> for (++UserMI; UserMI != UserE; ++UserMI) {
>> for (MachineOperand &MO : UserMI->operands()) {
>>
>> Modified: llvm/trunk/lib/CodeGen/ScheduleDAGInstrs.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/ScheduleDAGInstrs.cpp?rev=261504&r1=261503&r2=261504&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/CodeGen/ScheduleDAGInstrs.cpp (original)
>> +++ llvm/trunk/lib/CodeGen/ScheduleDAGInstrs.cpp Sun Feb 21 16:58:35 2016
>> @@ -1200,8 +1200,8 @@ static void toggleBundleKillFlag(Machine
>> // Once we set a kill flag on an instruction, we bail out, as otherwise we
>> // might set it on too many operands. We will clear as many flags as we
>> // can though.
>> - MachineBasicBlock::instr_iterator Begin = MI->getIterator();
>> - MachineBasicBlock::instr_iterator End = getBundleEnd(MI);
>> + auto Begin = MI->getInstrIterator();
>> + auto End = getBundleEnd(MI);
>> while (Begin != End) {
>> for (MachineOperand &MO : (--End)->operands()) {
>> if (!MO.isReg() || MO.isDef() || Reg != MO.getReg())
>> @@ -1334,8 +1334,8 @@ void ScheduleDAGInstrs::fixupKills(Machi
>> toggleKillFlag(MI, MO);
>> DEBUG(MI->dump());
>> DEBUG(if (MI->getOpcode() == TargetOpcode::BUNDLE) {
>> - MachineBasicBlock::instr_iterator Begin = MI->getIterator();
>> - MachineBasicBlock::instr_iterator End = getBundleEnd(MI);
>> + auto Begin = MI->getInstrIterator();
>> + auto End = getBundleEnd(MI);
>> while (++Begin != End)
>> DEBUG(Begin->dump());
>> });
>>
>> Modified: llvm/trunk/lib/Target/AArch64/AArch64CleanupLocalDynamicTLSPass.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AArch64/AArch64CleanupLocalDynamicTLSPass.cpp?rev=261504&r1=261503&r2=261504&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/Target/AArch64/AArch64CleanupLocalDynamicTLSPass.cpp (original)
>> +++ llvm/trunk/lib/Target/AArch64/AArch64CleanupLocalDynamicTLSPass.cpp Sun Feb 21 16:58:35 2016
>> @@ -118,7 +118,7 @@ struct LDTLSCleanup : public MachineFunc
>>
>> // Insert a copy from X0 to TLSBaseAddrReg for later.
>> MachineInstr *Copy =
>> - BuildMI(*I->getParent(), ++I->getIterator(), I->getDebugLoc(),
>> + BuildMI(*I->getParent(), ++I->getInstrIterator(), I->getDebugLoc(),
>> TII->get(TargetOpcode::COPY), *TLSBaseAddrReg)
>> .addReg(AArch64::X0);
>>
>>
>> Modified: llvm/trunk/lib/Target/AArch64/AArch64RedundantCopyElimination.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AArch64/AArch64RedundantCopyElimination.cpp?rev=261504&r1=261503&r2=261504&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/Target/AArch64/AArch64RedundantCopyElimination.cpp (original)
>> +++ llvm/trunk/lib/Target/AArch64/AArch64RedundantCopyElimination.cpp Sun Feb 21 16:58:35 2016
>> @@ -154,8 +154,8 @@ bool AArch64RedundantCopyElimination::op
>> MBB->addLiveIn(TargetReg);
>>
>> // Clear any kills of TargetReg between CompBr and the last removed COPY.
>> - for (MachineInstr &MMI :
>> - make_range(MBB->begin()->getIterator(), LastChange->getIterator()))
>> + for (MachineInstr &MMI : make_range(MBB->begin()->getInstrIterator(),
>> + LastChange->getInstrIterator()))
>> MMI.clearRegisterKills(SmallestDef, TRI);
>>
>> return true;
>>
>> Modified: llvm/trunk/lib/Target/AMDGPU/AMDGPUMCInstLower.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/AMDGPUMCInstLower.cpp?rev=261504&r1=261503&r2=261504&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/Target/AMDGPU/AMDGPUMCInstLower.cpp (original)
>> +++ llvm/trunk/lib/Target/AMDGPU/AMDGPUMCInstLower.cpp Sun Feb 21 16:58:35 2016
>> @@ -97,7 +97,7 @@ void AMDGPUAsmPrinter::EmitInstruction(c
>> #endif
>> if (MI->isBundle()) {
>> const MachineBasicBlock *MBB = MI->getParent();
>> - MachineBasicBlock::const_instr_iterator I = ++MI->getIterator();
>> + auto I = ++MI->getInstrIterator();
>> while (I != MBB->instr_end() && I->isInsideBundle()) {
>> EmitInstruction(&*I);
>> ++I;
>>
>> Modified: llvm/trunk/lib/Target/ARM/ARMBaseInstrInfo.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMBaseInstrInfo.cpp?rev=261504&r1=261503&r2=261504&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/Target/ARM/ARMBaseInstrInfo.cpp (original)
>> +++ llvm/trunk/lib/Target/ARM/ARMBaseInstrInfo.cpp Sun Feb 21 16:58:35 2016
>> @@ -440,8 +440,8 @@ ReverseBranchCondition(SmallVectorImpl<M
>>
>> bool ARMBaseInstrInfo::isPredicated(const MachineInstr *MI) const {
>> if (MI->isBundle()) {
>> - MachineBasicBlock::const_instr_iterator I = MI->getIterator();
>> - MachineBasicBlock::const_instr_iterator E = MI->getParent()->instr_end();
>> + auto I = MI->getInstrIterator();
>> + auto E = MI->getParent()->instr_end();
>> while (++I != E && I->isInsideBundle()) {
>> int PIdx = I->findFirstPredOperandIdx();
>> if (PIdx != -1 && I->getOperand(PIdx).getImm() != ARMCC::AL)
>> @@ -647,8 +647,8 @@ unsigned ARMBaseInstrInfo::GetInstSizeIn
>>
>> unsigned ARMBaseInstrInfo::getInstBundleLength(const MachineInstr *MI) const {
>> unsigned Size = 0;
>> - MachineBasicBlock::const_instr_iterator I = MI->getIterator();
>> - MachineBasicBlock::const_instr_iterator E = MI->getParent()->instr_end();
>> + auto I = MI->getInstrIterator();
>> + auto E = MI->getParent()->instr_end();
>> while (++I != E && I->isInsideBundle()) {
>> assert(!I->isBundle() && "No nested bundle!");
>> Size += GetInstSizeInBytes(&*I);
>> @@ -3432,7 +3432,7 @@ static const MachineInstr *getBundledUse
>> unsigned &UseIdx, unsigned &Dist) {
>> Dist = 0;
>>
>> - MachineBasicBlock::const_instr_iterator II = ++MI->getIterator();
>> + auto II = ++MI->getInstrIterator();
>> assert(II->isInsideBundle() && "Empty bundle?");
>> MachineBasicBlock::const_instr_iterator E = MI->getParent()->instr_end();
>>
>> @@ -3975,8 +3975,8 @@ unsigned ARMBaseInstrInfo::getInstrLaten
>> // other passes may query the latency of a bundled instruction.
>> if (MI->isBundle()) {
>> unsigned Latency = 0;
>> - MachineBasicBlock::const_instr_iterator I = MI->getIterator();
>> - MachineBasicBlock::const_instr_iterator E = MI->getParent()->instr_end();
>> + auto I = MI->getInstrIterator();
>> + auto E = MI->getParent()->instr_end();
>> while (++I != E && I->isInsideBundle()) {
>> if (I->getOpcode() != ARM::t2IT)
>> Latency += getInstrLatency(ItinData, &*I, PredCost);
>>
>> Modified: llvm/trunk/lib/Target/ARM/ARMExpandPseudoInsts.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMExpandPseudoInsts.cpp?rev=261504&r1=261503&r2=261504&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/Target/ARM/ARMExpandPseudoInsts.cpp (original)
>> +++ llvm/trunk/lib/Target/ARM/ARMExpandPseudoInsts.cpp Sun Feb 21 16:58:35 2016
>> @@ -731,7 +731,7 @@ void ARMExpandPseudo::ExpandMOV32BitImm(
>> HI16.addImm(Pred).addReg(PredReg);
>>
>> if (RequiresBundling)
>> - finalizeBundle(MBB, LO16->getIterator(), MBBI->getIterator());
>> + finalizeBundle(MBB, LO16->getInstrIterator(), MBBI->getInstrIterator());
>>
>> TransferImpOps(MI, LO16, HI16);
>> MI.eraseFromParent();
>>
>> Modified: llvm/trunk/lib/Target/ARM/Thumb2ITBlockPass.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/Thumb2ITBlockPass.cpp?rev=261504&r1=261503&r2=261504&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/Target/ARM/Thumb2ITBlockPass.cpp (original)
>> +++ llvm/trunk/lib/Target/ARM/Thumb2ITBlockPass.cpp Sun Feb 21 16:58:35 2016
>> @@ -257,7 +257,7 @@ bool Thumb2ITBlockPass::InsertITInstruct
>>
>> // Finalize the bundle.
>> finalizeBundle(MBB, InsertPos.getInstrIterator(),
>> - ++LastITMI->getIterator());
>> + ++LastITMI->getInstrIterator());
>>
>> Modified = true;
>> ++NumITs;
>>
>> Modified: llvm/trunk/lib/Target/Hexagon/HexagonAsmPrinter.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Hexagon/HexagonAsmPrinter.cpp?rev=261504&r1=261503&r2=261504&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/Target/Hexagon/HexagonAsmPrinter.cpp (original)
>> +++ llvm/trunk/lib/Target/Hexagon/HexagonAsmPrinter.cpp Sun Feb 21 16:58:35 2016
>> @@ -591,7 +591,7 @@ void HexagonAsmPrinter::EmitInstruction(
>>
>> if (MI->isBundle()) {
>> const MachineBasicBlock* MBB = MI->getParent();
>> - MachineBasicBlock::const_instr_iterator MII = MI->getIterator();
>> + auto MII = MI->getInstrIterator();
>> unsigned IgnoreCount = 0;
>>
>> for (++MII; MII != MBB->instr_end() && MII->isInsideBundle(); ++MII)
>>
>> Modified: llvm/trunk/lib/Target/Hexagon/HexagonHardwareLoops.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Hexagon/HexagonHardwareLoops.cpp?rev=261504&r1=261503&r2=261504&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/Target/Hexagon/HexagonHardwareLoops.cpp (original)
>> +++ llvm/trunk/lib/Target/Hexagon/HexagonHardwareLoops.cpp Sun Feb 21 16:58:35 2016
>> @@ -1295,7 +1295,7 @@ bool HexagonHardwareLoops::orderBumpComp
>> // Out of order.
>> unsigned PredR = CmpI->getOperand(0).getReg();
>> bool FoundBump = false;
>> - instr_iterator CmpIt = CmpI->getIterator(), NextIt = std::next(CmpIt);
>> + instr_iterator CmpIt = CmpI->getInstrIterator(), NextIt = std::next(CmpIt);
>> for (instr_iterator I = NextIt, E = BB->instr_end(); I != E; ++I) {
>> MachineInstr *In = &*I;
>> for (unsigned i = 0, n = In->getNumOperands(); i < n; ++i) {
>> @@ -1307,7 +1307,7 @@ bool HexagonHardwareLoops::orderBumpComp
>> }
>>
>> if (In == BumpI) {
>> - BB->splice(++BumpI->getIterator(), BB, CmpI->getIterator());
>> + BB->splice(++BumpI->getInstrIterator(), BB, CmpI->getInstrIterator());
>> FoundBump = true;
>> break;
>> }
>>
>> Modified: llvm/trunk/lib/Target/Hexagon/HexagonInstrInfo.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Hexagon/HexagonInstrInfo.cpp?rev=261504&r1=261503&r2=261504&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/Target/Hexagon/HexagonInstrInfo.cpp (original)
>> +++ llvm/trunk/lib/Target/Hexagon/HexagonInstrInfo.cpp Sun Feb 21 16:58:35 2016
>> @@ -520,7 +520,7 @@ bool HexagonInstrInfo::AnalyzeBranch(Mac
>> // executed, so remove it.
>> if (SecLastOpcode == Hexagon::J2_jump && LastOpcode == Hexagon::J2_jump) {
>> TBB = SecondLastInst->getOperand(0).getMBB();
>> - I = LastInst->getIterator();
>> + I = LastInst->getInstrIterator();
>> if (AllowModify)
>> I->eraseFromParent();
>> return false;
>> @@ -1260,7 +1260,7 @@ bool HexagonInstrInfo::PredicateInstruct
>> for (unsigned i = 0, n = T->getNumOperands(); i < n; ++i)
>> MI->addOperand(T->getOperand(i));
>>
>> - MachineBasicBlock::instr_iterator TI = T->getIterator();
>> + auto TI = T->getInstrIterator();
>> B.erase(TI);
>>
>> MachineRegisterInfo &MRI = B.getParent()->getRegInfo();
>>
>> Modified: llvm/trunk/lib/Target/Mips/MipsAsmPrinter.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MipsAsmPrinter.cpp?rev=261504&r1=261503&r2=261504&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/Target/Mips/MipsAsmPrinter.cpp (original)
>> +++ llvm/trunk/lib/Target/Mips/MipsAsmPrinter.cpp Sun Feb 21 16:58:35 2016
>> @@ -173,9 +173,8 @@ void MipsAsmPrinter::EmitInstruction(con
>> return;
>> }
>>
>> -
>> - MachineBasicBlock::const_instr_iterator I = MI->getIterator();
>> - MachineBasicBlock::const_instr_iterator E = MI->getParent()->instr_end();
>> + auto I = MI->getInstrIterator();
>> + auto E = MI->getParent()->instr_end();
>>
>> do {
>> // Do any auto-generated pseudo lowerings.
>>
>> Modified: llvm/trunk/lib/Target/Sparc/SparcAsmPrinter.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Sparc/SparcAsmPrinter.cpp?rev=261504&r1=261503&r2=261504&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/Target/Sparc/SparcAsmPrinter.cpp (original)
>> +++ llvm/trunk/lib/Target/Sparc/SparcAsmPrinter.cpp Sun Feb 21 16:58:35 2016
>> @@ -267,8 +267,8 @@ void SparcAsmPrinter::EmitInstruction(co
>> LowerGETPCXAndEmitMCInsts(MI, getSubtargetInfo());
>> return;
>> }
>> - MachineBasicBlock::const_instr_iterator I = MI->getIterator();
>> - MachineBasicBlock::const_instr_iterator E = MI->getParent()->instr_end();
>> + auto I = MI->getInstrIterator();
>> + auto E = MI->getParent()->instr_end();
>> do {
>> MCInst TmpInst;
>> LowerSparcMachineInstrToMCInst(&*I, TmpInst, *this);
>>
>> Modified: llvm/trunk/lib/Target/X86/X86FrameLowering.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86FrameLowering.cpp?rev=261504&r1=261503&r2=261504&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/Target/X86/X86FrameLowering.cpp (original)
>> +++ llvm/trunk/lib/Target/X86/X86FrameLowering.cpp Sun Feb 21 16:58:35 2016
>> @@ -462,7 +462,9 @@ void X86FrameLowering::inlineStackProbe(
>> }
>>
>> if (ChkStkStub != nullptr) {
>> - MachineBasicBlock::iterator MBBI = std::next(ChkStkStub->getIterator());
>> + // FIXME: MBBI is a bundle iterator. Should this be getBundleIterator()?
>> + MachineBasicBlock::iterator MBBI =
>> + std::next(ChkStkStub->getInstrIterator());
>> assert(std::prev(MBBI).operator==(ChkStkStub) &&
>> "MBBI expected after __chkstk_stub.");
>> DebugLoc DL = PrologMBB.findDebugLoc(MBBI);
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list