Owen Anderson
9372f36b3c
Make many sets a much more reasonable size. This decreases the time to optimize
...
Anton's testcase from 35.5s to 34.7s.
llvm-svn: 37769
2007-06-28 00:34:34 +00:00
Owen Anderson
97dd99d761
Use cached information that has already been computed to make clean() simpler and faster. This is a small speedup on most cases.
...
llvm-svn: 37761
2007-06-27 17:38:29 +00:00
Owen Anderson
a7927caa56
Fold a lot of code into two cases: binary instructions and ternary instructions.
...
This saves many lines of code duplication. No functionality change.
llvm-svn: 37759
2007-06-27 17:03:03 +00:00
Zhou Sheng
011fc80616
Fix a bug.
...
llvm-svn: 37751
2007-06-27 09:50:26 +00:00
Owen Anderson
97de56ae2b
Add support for performing GVNPRE on the three vector-specific operations.
...
llvm-svn: 37745
2007-06-27 04:10:46 +00:00
Owen Anderson
dc1d567274
1. Correct some comments and clean up some dead code.
...
2. When calculating ANTIC_IN, only iterate the changed blocks. For most average
inputs this is a small speedup, but for cases with unusual CFGs, this can be a significant win.
llvm-svn: 37742
2007-06-26 23:29:41 +00:00
Chris Lattner
64e8e4af59
fix Transforms/Inline/2007-06-25-WeakInline.ll by not inlining functions
...
with weak linkage.
llvm-svn: 37723
2007-06-25 21:50:09 +00:00
Owen Anderson
fb09af59e0
Use the built-in postorder iterators rather than computing a postorder walk by hand.
...
llvm-svn: 37721
2007-06-25 18:25:31 +00:00
Owen Anderson
293173ccd2
1) Fix an issue with non-deterministic iteration order in phi_translate
...
2) Remove some maximal-set computing code that is no longer used.
3) Use a post-order CFG traversal to compute ANTIC_IN instead of a postdom traversal.
This causes the ANTIC_IN calculation to converge much faster. Thanks to Daniel Berlin for suggesting this.
With this patch, the time to optimize 403.gcc decreased from 17.5s to 7.5s, and Anton's huge
testcase decreased from 62 minutes to 38 seconds.
llvm-svn: 37714
2007-06-25 05:41:12 +00:00
Nick Lewycky
59c02f6336
Fix value ranges.
...
llvm-svn: 37713
2007-06-24 20:14:22 +00:00
Owen Anderson
e16e7f2d3d
Fix a silly mistake that was causing failures.
...
llvm-svn: 37712
2007-06-24 08:42:24 +00:00
Nick Lewycky
c238dd7dca
Remove tabs.
...
llvm-svn: 37710
2007-06-24 04:40:16 +00:00
Nick Lewycky
fff717bc50
Remove use of ETForest. Also cleaned up issues around unreachable basic
...
blocks, and optimizing within one basic block.
llvm-svn: 37709
2007-06-24 04:36:20 +00:00
Owen Anderson
4713f37034
Rework topo_sort so eliminate some behavior that scaled terribly. This reduces the time to optimize 403.gcc from 18.2s to 17.5s,
...
and has an even larger effect on larger testcases.
llvm-svn: 37708
2007-06-22 21:31:16 +00:00
Owen Anderson
65af4e7d2b
Perform fewer set insertions while calculating ANTIC_IN. This reduces the amount of time to optimize 403.gcc from 21.9s to 18.2s.
...
llvm-svn: 37707
2007-06-22 18:27:04 +00:00
Owen Anderson
1fe94b16dc
Remove some code that I was using for collecting performance information that should not have been committed.
...
llvm-svn: 37706
2007-06-22 17:04:40 +00:00
Owen Anderson
92c7510376
Avoid excessive calls to find_leader when calculating AVAIL_OUT. This reduces the time to optimize 403.gcc from 23.5s to 21.9s.
...
llvm-svn: 37702
2007-06-22 03:14:03 +00:00
Owen Anderson
0abfa1ecb2
Reserve space in vectors before topologically sorting into them. This improves the time to optimize 403.gcc from 28s to 23.5s.
...
llvm-svn: 37699
2007-06-22 00:43:22 +00:00
Owen Anderson
e121e85517
Make a bunch of optimizations for compile time to GVNPRE, including smarter set unions, deferring blocks rather than computing maximal sets, and smarter use of sets. With these enhancements, the time to optimize 273.perlbmk goes from 5.3s to 2.7s.
...
llvm-svn: 37698
2007-06-22 00:20:30 +00:00
Chris Lattner
4624e16f16
Significantly improve the documentation of the instcombine divide/compare
...
transformation. Also, keep track of which end of the integer interval overflows
occur on. This fixes Transforms/InstCombine/2007-06-21-DivCompareMiscomp.ll
and rdar://5278853, a miscompilation of perl.
llvm-svn: 37692
2007-06-21 18:11:19 +00:00
Owen Anderson
eb29dac190
Change lots of sets from std::set to SmallPtrSet. This reduces the time required to optimize 253.perlbmk from 10.9s to 5.3s.
...
llvm-svn: 37690
2007-06-21 17:57:53 +00:00
Devang Patel
bfb1c7192e
Move code to update dominator information after basic block is split
...
from LoopSimplify.cpp to Dominator.cpp
llvm-svn: 37689
2007-06-21 17:23:45 +00:00
Owen Anderson
a783224b25
Eliminate a redundant check. This speeds up optimization of 253.perlbmk from 13.5 seconds to 10.9 seconds.
...
llvm-svn: 37683
2007-06-21 01:59:05 +00:00
Owen Anderson
b06cc18b7c
Comment-ize the functions in GVNPRE.
...
llvm-svn: 37681
2007-06-21 00:19:05 +00:00
Chris Lattner
26537049eb
refactor a bunch of code out of visitICmpInstWithInstAndIntCst into its own
...
routine.
llvm-svn: 37679
2007-06-20 23:46:26 +00:00
Owen Anderson
ff60973eb8
Split runOnFunction into many smaller functions. This make it easier to get accurate performance analysis of GVNPRE.
...
llvm-svn: 37678
2007-06-20 22:10:02 +00:00
Owen Anderson
58265d2391
Make GVNPRE accurate report whether it modified the function or not.
...
llvm-svn: 37673
2007-06-20 18:30:20 +00:00
Owen Anderson
815c4d384b
Get rid of an unneeded helper function.
...
llvm-svn: 37670
2007-06-20 00:43:33 +00:00
Owen Anderson
997c4e5e47
Use a DenseMap instead of an std::map for the value numbering. This reduces the time to optimize lencod on a PPC Debug build from ~300s to ~140s.
...
llvm-svn: 37668
2007-06-19 23:23:54 +00:00
Owen Anderson
5a902e6afc
Make dependsOnInvoke much more specific in what it tests, which in turn make it much faster to run. This reduces the time to optimize lencondwith a debug build on PPC from ~450s to ~300s.
...
llvm-svn: 37667
2007-06-19 23:07:16 +00:00
Tanya Lattner
b2aae813b6
Moved Inliner.h to include/llvm/Transforms/IPO/InlinerPass.h
...
llvm-svn: 37666
2007-06-19 22:31:52 +00:00
Tanya Lattner
a2e912bf51
Inliner pass header file was moved.
...
llvm-svn: 37665
2007-06-19 22:29:50 +00:00
Dan Gohman
bb705e230a
Rename ScalarEvolution::deleteInstructionFromRecords to
...
deleteValueFromRecords and loosen the types to all it to accept
Value* instead of just Instruction*, since this is what
ScalarEvolution uses internally anyway. This allows more flexibility
for future uses.
llvm-svn: 37657
2007-06-19 14:28:31 +00:00
Owen Anderson
0eafdcafe7
Handle constants in phi nodes properly. This fixes test/Transforms/GVNPRE/2007-06-18-ConstantInPhi.ll
...
llvm-svn: 37655
2007-06-19 07:35:36 +00:00
Chris Lattner
6809b4b4fa
silence a bogus warning Duraid ran into.
...
llvm-svn: 37649
2007-06-19 05:43:49 +00:00
Owen Anderson
f74f94d859
Be careful to erase values from all of the appropriate sets when they're not needed anymore. This fixes a few more memory-related issues.
...
llvm-svn: 37647
2007-06-19 05:37:32 +00:00
Owen Anderson
d3d1716516
Remember to clear the maximal sets between functions.
...
Thanks to Nicholas for valgrinding this.
llvm-svn: 37646
2007-06-19 04:32:55 +00:00
Owen Anderson
dc858f6498
Refactor GVNPRE to use a much smart method of uniquing value sets, and centralize a lot of the value numbering information. No functionality change.
...
llvm-svn: 37645
2007-06-19 03:31:41 +00:00
Owen Anderson
58098f3560
Cache the results of dependsOnInvoke()
...
llvm-svn: 37622
2007-06-18 04:42:29 +00:00
Owen Anderson
8956588783
Fix indentation.
...
llvm-svn: 37621
2007-06-18 04:31:21 +00:00
Owen Anderson
c45b435273
Don't perform an expensive check if it's not necessary.
...
llvm-svn: 37620
2007-06-18 04:30:44 +00:00
Owen Anderson
0c8b051523
Fix test/Transforms/GVNPRE/2007-06-15-InvokeInst.ll by ignoring all instructions that depend on invokes.
...
llvm-svn: 37610
2007-06-16 00:26:54 +00:00
Dan Gohman
a3ea76f018
Use SCEVConstant::get instead of SCEVUnknown::get to create an
...
integer constant SCEV.
llvm-svn: 37596
2007-06-15 18:00:55 +00:00
Owen Anderson
5a2d597072
Fix test/Transforms/GVNPRE/2007-06-15-Looping.ll
...
llvm-svn: 37595
2007-06-15 17:55:15 +00:00
Dan Gohman
838ba27094
Add a SCEV class and supporting code for sign-extend expressions.
...
This created an ambiguity for expandInTy to decide when to use
sign-extension or zero-extension, but it turns out that most of its callers
don't actually need a type conversion, now that LLVM types don't have
explicit signedness. Drop expandInTy in favor of plain expand, and change
the few places that actually need a type conversion to do it themselves.
llvm-svn: 37591
2007-06-15 14:38:12 +00:00
Chris Lattner
3a979f2fa5
Generalize many transforms to work on ~ of vectors in addition to ~ of
...
integer ops. This implements Transforms/InstCombine/and-or-not.ll
test3/test4, and finishes off PR1510
llvm-svn: 37589
2007-06-15 06:23:19 +00:00
Chris Lattner
6c32b44b4c
Implement two xforms:
...
1. ~(~X | Y) === (X & ~Y)
2. (A|B) & ~(A&B) -> A^B
This allows us to transform ~(~(a|b) | (a&b)) -> a^b.
This implements PR1510 for scalar values.
llvm-svn: 37584
2007-06-15 05:58:24 +00:00
Chris Lattner
96c6cf8b89
delete some obviously dead vector operations, which deletes a few thousand
...
operations from Duraids example.
llvm-svn: 37582
2007-06-15 05:26:55 +00:00
Owen Anderson
67084c3848
Fix test/Transforms/GVNPRE/2007-06-12-PhiTranslate.ll
...
llvm-svn: 37564
2007-06-12 22:43:57 +00:00
Owen Anderson
f476df648e
Refactor some code, and fix test/Transforms/GVNPRE/2007-06-12-NoExit.ll by being more careful when using
...
post-dominator information.
llvm-svn: 37556
2007-06-12 16:57:50 +00:00
Dale Johannesen
f223789fea
Sink CmpInst's to their uses to reduce register pressure.
...
llvm-svn: 37554
2007-06-12 16:50:17 +00:00
Owen Anderson
8fd2a040de
Fix a few more bugs, including an instance of walking in reverse topological rather than topological order. This
...
fixes a testcase extracted from llvm-test.
llvm-svn: 37550
2007-06-12 00:50:47 +00:00
Devang Patel
bc3887310b
Add and use DominatorTreeBase::findNearestCommonDominator().
...
llvm-svn: 37545
2007-06-11 23:31:22 +00:00
Devang Patel
336e38d425
Simplify.
...
llvm-svn: 37542
2007-06-11 21:45:31 +00:00
Devang Patel
8fba00d86d
simplify
...
llvm-svn: 37541
2007-06-11 21:25:31 +00:00
Devang Patel
35df53ab56
Simplify. Dominator Tree is required so always available.
...
llvm-svn: 37540
2007-06-11 21:18:00 +00:00
Owen Anderson
cdb51c9ac4
Handle functions with multiple exit blocks properly.
...
llvm-svn: 37539
2007-06-11 16:25:17 +00:00
Owen Anderson
532366fb7d
Perform PRE of comparison operators.
...
llvm-svn: 37536
2007-06-09 18:35:31 +00:00
Owen Anderson
1e60429027
Collect statistics from GVN-PRE.
...
llvm-svn: 37530
2007-06-08 22:02:36 +00:00
Owen Anderson
2cf00c37de
Fix typo in a comment.
...
llvm-svn: 37526
2007-06-08 20:57:08 +00:00
Owen Anderson
4621335527
Fix a bug that was causing the elimination phase not to replace values when it should be.
...
With this patch, GVN-PRE now correctly optimizes the example from the thesis.
Many thanks to Daniel Berlin for helping me find errors in this.
llvm-svn: 37525
2007-06-08 20:44:02 +00:00
Owen Anderson
64daf17aa0
Small bugfix, and const-ify some methods (Thanks, Bill).
...
llvm-svn: 37513
2007-06-08 01:52:45 +00:00
Devang Patel
cfb3a761ae
Update LoopSimplify to require and preserve DominatorTree only.
...
Now LoopSimplify does not require nor preserve ETForest.
llvm-svn: 37512
2007-06-08 01:50:32 +00:00
Owen Anderson
ccd2616fbb
Add partial redundancy elimination.
...
llvm-svn: 37510
2007-06-08 01:03:01 +00:00
Devang Patel
b5554f450a
Do not preserve ETForest.
...
llvm-svn: 37506
2007-06-08 00:02:08 +00:00
Devang Patel
8d261e921f
Do not require ETForest. Now it is unused by LICM.
...
llvm-svn: 37502
2007-06-07 22:21:15 +00:00
Devang Patel
3daf3625ab
Do not use ETForest as well as DomiantorTree. DominatorTree is sufficient.
...
llvm-svn: 37501
2007-06-07 22:17:16 +00:00
Devang Patel
a466c96f77
Use DominatorTree instead of ETForest.
...
This allows faster immediate domiantor walk.
llvm-svn: 37500
2007-06-07 21:57:03 +00:00
Devang Patel
5678b94d16
Use DominatorTree instead of ETForest.
...
llvm-svn: 37499
2007-06-07 21:42:15 +00:00
Devang Patel
de2a20aefe
Use DominatorTree instead of ETForest.
...
llvm-svn: 37498
2007-06-07 21:35:27 +00:00
Devang Patel
5c0808db4f
Use DominatorTree instead of ETForest.
...
llvm-svn: 37495
2007-06-07 18:45:06 +00:00
Devang Patel
700d930e73
Use DominatorTree instead of ETForest.
...
llvm-svn: 37494
2007-06-07 18:40:55 +00:00
Devang Patel
babcd06827
Maintain ETNode as part of DomTreeNode.
...
This adds redundancy for now.
llvm-svn: 37492
2007-06-07 17:47:21 +00:00
Tanya Lattner
968030663f
Formating fixes.
...
llvm-svn: 37491
2007-06-07 17:12:16 +00:00
Tanya Lattner
9672d69be2
Instruct the inliner to obey the noinline attribute. Add test case.
...
llvm-svn: 37481
2007-06-06 21:59:26 +00:00
Chris Lattner
c5d0dc3554
simplify this code and fix PR1493, now that llvm-gcc3 is dead.
...
llvm-svn: 37478
2007-06-06 20:51:41 +00:00
Lauro Ramos Venancio
27fa43f343
Fix PR1499.
...
llvm-svn: 37472
2007-06-06 17:08:48 +00:00
Nick Lewycky
65199a504b
Inform ScalarEvolutions that we're deleting Values.
...
This is the obviously correct part of the fix for PR1487.
llvm-svn: 37457
2007-06-06 03:51:56 +00:00
Owen Anderson
501e5873d4
Add simple full redundancy elimination.
...
llvm-svn: 37455
2007-06-06 01:27:49 +00:00
Chris Lattner
a874ddba43
Fix PR1495 and CodeGen/X86/2007-06-05-LSR-Dominator.ll
...
llvm-svn: 37454
2007-06-06 01:23:55 +00:00
Devang Patel
61661c6774
Avoid non-trivial loop unswitching while optimizing for size.
...
llvm-svn: 37446
2007-06-06 00:21:03 +00:00
Owen Anderson
3aa2107b02
Fix a misunderstanding of the algorithm. Really, we should be tracking values
...
and expression separately. We can get around this, however, by only keeping
opaque values in TMP_GEN.
llvm-svn: 37443
2007-06-05 23:46:12 +00:00
Owen Anderson
3c9c199f2d
Don't leak memory.
...
llvm-svn: 37442
2007-06-05 22:11:49 +00:00
Owen Anderson
25a0068940
Fix a small bug, some 80 cols violations, and add some more debugging output.
...
llvm-svn: 37436
2007-06-05 17:31:23 +00:00
Dan Gohman
08d77288c1
Allow insertelement, extractelement, and shufflevector to be hoisted/sunk
...
by LICM.
llvm-svn: 37435
2007-06-05 16:05:55 +00:00
Bill Wendling
d2b1274d1b
Patches by Chuck Rose to unbreak V Studio builds.
...
Thanks Chuck!
llvm-svn: 37428
2007-06-04 23:52:59 +00:00
Devang Patel
ba29e5e591
s/ETNode::getChildren/ETNode::getETNodeChildren/g
...
llvm-svn: 37426
2007-06-04 23:45:02 +00:00
Owen Anderson
dde6943d82
Don't use std::set_difference when the two sets are sorted differently. Compute
...
the difference manually instead.
This allows GVNPRE to produce correct analysis for the example in the GVNPRE
paper.
llvm-svn: 37425
2007-06-04 23:34:56 +00:00
Owen Anderson
0cab4450c3
Fix a bunch of small bugs, and improve the debugging output significantly.
...
llvm-svn: 37424
2007-06-04 23:28:33 +00:00
Chris Lattner
7726564331
When rebuilding constant structs, make sure to honor the isPacked bit.
...
This fixes PR1491 and GlobalOpt/2007-06-04-PackedStruct.ll
llvm-svn: 37423
2007-06-04 22:23:42 +00:00
Owen Anderson
2043bb65a4
Make phi_translate correct.
...
llvm-svn: 37418
2007-06-04 18:05:26 +00:00
Devang Patel
74785c1f3c
s/DominatorTree::createNewNode/DominatorTree::addNewBlock/g
...
llvm-svn: 37415
2007-06-04 16:43:25 +00:00
Devang Patel
26d8a86df7
Add basic block level interface to change immediate dominator
...
and create new node.
llvm-svn: 37414
2007-06-04 16:22:33 +00:00
Devang Patel
2ef6caf14f
s/llvm::DominatorTreeBase::DomTreeNode/llvm::DomTreeNode/g
...
llvm-svn: 37407
2007-06-04 00:32:22 +00:00
Owen Anderson
39e6d31260
Don't use the custom comparator where it's not necessary.
...
llvm-svn: 37406
2007-06-03 22:02:14 +00:00
Devang Patel
d58b82f83a
s/DominatorTreeBase::Node/DominatorTreeBase:DomTreeNode/g
...
llvm-svn: 37403
2007-06-03 06:26:14 +00:00
Owen Anderson
76e8d46c1b
Remove an unused method.
...
llvm-svn: 37402
2007-06-03 05:58:25 +00:00
Owen Anderson
d7388dc4ce
There's no need to have an Expression class... Value works just as well! This simplifies a lot of code.
...
llvm-svn: 37401
2007-06-03 05:55:58 +00:00
Devang Patel
bdacf6c9c9
Insert new instructions in AliasSet.
...
llvm-svn: 37390
2007-06-01 22:15:31 +00:00
Owen Anderson
fadd9e4a7a
clean() needs to process things in topological order.
...
llvm-svn: 37389
2007-06-01 22:00:37 +00:00
Owen Anderson
da27462cea
Fix Expression comparison, which in turn fixes a value numbering error.
...
llvm-svn: 37386
2007-06-01 17:34:47 +00:00
Owen Anderson
6e39e65e7f
Add a topological sort function.
...
llvm-svn: 37376
2007-05-31 22:44:11 +00:00
Owen Anderson
919ee81e51
Attempt to fix up phi_translate.
...
llvm-svn: 37366
2007-05-31 00:42:15 +00:00
Devang Patel
044601033f
Fix typo.
...
llvm-svn: 37360
2007-05-30 15:29:37 +00:00
Chris Lattner
fd963f9138
Fix Transforms/ScalarRepl/2007-05-29-MemcpyPreserve.ll and the second
...
half of PR1421, by not decimating structs with holes that are the source and
destination of a memcpy.
llvm-svn: 37358
2007-05-30 06:11:23 +00:00
Owen Anderson
328c980fad
Fix a typo
...
llvm-svn: 37350
2007-05-29 23:34:14 +00:00
Owen Anderson
0f46c29ffd
Re-fix a bug, where I was now being too aggressive.
...
llvm-svn: 37348
2007-05-29 23:26:30 +00:00
Owen Anderson
cfeeaac401
Use proper debugging facilities so other people don't have to look at my commented-out
...
debugging lines.
llvm-svn: 37347
2007-05-29 23:15:21 +00:00
Owen Anderson
1e1d693893
Comment debug code out that I accidentally uncommented last time.
...
llvm-svn: 37346
2007-05-29 22:43:03 +00:00
Owen Anderson
707e37c6a6
Add a place where I missed using the maximal set. Note that using the maximal
...
set this way is _SLOW_. Somewhere down the line, I'll look at speeding it up.
llvm-svn: 37345
2007-05-29 22:35:41 +00:00
Owen Anderson
83bd7bcf6c
Very first part of a GVN-PRE implementation. It currently performs a bunch 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
2007-05-29 21:53:49 +00:00
Chris Lattner
8d43dc619d
Fix PR1446 by not scalarrepl'ing giant structures.
...
llvm-svn: 37326
2007-05-24 18:43:04 +00:00
Dan Gohman
2c5d31ee81
Minor comment cleanups.
...
llvm-svn: 37321
2007-05-24 14:36:04 +00:00
Chris Lattner
4cc07421ee
fix a miscompilation when passing a float through varargs
...
llvm-svn: 37297
2007-05-23 01:17:04 +00:00
Chris Lattner
dda5066a5e
Fix Transforms/InstCombine/2007-05-18-CastFoldBug.ll, a bug that devastates
...
objc code due to the way the FE lowers objc message sends.
llvm-svn: 37256
2007-05-19 06:51:32 +00:00
Chris Lattner
a13d75f270
Handle negative strides much more optimally. This compiles 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
2007-05-19 01:22:21 +00:00
Devang Patel
6e8f1aa332
Fix PR1431
...
Test case at Transformations/SCCP/2007-05-16-InvokeCrash.ll
llvm-svn: 37185
2007-05-17 22:10:15 +00:00
Chris Lattner
701ec7ae28
selects can also reach here
...
llvm-svn: 37081
2007-05-15 06:42:04 +00:00
Chris Lattner
dfc6f4a06c
Fix Transforms/InstCombine/2007-05-14-Crash.ll
...
llvm-svn: 37057
2007-05-15 00:16:00 +00:00
Dan Gohman
7616b6f30c
Correct a few comments.
...
llvm-svn: 37034
2007-05-14 14:31:17 +00:00
Chris Lattner
8ed56b8c48
Fix Transforms/GlobalOpt/2007-05-13-Crash.ll
...
llvm-svn: 37020
2007-05-13 21:28:07 +00:00
Chris Lattner
119ece07be
significantly improve debug output of lsr
...
llvm-svn: 36996
2007-05-11 22:40:34 +00:00
Dan Gohman
167379e73a
Fix typos.
...
llvm-svn: 36994
2007-05-11 21:10:54 +00:00
Dan Gohman
2e4ac0dea5
This patch extends the LoopUnroll pass to be able to unroll loops
...
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
2007-05-11 20:53:41 +00:00
Chris Lattner
3936efb43b
fix regressions from my previous checking, including
...
Transforms/InstCombine/2006-12-08-ICmp-Combining.ll
llvm-svn: 36989
2007-05-11 16:58:45 +00:00
Chris Lattner
f7adc33cbd
fix Transforms/InstCombine/2007-05-10-icmp-or.ll
...
llvm-svn: 36984
2007-05-11 05:55:56 +00:00
Devang Patel
1f12d0b50c
Fix PR1333
...
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
2007-05-09 08:24:12 +00:00
Dan Gohman
7459c19c81
Fix various whitespace inconsistencies.
...
llvm-svn: 36936
2007-05-08 15:19:19 +00:00
Dan Gohman
e9789171b0
Correct the comment for ApproximateLoopSize to reflect what it actually does.
...
llvm-svn: 36935
2007-05-08 15:14:19 +00:00
Dale Johannesen
842aef302e
Don't generate branch to entry block.
...
llvm-svn: 36917
2007-05-08 01:01:04 +00:00
Chris Lattner
8e9063c571
Fix PR1395, by passing the ID correctly
...
llvm-svn: 36894
2007-05-06 23:13:56 +00:00
Nick Lewycky
c2306ff5b4
Fix typo in comment.
...
llvm-svn: 36873
2007-05-06 13:37:16 +00:00
Chris Lattner
619ffa3881
Fix a bug in my previous patch
...
llvm-svn: 36857
2007-05-06 07:24:03 +00:00
Chris Lattner
26c55e2dda
Implement Transforms/InstCombine/cast_ptr.ll
...
llvm-svn: 36809
2007-05-05 22:41:33 +00:00
Chris Lattner
46b06d19d4
wrap long lines
...
llvm-svn: 36807
2007-05-05 22:32:24 +00:00
Chris Lattner
abff2ede40
Fix Transforms/LoopUnroll/2007-05-05-UnrollMiscomp.ll and PR1385.
...
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
2007-05-05 18:49:57 +00:00
Chris Lattner
fba294126e
make a temporary for *SI, no functionality change.
...
llvm-svn: 36782
2007-05-05 18:36:36 +00:00
Chris Lattner
750321383f
Fix InstCombine/2007-05-04-Crash.ll and PR1384
...
llvm-svn: 36775
2007-05-05 01:59:31 +00:00
Dan Gohman
a97484da91
Use IntrinsicInst to test for prefetch instructions, which is ever so
...
slightly nicer than using CallInst with an extra check; thanks Chris.
llvm-svn: 36743
2007-05-04 14:59:09 +00:00
Dan Gohman
e4d5ae9fcd
Allow strength reduction to make use of addressing modes for the
...
address operand in a prefetch intrinsic.
llvm-svn: 36713
2007-05-03 23:20:33 +00:00
Devang Patel
cd45427a87
Drop 'const'
...
llvm-svn: 36662
2007-05-03 01:11:54 +00:00
Devang Patel
8ee9065162
Use 'static const char' instead of 'static const int'.
...
Due to darwin gcc bug, one version of darwin linker coalesces
static const int, which defauts PassID based pass identification.
llvm-svn: 36652
2007-05-02 21:39:20 +00:00
Lauro Ramos Venancio
57d03e112b
Fix build error.
...
llvm-svn: 36648
2007-05-02 20:37:47 +00:00
Devang Patel
38a66bc82e
Do not use typeinfo to identify pass in pass manager.
...
llvm-svn: 36632
2007-05-01 21:15:47 +00:00
Anton Korobeynikov
cb2004f82c
Implement review feedback
...
llvm-svn: 36564
2007-04-29 18:02:48 +00:00
Anton Korobeynikov
45162c6dad
Implement review feedback. Aliasees can be either GlobalValue's or
...
bitcasts of them.
llvm-svn: 36537
2007-04-28 13:45:00 +00:00
Chris Lattner
5cb586acf5
fix a bug triggered by 403.gcc
...
llvm-svn: 36527
2007-04-28 05:27:36 +00:00
Chris Lattner
13b1e24f41
Fix several latent bugs in EmitGEPOffset that didn't manifest with its
...
previous clients. This fixes MallocBench/gs
llvm-svn: 36525
2007-04-28 04:52:43 +00:00
Chris Lattner
22d3205e80
uhn zap cvs
...
llvm-svn: 36523
2007-04-28 03:50:56 +00:00
Chris Lattner
56ac7ba950
Implement PR1345 and Transforms/InstCombine/bitcast-gep.ll
...
llvm-svn: 36521
2007-04-28 00:57:34 +00:00
Chris Lattner
e0fe3b5c35
refactor some code relating to pointer cast xforms, pulling it out of the codepath
...
for unrelated casts.
llvm-svn: 36511
2007-04-27 17:44:50 +00:00
Zhou Sheng
8c150f133c
Using APInt more efficiently.
...
llvm-svn: 36475
2007-04-26 16:42:07 +00:00
Devang Patel
e5765bd115
Mem2Reg does not need TargetData.
...
llvm-svn: 36444
2007-04-25 18:32:35 +00:00
Devang Patel
b6ef7bc5d9
Remove unused function argument.
...
llvm-svn: 36441
2007-04-25 17:15:20 +00:00
Anton Korobeynikov
25dc9a61cb
Implement aliases. This fixes PR1017 and it's dependent bugs. CFE part
...
will follow.
llvm-svn: 36435
2007-04-25 14:27:10 +00:00
Chris Lattner
e0e5106141
If an alloca only has two types of uses: 1) reads 2) a memcpy/memmove that
...
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
2007-04-25 06:40:51 +00:00
Chris Lattner
cf27f9705f
refactor the SROA code out into its own method, no functionality change.
...
llvm-svn: 36426
2007-04-25 05:02:56 +00:00
Owen Anderson
d0af582609
Undo my previous changes. Since my approach to this problem is being revised,
...
this approach is no longer appropriate.
llvm-svn: 36421
2007-04-25 04:18:54 +00:00
Devang Patel
938e0db5e3
Fix
...
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20070423/048376.html
llvm-svn: 36417
2007-04-25 00:37:04 +00:00
Owen Anderson
df3ece8561
Rollback some changes that adversely affected performance. I'm currently rethinking
...
my approach to this, so hopefully I'll find a way to do this without making this slower.
llvm-svn: 36392
2007-04-24 06:40:39 +00:00
Devang Patel
6a9016dcf7
Fix
...
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20070423/048333.html
llvm-svn: 36380
2007-04-23 22:42:03 +00:00
Owen Anderson
2be28af998
Make PredicateSimplifier not use DominatorTree.
...
llvm-svn: 36300
2007-04-21 07:38:12 +00:00
Owen Anderson
9813f7fa80
Fix a comment.
...
llvm-svn: 36299
2007-04-21 07:12:44 +00:00
Jeff Cohen
2afa206eb3
Comment out usage of write() for now.
...
llvm-svn: 36287
2007-04-20 22:40:10 +00:00
Devang Patel
3c304ecdc9
Avoid recursion.
...
llvm-svn: 36272
2007-04-20 20:04:37 +00:00
Owen Anderson
41b527b75f
Move more passes to using ETForest instead of DominatorTree.
...
llvm-svn: 36271
2007-04-20 06:27:13 +00:00
Zhou Sheng
9339daf407
Make use of ConstantInt::isZero instead of ConstantInt::isNullValue.
...
llvm-svn: 36261
2007-04-19 05:39:12 +00:00
Zhou Sheng
2cb77f2d6c
Make the operations of APInt variables more efficient.
...
llvm-svn: 36260
2007-04-19 05:35:00 +00:00
Evan Cheng
91e0637ed3
Revert Owen's last check-in. This is breaking Mac OS X / PPC llvm-gcc bootstrap.
...
llvm-svn: 36258
2007-04-18 22:39:00 +00:00
Owen Anderson
16d1fd6ec8
Revert changes that caused breakage.
...
llvm-svn: 36255
2007-04-18 06:46:57 +00:00
Owen Anderson
781cbecd34
Switch more uses of DominatorTree over to ETForest.
...
llvm-svn: 36254
2007-04-18 05:43:13 +00:00
Owen Anderson
c3aa967684
Use ETForest instead of DominatorTree.
...
llvm-svn: 36252
2007-04-18 05:25:43 +00:00
Owen Anderson
c07f29d206
Use ETForest instead of DominatorTree.
...
llvm-svn: 36249
2007-04-18 04:55:33 +00:00
Owen Anderson
d8bb3aca7b
Use new ETForest accessor.
...
llvm-svn: 36248
2007-04-18 04:46:35 +00:00
Owen Anderson
909895b564
Use ETForest instead of DominatorTree.
...
llvm-svn: 36247
2007-04-18 04:39:32 +00:00
Dan Gohman
a7e1f3c85b
Spell doFinalization right, so that it is a proper virtual override and
...
gets called.
llvm-svn: 36208
2007-04-17 18:21:36 +00:00
Chris Lattner
8e28e7654d
remove use of BasicBlock::getNext
...
llvm-svn: 36205
2007-04-17 18:09:47 +00:00
Chris Lattner
d503b61318
remove use of BasicBlock::getNext
...
llvm-svn: 36202
2007-04-17 17:54:12 +00:00
Chris Lattner
e5d747e0be
eliminate use of Instruction::getNext()
...
llvm-svn: 36200
2007-04-17 17:51:03 +00:00
Chris Lattner
7b6a5d7956
remove use of Instruction::getNext
...
llvm-svn: 36199
2007-04-17 17:47:54 +00:00
Devang Patel
7d868316fd
Fix
...
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20070416/047888.html
llvm-svn: 36182
2007-04-16 23:03:45 +00:00
Anton Korobeynikov
f3e62a428a
Removed tabs everywhere except autogenerated & external files. Add make
...
target for tabs checking.
llvm-svn: 36146
2007-04-16 18:10:23 +00:00
Chris Lattner
601aa5b489
Fix PR1335 and Transforms/Inline/2007-04-15-InlineEH.ll
...
llvm-svn: 36090
2007-04-15 21:38:06 +00:00
Owen Anderson
ea857029ea
Remove ImmediateDominator analysis. The same information can be obtained from DomTree. A lot of code for
...
constructing ImmediateDominator is now folded into DomTree construction.
This is part of the ongoing work for PR217.
llvm-svn: 36063
2007-04-15 08:47:27 +00:00
Chris Lattner
798749cafe
fix SimplifyLibCalls/IsDigit.ll
...
llvm-svn: 36047
2007-04-15 05:38:40 +00:00
Chris Lattner
fe00dd8315
Extend store merging to support the 'if/then' version in addition to if/then/else.
...
This sinks the two stores in this example into a single store in cond_next. In this
case, it allows elimination of the load as well:
store double 0.000000e+00, double* @s.3060
%tmp3 = fcmp ogt double %tmp1, 5.000000e-01 ; <i1> [#uses=1]
br i1 %tmp3, label %cond_true, label %cond_next
cond_true: ; preds = %entry
store double 1.000000e+00, double* @s.3060
br label %cond_next
cond_next: ; preds = %entry, %cond_true
%tmp6 = load double* @s.3060 ; <double> [#uses=1]
This implements Transforms/InstCombine/store-merge.ll:test2
llvm-svn: 36040
2007-04-15 01:02:18 +00:00
Chris Lattner
ecd0fda993
refactor some code, no functionality change.
...
llvm-svn: 36037
2007-04-15 00:07:55 +00:00
Chris Lattner
022c2bc0c3
fix long lines
...
llvm-svn: 36031
2007-04-14 23:32:02 +00:00
Chris Lattner
9764a3cf09
Implement Transforms/InstCombine/vec_extract_elt.ll, transforming:
...
define i32 @test(float %f) {
%tmp7 = insertelement <4 x float> undef, float %f, i32 0
%tmp17 = bitcast <4 x float> %tmp7 to <4 x i32>
%tmp19 = extractelement <4 x i32> %tmp17, i32 0
ret i32 %tmp19
}
into:
define i32 @test(float %f) {
%tmp19 = bitcast float %f to i32 ; <i32> [#uses=1]
ret i32 %tmp19
}
On PPC, this is the difference between:
_test:
mfspr r2, 256
oris r3, r2, 8192
mtspr 256, r3
stfs f1, -16(r1)
addi r3, r1, -16
addi r4, r1, -32
lvx v2, 0, r3
stvx v2, 0, r4
lwz r3, -32(r1)
mtspr 256, r2
blr
and:
_test:
stfs f1, -4(r1)
nop
nop
nop
lwz r3, -4(r1)
blr
llvm-svn: 36025
2007-04-14 23:02:14 +00:00
Chris Lattner
3553a131d0
Implement InstCombine/vec_demanded_elts.ll:test2. This allows us to turn
...
unsigned test(float f) {
return _mm_cvtsi128_si32( (__m128i) _mm_set_ss( f*f ));
}
into:
_test:
movss 4(%esp), %xmm0
mulss %xmm0, %xmm0
movd %xmm0, %eax
ret
instead of:
_test:
movss 4(%esp), %xmm0
mulss %xmm0, %xmm0
xorps %xmm1, %xmm1
movss %xmm0, %xmm1
movd %xmm1, %eax
ret
GCC gets:
_test:
subl $28, %esp
movss 32(%esp), %xmm0
mulss %xmm0, %xmm0
xorps %xmm1, %xmm1
movss %xmm0, %xmm1
movaps %xmm1, %xmm0
movd %xmm0, 12(%esp)
movl 12(%esp), %eax
addl $28, %esp
ret
llvm-svn: 36020
2007-04-14 22:29:23 +00:00
Chris Lattner
7928216e38
avoid copying sets and vectors around.
...
llvm-svn: 36017
2007-04-14 22:10:17 +00:00
Chris Lattner
3cebebfdd4
avoid iterator invalidation.
...
llvm-svn: 36002
2007-04-14 18:06:52 +00:00
Jeff Cohen
6e724c5338
An even better fix.
...
llvm-svn: 35998
2007-04-14 17:18:29 +00:00
Jeff Cohen
114799eab9
Fix recent regression that broke several llvm-tests.
...
llvm-svn: 35996
2007-04-14 16:55:19 +00:00
Chris Lattner
a283acb406
Implement a few missing xforms: printf("foo\n") -> puts. printf("x") -> putchar
...
printf("") -> noop. Still need to do the xforms for fprintf.
This implements Transforms/SimplifyLibCalls/Printf.ll
llvm-svn: 35984
2007-04-14 01:17:48 +00:00
Chris Lattner
25f2c932b7
in addition to merging, constantmerge should also delete trivially dead globals,
...
in order to clean up after simplifylibcalls.
llvm-svn: 35982
2007-04-14 01:11:54 +00:00
Chris Lattner
6f64f54168
Implement PR1201 and test/Transforms/InstCombine/malloc-free-delete.ll
...
llvm-svn: 35981
2007-04-14 00:20:02 +00:00
Chris Lattner
b97ff21db2
use an accessor to simplify code.
...
llvm-svn: 35979
2007-04-14 00:17:39 +00:00
Chris Lattner
8477dd1722
Now that codegen prepare isn't defeating me, I can finally fix what I set
...
out to do! :)
This fixes a problem where LSR would insert a bunch of code into each MBB
that uses a particular subexpression (e.g. IV+base+C). The problem is that
this code cannot be CSE'd back together if inserted into different blocks.
This patch changes LSR to attempt to insert a single copy of this code and
share it, allowing codegenprepare to duplicate the code if it can be sunk
into various addressing modes. On CodeGen/ARM/lsr-code-insertion.ll,
for example, this gives us code like:
add r8, r0, r5
str r6, [r8, #+4]
..
ble LBB1_4 @cond_next
LBB1_3: @cond_true
str r10, [r8, #+4]
LBB1_4: @cond_next
...
LBB1_5: @cond_true55
ldr r6, LCPI1_1
str r6, [r8, #+4]
instead of:
add r10, r0, r6
str r8, [r10, #+4]
...
ble LBB1_4 @cond_next
LBB1_3: @cond_true
add r8, r0, r6
str r10, [r8, #+4]
LBB1_4: @cond_next
...
LBB1_5: @cond_true55
add r8, r0, r6
ldr r10, LCPI1_1
str r10, [r8, #+4]
Besides being smaller and more efficient, this makes it immediately
obvious that it is profitable to predicate LBB1_3 now :)
llvm-svn: 35972
2007-04-13 20:42:26 +00:00
Chris Lattner
bc03b6c341
Completely rewrite addressing-mode related sinking of code. In particular,
...
this fixes problems where codegenprepare would sink expressions into load/stores
that are not valid, and fixes cases where it would miss important valid ones.
This fixes several serious codesize and perf issues, particularly on targets
with complex addressing modes like arm and x86. For example, now we compile
CodeGen/X86/isel-sink.ll to:
_test:
movl 8(%esp), %eax
movl 4(%esp), %ecx
cmpl $1233, %eax
ja LBB1_2 #F
LBB1_1: #T
movl $4, (%ecx,%eax,4)
movl $141, %eax
ret
LBB1_2: #F
movl (%ecx,%eax,4), %eax
ret
instead of:
_test:
movl 8(%esp), %eax
leal (,%eax,4), %ecx
addl 4(%esp), %ecx
cmpl $1233, %eax
ja LBB1_2 #F
LBB1_1: #T
movl $4, (%ecx)
movl $141, %eax
ret
LBB1_2: #F
movl (%ecx), %eax
ret
llvm-svn: 35970
2007-04-13 20:30:56 +00:00
Devang Patel
d86d04983a
Remove use of SlowOperationInformer.
...
llvm-svn: 35967
2007-04-13 18:58:18 +00:00
Devang Patel
d01bb17f76
Undo previous check-in.
...
llvm-svn: 35966
2007-04-13 18:35:15 +00:00
Devang Patel
bfd8480bad
Hello uses LLVMSupport.a (SlowerOperationInformer)
...
llvm-svn: 35965
2007-04-13 18:28:23 +00:00
Lauro Ramos Venancio
a76c2806de
Implement the "thread_local" keyword.
...
llvm-svn: 35950
2007-04-12 18:32:50 +00:00
Reid Spencer
2afe5c8354
Build Hello by default so it can be used in test cases.
...
llvm-svn: 35922
2007-04-11 21:03:37 +00:00
Chris Lattner
f7451ea3c2
Fix Transforms/ScalarRepl/union-pointer.ll
...
llvm-svn: 35906
2007-04-11 15:45:25 +00:00
Chris Lattner
27a80589de
Turn stuff like:
...
icmp slt i32 %X, 0 ; <i1>:0 [#uses=1]
sext i1 %0 to i32 ; <i32>:1 [#uses=1]
into:
%X.lobit = ashr i32 %X, 31 ; <i32> [#uses=1]
This implements InstCombine/icmp.ll:test[34]
llvm-svn: 35891
2007-04-11 06:57:46 +00:00
Chris Lattner
b659c04f13
Simplify some comparisons to arithmetic, this implements:
...
Transforms/InstCombine/icmp.ll
llvm-svn: 35890
2007-04-11 06:53:04 +00:00
Chris Lattner
50a7c8f34e
canonicalize (x <u 2147483648) -> (x >s -1) and (x >u 2147483647) -> (x <s 0)
...
llvm-svn: 35886
2007-04-11 06:12:58 +00:00
Chris Lattner
cbd4a7e79c
fix a miscompilation of:
...
define i32 @test(i32 %X) {
entry:
%Y = and i32 %X, 4 ; <i32> [#uses=1]
icmp eq i32 %Y, 0 ; <i1>:0 [#uses=1]
sext i1 %0 to i32 ; <i32>:1 [#uses=1]
ret i32 %1
}
by moving code out of commonIntCastTransforms into visitZExt. Simplify the
APInt gymnastics in it etc.
llvm-svn: 35885
2007-04-11 05:45:39 +00:00
Chris Lattner
c7c7a4712e
fix a regression introduced by my last patch.
...
llvm-svn: 35879
2007-04-11 03:27:24 +00:00
Chris Lattner
4ea7a156ba
Simplify SROA conversion to integer in some ways, make it more general in others.
...
We now tolerate small amounts of undefined behavior, better emulating what
would happen if the transaction actually occurred in memory. This fixes
SingleSource/UnitTests/2007-04-10-BitfieldTest.c on PPC, at least until
Devang gets a chance to fix the CFE from doing undefined things with bitfields :)
llvm-svn: 35875
2007-04-11 00:57:54 +00:00
Chris Lattner
fe1860b138
Strengthen the boundary conditions of this fold, implementing
...
InstCombine/set.ll:test25
llvm-svn: 35852
2007-04-09 23:52:13 +00:00
Owen Anderson
5d0148ae7c
Re-constify things that don't break the build. Last patch in this
...
series, I promise.
llvm-svn: 35848
2007-04-09 23:38:18 +00:00
Chris Lattner
78fffcb81b
eliminate the last uses of some TLI methods.
...
llvm-svn: 35844
2007-04-09 23:29:07 +00:00
Owen Anderson
94e3511ef6
Unconst-ify stuff that broke the build.
...
llvm-svn: 35843
2007-04-09 23:08:26 +00:00
Owen Anderson
3d132f812a
Const-ify some parameters, and some cosmetic cleanups. No functionality
...
change.
llvm-svn: 35842
2007-04-09 22:54:50 +00:00
Owen Anderson
148566d2e3
Tabs -> Spaces
...
llvm-svn: 35841
2007-04-09 22:31:43 +00:00
Owen Anderson
6f5fe179cc
Improve some _slow_ behavior introduced in my patches the last few days.
...
llvm-svn: 35839
2007-04-09 22:25:09 +00:00
Chris Lattner
87c89cafb2
switch LSR to use isLegalAddressingMode instead of other simpler hooks
...
llvm-svn: 35837
2007-04-09 22:20:14 +00:00
Devang Patel
70205cceea
Check _all_ PHINodes.
...
llvm-svn: 35836
2007-04-09 22:20:10 +00:00
Devang Patel
5392489e86
Insert new pre-header before new header. Original pre-header may
...
happen to be an entry, in such case, it is not a good idea to
insert new block before entry.
Also fix typo in assertion check.
llvm-svn: 35833
2007-04-09 21:40:43 +00:00
Devang Patel
cdea453adb
Preserve canonical loop form.
...
llvm-svn: 35829
2007-04-09 20:19:46 +00:00
Reid Spencer
60da7b09e7
Don't link against System or Support library. These things will already
...
be in the opt tool.
llvm-svn: 35827
2007-04-09 19:17:47 +00:00
Devang Patel
9263a797b3
Do not create new pre-header. Reuse original pre-header.
...
llvm-svn: 35825
2007-04-09 19:04:21 +00:00
Devang Patel
e038420dc6
Simpler for() loops.
...
llvm-svn: 35822
2007-04-09 17:09:13 +00:00
Devang Patel
dd269ce747
Fix future bug. Of course, Chris spotted this.
...
Handle Argument or Undef as an incoming PHI value.
llvm-svn: 35821
2007-04-09 16:41:46 +00:00
Devang Patel
ba5018aaff
More cosmetic changes.
...
llvm-svn: 35820
2007-04-09 16:21:29 +00:00
Devang Patel
f66f3dd962
Only cosmetic changes. Zero functionality Change.
...
llvm-svn: 35819
2007-04-09 16:11:48 +00:00
Chris Lattner
218d43af10
Fix PR1304 and Transforms/InstCombine/2007-04-08-SingleEltVectorCrash.ll
...
llvm-svn: 35792
2007-04-09 01:37:55 +00:00
Chris Lattner
b3d105a4f9
Eliminate useless insertelement instructions. This implements
...
Transforms/InstCombine/vec_insertelt.ll and fixes PR1286.
We now compile the code from that bug into:
_foo:
movl 4(%esp), %eax
movdqa (%eax), %xmm0
movl 8(%esp), %ecx
psllw (%ecx), %xmm0
movdqa %xmm0, (%eax)
ret
instead of:
_foo:
subl $4, %esp
movl %ebp, (%esp)
movl %esp, %ebp
movl 12(%ebp), %eax
movdqa (%eax), %xmm0
#IMPLICIT_DEF %eax
pinsrw $2, %eax, %xmm0
xorl %ecx, %ecx
pinsrw $3, %ecx, %xmm0
pinsrw $4, %eax, %xmm0
pinsrw $5, %ecx, %xmm0
pinsrw $6, %eax, %xmm0
pinsrw $7, %ecx, %xmm0
movl 8(%ebp), %eax
movdqa (%eax), %xmm1
psllw %xmm0, %xmm1
movdqa %xmm1, (%eax)
movl %ebp, %esp
popl %ebp
ret
woo :)
llvm-svn: 35788
2007-04-09 01:11:16 +00:00
Owen Anderson
f9a432a613
Cleanup some from my DomSet-removal changes. Add a new
...
isReachableFromEntry
test to ETForest to factor a common test out of code.
llvm-svn: 35786
2007-04-09 00:52:49 +00:00
Chris Lattner
4ed32d0891
Fix a typo that broke SimplifyLibCalls/SPrintF.ll (pr1315)
...
llvm-svn: 35768
2007-04-08 18:11:26 +00:00
Chris Lattner
1a1b798eb5
reenable this xform, whoops :)
...
llvm-svn: 35765
2007-04-08 08:01:49 +00:00
Chris Lattner
1760b42378
Fix regression on Instcombine/apint-or2.ll
...
llvm-svn: 35763
2007-04-08 07:55:22 +00:00
Chris Lattner
d435e0bfd2
Generalize the code that handles (A&B)|(A&C) to work where B/C are not constants.
...
Add a new xform to simplify (A&B)|(~A&C). THis implements InstCombine/or2.ll:test1
llvm-svn: 35760
2007-04-08 07:47:01 +00:00
Chris Lattner
34464bdf2b
implement a fixme: move optimizations for fwrite out of fputs into a new
...
fwrite optimizer.
llvm-svn: 35758
2007-04-08 07:00:35 +00:00
Nick Lewycky
71592d1ef2
Remove DominatorSet usage from LoopSimplify. Patch from Owen Anderson.
...
llvm-svn: 35757
2007-04-08 01:04:30 +00:00
Chris Lattner
16fe035aa4
Significantly simplify the clients of GetConstantStringInfo, by having it
...
just return the string itself.
llvm-svn: 35755
2007-04-07 21:58:02 +00:00
Chris Lattner
5b3be230d4
Fix problems in the sprintf optimizer
...
llvm-svn: 35754
2007-04-07 21:17:51 +00:00
Chris Lattner
99a7ea0b00
Change CastToCStr to take a pointer instead of a reference.
...
Fix some miscompilations in fprintf optimizer.
llvm-svn: 35753
2007-04-07 21:04:50 +00:00
Chris Lattner
fcc6fe0a9c
Fix an off-by-one error that broke Prolangs/deriv2 with llc on x86
...
and Prolangs-C/cdecl
llvm-svn: 35749
2007-04-07 20:19:08 +00:00
Owen Anderson
7cf9d12f2e
Add DomSet back, and revert the changes to LoopSimplify. Apparently the
...
ETForest updating mechanisms don't work as I thought they did. These changes
will be reapplied once the issue is worked out.
llvm-svn: 35741
2007-04-07 18:23:27 +00:00
Nick Lewycky
e6cb3e2433
Add support for cast instructions.
...
llvm-svn: 35734
2007-04-07 15:48:32 +00:00
Owen Anderson
85b0e20f2a
Completely purge DomSet. This is the (hopefully) final patch for PR1171.
...
llvm-svn: 35731
2007-04-07 07:17:27 +00:00
Owen Anderson
177b1a6aea
Completely purge DomSet from LoopSimplify. This is part of the
...
continuing work on PR1171.
llvm-svn: 35730
2007-04-07 06:56:47 +00:00
Owen Anderson
e2add101a4
BreakCriticalEdges does still preserve DominatorTree.
...
llvm-svn: 35729
2007-04-07 05:57:09 +00:00
Owen Anderson
eb184ee17b
Expunge DomSet from BreakCriticalEdges. This is part of the continuing
...
work for PR 1171.
llvm-svn: 35728
2007-04-07 05:49:29 +00:00
Owen Anderson
41bf50021d
Expunge DomSet from CodeExtractor. This is part of the continuing work
...
on PR1171.
llvm-svn: 35726
2007-04-07 05:31:27 +00:00
Nick Lewycky
3e77af40ff
Support NE inequality in ValueRanges.
...
llvm-svn: 35724
2007-04-07 04:49:12 +00:00