Chris Lattner
fc678e2af5
introduce a typedef, no functionality change.
...
llvm-svn: 60272
2008-11-30 02:30:50 +00:00
Chris Lattner
1b810bd5e6
Change NonLocalDeps to be a densemap of pointers to densemap
...
instead of containing them by value. This increases the density
(!) of NonLocalDeps as well as making the reallocation case
faster. This speeds up gvn on 403.gcc by 2% and makes room for
future improvements.
I'm not super thrilled with having to explicitly manage the new/delete
of the map, but it is necesary for the next change.
llvm-svn: 60271
2008-11-30 02:28:25 +00:00
Chris Lattner
60444f8aa5
implement a fixme by introducing a new getDependencyFromInternal
...
method that returns its result as a DepResultTy instead of as a
MemDepResult. This reduces conversion back and forth.
llvm-svn: 60266
2008-11-30 01:26:32 +00:00
Chris Lattner
3d5d5f2c6d
REmove an old fixme, resolve another fixme by adding liberal
...
comments about what this class does.
llvm-svn: 60264
2008-11-30 01:17:08 +00:00
Chris Lattner
63bd586d35
Eliminate the dropInstruction method, which is not needed any more.
...
Fix a subtle iterator invalidation bug I introduced in the last commit.
llvm-svn: 60258
2008-11-29 23:30:39 +00:00
Chris Lattner
e7d7e13bf7
implement some fixme's: when deleting an instruction with
...
an entry in the nonlocal deps map, don't reset entries
referencing that instruction to [dirty, null], instead, set
them to [dirty,next] where next is the instruction after the
deleted one. Use this information in the non-local deps
code to avoid rescanning entire blocks.
This speeds up GVN slightly by avoiding pointless work. On
403.gcc this makes GVN 1.5% faster.
llvm-svn: 60256
2008-11-29 22:02:15 +00:00
Chris Lattner
1c6b62eb4d
Change MemDep::getNonLocalDependency to return its results as
...
a smallvector instead of a DenseMap. This speeds up GVN by 5%
on 403.gcc.
llvm-svn: 60255
2008-11-29 21:33:22 +00:00
Chris Lattner
f280b0c729
reimplement getNonLocalDependency with a simpler worklist
...
formulation that is faster and doesn't require nonLazyHelper.
Much less code.
llvm-svn: 60253
2008-11-29 21:22:42 +00:00
Chris Lattner
5661fead0b
tidy up some variable names.
...
llvm-svn: 60243
2008-11-29 09:22:14 +00:00
Chris Lattner
9f1988ab6c
rename some maps.
...
llvm-svn: 60242
2008-11-29 09:20:15 +00:00
Chris Lattner
51ba8d0630
Split getDependency into getDependency and getDependencyFrom, the
...
former does caching, the later doesn't. This dramatically simplifies
the logic in getDependency and getDependencyFrom.
llvm-svn: 60234
2008-11-29 03:47:00 +00:00
Chris Lattner
e4d32791ef
Now that DepType is private, we can start cleaning up some of its uses:
...
Document the Dirty value more precisely, use it for the uninitialized
DepResultTy value. Change reverse mappings to be from an instruction*
instead of DepResultTy, and stop tracking other forms. This makes it more
clear that we only care about the instruction cases.
Eliminate a DepResultTy,bool pair by using Dirty in the local case as well,
shrinking the map and simplifying the code.
This speeds up GVN by ~3% on 403.gcc.
llvm-svn: 60232
2008-11-29 03:22:12 +00:00
Chris Lattner
7f9c8a0f05
Introduce and use a new MemDepResult class to hold the results of a memdep
...
query. This makes it crystal clear what cases can escape from MemDep that
the clients have to handle. This also gives the clients a nice simplified
interface to it that is easy to poke at.
This patch also makes DepResultTy and MemoryDependenceAnalysis::DepType
private, yay.
llvm-svn: 60231
2008-11-29 02:29:27 +00:00
Chris Lattner
de04e1173a
Reimplement the internal abstraction used by MemDep in terms
...
of a pointer/int pair instead of a manually bitmangled pointer.
This forces clients to think a little more about checking the
appropriate pieces and will be useful for internal
implementation improvements later.
I'm not particularly happy with this. After going through this
I don't think that the clients of memdep should be exposed to
the internal type at all. I'll fix this in a subsequent commit.
This has no functionality change.
llvm-svn: 60230
2008-11-29 01:43:36 +00:00
Chris Lattner
08f3c00562
comment cleanups.
...
llvm-svn: 60220
2008-11-28 22:41:36 +00:00
Chris Lattner
2916a4b589
forward declare CallSite instead of #includ'ing it.
...
llvm-svn: 60217
2008-11-28 21:47:19 +00:00
Chris Lattner
e5fd5c29de
rename "ping" to "verifyRemoved". I don't know why 'ping' what chosen,
...
but it doesn't make any sense at all.
Also make the method const, private, and fit in 80 cols while we're at it.
llvm-svn: 60215
2008-11-28 21:42:09 +00:00
Chris Lattner
cfa414fe9e
comment and indentation improvements.
...
llvm-svn: 60214
2008-11-28 21:36:43 +00:00
Dan Gohman
a79db30d28
Tidy up several unbeseeming casts from pointer to intptr_t.
...
llvm-svn: 55779
2008-09-04 17:05:41 +00:00
Devang Patel
718da668ab
PassInfo keep tracks whether a pass is an analysis pass or not.
...
llvm-svn: 48554
2008-03-19 21:56:59 +00:00
Devang Patel
af75ab8130
Do not use virtual function to identify an analysis pass.
...
llvm-svn: 48520
2008-03-19 00:48:41 +00:00
Devang Patel
864970e9b6
Identify Analysis pass.
...
Do not run analysis pass again if analysis info is still available.
This fixes PR1441.
llvm-svn: 48476
2008-03-18 00:39:19 +00:00
Owen Anderson
00dba4f734
Re-apply the patch to improve the optimizations of memcpy's, with several
...
bugs fixed. This now passes PPC bootstrap.
llvm-svn: 47026
2008-02-12 21:15:18 +00:00
Chris Lattner
e9cc742a17
Don't attribute in file headers anymore. See llvmdev for the
...
discussion of this change. Boy are my fingers tired. ;-)
llvm-svn: 45411
2007-12-29 19:59:42 +00:00
Owen Anderson
086b2c4537
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.
llvm-svn: 44695
2007-12-08 01:37:09 +00:00
Owen Anderson
c201cbc802
Add a flag to mark a dirty cache entry. This is not yet used, but will eventually
...
help non-local memdep caching.
llvm-svn: 42137
2007-09-19 16:13:57 +00:00
Owen Anderson
5f208bea91
Cache non-local memory dependence analysis. This is a significant compile
...
time performance win in most cases.
llvm-svn: 41126
2007-08-16 21:27:05 +00:00
Owen Anderson
9b1cc8cac0
Make NonLocal and None const in the right way. :-)
...
llvm-svn: 40961
2007-08-09 04:42:44 +00:00
Owen Anderson
927f62a3a1
Add one more comment.
...
llvm-svn: 40949
2007-08-08 21:54:33 +00:00
Owen Anderson
064bad44d1
Cleanup and comment-ize the memdep header.
...
llvm-svn: 40948
2007-08-08 21:53:20 +00:00
Owen Anderson
b84d3b1c92
Change the None and NonLocal markers in memdep to be const.
...
llvm-svn: 40946
2007-08-08 21:39:39 +00:00
Owen Anderson
a64832f60e
Get rid of unnecessary #include.
...
llvm-svn: 40885
2007-08-07 00:38:16 +00:00
Owen Anderson
68c6732d2c
Clean up a bunch of caching stuff in memdep. This reduces the time to run GVN
...
on 403.gcc from ~15s to ~10s.
llvm-svn: 40884
2007-08-07 00:33:45 +00:00
Owen Anderson
c321e5e272
Make non-local memdep not be recursive, and fix a bug on 403.gcc that this exposed.
...
llvm-svn: 40692
2007-08-01 22:01:54 +00:00
David Greene
87801e8773
Fix GLIBCXX_DEBUG error owing to dereference of end iterator. There's
...
no guarantee that an instruction returned by getDependency exists in
the maps.
llvm-svn: 40647
2007-07-31 20:01:27 +00:00
Owen Anderson
3f3ca5444e
Forgot to include this file in my last commit.
...
llvm-svn: 40496
2007-07-25 21:30:15 +00:00
Owen Anderson
5e5599b7ce
Add basic support for performing whole-function RLE.
...
Note: This has not yet been thoroughly tested. Use at your own risk.
llvm-svn: 40489
2007-07-25 19:57:03 +00:00
Owen Anderson
d998be79cc
Add initial support for non-local memory dependence analysis.
...
NOTE: This has only been cursorily tested. Expected improvements soon.
llvm-svn: 40476
2007-07-24 21:52:37 +00:00
Owen Anderson
7fcaaadf1c
Add support for walking up memory def chains, which enables finding many more
...
dead stores on 400.perlbench.
llvm-svn: 39929
2007-07-16 21:52:50 +00:00
Owen Anderson
9c88457abe
Add support for finding the dependencies of call and invoke instructions.
...
llvm-svn: 38497
2007-07-10 17:59:22 +00:00
Owen Anderson
47352db672
Fix a bunch of things from Chris' feedback
...
llvm-svn: 38493
2007-07-10 17:08:11 +00:00
Owen Anderson
c0daf5fe53
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.
llvm-svn: 37958
2007-07-06 23:14:35 +00:00