problem with llvm reverse iterator

Hi,

I am writing an llvm pass wherein I require to iterate MachineBasicBlocks in reverse. The ilist reverse_iterator is not functioning as expected. Nor is the ilist iterator working
in reverse (although – operator is overloaded to do so).

for (MachineFunction::iterator MBBI = mf_->end(), E = mf_->begin();MBBI != E; --MBBI)
{
MachineBasicBlock *MBB = MBBI;
DEBUG(dbgs()<<*MBB<<“\n”);
}

Any suggestion would be helpful.

Thanks.

Hi,

You should write sth like this:
for (MachineFunction::iterator MBBI = mf_->end(), E = mf_->begin();MBBI !=
E; ) {
  MachineBasicBlock *MBB = --MBBI;
DEBUG(dbgs()<<*MBB<<"\n");
}

Regads