[llvm-commits] [llvm] r51950 - /llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp
Owen Anderson
resistor at mac.com
Wed Jun 4 11:02:29 PDT 2008
I don't follow. What would this helper do?
--Owen
On Jun 4, 2008, at 10:59 AM, Evan Cheng wrote:
> Hi Owen,
>
> While you are doing this and cleaning up liveintervals. Can you add
> helper function to liveinterval for creating copy intervals etc.?
>
> Evan
>
> On Jun 4, 2008, at 10:55 AM, Owen Anderson wrote:
>
>>
>> +
>> + // Renumber the instructions so that we can perform the index
>> computations
>> + // needed to create new live intervals.
>> + LI.computeNumbering();
>> +
>> + // For copies that we inserted at the ends of predecessors, we
>> construct
>> + // live intervals. This is pretty easy, since we know that the
>> destination
>> + // register cannot have be in live at that point previously. We
>> just have
>> + // to make sure that, for registers that serve as inputs to more
>> than one
>> + // PHI, we don't create multiple overlapping live intervals.
>> + std::set<unsigned> RegHandled;
>> + for (SmallVector<std::pair<unsigned, MachineInstr*>, 4>::iterator
>> I =
>> + InsertedPHIDests.begin(), E = InsertedPHIDests.end(); I !=
>> E; ++I) {
>> + if (!RegHandled.count(I->first)) {
>> + LiveInterval& Interval = LI.getOrCreateInterval(I->first);
>> + VNInfo* VN = Interval.getNextValue(
>> + LI.getInstructionIndex(I->second) +
>> LiveIntervals::InstrSlots::DEF,
>> + I->second,
>> LI.getVNInfoAllocator());
>> + VN->hasPHIKill = true;
>> + VN->kills.push_back(LI.getMBBEndIdx(I->second->getParent()));
>> + LiveRange LR(LI.getInstructionIndex(I->second) +
>> + LiveIntervals::InstrSlots::DEF,
>> + LI.getMBBEndIdx(I->second->getParent()) + 1, VN);
>> + Interval.addRange(LR);
>> +
>> + RegHandled.insert(I->first);
>> + }
>> + }
>> }
>>
>> /// InsertCopies - insert copies into MBB and all of its successors
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list