[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