Gitiles
Code Review
Sign In
gerrit-public.fairphone.software
/
fp2-dev
/
platform
/
external
/
llvm
/
e37e24331c6fb3e83d5fb0c9ce31be619359a52a
/
lib
/
CodeGen
/
IfConversion.cpp
e37e243
If BB is predicated, invalidate its predecessor(s) which would if-convert it. It needs to be re-analyzed.
by Evan Cheng
· 18 years ago
b7c908b
Fix typo.
by Evan Cheng
· 18 years ago
86ff296
Fix some stupid bugs that have effectively disabled if-conversion.
by Evan Cheng
· 18 years ago
93a8e5e
Typo
by Evan Cheng
· 18 years ago
cc8fb46
Now if-converting all 4 variants of triangles.
by Evan Cheng
· 18 years ago
9618bca
Restructure code to reduce ifcvt compile time cost.
by Evan Cheng
· 18 years ago
a9bf49c
Fix the build.
by Reid Spencer
· 18 years ago
1c9f91d
Don't change CFG during analysis stage. Do so during ifcvt and invalidate predecessors accordingly.
by Evan Cheng
· 18 years ago
7e75ba8
Carefully remove extraneous CFG edges after each ifcvt.
by Evan Cheng
· 18 years ago
2acdbcc
Correct transfer predicate information.
by Evan Cheng
· 18 years ago
edf4896
Hidden options to help debugging ifcvt issues.
by Evan Cheng
· 18 years ago
ac5f142
Allow more cmp / bcc to be predicated; clean up triangle ifcvt checking code.
by Evan Cheng
· 18 years ago
27af5c4
Only remove the edge from entry to false if false block is merged.
by Evan Cheng
· 18 years ago
f476961
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 and non-predicated code.
by Evan Cheng
· 18 years ago
d4de6d9
Lots of bug fixes. Now finally in a reasonable state.
by Evan Cheng
· 18 years ago
96dd9a8
Quick patch to fix the build, based on what it appears Evan meant to write.
by Owen Anderson
· 18 years ago
7a65547
Lots of bug fixes.
by Evan Cheng
· 18 years ago
3d6f60e
If a unconditional branch is added to branch to the false path during ifcvt, the predicated block cannot be iteratively ifcvted.
by Evan Cheng
· 18 years ago
cb78d67
Minor statistics counting bug.
by Evan Cheng
· 18 years ago
e705213
Fix a couple of typos and be smarter about order of blocks when ifcvt a diamond.
by Evan Cheng
· 18 years ago
993fc95
Fix diamond shape ifcvt bugs.
by Evan Cheng
· 18 years ago
a1a9f40
ReplaceUsesOfBlockWith() can modify the predecessors list.
by Evan Cheng
· 18 years ago
e004317
Do not ifcvt if either true / false path is a backedge. Not profitable in almost all cases.
by Evan Cheng
· 18 years ago
c53ef58
I had a senior moment.
by Evan Cheng
· 18 years ago
8ed680c
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.
by Evan Cheng
· 18 years ago
f5305f9
Fix some subtle bugs: bug during succeessor copying; incorrectly updating states of ifcvted blocks.
by Evan Cheng
· 18 years ago
3ec4254
Forgot to check for if iterator reached the end.
by Evan Cheng
· 18 years ago
b6665f6
Let IfConverter loose. Allow more aggressive subsumptions; reorder basic blocks to expose more ifcvt opportunities; code clean up and fixes.
by Evan Cheng
· 18 years ago
b5a0690
Correctly mark early-exit on the false path.
by Evan Cheng
· 18 years ago
8c52938
Ifcvt triangle: don't ifcvt 'true' BB if it has other predecessors; don't merge 'false' BB if it has other predecessors.
by Evan Cheng
· 18 years ago
fe57a7e
Remove a bogus check. Even terminators in a ifcvt need to be predicated. Unconditional branches can usually be converted to conditional ones.
by Evan Cheng
· 18 years ago
5f70218
Allow multiple ifcvt candidates to share children blocks; add some debugging code.
by Evan Cheng
· 18 years ago
f15d44c
Fix a typo.
by Evan Cheng
· 18 years ago
8258210
Change traversal order to bottom up in preparation for more aggressive if-conversion.
by Evan Cheng
· 18 years ago
58fbb9f
Don't merge in tail block of a diamond if it has more than one predecessors after if-conversion.
by Evan Cheng
· 18 years ago
c8ed9ba
If there is an empty block between a source and its successor block, it still requires a unconditional branch.
by Evan Cheng
· 18 years ago
4bec8ae
Silly boog.
by Evan Cheng
· 18 years ago
a13aa95
Preliminary iterative if-conversion support.
by Evan Cheng
· 18 years ago
a6b4f43
If-convert early exit blocks (returns, etc.); bug fixes, etc.
by Evan Cheng
· 18 years ago
7f8ff8a
Clean up.
by Evan Cheng
· 18 years ago
36489bb
Change to depth-first traversal.
by Evan Cheng
· 18 years ago
cf6cc11
Some restructuring in preparation for most aggressive if-conversion.
by Evan Cheng
· 18 years ago
6092ca1
Watch out for blocks that end with a return.
by Evan Cheng
· 18 years ago
47d2502
If true / false blocks fallthrough before ifcvt, add unconditional branches to ifcvt'd block.
by Evan Cheng
· 18 years ago
86cbfea
Make use of target specific block size limits; bug fixes.
by Evan Cheng
· 18 years ago
d6ddc30
isBlockPredicable() always ignore terminal instructions; add comments.
by Evan Cheng
· 18 years ago
c3a289c
Rename M_PREDICATED to M_PREDICABLE; Moved isPredicable() to MachineInstr.
by Evan Cheng
· 18 years ago
c5d05ef
Devang points out that we need an assertion here.
by Evan Cheng
· 18 years ago
4e65485
Initial commit of (very basic) if converter.
by Evan Cheng
· 18 years ago