[LLVMdev] Possible bug in LiveIntervalAnalysis?

Scott Graham scott.llvm at h4ck3r.net
Wed Apr 16 10:52:19 PDT 2008


Hi

I'm seeing something probably related to this. I'm getting an assert
from the lower_bound in LiveIntervals::findLiveinMBBs (from a checking
std:: VS2005 implementation). Idx2MBBMap has two elements in it, both
of which have a .first of 0. (I believe because of an empty MBB in the
function below, so StartIndex doesn't advance).

scott

On Wed, Apr 16, 2008 at 2:52 AM, Roman Levenstein <romixlev at yahoo.com> wrote:
> Hi,
>
>  In the LiveIntervalAnalysis::runOnMachineFunction, there is a code to
>  compute the MBB2IdxMap, by remembering for each MBB its start and end
>  instruction numbers:
>
>   unsigned MIIndex = 0;
>   for (MachineFunction::iterator MBB = mf_->begin(), E = mf_->end();
>        MBB != E; ++MBB) {
>     unsigned StartIdx = MIIndex;
>
>     for (MachineBasicBlock::iterator I = MBB->begin(), E = MBB->end();
>          I != E; ++I) {
>       bool inserted = mi2iMap_.insert(std::make_pair(I,
>  MIIndex)).second;
>       assert(inserted && "multiple MachineInstr -> index mappings");
>       i2miMap_.push_back(I);
>       MIIndex += InstrSlots::NUM;
>     }
>
>     // Set the MBB2IdxMap entry for this MBB.
>     MBB2IdxMap[MBB->getNumber()] = std::make_pair(StartIdx, MIIndex -
>  1);
>
>   For empty MBBs, the last line would create a pair, where the end
>  element is smaller than the start element, which is a bit
>  counter-intuitive. This may lead to some assertion failures in other
>  parts of the code generator, if they use MBB2IdxMap for checking is an
>  instruction belongs to a given MBB.
>
>   Question: Is this way of handling empty MBBs in the
>  LiveIntervalAnalysis a bug or a feature? Any special reason, why the
>  pair for an empty block does not look e.g. like (start, start)?
>
>   -Roman
>
>
>       __________________________________________________________
>  Gesendet von Yahoo! Mail.
>  Der Mailbox mit unbegrenztem Speicher.
>  http://de.overview.mail.yahoo.com
>  _______________________________________________
>  LLVM Developers mailing list
>  LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>  http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>



More information about the llvm-dev mailing list