- Mar 08, 2011
-
-
Benjamin Kramer authored
llvm-svn: 127254
-
- Jan 09, 2011
-
-
Jakob Stoklund Olesen authored
Provide MRI::getNumVirtRegs() and TRI::index2VirtReg() functions to allow iteration over virtual registers without depending on the representation of virtual register numbers. llvm-svn: 123098
-
- Oct 12, 2010
-
-
Owen Anderson authored
perform initialization without static constructors AND without explicit initialization by the client. For the moment, passes are required to initialize both their (potential) dependencies and any passes they preserve. I hope to be able to relax the latter requirement in the future. llvm-svn: 116334
-
- Oct 08, 2010
-
-
Owen Anderson authored
llvm-svn: 115996
-
- Aug 16, 2010
-
-
Jakob Stoklund Olesen authored
llvm-svn: 111156
-
- Jul 22, 2010
-
-
Owen Anderson authored
llvm-svn: 109045
-
- Jun 14, 2010
-
-
Chris Lattner authored
llvm-svn: 105942
-
- Jun 05, 2010
-
-
Dale Johannesen authored
I don't think this ever resulted in problems on x86, but it would on ARM. llvm-svn: 105509
-
- Apr 13, 2010
-
-
Dan Gohman authored
MachineBasicBlock::livein_iterator a const_iterator, because clients shouldn't ever be using the iterator interface to mutate the livein set. llvm-svn: 101147
-
- Mar 26, 2010
-
-
Evan Cheng authored
LiveVariables should clear kill / dead markers first. This allows us to remove a hack in the scheduler. llvm-svn: 99597
-
- Mar 05, 2010
-
-
Jakob Stoklund Olesen authored
CALL ... %RAX<imp-def> ... [not using %RAX] %EAX = ..., %RAX<imp-use, kill> RET %EAX<imp-use,kill> Now we do this: CALL ... %RAX<imp-def, dead> ... [not using %RAX] %EAX = ... RET %EAX<imp-use,kill> By not artificially keeping %RAX alive, we lower register pressure a bit. The correct number of instructions for 2008-08-05-SpillerBug.ll is obviously 55, anybody can see that. Sheesh. llvm-svn: 97838
-
- Feb 23, 2010
-
-
Jakob Stoklund Olesen authored
Previously, LiveIntervalAnalysis would infer phi joins by looking for multiply defined registers. That doesn't work if the phi join is implicitly defined in all but one of the predecessors. llvm-svn: 96994
-
- 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
-
Dale Johannesen authored
llvm-svn: 95647
-
- Jan 07, 2010
-
-
Benjamin Kramer authored
llvm-svn: 92919
-
- Jan 05, 2010
-
-
David Greene authored
Change errs() to dbgs(). llvm-svn: 92532
-
- Dec 01, 2009
-
-
Jakob Stoklund Olesen authored
We want LiveVariables clients to use methods rather than accessing the getVarInfo data structure directly. That way it will be possible to change the LiveVariables representation. llvm-svn: 90240
-
Evan Cheng authored
llvm-svn: 90180
-
- Nov 21, 2009
-
-
Jakob Stoklund Olesen authored
When splitting a critical edge, the registers live through the edge are: - Used in a PHI instruction, or - Live out from the predecessor, and - Live in to the successor. This allows the coalescer to eliminate even more phi joins. llvm-svn: 89530
-
- Nov 13, 2009
-
-
Evan Cheng authored
D0<def,dead> = ... ... = S0<use, kill> S0<def> = ... ... D0<def> = The first D0 def is correctly marked dead, however, livevariables should have added an implicit def of S0 or we end up with a use without a def. llvm-svn: 88690
-
- Nov 11, 2009
-
-
Jakob Stoklund Olesen authored
- Edges are split before any phis are eliminated, so the code is SSA. - Create a proper IR BasicBlock for the split edges. - LiveVariables::addNewBlock now has same syntax as MachineDominatorTree::addNewBlock. Algorithm calculates predecessor live-out set rather than successor live-in set. This feature still causes some miscompilations. llvm-svn: 86867
-
- Nov 10, 2009
-
-
Jakob Stoklund Olesen authored
Critical edges leading to a PHI node are split when the PHI source variable is live out from the predecessor block. This help the coalescer eliminate more PHI joins. llvm-svn: 86725
-
- Oct 15, 2009
-
-
Evan Cheng authored
When LiveVariables is adding implicit-def to model "partial dead", add the earlyclobber marker if the superreg def has it. llvm-svn: 84153
-
- Sep 24, 2009
-
-
Evan Cheng authored
Clean up LiveVariables and change how it deals with partial updates and kills. This also eliminate the horrible check which scan forward to the end of the basic block. It should be faster and more accurate. llvm-svn: 82676
-
- Sep 23, 2009
-
-
Evan Cheng authored
of the defs are processed. Also fix a implicit_def propagation bug: a implicit_def of a physical register should be applied to uses of the sub-registers. llvm-svn: 82616
-
- Sep 22, 2009
-
-
Evan Cheng authored
Fix PR5024. LiveVariables::FindLastPartialDef should return a set of sub-registers that were defined by the last partial def, not just a single sub-register. llvm-svn: 82535
-
- Aug 24, 2009
-
-
Chris Lattner authored
llvm-svn: 79873
-
- Aug 23, 2009
-
-
Chris Lattner authored
MachineInstr and MachineOperand. This required eliminating a bunch of stuff that was using DOUT, I hope that bill doesn't mind me stealing his fun. ;-) llvm-svn: 79813
-
- Jul 31, 2009
-
-
Dan Gohman authored
shouldn't do AU.setPreservesCFG(), because even though CodeGen passes don't modify the LLVM IR CFG, they may modify the MachineFunction CFG, and passes like MachineLoop are registered with isCFGOnly set to true. llvm-svn: 77691
-
Daniel Dunbar authored
failures when building assorted projects with clang. --- Reverse-merging r77654 into '.': U include/llvm/CodeGen/Passes.h U include/llvm/CodeGen/MachineFunctionPass.h U include/llvm/CodeGen/MachineFunction.h U include/llvm/CodeGen/LazyLiveness.h U include/llvm/CodeGen/SelectionDAGISel.h D include/llvm/CodeGen/MachineFunctionAnalysis.h U include/llvm/Function.h U lib/Target/CellSPU/SPUISelDAGToDAG.cpp U lib/Target/PowerPC/PPCISelDAGToDAG.cpp U lib/CodeGen/LLVMTargetMachine.cpp U lib/CodeGen/MachineVerifier.cpp U lib/CodeGen/MachineFunction.cpp U lib/CodeGen/PrologEpilogInserter.cpp U lib/CodeGen/MachineLoopInfo.cpp U lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp D lib/CodeGen/MachineFunctionAnalysis.cpp D lib/CodeGen/MachineFunctionPass.cpp U lib/CodeGen/LiveVariables.cpp llvm-svn: 77661
-
Dan Gohman authored
mechanism. To support this, make MachineFunctionPass a little more complete. llvm-svn: 77654
-
- Jul 06, 2009
-
-
Evan Cheng authored
llvm-svn: 74857
-
- Jun 20, 2009
-
-
Evan Cheng authored
llvm-svn: 73816
-
- Jun 03, 2009
-
-
Evan Cheng authored
If there is a def of a super-register followed by a use of a sub-register, do *not* add an implicit def of the sub-register. e.g. EAX = ..., AX<imp-def> ... = AX This creates a double-def. Apparently this used to be necessary but is no longer needed. Thanks to Anton for pointing this out. Anton, I cannot create a test case without your uncommitted ARM patches. Please check in a test case for me. llvm-svn: 72755
-
- May 26, 2009
-
-
Jeffrey Yasskin authored
entries as there are basic blocks in the function. LiveVariables::getVarInfo creates a VarInfo struct for every register in the function, leading to quadratic space use. This patch changes the BitVector to a SparseBitVector, which doesn't help the worst-case memory use but does reduce the actual use in very long functions with short-lived variables. llvm-svn: 72426
-
Evan Cheng authored
llvm-svn: 72411
-
- Jan 20, 2009
-
-
Evan Cheng authored
Fix PR3243: a LiveVariables bug. When HandlePhysRegKill is checking whether the last reference is also the last def (i.e. dead def), it should also check if last reference is the current machine instruction being processed. This can happen when it is processing a physical register use and setting the current machine instruction as sub-register's last ref. llvm-svn: 62617
-
- Nov 21, 2008
-
-
Devang Patel authored
llvm-svn: 59841
-
- Nov 13, 2008
-
-
Dan Gohman authored
BitVector, instead of manually testing each bit. llvm-svn: 59246
-
- Oct 03, 2008
-
-
Dan Gohman authored
isReg, etc., from isRegister, etc. llvm-svn: 57006
-