| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is part of a futile attempt to not "break" bizzaro
code like this:
l1:
printf("l1: %p\n", &&l1);
++x;
if( x < 3 ) goto l1;
Previously we'd fold &&l1 to 1, which is fine per our semantics
but not helpful to the user.
llvm-svn: 125827
|
|
|
|
| |
llvm-svn: 125317
|
|
|
|
|
|
|
|
| |
switch. If we used only one icmp, don't turn it into a switch.
Also prevent the switch-to-icmp transform from creating identity adds, noticed by Marius Wachtler.
llvm-svn: 125056
|
|
|
|
|
|
|
|
| |
are not sorted into sub+icmp.
This transforms another 1000 switches in gcc.c.
llvm-svn: 124826
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This makes the job of the later optzn passes easier, allowing the vast amount of
icmp transforms to chew on it.
We transform 840 switches in gcc.c, leading to a 16k byte shrink of the resulting
binary on i386-linux.
The testcase from README.txt now compiles into
decl %edi
cmpl $3, %edi
sbbl %eax, %eax
andl $1, %eax
ret
llvm-svn: 124724
|
|
|
|
| |
llvm-svn: 124526
|
|
|
|
| |
llvm-svn: 124522
|
|
|
|
|
|
| |
unconditional predecessor to enable TCE on demand.
llvm-svn: 124518
|
|
|
|
| |
llvm-svn: 124478
|
|
|
|
|
|
|
|
| |
branches. PR8575, rdar://5134905, rdar://8911460.
- Allow codegen tail duplication to dup small return blocks after register
allocation is done.
llvm-svn: 124462
|
|
|
|
|
|
| |
code.
llvm-svn: 124100
|
|
|
|
| |
llvm-svn: 124099
|
|
|
|
|
|
| |
on test-suite + SPEC2000 & SPEC2006.
llvm-svn: 124068
|
|
|
|
| |
llvm-svn: 123732
|
|
|
|
|
|
|
| |
function. This seems to be about a 1.5% speedup of -scalarrepl on test-suite
with SPEC2000 and SPEC2006.
llvm-svn: 123731
|
|
|
|
|
|
| |
dominance and post-dominance frontiers.
llvm-svn: 123725
|
|
|
|
| |
llvm-svn: 123724
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
checks enabled:
1) Use '<' to compare integers in a comparison function rather than '<='.
2) Use the uniqued set DefBlocks rather than Info.DefiningBlocks to initialize
the priority queue.
The speedup of scalarrepl on test-suite + SPEC2000 + SPEC2006 is a bit less, at
just under 16% rather than 17%.
llvm-svn: 123662
|
|
|
|
| |
llvm-svn: 123618
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
eliminating a potentially quadratic data structure, this also gives a 17%
speedup when running -scalarrepl on test-suite + SPEC2000 + SPEC2006. My initial
experiment gave a greater speedup around 25%, but I moved the dominator tree
level computation from dominator tree construction to PromoteMemToReg.
Since this approach to computing IDFs has a much lower overhead than the old
code using precomputed DFs, it is worth looking at using this new code for the
second scalarrepl pass as well.
llvm-svn: 123609
|
|
|
|
|
|
| |
to use it.
llvm-svn: 123501
|
|
|
|
|
|
|
| |
"promote a bunch of load and stores" logic, allowing the code to
be shared and reused.
llvm-svn: 123456
|
|
|
|
| |
llvm-svn: 123426
|
|
|
|
|
|
|
|
|
| |
DT->changeImmediateDominator() trivially ignores identity updates, so there is
really no need for the uniqueing provided by SmallPtrSet.
I expect this to fix PR8954.
llvm-svn: 123286
|
|
|
|
| |
llvm-svn: 123247
|
|
|
|
|
|
|
|
| |
a new helper function so it can be reused in e.g. an upcoming SimplifySwitchOnSelect.
No functional change.
llvm-svn: 123234
|
|
|
|
|
|
| |
is floating around in the ether.
llvm-svn: 123223
|
|
|
|
|
|
|
|
|
|
| |
phi nodes. It is called from MergeBlockIntoPredecessor which is
called from GVN, which claims to preserve these.
I'm skeptical that this is the actual problem behind PR8954, but
this is a stab in the right direction.
llvm-svn: 123222
|
|
|
|
| |
llvm-svn: 123221
|
|
|
|
|
|
| |
loop info.
llvm-svn: 123074
|
|
|
|
| |
llvm-svn: 123071
|
|
|
|
|
|
|
|
|
|
| |
they all ready do). This removes two dominator recomputations prior to isel,
which is a 1% improvement in total llc time for 403.gcc.
The only potentially suspect thing is making GCStrategy recompute dominators if
it used a custom lowering strategy.
llvm-svn: 123064
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1. Take a flags argument instead of a bool. This makes
it more clear to the reader what it is used for.
2. Add a flag that says that "remapping a value not in the
map is ok".
3. Reimplement MapValue to share a bunch of code and be a lot
more efficient. For lookup failures, don't drop null values
into the map.
4. Using the new flag a bunch of code can vaporize in LinkModules
and LoopUnswitch, kill it.
No functionality change.
llvm-svn: 123058
|
|
|
|
| |
llvm-svn: 123025
|
|
|
|
|
|
|
| |
InstructionSimplify on instructions that didn't change since the
last time round the loop.
llvm-svn: 122745
|
|
|
|
|
|
| |
so that Dominators.h is *just* domtree. Also prune #includes a bit.
llvm-svn: 122714
|
|
|
|
|
|
|
|
|
|
| |
described
in the PR, the pass could break LCSSA form when inserting preheaders. It probably
would be easy enough to fix this, but since currently we always go into LCSSA form
after running this pass, doing so is not urgent.
llvm-svn: 122695
|
|
|
|
|
|
| |
operands are visited before the instructions themselves.
llvm-svn: 122647
|
|
|
|
| |
llvm-svn: 122645
|
|
|
|
| |
llvm-svn: 122642
|
|
|
|
|
|
| |
and superseded by IRBuilder.
llvm-svn: 122576
|
|
|
|
| |
llvm-svn: 122556
|
|
|
|
|
|
|
| |
getOrEnforceKnownAlignment function, which simplifies the code
and makes it stronger.
llvm-svn: 122555
|
|
|
|
| |
llvm-svn: 122554
|
|
|
|
|
|
|
| |
new gcc warning that complains on self-assignments and
self-initializations.
llvm-svn: 122458
|
|
|
|
|
|
|
| |
visit instructions before their uses, since InstructionSimplify does a
better job in that case. All this prompted by Frits van Bommel.
llvm-svn: 122343
|
|
|
|
|
|
|
| |
not very important since the pass is only used for testing, but it does make
it more realistic. Suggested by Frits van Bommel.
llvm-svn: 122336
|
|
|
|
| |
llvm-svn: 122265
|
|
|
|
|
|
|
|
|
| |
it could only be tested indirectly, via instcombine, gvn or some other
pass that makes use of InstructionSimplify, which means that testcases
had to be carefully contrived to dance around any other transformations
that that pass did.
llvm-svn: 122264
|
|
|
|
|
|
| |
to make sure that the reused alloca has sufficient alignment.
llvm-svn: 122236
|