3625 Commits

Author SHA1 Message Date
Vikram S. Adve
b52220cd21 Use PARALLEL_DIRS.
llvm-svn: 4114
2002-10-11 16:08:17 +00:00
Misha Brukman
33022f07bb Added capability to get execution count of a loop if it is a predictable
number of iterations.

llvm-svn: 4113
2002-10-11 05:34:32 +00:00
Misha Brukman
3845be203d Added helper functions in LoopInfo: isLoopExit and numBackEdges.
llvm-svn: 4112
2002-10-11 05:31:10 +00:00
Chris Lattner
d7b3bb0fa4 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
9df1cf3034 Prune function nodes that are no longer referenced due to inlining
llvm-svn: 4036
2002-10-03 21:55:28 +00:00
Chris Lattner
9dfb9f44cc 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
4ee4381a23 Handle bug exposed by power benchmark
llvm-svn: 4033
2002-10-03 21:06:38 +00:00
Chris Lattner
c9c681e4f5 Reimplement/port the Bottom Up Closure pass
llvm-svn: 4031
2002-10-03 20:38:41 +00:00
Chris Lattner
3f69054dd5 DataStructure.h doesn't include DSGraph.h
llvm-svn: 4029
2002-10-02 22:14:38 +00:00
Chris Lattner
c4d2ad21bf * 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
4e37455a69 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
0b2a6e00d1 * 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
d3121eb8cb Initial checkin of Steensgaards context insensitive flow insensitive
alias analysis

llvm-svn: 3997
2002-10-01 22:34:12 +00:00
Chris Lattner
193e6924ca 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
1931788143 Minor tweak
llvm-svn: 3985
2002-09-29 22:59:29 +00:00
Chris Lattner
467a9e84c4 Fix printing of loop information
llvm-svn: 3977
2002-09-29 21:43:04 +00:00
Chris Lattner
647df647e1 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
3524f58309 Fix printing of loop information
llvm-svn: 3941
2002-09-26 16:15:54 +00:00
Chris Lattner
08373d1c9c - 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
ceae380b2c Convert BasicVN to be an ImmutablePass
llvm-svn: 3924
2002-09-25 22:27:25 +00:00
Chris Lattner
c952e4558b 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
e1751db3ca Clean up indvar printing
llvm-svn: 3650
2002-09-10 15:35:39 +00:00
Chris Lattner
30214c23aa * 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
2d42bbf5d0 - 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
ed39ccae8d - Eliminate the last traces of the 'analysis' namespace
llvm-svn: 3550
2002-08-30 22:53:53 +00:00
Chris Lattner
f2eb70fc0b Minor cleanups so I can remove BasicValueNumbering.h
llvm-svn: 3544
2002-08-30 22:30:36 +00:00
Chris Lattner
c05581fb31 initial implementation of ValueNumbering interface.
llvm-svn: 3541
2002-08-30 20:29:02 +00:00
Chris Lattner
2dd49e525c Initial implementation of value numbering for load instructions
llvm-svn: 3540
2002-08-30 20:28:10 +00:00
Chris Lattner
abb16604fd Remove unneeded #include
llvm-svn: 3524
2002-08-29 20:08:55 +00:00
Anand Shukla
e87291ef83 Changed so it gets linked properly
llvm-svn: 3508
2002-08-26 16:45:19 +00:00
Chris Lattner
02fe752fbd Eliminated the MemAccessInst class, folding contents into GEP class.
llvm-svn: 3488
2002-08-22 23:37:24 +00:00
Chris Lattner
cd709cbf53 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
d922a84930 doxygenize comments
llvm-svn: 3481
2002-08-22 22:46:39 +00:00
Chris Lattner
3a4a335ad8 Add missing #include
llvm-svn: 3467
2002-08-22 18:57:09 +00:00
Chris Lattner
7d58f8ddc0 Check-in new alias analysis infrastructure
llvm-svn: 3465
2002-08-22 18:25:32 +00:00
Chris Lattner
c86203ace3 - Split Dominators.h into Dominators.h & PostDominators.h
llvm-svn: 3432
2002-08-21 23:43:50 +00:00
Chris Lattner
1a386b6a73 - Do not expose ::ID from any of the analyses anymore.
llvm-svn: 3417
2002-08-21 17:09:49 +00:00
Chris Lattner
c869ecbe42 - Do not expose ::ID from any of the analyses anymore.
llvm-svn: 3416
2002-08-21 17:09:45 +00:00
Chris Lattner
0d92ff0488 *** empty log message ***
llvm-svn: 3282
2002-08-09 22:52:08 +00:00
Chris Lattner
40eb9dafed - 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
b3ce9fc449 Minor changes to DEBUG()'s
llvm-svn: 3261
2002-08-07 21:41:11 +00:00
Chris Lattner
3147fd226a Reorder #includes to be right
llvm-svn: 3260
2002-08-07 21:41:03 +00:00
Chris Lattner
d43023a85d 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
c70601cd67 Changes to be GCC3.1 friendly
llvm-svn: 3186
2002-07-31 19:32:12 +00:00
Chris Lattner
be4826e627 *** empty log message ***
llvm-svn: 3185
2002-07-31 19:32:01 +00:00
Chris Lattner
35f0c49feb 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
b82a496132 Add GlobalDSGraph -- a common graph that holds externally visible nodes.
llvm-svn: 3173
2002-07-30 22:08:08 +00:00
Vikram S. Adve
256776e91f 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
90c8892b4e 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
0d66177bc8 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