Commit Graph

24284 Commits

Author SHA1 Message Date
Chris Lattner
6bb09d96a0 Add instructions to fold unary and binary instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@87 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-27 23:31:34 +00:00
Chris Lattner
3596366bed * Use the new reduce_apply_bool template
* Expose Constant Pool Merging from ConstantProp.cpp
* Include definitions for SCCP pass
* InstListType is not neccesary anymore


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-27 23:31:14 +00:00
Chris Lattner
776885f34d getBasicBlocks() is not needed anymore for reading Method data
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-27 23:30:11 +00:00
Chris Lattner
a576e17ced Added methods to make dealing with switches and branch instructions
more tolerable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-27 23:29:41 +00:00
Chris Lattner
eef4d787f0 Minor formating changes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-27 23:29:21 +00:00
Chris Lattner
9af81a685e Make a new GenericBinaryInst class, instead of providing lots of silly
little classes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-27 23:28:50 +00:00
Chris Lattner
17262f7784 Convert postincrements to more efficient preincrements
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-27 23:28:02 +00:00
Chris Lattner
e02cb164b1 Add a new slew of functions to allow dynamic_cast<> like operation for
upcasting Value's to their subclasses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-27 23:27:42 +00:00
Chris Lattner
1020b3982c Add extra forwarding accessor methods so that getMethodList(), getBasicBlocks()
and getInstList() are obsolete... except for when modifying those lists.  This
makes code much more succinct and to the point.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-27 23:26:41 +00:00
Chris Lattner
0305cfd3cc Add more notes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-27 23:24:50 +00:00
Chris Lattner
cfce6c0686 Filter out some more stuff
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-27 23:24:22 +00:00
Chris Lattner
20554f11d0 Moved UnaryOperator::create to InstrTypes.cpp until there is an iUnaryOps.cpp
Moved BinaryOperator::create to iBinaryOperators.cpp
Add getUniqueName to SymbolTable


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-25 07:33:13 +00:00
Chris Lattner
d473a0acc4 Implement induction variable injection!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-25 07:32:19 +00:00
Chris Lattner
bebd60dc9d Renamed get.*Operator to create seeing that it would have to be qualified
with the classname anyways.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-25 07:31:31 +00:00
Chris Lattner
3bcd6394ec * Rename get.*Operator to create seeing that it would have to be qualified
with the classname anyways.
* Add an isPHINode() method to Instruction
* Add getUniqueName() to SymbolTable class
* Add an insert method to ValueHolder


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-25 07:31:05 +00:00
Chris Lattner
53b1c0161d A silly stupid test of the loop depth calculator was added. REMOVE in the
future.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-25 03:55:37 +00:00
Chris Lattner
23e36625a2 IntervalPartition: recode to use IntervalIterator to do all the work
LoopDepth.cpp: new file that calculates the depth of a loop, using
IntervalPartitions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-25 03:55:04 +00:00
Chris Lattner
3704c8cfff Add a helper function bind_obj
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-25 03:54:32 +00:00
Chris Lattner
4dd88f6fbf Big changes. Interval*.h is now more or less finalized. IntervalPartition
is recoded to use IntervalIterators.  IntervalIterators can now maintain
their own memory or let an external entity do it.

Loop depth is a new user of IntervalPartition for calculating the loop
nesting depth of a basic block

TODO: add IntervalPartition capability to split intervals between the looping
portion and the "tail" portion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-25 03:54:14 +00:00
Chris Lattner
d6a7b7552f CFG.h: change the iterator tag
Method.h: Add an iterator type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-25 03:52:19 +00:00
Chris Lattner
5289d52a55 ValueHolder's aren't interseting to me anymore
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-25 03:51:53 +00:00
Chris Lattner
2d676c961e New file due to the Intervals.h splitup
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-24 04:07:44 +00:00
Chris Lattner
a9a96efba4 New files due to the Intervals.h splitup
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-24 04:07:37 +00:00
Chris Lattner
4ea55136c1 Add a useless phi for testing with InductionVariables stuff
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-24 04:06:23 +00:00
Chris Lattner
c9f39b26c0 #include a different header due to Intervals.h splitting up
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-24 04:05:45 +00:00
Chris Lattner
107109c2cd IntervalPartition & IntervalIterator classes have been split out into
their own .h files & .cpp file


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-24 04:05:21 +00:00
Chris Lattner
75517097e7 IntervalPartition & IntervalIterator classes have been split out into
their own .h files


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-24 04:05:09 +00:00
Chris Lattner
a0eb461263 Prepare for split between Interval, IntervalIterator, and IntervalIPartition
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-24 03:25:01 +00:00
Chris Lattner
cf1760aff0 Addition of IntervalIterator. Preparing for rename of Intervals.h to
Interval.h, IntervalPartition.h, and IntervalIterator.h


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-24 03:22:59 +00:00
Chris Lattner
d6be43ecdd Added notes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-24 02:01:31 +00:00
Chris Lattner
364b147a0f Implement a lot more functionality. Now loop invariant and linear
induction variables are correctly identified.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-22 02:24:38 +00:00
Chris Lattner
a4ef933a04 Interval::HeaderNode is now accessed thorugh an accessor function
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-22 02:23:39 +00:00
Chris Lattner
1a750e1d40 Add comments
Interval::HeaderNode is now accessed thorugh an accessor function


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-22 02:23:27 +00:00
Chris Lattner
fe0a67c74e Add accessor methods to binary/unary operators
Add extra helper methods to PHI class


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-22 02:21:42 +00:00
Chris Lattner
28d480b316 Add a space to the PHI node output code to make it look nicer
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-21 05:29:56 +00:00
Chris Lattner
da956802bd Moved printing code to the Assembly/Writer library.
Code now detects looping intervals


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-21 05:27:22 +00:00
Chris Lattner
1c54f1da79 Implement the new Interval::isLoop method
Implement destructor to free memory


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-21 05:26:15 +00:00
Chris Lattner
18d64ede9a New header file defined with neeto utilities put in one place
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-21 05:25:51 +00:00
Chris Lattner
681cf74ab5 Modified to use the new reduce_apply algorithm
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-21 05:25:33 +00:00
Chris Lattner
be0b11c611 * Added capability to print out an interval
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-21 05:25:09 +00:00
Chris Lattner
2100f8cced * Added comments
* Added prototype for new Interval::isLoop method
* Added destructor to free memory
* Added IntervalPartition::isDegeneratePartition method
* Added IntervalPartition::size() method


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-21 05:24:46 +00:00
Chris Lattner
90c8194425 Add a test case: an irreducible flow graph.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-21 03:00:25 +00:00
Chris Lattner
5ef7afb011 Get rid of a silly printout that isn't needed right now
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-20 23:09:39 +00:00
Chris Lattner
a4fbb1ae11 Add note
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-20 23:09:27 +00:00
Chris Lattner
f7d11a93cb New test case
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-20 23:05:53 +00:00
Chris Lattner
568320595c Add capability to print a derived interval graph
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-20 22:44:38 +00:00
Chris Lattner
ed465bc265 Add capability to build a derived interval graph
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-20 22:44:32 +00:00
Chris Lattner
bb76d9d080 Factor the predeclarations of the CFG.h functionality into a seperate, new header
file: CFGdecls.h

This allows the addition of BasicBlock::(pred|succ)_iterator typedefs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-20 22:44:16 +00:00
Chris Lattner
2275c1d55d Initial Checking of Interval handling code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@39 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-20 20:09:55 +00:00
Chris Lattner
b12063919f Add stub for induction variable code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-20 19:27:34 +00:00