Chris Lattner
75caee2419
add a new CallGraphNode::removeCallEdgeFor method, tidy some comments.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49617 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-13 19:41:25 +00:00
Owen Anderson
e5ffa900f8
Make GVN more memory efficient, particularly on code that contains a large number of
...
allocations, which GVN can't optimize anyways.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49329 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-07 09:59:07 +00:00
Dan Gohman
950a4c40b8
Add explicit keywords.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48801 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-25 22:06:05 +00:00
Dan Gohman
c9235d2e85
Don't include <map> in Pass.h, which doesn't need it. This requires
...
adding <map> to many files that actually do need it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48667 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-21 23:51:57 +00:00
Devang Patel
c758209153
PassInfo keep tracks whether a pass is an analysis pass or not.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48554 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-19 21:56:59 +00:00
Devang Patel
c7fe32e840
Do not use virtual function to identify an analysis pass.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48520 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-19 00:48:41 +00:00
Dale Johannesen
e856685710
Get rid of compilation warnings. Per Devang.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48478 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-18 01:52:17 +00:00
Devang Patel
1cee94f041
Identify Analysis pass.
...
Do not run analysis pass again if analysis info is still available.
This fixes PR1441.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48476 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-18 00:39:19 +00:00
Dan Gohman
d7a3541a05
Move the PMStack class out of Pass.h and into PassManagers.h.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48367 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-14 18:14:29 +00:00
Nick Lewycky
529de8a457
Update the block cloner which fixes bugpoint on code using unwind_to (phew!)
...
and also update the cloning interface's major user, the loop optimizations.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48088 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-09 05:24:34 +00:00
Dan Gohman
e8ae2fe2a8
Add -analyze support to postdomtree.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47680 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-27 18:38:29 +00:00
Anton Korobeynikov
ae9f3a3b7c
Unbreak build with gcc 4.3: provide missed includes and silence most annoying warnings.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47367 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20 11:08:44 +00:00
Nick Lewycky
3e63076980
Add 'umax' similar to 'smax' SCEV. Closes PR2003.
...
Parse reversed smax and umax as smin and umin and express them with negative
or binary-not SCEVs (which are really just subtract under the hood).
Parse 'xor %x, -1' as (-1 - %x).
Remove dead code (ConstantInt::get always returns a ConstantInt).
Don't use getIntegerSCEV(-1, Ty). The first value is an int, then it gets
passed into a uint64_t. Instead, create the -1 directly from
ConstantInt::getAllOnesValue().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47360 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20 06:48:22 +00:00
Owen Anderson
30b4bd4d10
Re-apply the patch to improve the optimizations of memcpy's, with several
...
bugs fixed. This now passes PPC bootstrap.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47026 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-12 21:15:18 +00:00
Wojciech Matyjewicz
e3320a1bcc
Fix PR1798 - an error in the evaluation of SCEVAddRecExpr at an
...
arbitrary iteration.
The patch:
1) changes SCEVSDivExpr into SCEVUDivExpr,
2) replaces PartialFact() function with BinomialCoefficient(); the
computations (essentially, the division) in BinomialCoefficient() are
performed with the apprioprate bitwidth necessary to avoid overflow;
unsigned division is used instead of the signed one.
Computations in BinomialCoefficient() require support from the code
generator for APInts. Currently, we use a hack rounding up the
neccessary bitwidth to the nearest power of 2. The hack is easy to turn
off in future.
One remaining issue: we assume the divisor of the binomial coefficient
formula can be computed accurately using 16 bits. It means we can handle
AddRecs of length up to 9. In future, we should use APInts to evaluate
the divisor.
Thanks to Nicholas for cooperation!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46955 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-11 11:03:14 +00:00
Wojciech Matyjewicz
402689d11a
Add a check if the initial value of the induction variable is 0 (the method comment says it should be).
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46907 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-09 18:06:58 +00:00
Dan Gohman
fa9b80eb64
Avoid unnecessarily casting away const, fixing a FIXME.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46591 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-31 01:05:10 +00:00
Dan Gohman
ba42d2b937
Add comments describing what the loop depth values mean. Also, make a
...
minor simplification to the loop depth calculation code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46511 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-29 12:12:40 +00:00
Chris Lattner
fadcd4e60b
Move typedef of loop to top of the file where it is more obvious.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45857 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-11 06:29:42 +00:00
Chris Lattner
131bd2ecf7
Fix 80 col violations
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45856 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-11 06:27:42 +00:00
Wojciech Matyjewicz
b670a1737b
fix typo
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45595 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-04 20:04:08 +00:00
Chris Lattner
7ed47a1335
Don't attribute in file headers anymore. See llvmdev for the
...
discussion of this change. Boy are my fingers tired. ;-)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45411 91177308-0d34-0410-b5e6-96231b3b80d8
2007-12-29 19:59:42 +00:00
Chris Lattner
f286f6fd93
Fix PR1850 by removing an unsafe transformation from VMCore/ConstantFold.cpp.
...
Reimplement the xform in Analysis/ConstantFolding.cpp where we can use
targetdata to validate that it is safe. While I'm in there, fix some const
correctness issues and generalize the interface to the "operand folder".
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44817 91177308-0d34-0410-b5e6-96231b3b80d8
2007-12-10 22:53:04 +00:00
Owen Anderson
5fc4abac3d
Fix several cache coherence bugs in MemDep/GVN that were found. Also add some (disabled) debugging code
...
to make such problems easier to diagnose in the future, written by Duncan Sands.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44695 91177308-0d34-0410-b5e6-96231b3b80d8
2007-12-08 01:37:09 +00:00
Duncan Sands
dff6710717
Integrate the readonly/readnone logic more deeply
...
into alias analysis. This meant updating the API
which now has versions of the getModRefBehavior,
doesNotAccessMemory and onlyReadsMemory methods
which take a callsite parameter. These should be
used unless the callsite is not known, since in
general they can do a better job than the versions
that take a function. Also, users should no longer
call the version of getModRefBehavior that takes
both a function and a callsite. To reduce the
chance of misuse it is now protected.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44487 91177308-0d34-0410-b5e6-96231b3b80d8
2007-12-01 07:51:45 +00:00
Owen Anderson
528b00adc4
Fixes for MachineLoopInfo, mostly from Evan. With these, it should be almost useable!
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44480 91177308-0d34-0410-b5e6-96231b3b80d8
2007-12-01 03:01:39 +00:00
Owen Anderson
e4ad9c70e4
Add MachineLoopInfo. This is not yet tested.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44384 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-27 22:47:08 +00:00
Owen Anderson
d735ee85db
Make LoopInfoBase more generic, in preparation for having MachineLoopInfo. This involves a small interface change.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44348 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-27 03:43:35 +00:00
Owen Anderson
af9ac8f821
Add accessor for getting the underlying templated type. This is necessary for templated LoopInfo.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44347 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-27 03:33:40 +00:00
Anton Korobeynikov
fd94dd58ff
Remove another leak. Due to some reason AliasSetTracker didn't had any dtor...
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44320 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-25 23:52:02 +00:00
Nick Lewycky
c54c561c9f
Add new SCEV, SCEVSMax. This allows LLVM to analyze do-while loops.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44319 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-25 22:41:31 +00:00
Anton Korobeynikov
d91cbf352a
Remove a leak. Destroy LoopInfoBase object. releaseMemory() is actually called in its dtor.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44317 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-25 18:41:39 +00:00
Dan Gohman
50cdabcfd5
Remove meaningless qualifiers from return types, avoiding compiler warnings.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44240 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-19 20:46:23 +00:00
Dan Gohman
adf3eab773
Add explicit keywords.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44234 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-19 15:30:20 +00:00
Anton Korobeynikov
4e1a0e386c
Reverted r44163 per request
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44177 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-15 18:33:16 +00:00
Nick Lewycky
65e2da3b4d
Fix handling of overflow in loop calculation by adding new UDiv SCEV. This SCEV
...
is disabled in the sense that it will refuse to create one from a UDiv
instruction, until the code is better tested.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44163 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-15 06:30:50 +00:00
Owen Anderson
44a95e06cc
More templatization.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44158 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-15 05:00:15 +00:00
Owen Anderson
019b92a70c
Start the process of making MachineLoopInfo possible by templating Loop.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44097 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-14 02:33:58 +00:00
Owen Anderson
1ef14f6e76
VAArgInst does, in fact, read memory.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43633 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-02 04:01:21 +00:00
Owen Anderson
5d32ec4cb0
Some fixes to get MachineDomTree working better.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43541 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-31 03:30:14 +00:00
Dan Gohman
9962054775
Add explicit keywords.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43464 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-29 19:52:04 +00:00
Owen Anderson
08895f8866
Add a first attempt at dominator information for MBB's. Use with caution: this has been tested to compile. It has not yet been confirmed to generate correct analysis.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43438 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-29 04:50:50 +00:00
Owen Anderson
4d6d5783d8
Make it possible for DomTreeBase to be constructed from MachineFunction's as well as just Function's.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43321 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-25 00:16:57 +00:00
Owen Anderson
7feb3be0b7
Make DomTreeBase not a FunctionPass.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43263 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-23 21:42:49 +00:00
Owen Anderson
78daec973e
Unbreak the build. Forgot to commit this file.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43260 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-23 21:04:37 +00:00
Owen Anderson
d20cc14dbf
Make DomTree and PostDomTree thin wrappers around DomTreeBase, rather than inheriting from it.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43259 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-23 20:58:37 +00:00
Dan Gohman
246b2564d3
Move the SCEV object factors from being static members of the individual
...
SCEV subclasses to being non-static member functions of the ScalarEvolution
class.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43224 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-22 18:31:58 +00:00
Owen Anderson
7b714321df
Move Split<...>() into DomTreeBase. This should make the #include's of DominatorInternals.h
...
in CodeExtractor and LoopSimplify unnecessary.
Hartmut, could you confirm that this fixes the issues you were seeing?
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43115 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-18 05:13:52 +00:00
Hartmut Kaiser
efd4a5144b
Updated VC++ build system.
...
Silenced some VC warnings.
I'm getting linker errors, though: unresolved externals:
llvm::Split<class llvm::BasicBlock *,struct llvm::GraphTraits<class llvm::BasicBlock *> >(class llvm::DominatorTreeBase<class llvm::BasicBlock> &,class llvm::BasicBlock *)
and
llvm::Split<struct llvm::Inverse<class llvm::BasicBlock *>,struct llvm::GraphTraits<struct llvm::Inverse<class llvm::BasicBlock *> > >(class llvm::DominatorTreeBase<class llvm::BasicBlock> &,class llvm::BasicBlock *)
Where are these defined?
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43073 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-17 14:56:40 +00:00
Owen Anderson
05d2318fbd
Move splitBlock into DomTreeBase from DomTree.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43059 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-17 02:03:17 +00:00
Owen Anderson
280f8a2ece
Fix some formatting.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43049 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-16 22:59:15 +00:00
Owen Anderson
49b653aa6a
Template DominatorTreeBase by node type. This is the next major step towards
...
having dominator information on MBB's.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43036 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-16 19:59:25 +00:00
Owen Anderson
1aad74c9e8
Begin the process of allowing DomTree on MBB's. Step One: template DomTreeNode by making it a typedef of a templated DomTreeNodeBase.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42743 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-08 07:44:39 +00:00
Owen Anderson
9cb7f49ee9
Completely merge the implementation details of DomTree and PostDomTree.
...
Also, add a FIXME for a bug in PostDomTree calculation I noticed while writing this,
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42593 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-03 21:25:45 +00:00
Owen Anderson
471ab54df7
Factor some code from the DomTree and PostDomTree calculate methods up into
...
each one's runOnFunction method.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42563 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-03 03:20:17 +00:00
Dan Gohman
21c276d2fa
Add empty() member functions to a few container-like classes.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42487 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-01 16:01:23 +00:00
Owen Anderson
ab528fe0fb
Template-ize more of the DomTree internal implementation details. Only the calculate() methods for DomTree and PostDomTree remain to be merged/template-ized.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42476 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-30 04:17:16 +00:00
Duncan Sands
3c5f0233e0
Add newline at end of file.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42470 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-29 16:38:37 +00:00
Owen Anderson
303f47b1dd
Have PostDomTree use the newly templated DFSPass.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42427 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-28 01:23:47 +00:00
Owen Anderson
58ec8825d4
Convert DFSPass into a templated friend function, in preparation for making it common to DomTree and PostDomTree.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42420 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-27 23:23:00 +00:00
Owen Anderson
68099d58cb
Merge significant portions of the DomTree and PostDomTree implementations.
...
The two remaining unmerged parts are DFSPass, and the Calculate().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42255 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-24 02:29:29 +00:00
Owen Anderson
04fa569320
Factor the calculation details for PostDomTree out of PostDominators.cpp and
...
into a separate header file.
Next step: merging PostDominatorCalculation.h with DominatorCalculation.h.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42251 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-23 22:21:00 +00:00
Owen Anderson
eefb31094f
Move DFSPass back down into DominatorTree. I need to figure out what the difference is between it
...
and the PostDomTree version first.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42250 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-23 22:16:38 +00:00
Owen Anderson
d20c824b20
Factor the dominator tree calculation details out into DominatorCalculation.h. This
...
change is not useful in and of itself, but it lays the groundwork for combining
the dominator and postdominator implementations.
Also, factor a few methods that are common to DominatorTree and PostDominatorTree
into DominatorTreeBase. Again, this will make merging the two calculation methods
simpler in the future.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42248 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-23 21:31:44 +00:00
Owen Anderson
742f9b6682
Add a flag to mark a dirty cache entry. This is not yet used, but will eventually
...
help non-local memdep caching.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42137 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-19 16:13:57 +00:00
Devang Patel
7c6c55db4d
No need to hardcode SmallVector size.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41228 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-21 16:39:43 +00:00
Devang Patel
b7211a2ce1
Use SmallVector instead of std::vector.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41207 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-21 00:31:24 +00:00
Anton Korobeynikov
96fea337d2
- Use correct header for SCEV inside LoopPass.cpp
...
- Move SCEVExpander::expand() out-of-line workarounding possible toolchain bug
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41197 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-20 21:17:26 +00:00
Nick Lewycky
ab3c9b1f95
Simplify.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41167 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-18 14:46:55 +00:00
Devang Patel
96bf524b53
When one branch of condition is eliminated then head of the other
...
branch is not necessary immediate dominators of merge blcok in all cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41144 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-17 21:59:16 +00:00
Owen Anderson
4d13de4e3b
Cache non-local memory dependence analysis. This is a significant compile
...
time performance win in most cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41126 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-16 21:27:05 +00:00
Devang Patel
4d29ddfa06
No need to use iterator to erase basic block.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41074 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-14 16:53:24 +00:00
Devang Patel
441c5ee6cf
Add methods to erase basic block entry.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41052 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-13 22:10:29 +00:00
Reid Spencer
276222a5ae
Change casts from old style to new style. This helps document the details
...
better, gives the compiler a chance to validate the cast and reduces warnings
if the user turns on -Wold-style-cast option.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41033 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-12 08:12:35 +00:00
Owen Anderson
9528f11481
Make NonLocal and None const in the right way. :-)
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40961 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-09 04:42:44 +00:00
Owen Anderson
49609a5ddf
Add one more comment.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40949 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-08 21:54:33 +00:00
Owen Anderson
179463c0d4
Cleanup and comment-ize the memdep header.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40948 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-08 21:53:20 +00:00
Owen Anderson
8cad423d94
Change the None and NonLocal markers in memdep to be const.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40946 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-08 21:39:39 +00:00
Chris Lattner
3e089ae0b8
reimplement dfs number computation to be significantly faster. This speeds up
...
natural loop canonicalization (which does many cfg xforms) by 4.3x, for
example. This also fixes a bug in postdom dfnumber computation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40920 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-08 05:51:24 +00:00
Owen Anderson
371d68958f
Get rid of unnecessary #include.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40885 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-07 00:38:16 +00:00
Owen Anderson
dbbe816757
Clean up a bunch of caching stuff in memdep. This reduces the time to run GVN
...
on 403.gcc from ~15s to ~10s.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40884 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-07 00:33:45 +00:00
Chris Lattner
c385ae6ff5
Various random cleanups, add two accessors to DomTreeNode: getDFSNumIn/getDFSNumOut
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40856 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-06 06:15:43 +00:00
Chris Lattner
e93e311981
Switch the internal "Info" map from an std::map to a DenseMap. This
...
speeds up idom by about 45% and postidom by about 33%.
Some extra precautions must be taken not to invalidate densemap iterators.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40827 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-05 00:02:00 +00:00
Chris Lattner
0a5f83c22c
switch the DomTreeNodes and IDoms maps in idom/postidom to a
...
DenseMap instead of an std::map. This speeds up postdomtree
by about 25% and domtree by about 23%. It also speeds up clients,
for example, domfrontier by 11%, mem2reg by 4% and ADCE by 6%.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40826 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-04 23:48:07 +00:00
Owen Anderson
9066020993
Make non-local memdep not be recursive, and fix a bug on 403.gcc that this exposed.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40692 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-01 22:01:54 +00:00
Dan Gohman
c2bbfc18e9
More explicit keywords.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40673 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-01 15:32:29 +00:00
David Greene
df464195fe
Fix GLIBCXX_DEBUG error owing to dereference of end iterator. There's
...
no guarantee that an instruction returned by getDependency exists in
the maps.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40647 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-31 20:01:27 +00:00
Devang Patel
c7e49c08c2
Introduce Simple Analysis interface for loop passes.
...
Right now, this interface provides hooks for only to operations, 1) clone basic block 2) delete value.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40625 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-31 08:00:57 +00:00
Owen Anderson
02d6852a1c
Forgot to include this file in my last commit.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40496 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-25 21:30:15 +00:00
Owen Anderson
0cd320362e
Add basic support for performing whole-function RLE.
...
Note: This has not yet been thoroughly tested. Use at your own risk.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40489 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-25 19:57:03 +00:00
Owen Anderson
4beedbd006
Add initial support for non-local memory dependence analysis.
...
NOTE: This has only been cursorily tested. Expected improvements soon.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40476 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-24 21:52:37 +00:00
Devang Patel
58e0ef1e90
Verify loop info.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40062 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-19 18:02:32 +00:00
Owen Anderson
faac518ce0
Add support for walking up memory def chains, which enables finding many more
...
dead stores on 400.perlbench.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@39929 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-16 21:52:50 +00:00
Nick Lewycky
eefdebe002
Handle decrementing loops properly. Fixes PR1533.
...
Always pass the constant as the second parameter to HowManyLessThans.
Remove obsolete "isSigned" parameter.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@39893 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-16 02:08:00 +00:00
Owen Anderson
5f32320797
Add support for finding the dependencies of call and invoke instructions.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38497 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-10 17:59:22 +00:00
Owen Anderson
6b278fc786
Fix a bunch of things from Chris' feedback
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38493 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-10 17:08:11 +00:00
Dan Gohman
9a6ae965d6
Move the APInt form of SCEVUnknown::getIntegerSCEV to SCEVConstant::get, and
...
use SCEVConstant::get instead of SCEVUnknown::get when constructing a SCEV
for a ConstantInt.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38457 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-09 15:25:17 +00:00
Owen Anderson
78e02f78ce
A first stab at memory dependence analysis. This is an interface on top of
...
alias analysis, adding caching and lazy computation of queries. This will
be used in planned improvements to memory access optimizations.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37958 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-06 23:14:35 +00:00
Gabor Greif
a99be51bf5
Here is the bulk of the sanitizing.
...
Almost all occurrences of "bytecode" in the sources have been eliminated.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37913 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-05 17:07:56 +00:00
Devang Patel
bef204db6f
Remove unused method - getIDomBlock().
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37865 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-04 01:11:19 +00:00