| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 26275
|
|
|
|
| |
llvm-svn: 25509
|
|
|
|
| |
llvm-svn: 24581
|
|
|
|
|
|
|
| |
and more correct than use_empty(). This fixes PR635 and
SimplifyCFG/2005-10-02-InvokeSimplify.ll
llvm-svn: 23616
|
|
|
|
| |
llvm-svn: 23411
|
|
|
|
|
|
|
| |
This implements SimplifyCFG/branch-fold.ll, and is useful on ?:/min/max heavy
code
llvm-svn: 23410
|
|
|
|
| |
llvm-svn: 23408
|
|
|
|
| |
llvm-svn: 23407
|
|
|
|
|
|
|
|
|
| |
not define a value that is used outside of it's block. This catches many
more simplifications, e.g. 854 in 176.gcc, 137 in vpr, etc.
This implements branch-phi-thread.ll:test3.ll
llvm-svn: 23397
|
|
|
|
|
|
| |
predecessors. This implements branch-phi-thread.ll::test1
llvm-svn: 23395
|
|
|
|
| |
llvm-svn: 23393
|
|
|
|
| |
llvm-svn: 23392
|
|
|
|
|
|
|
| |
control across branches with determined outcomes. More generality to follow.
This triggers a couple thousand times in specint.
llvm-svn: 23391
|
|
|
|
|
|
| |
occurred while bugpointing another testcase
llvm-svn: 22621
|
|
|
|
|
|
|
|
| |
Transforms/SimplifyCFG/2005-08-01-PHIUpdateFail.ll
the right way
llvm-svn: 22615
|
|
|
|
| |
llvm-svn: 22613
|
|
|
|
|
|
| |
function with no side-effects
llvm-svn: 22612
|
|
|
|
| |
llvm-svn: 22611
|
|
|
|
|
|
| |
some duplicated code
llvm-svn: 22610
|
|
|
|
|
|
| |
call it from the only place it is live. No functionality changes.
llvm-svn: 22609
|
|
|
|
|
|
|
|
|
| |
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20050801/027345.html
This breaks real programs and only fixes an obscure regression testcase. A
real fix is in development.
llvm-svn: 22606
|
|
|
|
| |
llvm-svn: 22605
|
|
|
|
|
|
|
|
| |
consideration the case where a reference in an unreachable block could
occur. This fixes Transforms/SimplifyCFG/2005-08-01-PHIUpdateFail.ll,
something I ran into while bugpoint'ing another pass.
llvm-svn: 22584
|
|
|
|
|
|
| |
This fixes PR584 and Transforms/SimplifyCFG/2005-06-16-PHICrash.ll
llvm-svn: 22232
|
|
|
|
| |
llvm-svn: 22158
|
|
|
|
|
|
|
| |
a call. This fixes Prolangs-C++/deriv2, kimwitu++, and Misc-C++/bigfib
on X86 with -enable-x86-fastcc.
llvm-svn: 22023
|
|
|
|
| |
llvm-svn: 21427
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
convert this:
%tmp.1 = seteq int %i, 0 ; <bool> [#uses=1]
br bool %tmp.1, label %shortcirc_done, label %shortcirc_next
shortcirc_next: ; preds = %entry
%tmp.4 = seteq int %j, 0 ; <bool> [#uses=1]
br label %shortcirc_done
shortcirc_done: ; preds = %shortcirc_next, %entry
%shortcirc_val = phi bool [ %tmp.4, %shortcirc_next ], [ true, %entry ] ; <bool> [#uses=1]
to this:
%tmp.1 = seteq int %i, 0 ; <bool> [#uses=1]
%tmp.4 = seteq int %j, 0 ; <bool> [#uses=1]
%shortcirc_val = select bool %tmp.1, bool true, bool %tmp.4 ; <bool> [#uses=1]
... which is later simplified by instcombine into an or.
llvm-svn: 21388
|
|
|
|
| |
llvm-svn: 21253
|
|
|
|
| |
llvm-svn: 20343
|
|
|
|
| |
llvm-svn: 20334
|
|
|
|
|
|
|
|
| |
This does a simple form of "jump threading", which eliminates CFG edges that
are provably dead. This triggers 90 times in the external tests, and
eliminating CFG edges is always always a good thing! :)
llvm-svn: 20300
|
|
|
|
| |
llvm-svn: 19898
|
|
|
|
|
|
|
|
| |
SimplifyCFG is one of those passes that we use for final cleanup: it should
not rely on other passes to clean up its garbage. This fixes the "why are
trivially dead setcc's in the output of gccas" problem.
llvm-svn: 19212
|
|
|
|
|
|
| |
and the failure on make_dparser last night.
llvm-svn: 18766
|
|
|
|
| |
llvm-svn: 18381
|
|
|
|
| |
llvm-svn: 18369
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
if (x) {
code
...
} else {
code
...
}
Turn it into:
code
if (x) {
...
} else {
...
}
This reduces code size and in some common cases allows us to completely
eliminate the conditional. This turns several if/then/else blocks in loops
into straightline code in 179.art, turning the loops into single basic blocks
(good for modsched even!).
Maybe now brg will leave me alone ;-)
llvm-svn: 18366
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This speeds up simplifycfg on this program, from 44.87s to 0.29s (with
a profiled build):
#define CL0(a) case a: goto c;
#define CL1(a) CL0(a##0) CL0(a##1) CL0(a##2) CL0(a##3) CL0(a##4) CL0(a##5) \
CL0(a##6) CL0(a##7) CL0(a##8) CL0(a##9)
#define CL2(a) CL1(a##0) CL1(a##1) CL1(a##2) CL1(a##3) CL1(a##4) CL1(a##5) \
CL1(a##6) CL1(a##7) CL1(a##8) CL1(a##9)
#define CL3(a) CL2(a##0) CL2(a##1) CL2(a##2) CL2(a##3) CL2(a##4) CL2(a##5) \
CL2(a##6) CL2(a##7) CL2(a##8) CL2(a##9)
#define CL4(a) CL3(a##0) CL3(a##1) CL3(a##2) CL3(a##3) CL3(a##4) CL3(a##5) \
CL3(a##6) CL3(a##7) CL3(a##8) CL3(a##9)
void f();
void a() {
int b;
c: switch (b) {
CL4(1)
}
}
This testcase is contrived to expose N^2 behavior, but this patch should speedup
simplifycfg on any programs that use large switch statements. This testcase
comes from GCC PR17895.
llvm-svn: 17389
|
|
|
|
| |
llvm-svn: 17163
|
|
|
|
|
|
|
| |
Simplify code by simplifying terminators that branch to blocks that start
with an unreachable instruction.
llvm-svn: 17116
|
|
|
|
|
|
|
|
| |
nodes unless we KNOW that we are able to promote all of them.
This fixes: test/Regression/Transforms/SimplifyCFG/PhiNoEliminate.ll
llvm-svn: 16973
|
|
|
|
|
|
| |
potentially fold more in one pass.
llvm-svn: 16583
|
|
|
|
|
|
| |
Patch contributed by Paolo Invernizzi. Thanks Paolo!
llvm-svn: 16368
|
|
|
|
|
|
| |
Patch contributed by Paolo Invernizzi!
llvm-svn: 16152
|
|
|
|
|
|
|
|
| |
Move include/Config and include/Support into include/llvm/Config,
include/llvm/ADT and include/llvm/Support. From here on out, all LLVM
public header files must be under include/llvm/.
llvm-svn: 16137
|
|
|
|
|
|
| |
"Support/Debug.h".
llvm-svn: 15089
|
|
|
|
| |
llvm-svn: 15022
|
|
|
|
|
|
| |
- Minimize redundant isa<GlobalValue> usage
llvm-svn: 14948
|
|
|
|
| |
llvm-svn: 14840
|