| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 30251
|
| |
|
|
|
|
| |
bit. This fixes Regression/Transforms/TailDup/MergeTest.ll
llvm-svn: 30237
|
| |
|
|
|
|
|
|
|
| |
operations (like findProperties) should be faster, at the expense of
unionSets being slower in cases that are rare in practise.
Don't erase a dead Instruction. This fixes a memory corruption issue.
llvm-svn: 30235
|
| |
|
|
| |
llvm-svn: 30234
|
| |
|
|
| |
llvm-svn: 30231
|
| |
|
|
|
|
| |
This implements select.ll::test18.
llvm-svn: 30230
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
For Transforms/TailDup/if-tail-dup.ll, f.e., it produces:
_foo:
movl 8(%esp), %eax
movl 4(%esp), %ecx
testl $1, %ecx
je LBB1_2 #cond_next
LBB1_1: #cond_true
movl $1, (%eax)
LBB1_2: #cond_next
testl $2, %ecx
je LBB1_4 #cond_next10
LBB1_3: #cond_true6
movl $1, 4(%eax)
LBB1_4: #cond_next10
testl $4, %ecx
je LBB1_6 #cond_next18
LBB1_5: #cond_true14
movl $1, 8(%eax)
LBB1_6: #cond_next18
testl $8, %ecx
je LBB1_8 #return
LBB1_7: #cond_true22
movl $1, 12(%eax)
ret
LBB1_8: #return
ret
instead of:
_foo:
movl 4(%esp), %eax
testl $2, %eax
sete %cl
movl 8(%esp), %edx
testl $1, %eax
je LBB1_2 #cond_next
LBB1_1: #cond_true
movl $1, (%edx)
testb %cl, %cl
jne LBB1_4 #cond_next10
jmp LBB1_3 #cond_true6
LBB1_2: #cond_next
testb %cl, %cl
jne LBB1_4 #cond_next10
LBB1_3: #cond_true6
movl $1, 4(%edx)
testl $4, %eax
je LBB1_6 #cond_next18
jmp LBB1_5 #cond_true14
LBB1_4: #cond_next10
testl $4, %eax
je LBB1_6 #cond_next18
LBB1_5: #cond_true14
movl $1, 8(%edx)
testl $8, %eax
je LBB1_8 #return
jmp LBB1_7 #cond_true22
LBB1_6: #cond_next18
testl $8, %eax
je LBB1_8 #return
LBB1_7: #cond_true22
movl $1, 12(%edx)
ret
LBB1_8: #return
ret
llvm-svn: 30158
|
| |
|
|
|
|
| |
lowerinvoke regtests.
llvm-svn: 30115
|
| |
|
|
|
|
|
| |
Call these from your backend to enjoy setjmp/longjmp goodness, see
lib/Target/IA64/IA64ISelLowering.cpp for an example
llvm-svn: 30095
|
| |
|
|
|
|
| |
their recursive calls.
llvm-svn: 30057
|
| |
|
|
|
|
|
|
| |
Reorder operations to remove duplicated work.
Fix to leave floating-point types out of the optimization.
Add tests to predsimplify.ll for SwitchInst and SelectInst handling.
llvm-svn: 30055
|
| |
|
|
|
|
| |
corrects missing optimization opportunity removing cases from a switch.
llvm-svn: 30009
|
| |
|
|
|
|
|
|
| |
another Value) weren't being found by findProperties.
This fixes predsimplify.ll test6, a missed optimization opportunity.
llvm-svn: 29991
|
| |
|
|
|
|
|
|
|
| |
If a branch's condition has become a ConstantBool, simplify it immediately.
Removing the edge saves work and exposes up more optimization opportunities
in the pass.
Add support for SelectInst.
llvm-svn: 29970
|
| |
|
|
|
|
|
|
| |
exit blocks. The output is dependent on addresses of basic block.
Add and use Loop::getUniqueExitBlocks.
llvm-svn: 29966
|
| |
|
|
| |
llvm-svn: 29950
|
| |
|
|
|
|
|
| |
and simplifies expressions. This implements the optimization described
in PR807.
llvm-svn: 29947
|
| |
|
|
|
|
|
|
| |
speedup of
gccas on 252.eon
llvm-svn: 29936
|
| |
|
|
| |
llvm-svn: 29932
|
| |
|
|
| |
llvm-svn: 29925
|
| |
|
|
| |
llvm-svn: 29911
|
| |
|
|
|
|
|
|
| |
This was
causing a crash in 175.vpr
llvm-svn: 29887
|
| |
|
|
| |
llvm-svn: 29886
|
| |
|
|
| |
llvm-svn: 29874
|
| |
|
|
|
|
|
|
|
| |
today,
I'm going to wait to put this in HEAD until tomorrow, so as not to clutter the nightly
tester.
llvm-svn: 29868
|
| |
|
|
|
|
|
|
| |
while, but I
forgot to put in the analysis usage.
llvm-svn: 29867
|
| |
|
|
|
|
|
|
| |
utility of the LoopUnroll pass.
Also, add a testcase for multiblock-loop unrolling.
llvm-svn: 29859
|
| |
|
|
| |
llvm-svn: 29765
|
| |
|
|
|
|
| |
Transforms/CondProp/2006-08-14-SingleEntryPhiCrash.ll
llvm-svn: 29673
|
| |
|
|
|
|
|
|
|
| |
Not only will this take huge amounts of compile time, the resultant loop nests
won't be useful for optimization. This reduces loopsimplify time on
Transforms/LoopSimplify/2006-08-11-LoopSimplifyLongTime.ll from ~32s to ~0.4s
with a debug build of llvm on a 2.7Ghz G5.
llvm-svn: 29647
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
blocks that target loop blocks.
Before, the code was run once per loop, and depended on the number of
predecessors each block in the loop had. Unfortunately, scanning preds can
be really slow when huge numbers of phis exist or when phis with huge numbers
of inputs exist.
Now, the code is run once per function and scans successors instead of preds,
which is far faster. In addition, the new code is simpler and is goto free,
woo.
This change speeds up a nasty testcase Duraid provided me from taking hours to
taking ~72s with a debug build. The functionality this implements is already
tested in the testsuite as Transforms/CodeExtractor/2004-03-13-LoopExtractorCrash.ll.
llvm-svn: 29644
|
| |
|
|
|
|
|
|
|
|
| |
SlowOperatingInfo, Statistics). Besides providing an example of how to
use these facilities, it also serves to debug problems with runtime linking
when dlopening a loadable module. These three support facilities exercise
different combinations of Text/Weak Weak/Text and Text/Text linking
between the executable and the module.
llvm-svn: 29552
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
1. Change the usage of LOADABLE_MODULE so that it implies all the things
necessary to make a loadable module. This reduces the user's burdern to
get a loadable module correctly built.
2. Document the usage of LOADABLE_MODULE in the MakefileGuide
3. Adjust the makefile for lib/Transforms/Hello to use the new specification
for building loadable modules
4. Adjust the sample project to not attempt to build a shared library for
its little library. This was just wasteful and not instructive at all.
llvm-svn: 29551
|
| |
|
|
|
|
| |
Transforms/SimplifyCFG/2006-08-03-Crash.ll
llvm-svn: 29515
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1. Update an obsolete comment.
2. Make the sorting by base an explicit (though still N^2) step, so
that the code is more clear on what it is doing.
3. Partition uses so that uses inside the loop are handled before uses
outside the loop.
Note that none of these changes currently changes the code inserted by LSR,
but they are a stepping stone to getting there.
This code is the result of some crazy pair programming with Nate. :)
llvm-svn: 29493
|
| |
|
|
|
|
| |
up lcssa much in practice.
llvm-svn: 29465
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
down approach, inspired by discussions with Tanya.
This approach is significantly faster, because it does not need dominator
frontiers and it does not insert extraneous unused PHI nodes. For example, on
252.eon, in a release-asserts build, this speeds up LCSSA (which is the slowest
pass in gccas) from 9.14s to 0.74s on my G5. This code is also slightly smaller
and significantly simpler than the old code.
Amusingly, in a normal Release build (which includes the
"assert(L->isLCSSAForm());" assertion), asserting that the result of LCSSA
is in LCSSA form is actually slower than the LCSSA transformation pass
itself on 252.eon. I will see if Loop::isLCSSAForm can be sped up next.
llvm-svn: 29463
|
| |
|
|
| |
llvm-svn: 29324
|
| |
|
|
| |
llvm-svn: 29226
|
| |
|
|
| |
llvm-svn: 29223
|
| |
|
|
|
|
| |
InternalizePass.
llvm-svn: 29222
|
| |
|
|
| |
llvm-svn: 29199
|
| |
|
|
| |
llvm-svn: 29198
|
| |
|
|
|
|
| |
somewhere down the road.
llvm-svn: 29197
|
| |
|
|
| |
llvm-svn: 29189
|
| |
|
|
| |
llvm-svn: 29186
|
| |
|
|
| |
llvm-svn: 29149
|
| |
|
|
|
|
| |
This should fix PR 831.
llvm-svn: 29141
|
| |
|
|
| |
llvm-svn: 29134
|
| |
|
|
|
|
| |
This unbreaks smg2000.
llvm-svn: 29127
|