| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
|
|
|
| |
can only branch forward. To best take advantage of them, we'd like to adjust
the basic blocks around a bit when reasonable. This patch puts basics in place
to do that, with a super-simple algorithm for backwards jump table targets that
creates a new branch after the jump table which branches backwards. Real
heuristics for reordering blocks or other modifications rather than inserting
branches will follow.
llvm-svn: 86791
|
| |
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
function it's generated for.
llvm-svn: 86779
|
| |
|
|
| |
llvm-svn: 86771
|
| |
|
|
|
|
| |
Also, add unittests for find_first_of and find_first_not_of.
llvm-svn: 86770
|
| |
|
|
| |
llvm-svn: 86769
|
| |
|
|
|
|
| |
vend value constraint information to the optimizer.
llvm-svn: 86767
|
| |
|
|
| |
llvm-svn: 86766
|
| |
|
|
|
|
| |
Analysis/Passes.h
llvm-svn: 86765
|
| |
|
|
| |
llvm-svn: 86763
|
| |
|
|
| |
llvm-svn: 86761
|
| |
|
|
| |
llvm-svn: 86756
|
| |
|
|
| |
llvm-svn: 86754
|
| |
|
|
| |
llvm-svn: 86753
|
| |
|
|
|
|
|
|
|
| |
constant whose component type is not a legal type for the target.
(If the target ConstantPool cannot handle this type either, it has
an opportunity to merge elements. In practice any target with
8-bit bytes must support i8 *as data*). 7320806 (partial).
llvm-svn: 86751
|
| |
|
|
| |
llvm-svn: 86748
|
| |
|
|
| |
llvm-svn: 86739
|
| |
|
|
|
|
| |
into libanalysis and transformutils.
llvm-svn: 86735
|
| |
|
|
| |
llvm-svn: 86732
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
generates a sequence similar to this:
__Z4funci:
LFB2:
mflr r0
LCFI0:
stmw r30,-8(r1)
LCFI1:
stw r0,8(r1)
LCFI2:
stwu r1,-80(r1)
LCFI3:
mr r30,r1
LCFI4:
where LCFI3 and LCFI4 are used by the FDE to indicate what the FP, LR, and other
things are. We generated something more like this:
Leh_func_begin1:
mflr r0
stw r31, 20(r1)
stw r0, 8(r1)
Llabel1:
stwu r1, -80(r1)
Llabel2:
mr r31, r1
Note that we are missing the "mr" instruction. This patch makes it more like the
GCC output.
llvm-svn: 86729
|
| |
|
|
|
|
| |
Update InsertDeclare to return newly inserted llvm.dbg.declare intrinsic.
llvm-svn: 86727
|
| |
|
|
|
|
| |
tracked down by Stephan Reiter!
llvm-svn: 86726
|
| |
|
|
|
|
|
|
| |
Critical edges leading to a PHI node are split when the PHI source variable is
live out from the predecessor block. This help the coalescer eliminate more
PHI joins.
llvm-svn: 86725
|
| |
|
|
|
|
|
| |
Clean up some whitespace.
No functional changes.
llvm-svn: 86724
|
| |
|
|
| |
llvm-svn: 86723
|
| |
|
|
|
|
|
|
| |
debug intrinsics, and an unconditional branch when possible. This
reuses the TryToSimplifyUncondBranchFromEmptyBlock function split
out of simplifycfg.
llvm-svn: 86722
|
| |
|
|
| |
llvm-svn: 86715
|
| |
|
|
|
|
| |
correctly
llvm-svn: 86712
|
| |
|
|
|
|
|
|
|
|
| |
[r0, #2 * 4]
Now
[r0, #8]
This makes Thumb2 assembly more uniform and frankly the scale doesn't add much.
llvm-svn: 86707
|
| |
|
|
| |
llvm-svn: 86706
|
| |
|
|
| |
llvm-svn: 86705
|
| |
|
|
|
|
|
|
|
|
| |
- Force NDEBUG on in any Release build. This drops the compile time to ~100s
from ~600s, in Release mode.
- This may just be a temporary workaround, I don't know the true nature of the
gcc-4.2 compile time performance problem.
llvm-svn: 86695
|
| |
|
|
| |
llvm-svn: 86694
|
| |
|
|
| |
llvm-svn: 86689
|
| |
|
|
| |
llvm-svn: 86683
|
| |
|
|
| |
llvm-svn: 86681
|
| |
|
|
|
|
| |
just throw them away.
llvm-svn: 86678
|
| |
|
|
|
|
| |
size associated with a malloc; also extend PerformHeapAllocSRoA() to check if the optimized malloc's arg had its highest bit set, so that it is safe for ComputeMultiple() to look through sext instructions while determining the optimized malloc's array size
llvm-svn: 86676
|
| |
|
|
|
|
| |
Value V is a multiple of unsigned Base
llvm-svn: 86675
|
| |
|
|
|
|
|
| |
of a computation. This fixes some infinite loops when dealing with TD that
has no native types.
llvm-svn: 86670
|
| |
|
|
| |
llvm-svn: 86668
|
| |
|
|
|
|
|
| |
memory just like a store" with bug fixed (partial-overwrite.ll is the
regression test).
llvm-svn: 86667
|
| |
|
|
| |
llvm-svn: 86666
|
| |
|
|
| |
llvm-svn: 86656
|
| |
|
|
| |
llvm-svn: 86651
|
| |
|
|
| |
llvm-svn: 86648
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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: 86645
|
| |
|
|
| |
llvm-svn: 86642
|
| |
|
|
| |
llvm-svn: 86641
|