1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-25 04:02:41 +01:00
Commit Graph

272 Commits

Author SHA1 Message Date
Chris Lattner
a923b0f49f Handle post dominance correctly in the case where blocks do not have a path to
the exit node.

llvm-svn: 4038
2002-10-04 14:50:20 +00:00
Chris Lattner
eeecc3e1b3 Prune function nodes that are no longer referenced due to inlining
llvm-svn: 4036
2002-10-03 21:55:28 +00:00
Chris Lattner
8f603615d8 sgefa uses truely huge data structures nodes. Only print part of them if they
are so big

llvm-svn: 4035
2002-10-03 21:55:13 +00:00
Chris Lattner
31d4a68166 Handle bug exposed by power benchmark
llvm-svn: 4033
2002-10-03 21:06:38 +00:00
Chris Lattner
fcdb95cd42 Reimplement/port the Bottom Up Closure pass
llvm-svn: 4031
2002-10-03 20:38:41 +00:00
Chris Lattner
e52f808665 DataStructure.h doesn't include DSGraph.h
llvm-svn: 4029
2002-10-02 22:14:38 +00:00
Chris Lattner
62ca2aa593 * Implement fully general merging of array subscripts on demand! This
does not handle the initial pointer index case yet though.

llvm-svn: 4012
2002-10-02 06:24:36 +00:00
Chris Lattner
5f38d9c112 When printing DS nodes, print the mergemap index as well to allow easier
debugging of merging process.

llvm-svn: 4010
2002-10-02 05:17:55 +00:00
Chris Lattner
8c25c1a641 * Significant rework of DSNode to support arbitrary aliasing due to merging
* Now all and any bytes of a DSNode can be merged together individually.  This
  is neccesary to support the full generality of C and support aliasing
  correctly.

llvm-svn: 4008
2002-10-02 04:57:39 +00:00
Chris Lattner
9fc451723d Initial checkin of Steensgaards context insensitive flow insensitive
alias analysis

llvm-svn: 3997
2002-10-01 22:34:12 +00:00
Chris Lattner
c1b7de86d5 Checkin some major reworks of data structure analysis. This is not done,
nor does it work very well, but I need to get it checked in before I break
the tree unintentionally.

llvm-svn: 3996
2002-10-01 22:33:50 +00:00
Chris Lattner
53be50fb2f Minor tweak
llvm-svn: 3985
2002-09-29 22:59:29 +00:00
Chris Lattner
45c83d6451 Fix printing of loop information
llvm-svn: 3977
2002-09-29 21:43:04 +00:00
Chris Lattner
a9bc408104 First try at implementing the AliasSetTracker class. I'm sure it will need
revision as I start to use it though.

llvm-svn: 3954
2002-09-26 21:49:07 +00:00
Chris Lattner
8b97a81265 Fix printing of loop information
llvm-svn: 3941
2002-09-26 16:15:54 +00:00
Chris Lattner
bfa0786c7e - Add new methods to LoopInfo: getLoopPreheader, addBasicBlockToLoop.
These allow extra information to be easily gathered, and loopinfo to be
    updated.

llvm-svn: 3936
2002-09-26 05:32:50 +00:00
Chris Lattner
04af33fe09 Convert BasicVN to be an ImmutablePass
llvm-svn: 3924
2002-09-25 22:27:25 +00:00
Chris Lattner
34d9c4ec10 Make users of FindUsedTypes not have problems with linkage. This fixes
Cwriter.

llvm-svn: 3900
2002-09-24 00:07:21 +00:00
Chris Lattner
9275e21d28 Clean up indvar printing
llvm-svn: 3650
2002-09-10 15:35:39 +00:00
Chris Lattner
fb6bb789a1 * Add capability to recognize alias properties of the following common cases:
- A[c1] cannot alias A[c2] where constants c1 != c2
  - A[i] cannot alias B[j] if A & B are provably different arrays

This should help out array based codes.  For example, from bzip2 from spec,
3 additional loads can be GCSE'd, and _21_ additional loads can be LICMd due
to this change.

In a test example from the Spec GAP benchmark (vecffe.c), this change allows
_52_ additional loads to be GCSE'd and _224_ additional LICM'd loads.

Not bad for such a simple change.  Other testcases show no change at all
because they just don't use arrays.  Not too suprising there.

llvm-svn: 3616
2002-09-08 18:45:18 +00:00
Chris Lattner
e4bba98678 - Renamed Type::isIntegral() to Type::isInteger()
- Added new method Type::isIntegral() that is the same as isInteger, but
    also accepts bool.
SCVS: ----------------------------------------------------------------------

