Chris Lattner
6b04ecbaf9
Promoting allocas with the 'single store' fastpath is
...
faster than with the 'local to a block' fastpath. This speeds
up PR1432 from 2.1232 to 2.0686s (2.6%)
llvm-svn: 40818
2007-08-04 20:03:23 +00:00
Chris Lattner
4a930f9444
When PromoteLocallyUsedAllocas promoted allocas, it didn't remember
...
to increment NumLocalPromoted, and didn't actually delete the
dead alloca, leading to an extra iteration of mem2reg.
llvm-svn: 40817
2007-08-04 20:01:43 +00:00
Chris Lattner
63c039780c
std::map -> DenseMap
...
llvm-svn: 40816
2007-08-04 19:52:20 +00:00
Chris Lattner
7d382f7680
fix a logic bug where we wouldn't promote single store allocas if the
...
stored value was a non-instruction value. Doh.
This increase the # single store allocas from 8982 to 9026, and
speeds up mem2reg on the testcase in PR1432 from 2.17 to 2.13s.
llvm-svn: 40813
2007-08-04 02:45:02 +00:00
Chris Lattner
1b215f0661
When we do the single-store optimization, delete both the store
...
and the alloca so they don't get reprocessed.
This speeds up PR1432 from 2.20s to 2.17s.
llvm-svn: 40812
2007-08-04 02:38:38 +00:00
Chris Lattner
862f125457
Three improvements:
...
1. Check for revisiting a block before checking domination, which is faster.
2. If the stored value isn't an instruction, we don't have to check for domination.
3. If we have a value used in the same block more than once, make sure to remove the
block from the UsingBlocks vector. Not doing so forces us to go through the slow
path for the alloca.
The combination of these improvements increases the number of allocas on the fastpath
from 8935 to 8982 on PR1432. This speeds it up from 2.90s to 2.20s (31%)
llvm-svn: 40811
2007-08-04 02:32:22 +00:00
Chris Lattner
ae1e00eb36
switch from using a std::set to using a SmallPtrSet. This speeds up the
...
testcase in PR1432 from 6.33s to 2.90s (2.22x)
llvm-svn: 40810
2007-08-04 02:21:22 +00:00
Chris Lattner
9181801bb7
In mem2reg, when handling the single-store case, make sure to remove
...
a using block from the list if we handle it. Not doing this caused us
to not be able to promote (with the fast path) allocas which have uses (whoops).
This increases the # allocas hitting this fastpath from 4042 to 8935 on the
testcase in PR1432, speeding up mem2reg by 2.6x
llvm-svn: 40809
2007-08-04 02:15:24 +00:00
Chris Lattner
886a41a007
split rewriting of single-store allocas into its own
...
method.
llvm-svn: 40806
2007-08-04 01:47:41 +00:00
Chris Lattner
3cede09c67
refactor some code to shrink PromoteMem2Reg::run a bit
...
llvm-svn: 40805
2007-08-04 01:41:18 +00:00
Chris Lattner
d524537fe9
add a typedef, no other change.
...
llvm-svn: 40804
2007-08-04 01:19:38 +00:00
Chris Lattner
df138be527
avoid an unneeded vector copy. This speeds up mem2reg on the testcase
...
in PR1432 by 6%
llvm-svn: 40803
2007-08-04 01:07:49 +00:00
Chris Lattner
fd838f0770
make RenamePassWorkList a local var instead of an ivar.
...
llvm-svn: 40802
2007-08-04 01:04:40 +00:00
Dan Gohman
34d442f274
More explicit keywords.
...
llvm-svn: 40673
2007-08-01 15:32:29 +00:00
David Greene
17a5dfe6f7
New CallInst interface to address GLIBCXX_DEBUG errors caused by
...
indexing an empty std::vector.
Updates to all clients.
llvm-svn: 40660
2007-08-01 03:43:44 +00:00
Devang Patel
c5e340eded
LCSSA preserves dom info.
...
llvm-svn: 40604
2007-07-30 20:23:45 +00:00
Devang Patel
e3206cb425
Use SmallPtrSet.
...
llvm-svn: 40560
2007-07-27 18:34:27 +00:00
Dan Gohman
6e853bc73f
Move the GET_SIDE_EFFECT_INFO logic from isInstructionTriviallyDead
...
to Instruction::mayWriteToMemory, fixing a FIXME, and helping
various places that call mayWriteToMemory directly.
llvm-svn: 40533
2007-07-26 16:06:08 +00:00
Devang Patel
33227115b9
Add BasicInliner interface.
...
This interface allows clients to inline bunch of functions with module
level call graph information.:wq
llvm-svn: 40486
2007-07-25 18:00:25 +00:00
Devang Patel
a273d1cd3a
Verify loop info.
...
llvm-svn: 40062
2007-07-19 18:02:32 +00:00
Devang Patel
186e0d8b0a
After a basic block is split into two parts,
...
second part dominates all the blocks dominated
by original basic block. And first part dominates
second part.
llvm-svn: 40035
2007-07-19 02:29:24 +00:00
Devang Patel
de5901523c
Now this temp. fix is not required.
...
llvm-svn: 40034
2007-07-19 02:22:21 +00:00
Reid Spencer
3363f4ad96
Return Undef if the block has no dominator. This was required to allow
...
llvm-gcc build to succeed. Without this change it fails in libstdc++
compilation. This causes no regressions in dejagnu tests. However,
someone who knows this code better might want to review it.
llvm-svn: 39924
2007-07-16 21:03:44 +00:00
Dan Gohman
06c60b6032
Fix comments about vectors to use the current wording.
...
llvm-svn: 39921
2007-07-16 14:29:03 +00:00
Devang Patel
4cd1413f15
Make LCSSA a loop pass.
...
llvm-svn: 39844
2007-07-13 23:57:11 +00:00
Tanya Lattner
ccecbcd779
Adding ability to demote phi to stack.
...
llvm-svn: 39744
2007-07-11 18:41:34 +00:00
Anton Korobeynikov
76547349c1
During module cloning copy aliases too. This fixes PR1544
...
llvm-svn: 38505
2007-07-10 19:07:35 +00:00
Devang Patel
d7767cc2a7
Add SplitEdge and SplitBlock utility routines.
...
llvm-svn: 37952
2007-07-06 21:39:20 +00:00
David Greene
1e2a12019f
Fix reference to iterator invalidated by an erase operation. Uncovered
...
by _GLIBCXX_DEBUG.
llvm-svn: 37796
2007-06-29 02:53:16 +00:00
Devang Patel
d5258a23a5
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
Devang Patel
78b9c68164
Add and use DominatorTreeBase::findNearestCommonDominator().
...
llvm-svn: 37545
2007-06-11 23:31:22 +00:00
Devang Patel
536ac4dca7
Simplify.
...
llvm-svn: 37542
2007-06-11 21:45:31 +00:00
Devang Patel
d18054afcf
simplify
...
llvm-svn: 37541
2007-06-11 21:25:31 +00:00
Devang Patel
ab2eee89a4
Simplify. Dominator Tree is required so always available.
...
llvm-svn: 37540
2007-06-11 21:18:00 +00:00
Devang Patel
becc466451
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
Devang Patel
8ecffa996a
Do not preserve ETForest.
...
llvm-svn: 37506
2007-06-08 00:02:08 +00:00
Devang Patel
cf470e5255
Do not use ETForest as well as DomiantorTree. DominatorTree is sufficient.
...
llvm-svn: 37501
2007-06-07 22:17:16 +00:00
Devang Patel
fc7fdef7d2
Use DominatorTree instead of ETForest.
...
This allows faster immediate domiantor walk.
llvm-svn: 37500
2007-06-07 21:57:03 +00:00
Devang Patel
af41e4a192
Maintain ETNode as part of DomTreeNode.
...
This adds redundancy for now.
llvm-svn: 37492
2007-06-07 17:47:21 +00:00
Devang Patel
ebc5b96735
s/DominatorTree::createNewNode/DominatorTree::addNewBlock/g
...
llvm-svn: 37415
2007-06-04 16:43:25 +00:00
Devang Patel
a89566aefd
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
bdd1aaef10
s/llvm::DominatorTreeBase::DomTreeNode/llvm::DomTreeNode/g
...
llvm-svn: 37407
2007-06-04 00:32:22 +00:00
Devang Patel
0e8aa7b69a
s/DominatorTreeBase::Node/DominatorTreeBase:DomTreeNode/g
...
llvm-svn: 37403
2007-06-03 06:26:14 +00:00
Dan Gohman
30978078bf
Minor comment cleanups.
...
llvm-svn: 37321
2007-05-24 14:36:04 +00:00
Dan Gohman
b5650ebd6a
Fix typos.
...
llvm-svn: 36994
2007-05-11 21:10:54 +00:00
Nick Lewycky
e7da2d6ac3
Fix typo in comment.
...
llvm-svn: 36873
2007-05-06 13:37:16 +00:00
Devang Patel
8c78a0bff0
Drop 'const'
...
llvm-svn: 36662
2007-05-03 01:11:54 +00:00
Devang Patel
e95c6ad802
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
Devang Patel
09f162ca6a
Do not use typeinfo to identify pass in pass manager.
...
llvm-svn: 36632
2007-05-01 21:15:47 +00:00
Devang Patel
d3ccc073a2
Mem2Reg does not need TargetData.
...
llvm-svn: 36444
2007-04-25 18:32:35 +00:00
Devang Patel
073be55d8e
Remove unused function argument.
...
llvm-svn: 36441
2007-04-25 17:15:20 +00:00
Owen Anderson
2965adb849
Fix a comment.
...
llvm-svn: 36299
2007-04-21 07:12:44 +00:00
Jeff Cohen
5959f42498
Comment out usage of write() for now.
...
llvm-svn: 36287
2007-04-20 22:40:10 +00:00
Devang Patel
83a3adcc3f
Avoid recursion.
...
llvm-svn: 36272
2007-04-20 20:04:37 +00:00
Owen Anderson
2da606c757
Move more passes to using ETForest instead of DominatorTree.
...
llvm-svn: 36271
2007-04-20 06:27:13 +00:00
Evan Cheng
db9b65d67a
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
08293fd6d1
Use new ETForest accessor.
...
llvm-svn: 36248
2007-04-18 04:46:35 +00:00
Owen Anderson
f38f2f2394
Use ETForest instead of DominatorTree.
...
llvm-svn: 36247
2007-04-18 04:39:32 +00:00
Chris Lattner
233f97ac6a
remove use of BasicBlock::getNext
...
llvm-svn: 36205
2007-04-17 18:09:47 +00:00
Chris Lattner
77a3edcb92
remove use of Instruction::getNext
...
llvm-svn: 36199
2007-04-17 17:47:54 +00:00
Anton Korobeynikov
fb80151c42
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
343c88cdb9
Fix PR1335 and Transforms/Inline/2007-04-15-InlineEH.ll
...
llvm-svn: 36090
2007-04-15 21:38:06 +00:00
Owen Anderson
f35a1dbc7a
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
a6b5660209
avoid copying sets and vectors around.
...
llvm-svn: 36017
2007-04-14 22:10:17 +00:00
Lauro Ramos Venancio
749e4668e7
Implement the "thread_local" keyword.
...
llvm-svn: 35950
2007-04-12 18:32:50 +00:00
Owen Anderson
3c7867935e
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
Owen Anderson
f1ca1376d3
Unconst-ify stuff that broke the build.
...
llvm-svn: 35843
2007-04-09 23:08:26 +00:00
Owen Anderson
5917716146
Const-ify some parameters, and some cosmetic cleanups. No functionality
...
change.
llvm-svn: 35842
2007-04-09 22:54:50 +00:00
Owen Anderson
e0ef5ac6bd
Tabs -> Spaces
...
llvm-svn: 35841
2007-04-09 22:31:43 +00:00
Owen Anderson
83efbc84f7
Improve some _slow_ behavior introduced in my patches the last few days.
...
llvm-svn: 35839
2007-04-09 22:25:09 +00:00
Owen Anderson
ae39ca037a
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
Nick Lewycky
e6c64466c7
Remove DominatorSet usage from LoopSimplify. Patch from Owen Anderson.
...
llvm-svn: 35757
2007-04-08 01:04:30 +00:00
Owen Anderson
f7ebea1b9f
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
Owen Anderson
706e97049d
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
d03a646f06
BreakCriticalEdges does still preserve DominatorTree.
...
llvm-svn: 35729
2007-04-07 05:57:09 +00:00
Owen Anderson
b39d9ca902
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
f095bf3ac4
Expunge DomSet from CodeExtractor. This is part of the continuing work
...
on PR1171.
llvm-svn: 35726
2007-04-07 05:31:27 +00:00
Owen Anderson
910419596e
Expunge a bunch of uses of DomSet from LoopSimplify. Many more remain.
...
This is the beginning of work for PR1171.
llvm-svn: 35720
2007-04-07 04:37:14 +00:00
Chris Lattner
b7b75145f1
reduce use of std::set
...
llvm-svn: 35576
2007-04-02 01:44:59 +00:00
Devang Patel
4398e242dd
Reduce malloc/free traffic.
...
llvm-svn: 35370
2007-03-26 23:19:29 +00:00
Dan Gohman
dcb291faa4
Change uses of Function::front to Function::getEntryBlock for readability.
...
llvm-svn: 35265
2007-03-22 16:38:57 +00:00
Devang Patel
1758cb50de
LoopSimplify::FindPHIToPartitionLoops()
...
Use ETForest instead of DominatorSet.
llvm-svn: 35221
2007-03-20 20:18:12 +00:00
Jeff Cohen
00227417d2
Unbreak VC++ build. Do not use identifiers starting with _ as they are reserved and
...
can collide with system defined names. Windows defines _BB, for example.
llvm-svn: 35066
2007-03-12 17:56:27 +00:00
Anton Korobeynikov
8a6dc102d3
Use range tests in LowerSwitch, where possible
...
llvm-svn: 35057
2007-03-10 16:46:28 +00:00
Devang Patel
5f50e61d52
Remove dead comments.
...
llvm-svn: 35053
2007-03-09 23:41:03 +00:00
Devang Patel
bda1250624
Avoid recursion. Use iterative algorithm for RenamePass().
...
llvm-svn: 35052
2007-03-09 23:39:14 +00:00
Reid Spencer
dec03a08d6
Make sure debug code is not evaluated in non-debug case.
...
llvm-svn: 34856
2007-03-02 23:15:21 +00:00
Reid Spencer
1e102971d2
1. Sort switch cases using APInt safe comparison.
...
2. Make sure debug output of APInt values is safe for all bit widths.
llvm-svn: 34855
2007-03-02 23:05:28 +00:00
Reid Spencer
43376a74af
Use APInt safe isOne() method on ConstantInt instead of getZExtValue()==1
...
llvm-svn: 34854
2007-03-02 23:03:17 +00:00
Reid Spencer
bb38d79ad6
Make sorting of ConstantInt be APInt clean through use of ult function.
...
llvm-svn: 34853
2007-03-02 23:01:14 +00:00
Chris Lattner
4bd8cda3f0
switch the inliner from being recursive to being iterative.
...
llvm-svn: 34832
2007-03-02 03:11:20 +00:00
Chris Lattner
1e48acb858
fix an obscure and tricky bug the inliner can hit sometimes.
...
llvm-svn: 34531
2007-02-23 19:54:30 +00:00
Jim Laskey
d879dfbf1c
Revert changes for a simplier solution.
...
llvm-svn: 34495
2007-02-22 16:21:18 +00:00
Jim Laskey
e4ccf22c34
Itanium ABI exception handing support.
...
llvm-svn: 34480
2007-02-21 22:49:50 +00:00
Dan Gohman
8c8597c4d9
Fix typos in comments.
...
llvm-svn: 34456
2007-02-20 20:52:03 +00:00
Chris Lattner
b5f6d0c15a
eliminate use of deprecated apis
...
llvm-svn: 34417
2007-02-19 07:34:47 +00:00
Reid Spencer
d84d35ba70
For PR1195:
...
Rename PackedType -> VectorType, ConstantPacked -> ConstantVector, and
PackedTyID -> VectorTyID. No functional changes.
llvm-svn: 34293
2007-02-15 02:26:10 +00:00
Chris Lattner
a06a8fd2d7
Eliminate use of ctors that take vectors.
...
llvm-svn: 34219
2007-02-13 02:10:56 +00:00
Chris Lattner
a731513406
stop using methods that take vectors.
...
llvm-svn: 34205
2007-02-12 22:56:41 +00:00
Chris Lattner
8dd4cae4f8
simplify code by using Value::takeName
...
llvm-svn: 34177
2007-02-11 01:37:51 +00:00