#
d599dcd7 |
| 04-Jan-2010 |
David Greene <greened@obbligato.org> |
Change errs() to dbgs().
llvm-svn: 92532
|
#
defc4708 |
| 01-Dec-2009 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Move PHIElimination::isLiveOut method to LiveVariables.
We want LiveVariables clients to use methods rather than accessing the getVarInfo data structure directly. That way it will be possible to cha
Move PHIElimination::isLiveOut method to LiveVariables.
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
show more ...
|
#
1d31fc91 |
| 01-Dec-2009 |
Evan Cheng <evan.cheng@apple.com> |
Fix PR5614: parts of a physical register def may be killed the rest.
llvm-svn: 90180
|
#
bc630aca |
| 21-Nov-2009 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Be more clever about calculating live variables through new basic blocks.
When splitting a critical edge, the registers live through the edge are:
- Used in a PHI instruction, or - Live out from th
Be more clever about calculating live variables through new basic blocks.
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
show more ...
|
#
d190b821 |
| 13-Nov-2009 |
Evan Cheng <evan.cheng@apple.com> |
Fix PR5410: LiveVariables lost subreg def:
D0<def,dead> = ... ... = S0<use, kill> S0<def> = ... ... D0<def> =
The first D0 def is correctly marked dead, however, livevariabl
Fix PR5410: LiveVariables lost subreg def:
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
show more ...
|
#
4f7fd3ba |
| 11-Nov-2009 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Fix liveness calculation when splitting critical edges during PHI elimination.
- Edges are split before any phis are eliminated, so the code is SSA.
- Create a proper IR BasicBlock for the split ed
Fix liveness calculation when splitting critical edges during PHI elimination.
- 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
show more ...
|
#
4453dc97 |
| 10-Nov-2009 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Teach PHIElimination to split critical edges when -split-phi-edges is enabled.
Critical edges leading to a PHI node are split when the PHI source variable is live out from the predecessor block. Thi
Teach PHIElimination to split critical edges when -split-phi-edges is enabled.
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
show more ...
|
Revision tags: llvmorg-2.6.0 |
|
#
2f61e094 |
| 14-Oct-2009 |
Evan Cheng <evan.cheng@apple.com> |
When LiveVariables is adding implicit-def to model "partial dead", add the earlyclobber marker if the superreg def has it.
llvm-svn: 84153
|
#
a21aac38 |
| 24-Sep-2009 |
Evan Cheng <evan.cheng@apple.com> |
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 ac
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
show more ...
|
#
262f86ed |
| 23-Sep-2009 |
Evan Cheng <evan.cheng@apple.com> |
Fix PR5024. LiveVariables physical register defs should *commit* only after all of the defs are processed. Also fix a implicit_def propagation bug: a implicit_def of a physical register should be app
Fix PR5024. LiveVariables physical register defs should *commit* only after all 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
show more ...
|
#
08d1e41c |
| 22-Sep-2009 |
Evan Cheng <evan.cheng@apple.com> |
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
|
#
30ebdc43 |
| 23-Aug-2009 |
Chris Lattner <sabre@nondot.org> |
remove the last uses of Config/alloca.h
llvm-svn: 79873
|
#
a6f074fb |
| 23-Aug-2009 |
Chris Lattner <sabre@nondot.org> |
remove various std::ostream version of printing methods from MachineInstr and MachineOperand. This required eliminating a bunch of stuff that was using DOUT, I hope that bill doesn't mind me stealin
remove various std::ostream version of printing methods from 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
show more ...
|
#
5ea74d55 |
| 31-Jul-2009 |
Dan Gohman <gohman@apple.com> |
Reapply r77654 with a fix: MachineFunctionPass's getAnalysisUsage shouldn't do AU.setPreservesCFG(), because even though CodeGen passes don't modify the LLVM IR CFG, they may modify the MachineFuncti
Reapply r77654 with a fix: MachineFunctionPass's getAnalysisUsage 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
show more ...
|
#
54347565 |
| 31-Jul-2009 |
Daniel Dunbar <daniel@zuster.org> |
Revert r77654, it appears to be causing llvm-gcc bootstrap failures, and many failures when building assorted projects with clang.
--- Reverse-merging r77654 into '.': U include/llvm/CodeGen/Pass
Revert r77654, it appears to be causing llvm-gcc bootstrap failures, and many 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
show more ...
|
#
bcb44baa |
| 31-Jul-2009 |
Dan Gohman <gohman@apple.com> |
Manage MachineFunctions with an analysis Pass instead of the Annotable mechanism. To support this, make MachineFunctionPass a little more complete.
llvm-svn: 77654
|
#
ba2410b7 |
| 06-Jul-2009 |
Evan Cheng <evan.cheng@apple.com> |
Avoid adding a duplicate def. This fixes PR4478.
llvm-svn: 74857
|
#
c6a8d0db |
| 20-Jun-2009 |
Evan Cheng <evan.cheng@apple.com> |
Fix PR4419: handle defs of partial uses.
llvm-svn: 73816
|
#
d29fc665 |
| 03-Jun-2009 |
Evan Cheng <evan.cheng@apple.com> |
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. Appar
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
show more ...
|
#
7d287cb7 |
| 26-May-2009 |
Jeffrey Yasskin <jyasskin@google.com> |
LiveVariables::VarInfo contains an AliveBlocks BitVector, which has as many entries as there are basic blocks in the function. LiveVariables::getVarInfo creates a VarInfo struct for every register i
LiveVariables::VarInfo contains an AliveBlocks BitVector, which has as many 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
show more ...
|
#
7061ee96 |
| 26-May-2009 |
Evan Cheng <evan.cheng@apple.com> |
Eliminate VarInfo::UsedBlocks.
llvm-svn: 72411
|
Revision tags: llvmorg-2.5.0 |
|
#
f1e873a2 |
| 20-Jan-2009 |
Evan Cheng <evan.cheng@apple.com> |
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 inst
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
show more ...
|
#
cb181bb2 |
| 21-Nov-2008 |
Devang Patel <dpatel@apple.com> |
Silence unused variable warnings.
llvm-svn: 59841
|
#
8fed4ce0 |
| 13-Nov-2008 |
Dan Gohman <gohman@apple.com> |
Use find_first/find_next to iterate through all the set bits in a BitVector, instead of manually testing each bit.
llvm-svn: 59246
|
Revision tags: llvmorg-2.4.0 |
|
#
0d1e9a8e |
| 03-Oct-2008 |
Dan Gohman <gohman@apple.com> |
Switch the MachineOperand accessors back to the short names like isReg, etc., from isRegister, etc.
llvm-svn: 57006
|