- Mar 30, 2010
-
-
Benjamin Kramer authored
only a single type of object to be allocated. Use it to make VNInfo destruction typesafe. llvm-svn: 99919
-
- Feb 09, 2010
-
-
Chris Lattner authored
into TargetOpcodes.h. #include the new TargetOpcodes.h into MachineInstr. Add new inline accessors (like isPHI()) to MachineInstr, and start using them throughout the codebase. llvm-svn: 95687
-
- Jan 07, 2010
-
-
Benjamin Kramer authored
llvm-svn: 92938
-
- Jan 05, 2010
-
-
David Greene authored
llvm-svn: 92588
-
- Dec 28, 2009
-
-
Bill Wendling authored
llvm-svn: 92179
-
- Dec 22, 2009
-
-
Lang Hames authored
This fixes an in-place update bug where code inserted at the end of basic blocks may not be covered by existing intervals which were live across the entire block. It is also consistent with the way ranges are specified for live intervals. llvm-svn: 91859
-
- Dec 14, 2009
-
-
Lang Hames authored
Moved spill weight calculation out of SimpleRegisterCoalescing and into its own pass: CalculateSpillWeights. llvm-svn: 91273
-
- Dec 03, 2009
-
-
Chris Lattner authored
Patch by Howard Hinnant! llvm-svn: 90365
-
- Nov 14, 2009
-
-
Evan Cheng authored
- If destination is a physical register and it has a subreg index, use the sub-register instead. This fixes PR5423. llvm-svn: 88745
-
Lang Hames authored
PreAllocSplitting is now using this API to insert code. llvm-svn: 88725
-
- Nov 12, 2009
-
-
David Greene authored
Add a bool flag to StackObjects telling whether they reference spill slots. The AsmPrinter will use this information to determine whether to print a spill/reload comment. Remove default argument values. It's too easy to pass a wrong argument value when multiple arguments have default values. Make everything explicit to trap bugs early. Update all targets to adhere to the new interfaces.. llvm-svn: 87022
-
Lang Hames authored
Fixed an iteration condition in PreAllocSplitting. This should fix some miscompilations casued by PreAllocSplitting. llvm-svn: 86919
-
- Nov 10, 2009
-
-
Jeffrey Yasskin authored
This patch forbids implicit conversion of DenseMap::const_iterator to DenseMap::iterator which was possible because DenseMapIterator inherited (publicly) from DenseMapConstIterator. Conversion the other way around is now allowed as one may expect. The template DenseMapConstIterator is removed and the template parameter IsConst which specifies whether the iterator is constant is added to DenseMapIterator. Actually IsConst parameter is not necessary since the constness can be determined from KeyT but this is not relevant to the fix and can be addressed later. Patch by Victor Zverovich! llvm-svn: 86636
-
- Nov 09, 2009
-
-
Evan Cheng authored
llvm-svn: 86521
-
- Nov 04, 2009
-
-
Lang Hames authored
This introduces a new pass, SlotIndexes, which is responsible for numbering instructions for register allocation (and other clients). SlotIndexes numbering is designed to match the existing scheme, so this patch should not cause any changes in the generated code. For consistency, and to avoid naming confusion, LiveIndex has been renamed SlotIndex. The processImplicitDefs method of the LiveIntervals analysis has been moved into its own pass so that it can be run prior to SlotIndexes. This was necessary to match the existing numbering scheme. llvm-svn: 85979
-
- Oct 25, 2009
-
-
Nick Lewycky authored
Chris claims we should never have visibility_hidden inside any .cpp file but that's still not true even after this commit. llvm-svn: 85042
-
- Oct 20, 2009
-
-
Lang Hames authored
llvm-svn: 84682
-
Lang Hames authored
llvm-svn: 84681
-
- Oct 17, 2009
-
-
Evan Cheng authored
Distinquish stack slots from other stack objects. They (and fixed objects) get FixedStack PseudoSourceValues. llvm-svn: 84326
-
- Oct 09, 2009
-
-
Evan Cheng authored
llvm-svn: 83608
-
Evan Cheng authored
llvm-svn: 83589
-
- Oct 03, 2009
-
-
Lang Hames authored
llvm-svn: 83255
-
Lang Hames authored
llvm-svn: 83254
-
- Sep 09, 2009
-
-
Lang Hames authored
Removed static qualifier from a few index related methods. These methods may require a LiveIntervals instance in future. llvm-svn: 81374
-
- Sep 04, 2009
-
-
Lang Hames authored
a new class, MachineInstrIndex, which hides arithmetic details from most clients. This is a step towards allowing the register allocator to update/insert code during allocation. llvm-svn: 81040
-
- Aug 23, 2009
-
-
Chris Lattner authored
update all code that this affects. llvm-svn: 79830
-
- Aug 11, 2009
-
-
Lang Hames authored
Modified VNInfo. The "copy" member is now a union which holds the copy for a register interval, or the defining register for a stack interval. Access is via getCopy/setCopy and getReg/setReg. llvm-svn: 78620
-
- Aug 01, 2009
-
-
Dan Gohman authored
llvm-svn: 77754
-
- Jul 16, 2009
-
-
Evan Cheng authored
Avoid remat'ing instructions whose def have sub-register indices for now. It's just really really hard to get all the cases right. llvm-svn: 75900
-
- Jul 12, 2009
-
-
Torok Edwin authored
llvm-svn: 75423
-
- Jul 11, 2009
-
-
Torok Edwin authored
and abort()/exit() -> llvm_report_error(). llvm-svn: 75363
-
- Jul 09, 2009
-
-
Lang Hames authored
as an (index,bool) pair. The bool flag records whether the kill is a PHI kill or not. This code will be used to enable splitting of live intervals containing PHI-kills. A slight change to live interval weights introduced an extra spill into lsr-code-insertion (outside the critical sections). The test condition has been updated to reflect this. llvm-svn: 75097
-
- Jun 17, 2009
-
-
Lang Hames authored
llvm-svn: 73634
-
- May 03, 2009
-
-
Evan Cheng authored
In some rare cases, the register allocator can spill registers but end up not utilizing registers at all. The fundamental problem is linearscan's backtracking can end up freeing more than one allocated registers. However, reloads and restores might be folded into uses / defs and freed registers might not be used at all. VirtRegMap keeps track of allocations so it knows what's not used. As a horrible hack, the stack coloring can color spill slots with *free* registers. That is, it replace reload and spills with copies from and to the free register. It unfold instructions that load and store the spill slot and replace them with register using variants. Not yet enabled. This is part 1. More coming. llvm-svn: 70787
-
- Apr 09, 2009
-
-
Bob Wilson authored
register destinations that are tied to source operands. The TargetInstrDescr::findTiedToSrcOperand method silently fails for inline assembly. The existing MachineInstr::isRegReDefinedByTwoAddr was very close to doing what is needed, so this revision makes a few changes to that method and also renames it to isRegTiedToUseOperand (for consistency with the very similar isRegTiedToDefOperand and because it handles both two-address instructions and inline assembly with tied registers). llvm-svn: 68714
-
- Mar 31, 2009
-
-
Owen Anderson authored
Remove the "fast" cases for spill and restore point determination, as these were subtlely wrong in obscure cases. Patch the testcase to account for this change. llvm-svn: 68093
-
- Mar 14, 2009
-
-
Owen Anderson authored
useful with it at the moment, but it will in the future. llvm-svn: 67012
-
- Mar 05, 2009
-
-
Owen Anderson authored
llvm-svn: 66158
-
Owen Anderson authored
Be more careful about choosing restore points when doing restore folding. This fixes some subtle miscompilations. llvm-svn: 66147
-
- Mar 04, 2009
-
-
Owen Anderson authored
Add a restore folder, which shaves a dozen or so machineinstrs off oggenc. Update a testcase to check this. llvm-svn: 66029
-