[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-06-18 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.55 - 1.56 --- Log message: Properly remove duplicate instructions as result of diamond if-conversion. Other bug fixes. --- Diffs of the changes: (+176 -103) IfConversion.cpp | 279

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-06-18 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.56 - 1.57 --- Log message: Fix some fragile code wrt CFG edge updating. --- Diffs of the changes: (+39 -74) IfConversion.cpp | 113 ++- 1 files changed, 39 insertions(+),

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-06-18 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.57 - 1.58 --- Log message: Replace TargetInstrInfo::CanBeDuplicated() with a M_NOT_DUPLICABLE bit. --- Diffs of the changes: (+2 -2) IfConversion.cpp |4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) Index:

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-06-16 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.54 - 1.55 --- Log message: Really turn if-converter loose: 1. Consider all possible ifcvt cases at once. No longer restricted to bottom up iterative approach. 2. Sort all possible cases based on a cost function. Perform the

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-06-15 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.51 - 1.52 --- Log message: Extra edges are deleted later if needed. --- Diffs of the changes: (+0 -1) IfConversion.cpp |1 - 1 files changed, 1 deletion(-) Index: llvm/lib/CodeGen/IfConversion.cpp diff -u

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp MachineInstr.cpp

2007-06-15 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.52 - 1.53 MachineInstr.cpp updated: 1.151 - 1.152 --- Log message: MachineInstr::isPredicable() is no longer needed. --- Diffs of the changes: (+5 -10) IfConversion.cpp | 11 +-- MachineInstr.cpp |4 2

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-06-15 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.53 - 1.54 --- Log message: Not every predicable block can be safely duplicated. --- Diffs of the changes: (+35 -8) IfConversion.cpp | 43 +++ 1 files changed, 35 insertions(+), 8

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-06-14 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.46 - 1.47 --- Log message: Fix some stupid bugs that have effectively disabled if-conversion. --- Diffs of the changes: (+7 -1) IfConversion.cpp |8 +++- 1 files changed, 7 insertions(+), 1 deletion(-) Index:

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-06-14 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.47 - 1.48 --- Log message: Fix typo. --- Diffs of the changes: (+1 -1) IfConversion.cpp |2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm/lib/CodeGen/IfConversion.cpp diff -u

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-06-14 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.48 - 1.49 --- Log message: If BB is predicated, invalidate its predecessor(s) which would if-convert it. It needs to be re-analyzed. --- Diffs of the changes: (+7 -3) IfConversion.cpp | 10 +++--- 1 files changed, 7

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-06-14 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.49 - 1.50 --- Log message: No really, clear predcessors states. --- Diffs of the changes: (+8 -7) IfConversion.cpp | 15 --- 1 files changed, 8 insertions(+), 7 deletions(-) Index:

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-06-11 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.43 - 1.44 --- Log message: Restructure code to reduce ifcvt compile time cost. --- Diffs of the changes: (+193 -155) IfConversion.cpp | 348 ++- 1 files changed, 193

