| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
| |
commented-out
debugging lines.
llvm-svn: 37347
|
| |
|
|
| |
llvm-svn: 37346
|
| |
|
|
|
|
| |
set this way is _SLOW_. Somewhere down the line, I'll look at speeding it up.
llvm-svn: 37345
|
| |
|
|
|
|
|
|
| |
of analysis, and nothing more. It is also quite slow for the moment. However,
it should give a sense of what's going on.
llvm-svn: 37343
|
| |
|
|
| |
llvm-svn: 37326
|
| |
|
|
| |
llvm-svn: 37321
|
| |
|
|
| |
llvm-svn: 37297
|
| |
|
|
|
|
| |
objc code due to the way the FE lowers objc message sends.
llvm-svn: 37256
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
X86/lsr-negative-stride.ll
into:
_t:
movl 8(%esp), %ecx
movl 4(%esp), %eax
cmpl %ecx, %eax
je LBB1_3 #bb17
LBB1_1: #bb
cmpl %ecx, %eax
jg LBB1_4 #cond_true
LBB1_2: #cond_false
subl %eax, %ecx
cmpl %ecx, %eax
jne LBB1_1 #bb
LBB1_3: #bb17
ret
LBB1_4: #cond_true
subl %ecx, %eax
cmpl %ecx, %eax
jne LBB1_1 #bb
jmp LBB1_3 #bb17
instead of:
_t:
subl $4, %esp
movl %esi, (%esp)
movl 12(%esp), %ecx
movl 8(%esp), %eax
cmpl %ecx, %eax
je LBB1_4 #bb17
LBB1_1: #bb.outer
movl %ecx, %edx
negl %edx
LBB1_2: #bb
cmpl %ecx, %eax
jle LBB1_5 #cond_false
LBB1_3: #cond_true
addl %edx, %eax
cmpl %ecx, %eax
jne LBB1_2 #bb
LBB1_4: #bb17
movl (%esp), %esi
addl $4, %esp
ret
LBB1_5: #cond_false
movl %ecx, %edx
subl %eax, %edx
movl %eax, %esi
addl %esi, %esi
cmpl %ecx, %esi
je LBB1_4 #bb17
LBB1_6: #cond_false.bb.outer_crit_edge
movl %edx, %ecx
jmp LBB1_1 #bb.outer
llvm-svn: 37252
|
| |
|
|
|
|
| |
Test case at Transformations/SCCP/2007-05-16-InvokeCrash.ll
llvm-svn: 37185
|
| |
|
|
| |
llvm-svn: 37081
|
| |
|
|
| |
llvm-svn: 37057
|
| |
|
|
| |
llvm-svn: 37034
|
| |
|
|
| |
llvm-svn: 37020
|
| |
|
|
| |
llvm-svn: 36996
|
| |
|
|
| |
llvm-svn: 36994
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
with unknown trip counts. This is left off by default, and a
command-line option enables it. It also begins to separate loop
unrolling into a utility routine; eventually it might be made usable
from other passes.
It currently works by inserting conditional branches between each
unrolled iteration, unless it proves that the trip count is a
multiple of a constant integer > 1, which it currently only does in
the rare case that the trip count expression is a Mul operator with
a ConstantInt operand. Eventually this information might be provided
by other sources, for example by a pass that peels/splits the loop
for this purpose.
llvm-svn: 36990
|
| |
|
|
|
|
| |
Transforms/InstCombine/2006-12-08-ICmp-Combining.ll
llvm-svn: 36989
|
| |
|
|
| |
llvm-svn: 36984
|
| |
|
|
|
|
|
|
| |
Testcases :
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20070507/049451.html
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20070507/049452.html
llvm-svn: 36955
|
| |
|
|
| |
llvm-svn: 36936
|
| |
|
|
| |
llvm-svn: 36935
|
| |
|
|
| |
llvm-svn: 36917
|
| |
|
|
| |
llvm-svn: 36894
|
| |
|
|
| |
llvm-svn: 36873
|
| |
|
|
| |
llvm-svn: 36857
|
| |
|
|
| |
llvm-svn: 36809
|
| |
|
|
| |
llvm-svn: 36807
|
| |
|
|
|
|
|
|
| |
If we have a LCSSA, only modify the input value if the inval was defined
by an instruction in the loop. If defined by something before the loop,
it is still valid.
llvm-svn: 36784
|
| |
|
|
| |
llvm-svn: 36782
|
| |
|
|
| |
llvm-svn: 36775
|
| |
|
|
|
|
| |
slightly nicer than using CallInst with an extra check; thanks Chris.
llvm-svn: 36743
|
| |
|
|
|
|
| |
address operand in a prefetch intrinsic.
llvm-svn: 36713
|
| |
|
|
| |
llvm-svn: 36662
|
| |
|
|
|
|
|
| |
Due to darwin gcc bug, one version of darwin linker coalesces
static const int, which defauts PassID based pass identification.
llvm-svn: 36652
|
| |
|
|
| |
llvm-svn: 36648
|
| |
|
|
| |
llvm-svn: 36632
|
| |
|
|
| |
llvm-svn: 36564
|
| |
|
|
|
|
| |
bitcasts of them.
llvm-svn: 36537
|
| |
|
|
| |
llvm-svn: 36527
|
| |
|
|
|
|
| |
previous clients. This fixes MallocBench/gs
llvm-svn: 36525
|
| |
|
|
| |
llvm-svn: 36523
|
| |
|
|
| |
llvm-svn: 36521
|
| |
|
|
|
|
|
|
| |
codepath
for unrelated casts.
llvm-svn: 36511
|
| |
|
|
| |
llvm-svn: 36475
|
| |
|
|
| |
llvm-svn: 36444
|
| |
|
|
| |
llvm-svn: 36441
|
| |
|
|
|
|
| |
will follow.
llvm-svn: 36435
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
copies from a constant global, then we can change the reads to read from the
global instead of from the alloca. This eliminates the alloca and the memcpy,
and promotes secondary optimizations (because the loads are now loads from
a constant global).
This is important for a common C idiom:
void foo() {
int A[] = {1,2,3,4,5,6,7,8,9...};
... only reads of A ...
}
For some reason, people forget to mark the array static or const.
This triggers on these multisource benchmarks:
JM/ldecode: block_pos, [3 x [4 x [4 x i32]]]
FreeBench/mason: m, [18 x i32], inlined 4 times
MiBench/office-stringsearch: search_strings, [1332 x i8*]
MiBench/office-stringsearch: find_strings, [1333 x i8*]
Prolangs-C++/city: dirs, [9 x i8*], inlined 4 places
and these spec benchmarks:
177.mesa: message, [8 x [32 x i8]]
186.crafty: bias_rl45, [64 x i32]
186.crafty: diag_sq, [64 x i32]
186.crafty: empty, [9 x i8]
186.crafty: xlate, [15 x i8]
186.crafty: status, [13 x i8]
186.crafty: bdinfo, [25 x i8]
445.gobmk: routines, [16 x i8*]
458.sjeng: piece_rep, [14 x i8*]
458.sjeng: t, [13 x i32], inlined 4 places.
464.h264ref: block8x8_idx, [3 x [4 x [4 x i32]]]
464.h264ref: block_pos, [3 x [4 x [4 x i32]]]
464.h264ref: j_off_tab, [12 x i32]
This implements Transforms/ScalarRepl/memcpy-from-global.ll
llvm-svn: 36429
|
| |
|
|
| |
llvm-svn: 36426
|