- Aug 17, 2010
-
-
Evan Cheng authored
PHI elimination shouldn't require machineloopinfo since it's used at -O0. Move the requirement to LiveIntervalAnalysis instead. Note this does not change the number of times machineloopinfo is computed. llvm-svn: 111285
-
Evan Cheng authored
Move the decision logic whether it's a good idea to split a critical edge to clients. Also fixed an erroneous check. An edge is only a back edge when the from and to blocks are in the same loop. llvm-svn: 111256
-
- Aug 06, 2010
-
-
Owen Anderson authored
llvm-svn: 110460
-
Owen Anderson authored
llvm-svn: 110410
-
Owen Anderson authored
ID member as the sole unique type identifier. Clean up APIs related to this change. llvm-svn: 110396
-
- May 05, 2010
-
-
Evan Cheng authored
llvm-svn: 103109
-
- May 04, 2010
-
-
Evan Cheng authored
Teach PHI elimination to remove REG_SEQUENCE instructions and update references of the source operands with references of the destination with subreg indices. e.g. %reg1029<def>, %reg1030<def> = VLD1q16 %reg1024<kill>, ... %reg1031<def> = REG_SEQUENCE %reg1029<kill>, 5, %reg1030<kill>, 6 => %reg1031:5<def>, %reg1031:6<def> = VLD1q16 %reg1024<kill>, ... PHI elimination now does more than phi elimination. It is really a de-SSA pass. llvm-svn: 103039
-
- Mar 04, 2010
-
-
Evan Cheng authored
llvm-svn: 97687
-
- Feb 23, 2010
-
-
Jakob Stoklund Olesen authored
llvm-svn: 96837
-
- Feb 17, 2010
-
-
Jakob Stoklund Olesen authored
llvm-svn: 96496
-
- Feb 16, 2010
-
-
Dale Johannesen authored
elimination. Before a DBG_VALUE could affect codegen. The solution here is imperfect and not final. llvm-svn: 96318
-
- 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
-
- Dec 16, 2009
-
-
Jakob Stoklund Olesen authored
Tail duplication produces lots of identical phi nodes in different basic blocks. Teach PHIElimination to reuse the join registers when lowering a phi node that is identical to an already lowered node. This saves virtual registers, and more importantly it avoids creating copies the the coalescer doesn't know how to eliminate. Teach LiveIntervalAnalysis about the phi joins with multiple uses. This patch significantly reduces code size produced by -pre-regalloc-taildup. llvm-svn: 91549
-
- 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
-
- 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 18, 2009
-
-
Jakob Stoklund Olesen authored
when LiveVariables is available. The -split-phi-edges is now gone, and so is the hack to disable it when using the local register allocator. The PHIElimination pass no longer has LiveVariables as a prerequisite - that is what broke the local allocator. Instead we do critical edge splitting when possible - that is when LiveVariables is available. llvm-svn: 89213
-
- Nov 13, 2009
-
-
Jakob Stoklund Olesen authored
The BasicBlock associated with a MachineBasicBlock does not necessarily correspond to the code in the MBB. Don't insert a new IR BasicBlock when splitting critical edges. We are not supposed to modify the IR during codegen, and we should be able to do just fine with a NULL BB. llvm-svn: 88707
-
- 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
-
Jakob Stoklund Olesen authored
Clean up some whitespace. No functional changes. llvm-svn: 86724
-
- Sep 04, 2009
-
-
Evan Cheng authored
llvm-svn: 80993
-
- Jul 23, 2009
-
-
Lang Hames authored
llvm-svn: 76849
-
- Jul 22, 2009
-
-
Lang Hames authored
llvm-svn: 76688
-