<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">I'd like to see code like this being refactored out into a function.<div><br></div><div>Evan<br><div><br></div><div><span class="Apple-style-span" style="font-family: -webkit-monospace; font-size: 11px; "><blockquote type="cite"><blockquote type="cite">+      LiveInterval& Interval = LI.getOrCreateInterval(I->first);<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">+      VNInfo* VN = Interval.getNextValue(<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">+          LI.getInstructionIndex(I->second) +<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">LiveIntervals::InstrSlots::DEF,<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">+                                         I->second,<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">LI.getVNInfoAllocator());<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">+      VN->hasPHIKill = true;<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">+      VN->kills.push_back(LI.getMBBEndIdx(I->second->getParent()));<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">+      LiveRange LR(LI.getInstructionIndex(I->second) +<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">+                      LiveIntervals::InstrSlots::DEF,<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">+                   LI.getMBBEndIdx(I->second->getParent()) + 1, VN);<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">+      Interval.addRange(LR);</blockquote></blockquote><div><br></div><br></span><div><div>On Jun 4, 2008, at 11:02 AM, Owen Anderson wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div>I don't follow.  What would this helper do?<br><br>--Owen<br><br>On Jun 4, 2008, at 10:59 AM, Evan Cheng wrote:<br><br><blockquote type="cite">Hi Owen,<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">While you are doing this and cleaning up liveintervals. Can you add<br></blockquote><blockquote type="cite">helper function to liveinterval for creating copy intervals etc.?<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Evan<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">On Jun 4, 2008, at 10:55 AM, Owen Anderson wrote:<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">+<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">+  // Renumber the instructions so that we can perform the index<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">computations<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">+  // needed to create new live intervals.<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">+  LI.computeNumbering();<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">+<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">+  // For copies that we inserted at the ends of predecessors, we<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">construct<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">+  // live intervals.  This is pretty easy, since we know that the<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">destination<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">+  // register cannot have be in live at that point previously.  We<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">just have<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">+  // to make sure that, for registers that serve as inputs to more<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">than one<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">+  // PHI, we don't create multiple overlapping live intervals.<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">+  std::set<unsigned> RegHandled;<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">+  for (SmallVector<std::pair<unsigned, MachineInstr*>, 4>::iterator<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">I =<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">+       InsertedPHIDests.begin(), E = InsertedPHIDests.end(); I !=<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">E; ++I) {<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">+    if (!RegHandled.count(I->first)) {<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">+      LiveInterval& Interval = LI.getOrCreateInterval(I->first);<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">+      VNInfo* VN = Interval.getNextValue(<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">+          LI.getInstructionIndex(I->second) +<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">LiveIntervals::InstrSlots::DEF,<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">+                                         I->second,<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">LI.getVNInfoAllocator());<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">+      VN->hasPHIKill = true;<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">+      VN->kills.push_back(LI.getMBBEndIdx(I->second->getParent()));<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">+      LiveRange LR(LI.getInstructionIndex(I->second) +<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">+                      LiveIntervals::InstrSlots::DEF,<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">+                   LI.getMBBEndIdx(I->second->getParent()) + 1, VN);<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">+      Interval.addRange(LR);<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">+<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">+      RegHandled.insert(I->first);<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">+    }<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">+  }<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">}<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">/// InsertCopies - insert copies into MBB and all of its successors<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">_______________________________________________<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">llvm-commits mailing list<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br></blockquote></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">_______________________________________________<br></blockquote><blockquote type="cite">llvm-commits mailing list<br></blockquote><blockquote type="cite"><a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br></blockquote><blockquote type="cite"><a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br></blockquote><br>_______________________________________________<br>llvm-commits mailing list<br><a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br><a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br></div></blockquote></div><br></div></div></body></html>