| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 90708
|
| |
|
|
|
|
| |
precisely, which prevents us from infinitely peeling the loop.
llvm-svn: 90211
|
| |
|
|
| |
llvm-svn: 88865
|
| |
|
|
| |
llvm-svn: 88864
|
| |
|
|
|
|
|
| |
which implements GCC PR18046. This also gets us 360 more
jump threads on 176.gcc.
llvm-svn: 86953
|
| |
|
|
| |
llvm-svn: 86952
|
| |
|
|
|
|
|
|
| |
making the new LVI stuff smart enough to subsume some special
cases in the old code. Disable them when LVI is around, the
testcase still passes.
llvm-svn: 86951
|
| |
|
|
|
|
| |
allows us to handle the test10 testcase.
llvm-svn: 86924
|
| |
|
|
| |
llvm-svn: 86923
|
| |
|
|
| |
llvm-svn: 86920
|
| |
|
|
|
|
| |
uses LVI info when -enable-jump-threading-lvi is passed.
llvm-svn: 86886
|
| |
|
|
|
|
|
|
| |
start using them in a trivial way when -enable-jump-threading-lvi
is passed. enable-jump-threading-lvi will be my playground for
awhile.
llvm-svn: 86789
|
| |
|
|
| |
llvm-svn: 86766
|
| |
|
|
| |
llvm-svn: 86739
|
| |
|
|
|
|
| |
into libanalysis and transformutils.
llvm-svn: 86735
|
| |
|
|
| |
llvm-svn: 86723
|
| |
|
|
|
|
|
|
| |
debug intrinsics, and an unconditional branch when possible. This
reuses the TryToSimplifyUncondBranchFromEmptyBlock function split
out of simplifycfg.
llvm-svn: 86722
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
just one level deep. On the testcase we go from getting this:
F1: ; preds = %T2
%F = and i1 true, %cond ; <i1> [#uses=1]
br i1 %F, label %X, label %Y
to a fully threaded:
F1: ; preds = %T2
br label %Y
This changes gets us to the point where we're forming (too many) switch
instructions on doug's strswitch testcase.
llvm-svn: 86646
|
| |
|
|
| |
llvm-svn: 86639
|
| |
|
|
|
|
|
|
| |
except that the result may not be a constant. Switch jump threading to
use it so that it gets things like (X & 0) -> 0, which occur when phi preds
are deleted and the remaining phi pred was a zero.
llvm-svn: 86637
|
| |
|
|
|
|
|
| |
Simplify[IF]Cmp pieces. Add some predicates to CmpInst to
determine whether a predicate is fp or int.
llvm-svn: 86624
|
| |
|
|
| |
llvm-svn: 86616
|
| |
|
|
|
|
|
| |
simplifies instruction users of PHIs when the phi is eliminated. This
will be moved to transforms/utils after some other refactoring.
llvm-svn: 86603
|
| |
|
|
| |
llvm-svn: 86497
|
| |
|
|
|
|
|
|
|
| |
(making pred factoring only happen if threading is guaranteed
to be successful).
This now survives an X86-64 bootstrap of llvm-gcc.
llvm-svn: 86355
|
| |
|
|
|
|
|
| |
86289, 86278, 86270, 86267, 86266 & 86264
Chris, please take a look.
llvm-svn: 86321
|
| |
|
|
| |
llvm-svn: 86314
|
| |
|
|
|
|
| |
set only once even if it has multiple edges to BB.
llvm-svn: 86299
|
| |
|
|
| |
llvm-svn: 86289
|
| |
|
|
| |
llvm-svn: 86278
|
| |
|
|
| |
llvm-svn: 86270
|
| |
|
|
| |
llvm-svn: 86267
|
| |
|
|
| |
llvm-svn: 86266
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
predicates. This allows us to jump thread things like:
_ZN12StringSwitchI5ColorE4CaseILj7EEERS1_RAT__KcRKS0_.exit119:
%tmp1.i24166 = phi i8 [ 1, %bb5.i117 ], [ %tmp1.i24165, %_Z....exit ], [ %tmp1.i24165, %bb4.i114 ]
%toBoolnot.i87 = icmp eq i8 %tmp1.i24166, 0 ; <i1> [#uses=1]
%tmp4.i90 = icmp eq i32 %tmp2.i, 6 ; <i1> [#uses=1]
%or.cond173 = and i1 %toBoolnot.i87, %tmp4.i90 ; <i1> [#uses=1]
br i1 %or.cond173, label %bb4.i96, label %_ZN12...
Where it is "obvious" that when coming from %bb5.i117 that the 'and' is always
false. This triggers a surprisingly high number of times in the testsuite,
and gets us closer to generating good code for doug's strswitch testcase.
This also make a bunch of other code in jump threading redundant, I'll rip
out in the next patch. This survived an enable-checking llvm-gcc bootstrap.
llvm-svn: 86264
|
| |
|
|
|
|
| |
from various APIs, addressing PR5325.
llvm-svn: 86231
|
| |
|
|
|
|
| |
Hans Wennborg!
llvm-svn: 86067
|
| |
|
|
|
|
| |
now-probably-dead instruction tree feeding it.
llvm-svn: 83778
|
| |
|
|
|
|
|
|
|
|
| |
done by condprop, but do it in a much more general form. The
basic idea is that we can do a limited form of tail duplication
in the case when we have a branch on a phi. Moving the branch
up in to the predecessor block makes instruction selection
much easier and encourages chained jump threadings.
llvm-svn: 83759
|
| |
|
|
| |
llvm-svn: 83756
|
| |
|
|
| |
llvm-svn: 83755
|
| |
|
|
| |
llvm-svn: 83754
|
| |
|
|
|
|
|
|
|
| |
DemoteRegToStack. This makes it more efficient (because it isn't
creating a ton of load/stores that are eventually removed by a later
mem2reg), and more slightly more effective (because those load/stores
don't get in the way of threading).
llvm-svn: 83706
|
| |
|
|
|
|
| |
update all the callers.
llvm-svn: 82889
|
| |
|
|
| |
llvm-svn: 80766
|
| |
|
|
| |
llvm-svn: 78948
|
| |
|
|
| |
llvm-svn: 77685
|
| |
|
|
| |
llvm-svn: 77635
|
| |
|
|
| |
llvm-svn: 77494
|
| |
|
|
| |
llvm-svn: 77152
|
| |
|
|
| |
llvm-svn: 77145
|