| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
|
|
| |
because
we never generated them
Make indentation a bit more consistent
llvm-svn: 12549
|
| |
|
|
| |
llvm-svn: 12548
|
| |
|
|
|
|
|
|
| |
instcombine
pass can eliminate many nasty cases of them, start generating them in the optimizers
llvm-svn: 12545
|
| |
|
|
| |
llvm-svn: 12544
|
| |
|
|
|
|
|
|
|
| |
an incoming value from a block, the selector would evaluate the constant
at the TOP of the block instead of at the end of the block. This made the
live range for the constant span the entire block, increasing register
pressure needlessly.
llvm-svn: 12542
|
| |
|
|
| |
llvm-svn: 12541
|
| |
|
|
| |
llvm-svn: 12540
|
| |
|
|
| |
llvm-svn: 12539
|
| |
|
|
|
|
|
| |
Otherwise, if you're in debugging mode, you get warnings for (apparently)
every immediate constant in the function during reg. allocation.
llvm-svn: 12538
|
| |
|
|
|
|
| |
rid of the funny cast.
llvm-svn: 12537
|
| |
|
|
| |
llvm-svn: 12534
|
| |
|
|
| |
llvm-svn: 12530
|
| |
|
|
| |
llvm-svn: 12526
|
| |
|
|
| |
llvm-svn: 12525
|
| |
|
|
|
|
| |
Contributed by Reid Spencer
llvm-svn: 12524
|
| |
|
|
|
|
| |
Contributed by Reid Spencer
llvm-svn: 12523
|
| |
|
|
|
|
| |
Type::get(Un)signedVersion
llvm-svn: 12522
|
| |
|
|
| |
llvm-svn: 12520
|
| |
|
|
|
|
|
|
|
|
| |
#1 is to unconditionally strip constantpointerrefs out of
instruction operands where they are absolutely pointless and inhibit
optimization. GRRR!
#2 is to implement InstCombine/getelementptr_const.ll
llvm-svn: 12519
|
| |
|
|
| |
llvm-svn: 12517
|
| |
|
|
|
|
| |
it was "reachable". Cute.
llvm-svn: 12515
|
| |
|
|
| |
llvm-svn: 12507
|
| |
|
|
| |
llvm-svn: 12504
|
| |
|
|
| |
llvm-svn: 12500
|
| |
|
|
|
|
|
| |
folding load instructions into other instructions across free instruction
boundaries. Perhaps this will also fix the other strange failures?
llvm-svn: 12494
|
| |
|
|
|
|
|
| |
With this fix we now successfully extract all 149 loops from 256.bzip2 without
crashing or miscompiling the program!
llvm-svn: 12493
|
| |
|
|
|
|
|
| |
extracted all 63 loops for Olden/bh without crashing and without
miscompiling the program!!!
llvm-svn: 12491
|
| |
|
|
|
|
| |
exit nodes
llvm-svn: 12490
|
| |
|
|
| |
llvm-svn: 12489
|
| |
|
|
| |
llvm-svn: 12487
|
| |
|
|
| |
llvm-svn: 12486
|
| |
|
|
|
|
|
|
|
|
|
|
| |
1. Names were not put on the new arguments created (ok, this just helps sanity :)
2. Fix outgoing pointer values
3. Do not insert stores for values that had not been computed
4. Fix some wierd problems with the outset calculation
This fixes CodeExtractor/2004-03-14-DominanceProblem.ll, making the extractor
work on at least one simple case!
llvm-svn: 12484
|
| |
|
|
| |
llvm-svn: 12483
|
| |
|
|
|
|
|
| |
exposed the fact that the header was not self-contained. There is a reason
we do things :)
llvm-svn: 12481
|
| |
|
|
| |
llvm-svn: 12479
|
| |
|
|
| |
llvm-svn: 12465
|
| |
|
|
| |
llvm-svn: 12464
|
| |
|
|
|
|
|
| |
unhandled + handled. So unhandled is now including all fixed intervals
and fixed intervals never changes when processing a function.
llvm-svn: 12462
|
| |
|
|
| |
llvm-svn: 12458
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
as it is making effectively arbitrary modifications to the CFG and we don't
have a domset/domfrontier implementations that can handle the dynamic updates.
Instead of having a bunch of code that doesn't actually work in practice,
just demote any potentially tricky values to the stack (causing the problem
to go away entirely). Later invocations of mem2reg will rebuild SSA for us.
This fixes all of the major performance regressions with tail duplication
from LLVM 1.1. For example, this loop:
---
int popcount(int x) {
int result = 0;
while (x != 0) {
result = result + (x & 0x1);
x = x >> 1;
}
return result;
}
---
Used to be compiled into:
int %popcount(int %X) {
entry:
br label %loopentry
loopentry: ; preds = %entry, %no_exit
%x.0 = phi int [ %X, %entry ], [ %tmp.9, %no_exit ] ; <int> [#uses=3]
%result.1.0 = phi int [ 0, %entry ], [ %tmp.6, %no_exit ] ; <int> [#uses=2]
%tmp.1 = seteq int %x.0, 0 ; <bool> [#uses=1]
br bool %tmp.1, label %loopexit, label %no_exit
no_exit: ; preds = %loopentry
%tmp.4 = and int %x.0, 1 ; <int> [#uses=1]
%tmp.6 = add int %tmp.4, %result.1.0 ; <int> [#uses=1]
%tmp.9 = shr int %x.0, ubyte 1 ; <int> [#uses=1]
br label %loopentry
loopexit: ; preds = %loopentry
ret int %result.1.0
}
And is now compiled into:
int %popcount(int %X) {
entry:
br label %no_exit
no_exit: ; preds = %entry, %no_exit
%x.0.0 = phi int [ %X, %entry ], [ %tmp.9, %no_exit ] ; <int> [#uses=2]
%result.1.0.0 = phi int [ 0, %entry ], [ %tmp.6, %no_exit ] ; <int> [#uses=1]
%tmp.4 = and int %x.0.0, 1 ; <int> [#uses=1]
%tmp.6 = add int %tmp.4, %result.1.0.0 ; <int> [#uses=2]
%tmp.9 = shr int %x.0.0, ubyte 1 ; <int> [#uses=2]
%tmp.1 = seteq int %tmp.9, 0 ; <bool> [#uses=1]
br bool %tmp.1, label %loopexit, label %no_exit
loopexit: ; preds = %no_exit
ret int %tmp.6
}
llvm-svn: 12457
|
| |
|
|
| |
llvm-svn: 12456
|
| |
|
|
| |
llvm-svn: 12454
|
| |
|
|
| |
llvm-svn: 12453
|
| |
|
|
| |
llvm-svn: 12452
|
| |
|
|
| |
llvm-svn: 12451
|
| |
|
|
|
|
| |
Add handling for Mul instruction.
llvm-svn: 12450
|
| |
|
|
|
|
| |
testcase from 32.5s in -raise to take .3s
llvm-svn: 12443
|
| |
|
|
|
|
|
| |
time from 615s to 1.49s on a large testcase that has a gigantic switch statement
that all of the blocks in the function go to (an intepreter).
llvm-svn: 12442
|
| |
|
|
| |
llvm-svn: 12441
|
| |
|
|
| |
llvm-svn: 12435
|