Re: [llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-06-09 Thread Evan Cheng
Perhaps. Will take a look. Thx. Evan On Jun 8, 2007, at 3:10 PM, Dale Johannesen wrote: On Jun 8, 2007, at 3:01 PM, Evan Cheng wrote: +/// RemoveExtraEdges - Remove true / false edges if either / both are no longer +/// successors. This does pretty much the same thing as

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-06-09 Thread Reid Spencer
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.42 - 1.43 --- Log message: Fix the build. --- Diffs of the changes: (+2 -1) IfConversion.cpp |3 ++- 1 files changed, 2 insertions(+), 1 deletion(-) Index: llvm/lib/CodeGen/IfConversion.cpp diff -u

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-06-08 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.37 - 1.38 --- Log message: Allow more cmp / bcc to be predicated; clean up triangle ifcvt checking code. --- Diffs of the changes: (+135 -144) IfConversion.cpp | 279 ++-

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-06-08 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.38 - 1.39 --- Log message: Hidden options to help debugging ifcvt issues. --- Diffs of the changes: (+32 -2) IfConversion.cpp | 34 -- 1 files changed, 32 insertions(+), 2 deletions(-)

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-06-08 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.39 - 1.40 --- Log message: Correct transfer predicate information. --- Diffs of the changes: (+6 -8) IfConversion.cpp | 14 ++ 1 files changed, 6 insertions(+), 8 deletions(-) Index:

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-06-08 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.40 - 1.41 --- Log message: Carefully remove extraneous CFG edges after each ifcvt. --- Diffs of the changes: (+51 -24) IfConversion.cpp | 75 +-- 1 files changed, 51

Re: [llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-06-08 Thread Dale Johannesen
On Jun 8, 2007, at 3:01 PM, Evan Cheng wrote: +/// RemoveExtraEdges - Remove true / false edges if either / both are no longer +/// successors. This does pretty much the same thing as CorrectExtraCFGEdges in BranchFolding.cpp, although I'm sure there are subtleties. Can we combine them?

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-06-08 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.41 - 1.42 --- Log message: Don't change CFG during analysis stage. Do so during ifcvt and invalidate predecessors accordingly. --- Diffs of the changes: (+106 -56) IfConversion.cpp | 162

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-06-07 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.35 - 1.36 --- Log message: ifcvt a triangle: don't merge ifcvt block with rejoin block if it can fall through to it. If merged, the resulting block is not a candidate for iterative ifcvting since it contains both predicated

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-06-06 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.32 - 1.33 --- Log message: Lots of bug fixes. --- Diffs of the changes: (+76 -40) IfConversion.cpp | 116 --- 1 files changed, 76 insertions(+), 40 deletions(-) Index:

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-06-06 Thread Owen Anderson
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.33 - 1.34 --- Log message: Quick patch to fix the build, based on what it appears Evan meant to write. Evan, please check that this is in fact correct. --- Diffs of the changes: (+1 -1) IfConversion.cpp |2 +- 1 files

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-06-06 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.34 - 1.35 --- Log message: Lots of bug fixes. Now finally in a reasonable state. --- Diffs of the changes: (+104 -78) IfConversion.cpp | 182 +++ 1 files changed, 104

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-06-05 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.25 - 1.26 --- Log message: I had a senior moment. --- Diffs of the changes: (+4 -3) IfConversion.cpp |7 --- 1 files changed, 4 insertions(+), 3 deletions(-) Index: llvm/lib/CodeGen/IfConversion.cpp diff -u

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-06-05 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.26 - 1.27 --- Log message: Do not ifcvt if either true / false path is a backedge. Not profitable in almost all cases. --- Diffs of the changes: (+3 -0) IfConversion.cpp |3 +++ 1 files changed, 3 insertions(+)

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-06-05 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.27 - 1.28 --- Log message: ReplaceUsesOfBlockWith() can modify the predecessors list. --- Diffs of the changes: (+4 -3) IfConversion.cpp |7 --- 1 files changed, 4 insertions(+), 3 deletions(-) Index:

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-06-05 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.28 - 1.29 --- Log message: Fix diamond shape ifcvt bugs. --- Diffs of the changes: (+41 -61) IfConversion.cpp | 102 ++- 1 files changed, 41 insertions(+), 61

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-06-05 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.29 - 1.30 --- Log message: Fix a couple of typos and be smarter about order of blocks when ifcvt a diamond. --- Diffs of the changes: (+30 -17) IfConversion.cpp | 47 ++- 1

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-06-05 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.30 - 1.31 --- Log message: Minor statistics counting bug. --- Diffs of the changes: (+5 -3) IfConversion.cpp |8 +--- 1 files changed, 5 insertions(+), 3 deletions(-) Index: llvm/lib/CodeGen/IfConversion.cpp diff

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-06-05 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.31 - 1.32 --- Log message: If a unconditional branch is added to branch to the false path during ifcvt, the predicated block cannot be iteratively ifcvted. --- Diffs of the changes: (+33 -6) IfConversion.cpp | 39

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-06-04 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.21 - 1.22 --- Log message: Let IfConverter loose. Allow more aggressive subsumptions; reorder basic blocks to expose more ifcvt opportunities; code clean up and fixes. --- Diffs of the changes: (+264 -196) IfConversion.cpp

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-06-04 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.22 - 1.23 --- Log message: Forgot to check for if iterator reached the end. --- Diffs of the changes: (+2 -1) IfConversion.cpp |3 ++- 1 files changed, 2 insertions(+), 1 deletion(-) Index:

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-06-04 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.23 - 1.24 --- Log message: Fix some subtle bugs: bug during succeessor copying; incorrectly updating states of ifcvted blocks. --- Diffs of the changes: (+19 -20) IfConversion.cpp | 39

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-06-04 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.24 - 1.25 --- Log message: If the predicated block requires an early exit, end the block there and add a unconditional branch to false block. AnalyzeBranch() does not understand early exits. --- Diffs of the changes: (+3

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-06-01 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.19 - 1.20 --- Log message: Ifcvt triangle: don't ifcvt 'true' BB if it has other predecessors; don't merge 'false' BB if it has other predecessors. --- Diffs of the changes: (+18 -3) IfConversion.cpp | 21

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-05-31 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.16 - 1.17 --- Log message: Fix a typo. --- Diffs of the changes: (+1 -1) IfConversion.cpp |2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm/lib/CodeGen/IfConversion.cpp diff -u

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-05-31 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.17 - 1.18 --- Log message: Allow multiple ifcvt candidates to share children blocks; add some debugging code. --- Diffs of the changes: (+20 -7) IfConversion.cpp | 27 --- 1 files changed, 20

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-05-31 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.18 - 1.19 --- Log message: Remove a bogus check. Even terminators in a ifcvt need to be predicated. Unconditional branches can usually be converted to conditional ones. --- Diffs of the changes: (+1 -3) IfConversion.cpp |

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-05-30 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.15 - 1.16 --- Log message: Change traversal order to bottom up in preparation for more aggressive if-conversion. --- Diffs of the changes: (+69 -23) IfConversion.cpp | 92

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-05-29 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.13 - 1.14 --- Log message: If there is an empty block between a source and its successor block, it still requires a unconditional branch. --- Diffs of the changes: (+37 -30) IfConversion.cpp | 67

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-05-29 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.14 - 1.15 --- Log message: Don't merge in tail block of a diamond if it has more than one predecessors after if-conversion. --- Diffs of the changes: (+4 -2) IfConversion.cpp |6 -- 1 files changed, 4

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-05-24 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.12 - 1.13 --- Log message: Silly boog. --- Diffs of the changes: (+9 -9) IfConversion.cpp | 18 +- 1 files changed, 9 insertions(+), 9 deletions(-) Index: llvm/lib/CodeGen/IfConversion.cpp diff -u

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-05-23 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.11 - 1.12 --- Log message: Preliminary iterative if-conversion support. --- Diffs of the changes: (+166 -96) IfConversion.cpp | 262 ++- 1 files changed, 166

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-05-21 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.10 - 1.11 --- Log message: If-convert early exit blocks (returns, etc.); bug fixes, etc. --- Diffs of the changes: (+226 -141) IfConversion.cpp | 367 +-- 1 files

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-05-18 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.6 - 1.7 --- Log message: Watch out for blocks that end with a return. --- Diffs of the changes: (+2 -2) IfConversion.cpp |4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) Index:

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-05-18 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.7 - 1.8 --- Log message: Some restructuring in preparation for most aggressive if-conversion. --- Diffs of the changes: (+71 -40) IfConversion.cpp | 111 +++ 1 files

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-05-18 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.8 - 1.9 --- Log message: Change to depth-first traversal. --- Diffs of the changes: (+22 -11) IfConversion.cpp | 33 ++--- 1 files changed, 22 insertions(+), 11 deletions(-) Index:

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-05-18 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.9 - 1.10 --- Log message: Clean up. --- Diffs of the changes: (+5 -5) IfConversion.cpp | 10 +- 1 files changed, 5 insertions(+), 5 deletions(-) Index: llvm/lib/CodeGen/IfConversion.cpp diff -u

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-05-17 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.4 - 1.5 --- Log message: Make use of target specific block size limits; bug fixes. --- Diffs of the changes: (+149 -64) IfConversion.cpp | 213 ++- 1 files changed, 149

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-05-17 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.5 - 1.6 --- Log message: If true / false blocks fallthrough before ifcvt, add unconditional branches to ifcvt'd block. --- Diffs of the changes: (+19 -4) IfConversion.cpp | 23 +++ 1 files changed, 19

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-05-16 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.2 - 1.3 --- Log message: Rename M_PREDICATED to M_PREDICABLE; Moved isPredicable() to MachineInstr. --- Diffs of the changes: (+12 -12) IfConversion.cpp | 24 1 files changed, 12 insertions(+), 12

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-05-15 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: IfConversion.cpp added (r1.1) --- Log message: Initial commit of (very basic) if converter. --- Diffs of the changes: (+304 -0) IfConversion.cpp | 304 +++ 1 files changed, 304 insertions(+)

Re: [llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-05-15 Thread Devang Patel
On May 15, 2007, at 7:01 PM, Evan Cheng wrote: + if (!BBI.FBB) + BBI.FBB = findFalseBlock(BB, BBI.TBB); + AnalyzeBlock(BBI.FBB); + BBInfo FBBI = BBAnalysis[BBI.FBB-getNumber()]; If findFalseBlock returns NULL then AnalyzeBlock may crash here. -

Re: [llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-05-15 Thread Evan Cheng
It shouldn't. :-) I am missing an assert. This check earlier ensures that the block ends with either a conditional branch or a conditional branch + a unconditional branch. if (TII-AnalyzeBranch(*BB, BBI.TBB, BBI.FBB, BBI.Cond) || !BBI.TBB || BBI.Cond.size() == 0) BBI.FBB is only NULL

Re: [llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-05-15 Thread Evan Cheng
Unless I am reading the code wrong... :-) Evan On May 15, 2007, at 10:09 PM, Evan Cheng wrote: It shouldn't. :-) I am missing an assert. This check earlier ensures that the block ends with either a conditional branch or a conditional branch + a unconditional branch. if

[llvm-commits] CVS: llvm/lib/CodeGen/IfConversion.cpp

2007-05-15 Thread Evan Cheng
Changes in directory llvm/lib/CodeGen: IfConversion.cpp updated: 1.1 - 1.2 --- Log message: Devang points out that we need an assertion here. --- Diffs of the changes: (+2 -0) IfConversion.cpp |2 ++ 1 files changed, 2 insertions(+) Index: llvm/lib/CodeGen/IfConversion.cpp diff -u