| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
| |
and T->isPointerTy(). Convert most instances of the first form to the second form.
Requested by Chris.
llvm-svn: 96344
|
| |
|
|
|
|
| |
isInteger, we now have isFloatTy and isIntegerTy. Requested by Chris!
llvm-svn: 96223
|
| |
|
|
|
|
| |
instead of considering x|undef -> x, which may not be true.
llvm-svn: 95850
|
| |
|
|
|
|
|
|
| |
for arbitrary terminators in predecessors, don't assume
it is a conditional or uncond branch. The testcase shows
an example where they can happen with switches.
llvm-svn: 94323
|
| |
|
|
|
|
|
|
| |
handle the case when we can infer an input to the xor
from all inputs that agree, instead of going into an
infinite loop. Another part of PR6199
llvm-svn: 94321
|
| |
|
|
| |
llvm-svn: 94319
|
| |
|
|
|
|
|
|
|
|
|
|
| |
in JT.
2) When cloning blocks for PHI or xor conditions, use
instsimplify to simplify the code as we go. This allows us to
squish common cases early in JT which opens up opportunities for
subsequent iterations, and allows it to completely simplify the
testcase.
llvm-svn: 93253
|
| |
|
|
| |
llvm-svn: 93222
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
condition is a xor with a phi node. This eliminates nonsense
like this from 176.gcc in several places:
LBB166_84:
testl %eax, %eax
- setne %al
- xorb %cl, %al
- notb %al
- testb $1, %al
- je LBB166_85
+ je LBB166_69
+ jmp LBB166_85
This is rdar://7391699
llvm-svn: 93221
|
| |
|
|
|
|
| |
on branches by renaming it and checking for a branch at the call site.
llvm-svn: 93208
|
| |
|
|
| |
llvm-svn: 92912
|
| |
|
|
| |
llvm-svn: 92614
|
| |
|
|
| |
llvm-svn: 92211
|
| |
|
|
| |
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
|