[LLVMdev] Possible bug in LiveIntervalAnalysis?
Scott Graham
scott.llvm at h4ck3r.net
Fri Apr 18 09:07:08 PDT 2008
http://llvm.org/bugs/show_bug.cgi?id=2232
On Fri, Apr 18, 2008 at 12:38 AM, Evan Cheng <evan.cheng at apple.com> wrote:
> Can you file a bug so I don't forget? I'm a little occupied right now.
> But I'll take care of this soon.
>
> Evan
>
>
>
> On Apr 16, 2008, at 10:52 AM, Scott Graham wrote:
>
> > 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
> >>
> > _______________________________________________
> > LLVM Developers mailing list
> > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
> > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
> _______________________________________________
> 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