Chris Lattner
c8b25d40cb
Changed the fundemental architecture of Operands for Instructions. Now
...
Operands are maintained as a vector<Use> in the User class, and operator
iterators are provided as before. Getting an operand no longer requires
a virtual function call.
WARNING: getOperand(x) where x >= getNumOperands() will now assert instead
of returning null!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149 91177308-0d34-0410-b5e6-96231b3b80d8
2001-07-07 08:36:50 +00:00
Chris Lattner
87d0461d5b
New file, includes method to merge exit nodes together
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141 91177308-0d34-0410-b5e6-96231b3b80d8
2001-07-06 16:57:52 +00:00
Chris Lattner
c348d21bf6
* Add a DominatorBase base class to maintain root of Dominator info
...
* Implement post dominator support
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140 91177308-0d34-0410-b5e6-96231b3b80d8
2001-07-06 16:57:21 +00:00
Chris Lattner
18c9f915f2
* Added comments
...
* Made iterators inherit from appropriate iterator base class
* Abstracted out graphs from depth first iterator
* Add "Inverse" traversal of CFG
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139 91177308-0d34-0410-b5e6-96231b3b80d8
2001-07-06 16:56:17 +00:00
Chris Lattner
a49e015180
IntervalPartition was changed to inherit from vector<Interval*> instead of
...
contain it so that it would have full iterator access without much work.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132 91177308-0d34-0410-b5e6-96231b3b80d8
2001-07-03 15:28:08 +00:00
Chris Lattner
1a46243e7f
Checkin of new Analysis result printing header
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130 91177308-0d34-0410-b5e6-96231b3b80d8
2001-07-03 05:37:26 +00:00
Chris Lattner
d1ee90f1a5
Remove code for printing out Analysis data structures. It got moved
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128 91177308-0d34-0410-b5e6-96231b3b80d8
2001-07-03 05:35:52 +00:00
Chris Lattner
953932d779
Update documentation a bit, correct #include guard
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127 91177308-0d34-0410-b5e6-96231b3b80d8
2001-07-03 05:35:23 +00:00
Chris Lattner
f50b952b93
Enable printing of dominator related information.
...
Theis will eventually be moved!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123 91177308-0d34-0410-b5e6-96231b3b80d8
2001-07-02 05:45:30 +00:00
Chris Lattner
70b6337d68
Add new anaysis routines for building dominator related information
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122 91177308-0d34-0410-b5e6-96231b3b80d8
2001-07-02 05:45:17 +00:00
Chris Lattner
577b15f70e
Addition of 'deleter' function.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121 91177308-0d34-0410-b5e6-96231b3b80d8
2001-07-02 01:09:41 +00:00
Chris Lattner
8ea0755f98
Add prototypes for ADCE pass
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-30 06:37:16 +00:00
Chris Lattner
d8d8c836e7
Rename DoSparseConditionalConstantProp to DoSCCP
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-30 06:37:01 +00:00
Chris Lattner
a7e26118a2
Add a new pop_back() method
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-30 04:35:21 +00:00
Chris Lattner
b9b8959091
The ConstRules class got moved to the opt namespace
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-30 04:35:01 +00:00
Chris Lattner
d180e0fda7
Add a reduceApply method
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-30 04:34:42 +00:00
Chris Lattner
50d0b7ec3f
Split AllOpts.h into lots of little .h files.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-30 04:34:07 +00:00
Chris Lattner
4b52471bed
Added prototype for ConstantFoldTerminator
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-29 23:56:00 +00:00
Chris Lattner
7b6f5a3ee9
Added new removePredecessor method prototype
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-29 05:21:42 +00:00
Chris Lattner
7fc9fe3439
Miscellaneous cleanups:
...
* Convert post to pre-increment for for loops
* Use generic programming more
* Use new Value::cast* instructions
* Use new Module, Method, & BasicBlock forwarding methods
* Use new facilities in STLExtras.h
* Use new Instruction::isPHINode() method
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-27 23:41:11 +00:00
Chris Lattner
42e018c805
* Move stuff around a bit.
...
* Add reduce_apply_bool
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-27 23:32:12 +00:00
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
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
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
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
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
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
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
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
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
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
113b2ffd35
Add an optimization stub
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-20 19:26:21 +00:00
Chris Lattner
564de7d79b
New file: Interval analysis support
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-20 19:26:12 +00:00
Chris Lattner
966644628d
Implement support for writing VCG format output
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-13 19:55:13 +00:00
Chris Lattner
a5a83b4fa5
Move contents to the cfg namespace.
...
Implement post order and reverse post order iterators
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-13 19:55:02 +00:00
Chris Lattner
143da691f0
Updates to support
...
* Changes in PHI node structure
* Fix to Predecessor iterator
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-11 15:04:06 +00:00
Chris Lattner
477c2ec3e0
Moved getBinaryOperator to the BinaryOperator class and the getUnaryOperator
...
to the UnaryOperator class (from the Instruction class).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-08 21:30:13 +00:00
Chris Lattner
760dfe6596
Beautify the source a bit.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-08 21:07:26 +00:00
Chris Lattner
586bd03dc1
Include support for reverse iteration.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-08 20:52:54 +00:00
Chris Lattner
d842e77ca9
Added reverse depth first capability, fixed depth first capability
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-08 00:35:14 +00:00
Chris Lattner
1f0d48113c
Moved iterators to the new CFG.h file.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-07 21:18:35 +00:00
Chris Lattner
7170838f84
New file
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-07 21:18:08 +00:00
Chris Lattner
bbcfc51f3b
Fixes for BB iterators, additional methods added for DCE pass
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-07 16:58:36 +00:00
Chris Lattner
009505452b
Initial revision
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-06 20:29:01 +00:00