llvm-svn: 3572
2002-09-03 01:05:48 +00:00
Chris Lattner
838248b35a - Eliminate the last traces of the 'analysis' namespace
llvm-svn: 3550
2002-08-30 22:53:53 +00:00
Chris Lattner
c94462fbe9 Minor cleanups so I can remove BasicValueNumbering.h
llvm-svn: 3544
2002-08-30 22:30:36 +00:00
Chris Lattner
8b13415389 initial implementation of ValueNumbering interface.
llvm-svn: 3541
2002-08-30 20:29:02 +00:00
Chris Lattner
9c31585ee4 Initial implementation of value numbering for load instructions
llvm-svn: 3540
2002-08-30 20:28:10 +00:00
Chris Lattner
c43d102d67 Remove unneeded #include
llvm-svn: 3524
2002-08-29 20:08:55 +00:00
Anand Shukla
1e105cdb7c Changed so it gets linked properly
llvm-svn: 3508
2002-08-26 16:45:19 +00:00
Chris Lattner
9f18db8156 Eliminated the MemAccessInst class, folding contents into GEP class.
llvm-svn: 3488
2002-08-22 23:37:24 +00:00
Chris Lattner
969c616d51 Load & StoreInst no longer derive from MemAccessInst, so we don't have
to handle indexing anymore

llvm-svn: 3485
2002-08-22 22:49:05 +00:00
Chris Lattner
4335ee9dc4 doxygenize comments
llvm-svn: 3481
2002-08-22 22:46:39 +00:00
Chris Lattner
a318e4f15d Add missing #include
llvm-svn: 3467
2002-08-22 18:57:09 +00:00
Chris Lattner
db03d21066 Check-in new alias analysis infrastructure
llvm-svn: 3465
2002-08-22 18:25:32 +00:00
Chris Lattner
c4bd846e84 - Split Dominators.h into Dominators.h & PostDominators.h
llvm-svn: 3432
2002-08-21 23:43:50 +00:00
Chris Lattner
6c83ee57c1 - Do not expose ::ID from any of the analyses anymore.
llvm-svn: 3417
2002-08-21 17:09:49 +00:00
Chris Lattner
b90f78e2b3 - Do not expose ::ID from any of the analyses anymore.
llvm-svn: 3416
2002-08-21 17:09:45 +00:00
Chris Lattner
c159d739a5 *** empty log message ***
llvm-svn: 3282
2002-08-09 22:52:08 +00:00
Chris Lattner
91d4742562 - Cleaned up the interface to AnalysisUsage to take analysis class names
instead of ::ID's.
 - Pass::getAnalysis<> now no longer takes an optional argument

llvm-svn: 3264
2002-08-08 19:01:28 +00:00
Chris Lattner
75f1e2a970 Minor changes to DEBUG()'s
llvm-svn: 3261
2002-08-07 21:41:11 +00:00
Chris Lattner
d9530f6734 Reorder #includes to be right
llvm-svn: 3260
2002-08-07 21:41:03 +00:00
Chris Lattner
829a3f1c3a Split dominance calculation and post dominance calculation stuff
Dominance calculation goes to VMCore library to be used by Verifier.

llvm-svn: 3210
2002-08-02 16:43:03 +00:00
Chris Lattner
303fa649e3 Changes to be GCC3.1 friendly
llvm-svn: 3186
2002-07-31 19:32:12 +00:00
Chris Lattner
24f5355b1f *** empty log message ***
llvm-svn: 3185
2002-07-31 19:32:01 +00:00
Chris Lattner
d376feeb74 Add new -only-print-main-ds option that causes mains ds graph to be
printed, but no others.

llvm-svn: 3178
2002-07-31 17:15:40 +00:00
Vikram S. Adve
6162134b47 Add GlobalDSGraph -- a common graph that holds externally visible nodes.
llvm-svn: 3173
2002-07-30 22:08:08 +00:00
Vikram S. Adve
abafb80e33 Print globals graph after either the BU or the TD pass.
llvm-svn: 3172
2002-07-30 22:07:26 +00:00
Vikram S. Adve
6152aa7f73 This file implements the top-down propagation pass for data structure graphs.
Also, we now use a separate globals graph to hold externally visible nodes.
This changes both the bottom-up and top-down propagation so that
globals and other external objects do not have to appear in every
function, but only in functions in which they are referenced or
they can be used to access something else that is referenced.

llvm-svn: 3171
2002-07-30 22:06:40 +00:00
Vikram S. Adve
b9c05cf65b Use a separate globals graph to hold externally visible nodes.
This changes both the bottom-up and top-down propagation so that
globals and other external objects do not have to appear in every
function, but only in functions in which they are referenced or
they can be used to access something else that is referenced.

llvm-svn: 3170
2002-07-30 22:05:22 +00:00
Chris Lattner
57c110ce62 Declare that these passes only depend on the CFG of the function
llvm-svn: 3157
2002-07-30 16:27:52 +00:00
Chris Lattner
b202b77aab * Eliminate the Provided set. All Passes now finally just automatically
provide themselves.

llvm-svn: 3124
2002-07-29 21:03:33 +00:00
Chris Lattner
ec2780457d * Standardize how analysis results/passes as printed with the print() virtual
methods
* Eliminate AnalysisID:  Now it is just a typedef for const PassInfo*
* Simplify how AnalysisID's are initialized
* Eliminate Analysis/Writer.cpp/.h: incorporate printing functionality into
  the analyses themselves.

llvm-svn: 3116
2002-07-27 01:12:17 +00:00