Commit Graph

1033 Commits

Author SHA1 Message Date
Chris Lattner
9e77f7e08b Make ConvertableToGEP handle cases where the user is indexing into the
first element of a structure type.  Before this would not be handled because
getStructOffset would either stop immediately (because StopEarly was true
and Offset = 0), or blast past the level we wanted.

Now ConvertableToGEP steps down through the type one level at a time, checking
the Offset and Scale conditions at each step


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1931 91177308-0d34-0410-b5e6-96231b3b80d8
2002-03-21 06:27:20 +00:00
Chris Lattner
8e86542fb6 Implement the new InsertInstBeforeInst function
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1930 91177308-0d34-0410-b5e6-96231b3b80d8
2002-03-21 06:24:00 +00:00
Chris Lattner
45ef5c26d4 Fix the: test/Regression/Other/2002-03-20-LevelRaiseCrash.ll bug. It turned
out that almost always the result of the add was the same as the GEP that
would be generated.  In this case, however, it wasn't, so bad things happened.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1929 91177308-0d34-0410-b5e6-96231b3b80d8
2002-03-21 06:22:23 +00:00
Chris Lattner
f78642bc06 Declare the new InsertInstBeforeInst function
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1927 91177308-0d34-0410-b5e6-96231b3b80d8
2002-03-21 06:15:53 +00:00
Chris Lattner
99fb91cc2f 1. Fix bug test/Regression/Other/2002-03-20-LevelRaiseBadCodegen.ll
2. Allow negative scales in ConvertableToGEP, so that this loop from
   alloc_tree in the Olden health benchmark is correctly raised:

       for (i = 3; i >= 0; i--)
         fval[i] = alloc_tree(level - 1, label*4 + i + 1, new);

   Stepping through the array backwards caused a negative scale.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1922 91177308-0d34-0410-b5e6-96231b3b80d8
2002-03-21 03:04:38 +00:00
Chris Lattner
ebcd28eb15 Namespace qualify debugging code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1921 91177308-0d34-0410-b5e6-96231b3b80d8
2002-03-21 03:02:07 +00:00
Vikram S. Adve
524185af3f Just a comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1908 91177308-0d34-0410-b5e6-96231b3b80d8
2002-03-18 03:40:25 +00:00
Vikram S. Adve
a45a327e8d New pass to decompose multi-dimensional array references into
a sequence of 1-D references, using a sequence of getElementPtrs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1907 91177308-0d34-0410-b5e6-96231b3b80d8
2002-03-18 03:39:09 +00:00
Chris Lattner
f09733a876 Remove code designed to compensate for a bug in GCC. The bug has since
been fixed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1881 91177308-0d34-0410-b5e6-96231b3b80d8
2002-03-15 20:35:21 +00:00
Chris Lattner
9b638019ca Cleanup error message output a bit
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1879 91177308-0d34-0410-b5e6-96231b3b80d8
2002-03-15 20:21:29 +00:00
Chris Lattner
754cf415f6 Fix bug: test/Regression/Other/2002-03-14-LevelRaiseHang.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1869 91177308-0d34-0410-b5e6-96231b3b80d8
2002-03-14 16:37:04 +00:00
Chris Lattner
a007bc2c14 Fix bug: test/Regression/Other/2002-03-11-InstCombineHang.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1864 91177308-0d34-0410-b5e6-96231b3b80d8
2002-03-11 23:28:45 +00:00
Chris Lattner
c4db754ecf update comments
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1862 91177308-0d34-0410-b5e6-96231b3b80d8
2002-03-11 22:21:04 +00:00
Chris Lattner
b24196f5ae * Fix bug: test/Regression/Other/2002-03-11-LevelRaiseIterInvalidate.ll
* Use more concise form of ReplaceInstWithInst to make code simpler
* Output nicer message for dead code eliminated when debugging


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1861 91177308-0d34-0410-b5e6-96231b3b80d8
2002-03-11 22:19:48 +00:00
Chris Lattner
0fce76a009 Fix bug: test/Regression/Other/2002-03-11-ConstPropCrash.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1858 91177308-0d34-0410-b5e6-96231b3b80d8
2002-03-11 22:11:07 +00:00
Chris Lattner
e1a52f6a15 Fix bug: test/Regression/Other/2002-03-11-LevelRaiseCalls.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1844 91177308-0d34-0410-b5e6-96231b3b80d8
2002-03-11 17:27:34 +00:00
Chris Lattner
4736d06bf4 We were not correctly burrowing down multiple levels to get to a leaf. Fix this now
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1833 91177308-0d34-0410-b5e6-96231b3b80d8
2002-03-07 21:18:00 +00:00
Chris Lattner
921ef3a185 Support changing the pointer type of a store for the case where we are
storing into the first element of the structure type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1832 91177308-0d34-0410-b5e6-96231b3b80d8
2002-03-07 21:17:35 +00:00
Chris Lattner
4ce0f8aa9e Take CallGraph out of the CFG namespace. It has nothing to do with CFGs
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1820 91177308-0d34-0410-b5e6-96231b3b80d8
2002-03-06 17:16:43 +00:00
Chris Lattner
bd0ef77cde Change over to use new style pass mechanism, now passes only expose small
creation functions in their public header file, unless they can help it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1816 91177308-0d34-0410-b5e6-96231b3b80d8
2002-02-26 21:46:54 +00:00
Chris Lattner
eded4916d6 Move ProfilePaths class into ProfilePaths library, only expose a creation function
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1812 91177308-0d34-0410-b5e6-96231b3b80d8
2002-02-26 20:04:59 +00:00
Chris Lattner
905ac5ee67 Pass stuff by reference instead of by copy. Copying entire graphs seems like
a bad idea


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1810 91177308-0d34-0410-b5e6-96231b3b80d8
2002-02-26 19:49:45 +00:00
Chris Lattner
5fb52fbf9e Move processGraph down lower in the file so all of the forward declarations
can be eliminated.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1809 91177308-0d34-0410-b5e6-96231b3b80d8
2002-02-26 19:43:49 +00:00
Chris Lattner
fd1717d03b * Changes to compile successfully with GCC 3.0
* Eliminated memory leak in processGraph
* Pass vectors by const reference to moveDummyCode instead of by copy


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1808 91177308-0d34-0410-b5e6-96231b3b80d8
2002-02-26 19:40:28 +00:00
Anand Shukla
2d9bbfdfc4 Makefile for profile-paths
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1807 91177308-0d34-0410-b5e6-96231b3b80d8
2002-02-26 19:36:43 +00:00
Anand Shukla
c3e69696ac Initial checkin: functions on Graph used for path profile pass
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1806 91177308-0d34-0410-b5e6-96231b3b80d8
2002-02-26 19:02:16 +00:00
Anand Shukla
070834a040 Initial checkin: instrument code to get path execution frequency
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1805 91177308-0d34-0410-b5e6-96231b3b80d8
2002-02-26 19:00:48 +00:00
Anand Shukla
0b8066c149 Initial checkin: helper file to insert instrumentation code along edges
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1804 91177308-0d34-0410-b5e6-96231b3b80d8
2002-02-26 18:59:46 +00:00
Anand Shukla
d940c7d112 Initial check in of graph.cpp: implements graph interface used in path profiles
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1803 91177308-0d34-0410-b5e6-96231b3b80d8
2002-02-26 18:58:39 +00:00
Anand Shukla
fb1d93c716 New makefile to include ProfilePaths dir
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1799 91177308-0d34-0410-b5e6-96231b3b80d8
2002-02-26 18:20:27 +00:00
Chris Lattner
41b66b12e8 When inlining basic blocks and instructions, give them a name!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1796 91177308-0d34-0410-b5e6-96231b3b80d8
2002-02-25 00:31:02 +00:00
Chris Lattner
4fb71ba29d Namespaces
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1791 91177308-0d34-0410-b5e6-96231b3b80d8
2002-02-24 23:03:09 +00:00
Chris Lattner
e0f2753bb8 Handle more cases in the linker
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1771 91177308-0d34-0410-b5e6-96231b3b80d8
2002-02-18 19:05:15 +00:00
Chris Lattner
868c2d3c05 Bug fix for test/Regression/Other/2002-02-14-LevelRaiseBadAssert.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1767 91177308-0d34-0410-b5e6-96231b3b80d8
2002-02-14 22:21:40 +00:00
Chris Lattner
54d1e6cab2 Implement conversion of method pointer parameter in Call instruction
to clean up MST benchmark.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1763 91177308-0d34-0410-b5e6-96231b3b80d8
2002-02-14 19:44:09 +00:00
Chris Lattner
9750b61e69 * Check in fix for: llvm/test/Regression/Other/2002-02-14-LevelRaiseInstDelete.ll
* Minor reformatting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1760 91177308-0d34-0410-b5e6-96231b3b80d8
2002-02-14 18:55:22 +00:00
Chris Lattner
455889aa79 * Pull BasicBlock::pred_* and BasicBlock::succ_* out of BasicBlock.h and into
llvm/Support/CFG.h
* Make pred & succ iterators for intervals global functions
* Add #includes that are now neccesary because BasicBlock.h doesn't include
  InstrTypes.h anymore


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1750 91177308-0d34-0410-b5e6-96231b3b80d8
2002-02-12 22:39:50 +00:00
Chris Lattner
221d688a5e Method.h no longer includes BasicBlock.h
Method::inst_* is now in llvm/Support/InstIterator.h
GraphTraits specializations for BasicBlock and Methods are now in llvm/Support/CFG.h


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1746 91177308-0d34-0410-b5e6-96231b3b80d8
2002-02-12 21:07:25 +00:00
Chris Lattner
0af83c6ed2 Add neccesary #include
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1742 91177308-0d34-0410-b5e6-96231b3b80d8
2002-02-12 20:19:06 +00:00
Chris Lattner
71b9411b8c I forgot to provide dominance frontier information. Now it's available.
Also add more comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1741 91177308-0d34-0410-b5e6-96231b3b80d8
2002-02-12 18:27:41 +00:00
Chris Lattner
d3db022482 Initial checkin of new memory -> register promotion pass
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1739 91177308-0d34-0410-b5e6-96231b3b80d8
2002-02-12 17:16:22 +00:00
Chris Lattner
417cf7ef96 General cleanup
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1628 91177308-0d34-0410-b5e6-96231b3b80d8
2002-02-01 04:53:48 +00:00
Chris Lattner
21801532fd Eliminate SimplifyCFG.h file, pull everything into the UnifyMethodExitNodes class
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1613 91177308-0d34-0410-b5e6-96231b3b80d8
2002-01-31 01:12:06 +00:00
Chris Lattner
fcc93d2c0a MethodPass's are now guaranteed to not be run on external methods!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1611 91177308-0d34-0410-b5e6-96231b3b80d8
2002-01-31 00:51:24 +00:00
Chris Lattner
793c6b80d3 Convert xforms over to new pass structure.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1605 91177308-0d34-0410-b5e6-96231b3b80d8
2002-01-31 00:45:11 +00:00
Chris Lattner
93193f8063 Convert analyses to new pass structure
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1603 91177308-0d34-0410-b5e6-96231b3b80d8
2002-01-31 00:42:27 +00:00
Chris Lattner
699a7bfd6b Remove extraneous #includes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1588 91177308-0d34-0410-b5e6-96231b3b80d8
2002-01-26 22:47:32 +00:00
Chris Lattner
33fa13c57c Remove opt namespace
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1587 91177308-0d34-0410-b5e6-96231b3b80d8
2002-01-26 22:47:07 +00:00
Chris Lattner
c560f88e91 Implement new DeadInstElmination pass
remove old comment


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1555 91177308-0d34-0410-b5e6-96231b3b80d8
2002-01-23 05:48:24 +00:00
Chris Lattner
31b80d98ad Don't insert a useless cast
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1527 91177308-0d34-0410-b5e6-96231b3b80d8
2002-01-22 03:30:06 +00:00
Chris Lattner
d7db863c1d Rename LowerAllocations.h to ChangeAllocations.h since it now contains the
RaiseAllocations pass as well.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1525 91177308-0d34-0410-b5e6-96231b3b80d8
2002-01-22 01:04:08 +00:00
Chris Lattner
5048c3b853 Pull RaiseAllocations stuff out of the CleanGCC pass into it's own pass in
the ChangeAllocations.h header file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1522 91177308-0d34-0410-b5e6-96231b3b80d8
2002-01-22 00:13:51 +00:00
Chris Lattner
8445372636 LowerAllocations is really a BasicBlock pass. Make it so.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1521 91177308-0d34-0410-b5e6-96231b3b80d8
2002-01-21 23:34:02 +00:00
Chris Lattner
59b6b8e0b3 Move stuff out of the Optimizations directories into the appropriate Transforms
directories.  Eliminate the opt namespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1520 91177308-0d34-0410-b5e6-96231b3b80d8
2002-01-21 23:17:48 +00:00
Chris Lattner
2d47418d3e Elminate an unused variable
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1518 91177308-0d34-0410-b5e6-96231b3b80d8
2002-01-21 23:16:30 +00:00
Chris Lattner
04c85dcad8 Rename SwapStructureContents -> IPO/SimpleStructMutation
Move MutateStructTypes.(cpp|h) -> IPO/MutateStructTypes.(cpp|h)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1510 91177308-0d34-0410-b5e6-96231b3b80d8
2002-01-21 07:52:35 +00:00
Chris Lattner
f4de63f65f Implement a more powerful, simpler, pass system. This pass system can figure
out how to run a collection of passes optimially given their behaviors and
charactaristics.

Convert code to use it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1507 91177308-0d34-0410-b5e6-96231b3b80d8
2002-01-21 07:31:50 +00:00
Chris Lattner
697954c15d Changes to build successfully with GCC 3.02
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1503 91177308-0d34-0410-b5e6-96231b3b80d8
2002-01-20 22:54:45 +00:00
Chris Lattner
8a2a311939 initial checkin
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1480 91177308-0d34-0410-b5e6-96231b3b80d8
2001-12-14 16:52:21 +00:00
Chris Lattner
c933344f1e * isFirstClassType is now provided by the Type class
* Add ReplaceInstWithInst


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1468 91177308-0d34-0410-b5e6-96231b3b80d8
2001-12-14 16:39:22 +00:00
Chris Lattner
7991c281c5 * add ReplaceInstWithInst
* Add support for pointer indexing
* Fix minor bugs that are majorly annoying


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1467 91177308-0d34-0410-b5e6-96231b3b80d8
2001-12-14 16:38:59 +00:00
Chris Lattner
38ac81cbbc Remove unsized array support
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1466 91177308-0d34-0410-b5e6-96231b3b80d8
2001-12-14 16:38:04 +00:00
Chris Lattner
d554380850 * Support pointer indexing
* Unsized arrays are a thing of the past, remove DoInsertArrayCast family
* Remove cases were we would get into infinite loops because we would insert a cast
  which would then be removed, inserting a different cast, ad infinitum...
* Remove some code that should be redundant with ExprTypeConvert code


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1465 91177308-0d34-0410-b5e6-96231b3b80d8
2001-12-14 16:37:52 +00:00
Chris Lattner
97ac4ee02e Many many changes and bugfixes:
* Remove support for unsized arrays
* Add pointer indexing support
* Allow more arbitrary malloc type changes (which are too generous currently
  and should be fixed in the future)
* Allow more and better conversions


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1464 91177308-0d34-0410-b5e6-96231b3b80d8
2001-12-14 16:35:53 +00:00
Chris Lattner
206ad80ef9 The proper prototype for malloc returns a pointer, not an unsized array
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1463 91177308-0d34-0410-b5e6-96231b3b80d8
2001-12-14 16:32:20 +00:00
Chris Lattner
29c147302f * Refactor trace values to work as a proper pass. Before it used to add
methods while the pass was running which was a no no.  Now it adds the
  printf method at pass initialization
* Revamp code to use printf calls instead of the old style print_<type>
  calls.
* Simplify code


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1457 91177308-0d34-0410-b5e6-96231b3b80d8
2001-12-14 16:26:05 +00:00
Chris Lattner
9102aee528 Assertion could never fail because another one would in it's place. :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1449 91177308-0d34-0410-b5e6-96231b3b80d8
2001-12-13 00:45:40 +00:00
Chris Lattner
036efec1ec Implement more general conversions for getelementptr instructions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1432 91177308-0d34-0410-b5e6-96231b3b80d8
2001-12-07 04:40:30 +00:00
Chris Lattner
44480b52b9 Remove code that is superceeded by code in ExprTypeConvert.cpp
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1431 91177308-0d34-0410-b5e6-96231b3b80d8
2001-12-07 04:39:01 +00:00
Chris Lattner
7c3f415d99 Don't insert scales of 1 :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1430 91177308-0d34-0410-b5e6-96231b3b80d8
2001-12-07 04:26:02 +00:00
Chris Lattner
f17a09d878 We can do cast-add elimination even on casts that reinterpret
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1427 91177308-0d34-0410-b5e6-96231b3b80d8
2001-12-06 18:06:13 +00:00
Chris Lattner
26a408ab9a Fix bug that caused invalid transformations to be applied
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1426 91177308-0d34-0410-b5e6-96231b3b80d8
2001-12-06 18:05:55 +00:00
Chris Lattner
4753bf21a4 Actually return true when a change has been made
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1425 91177308-0d34-0410-b5e6-96231b3b80d8
2001-12-05 19:41:33 +00:00
Chris Lattner
2dc48bd788 Handle more complex array indexing expressions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1424 91177308-0d34-0410-b5e6-96231b3b80d8
2001-12-05 19:41:16 +00:00
Chris Lattner
8da5d426d1 Fix pessimizations on sized arrays
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1423 91177308-0d34-0410-b5e6-96231b3b80d8
2001-12-05 19:40:32 +00:00
Chris Lattner
ac0077e143 Fix a few bugs. Fix pessimization handling sized arrays
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1422 91177308-0d34-0410-b5e6-96231b3b80d8
2001-12-05 19:39:15 +00:00
Chris Lattner
f1d6521412 Hrm, don't do debugging output when debugging is off. :(
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1420 91177308-0d34-0410-b5e6-96231b3b80d8
2001-12-05 06:40:17 +00:00
Chris Lattner
a8b6d43f2a Fixes to type conversion stuff to match induction variables more frequently
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1417 91177308-0d34-0410-b5e6-96231b3b80d8
2001-12-05 06:34:00 +00:00
Chris Lattner
ed4feac757 Fix a bug introduced by "internal linkage" work.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1415 91177308-0d34-0410-b5e6-96231b3b80d8
2001-12-04 18:01:49 +00:00
Chris Lattner
3bf915f2a2 Fix bugs, don't do external methods which causes segv.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1414 91177308-0d34-0410-b5e6-96231b3b80d8
2001-12-04 08:13:06 +00:00
Chris Lattner
4b770a3145 Remove printouts
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1413 91177308-0d34-0410-b5e6-96231b3b80d8
2001-12-04 08:12:53 +00:00
Chris Lattner
394437ff7e Implement induction variable simplification
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1411 91177308-0d34-0410-b5e6-96231b3b80d8
2001-12-04 04:32:29 +00:00
Chris Lattner
7a17675206 Renamed inst_const_iterator -> const_inst_iterator
Renamed op_const_iterator   -> const_op_iterator
Renamed PointerType::getValueType() -> PointerType::getElementType()


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1408 91177308-0d34-0410-b5e6-96231b3b80d8
2001-12-04 00:03:30 +00:00
Chris Lattner
e9bb2df410 Rename ConstPoolVal -> Constant
Rename ConstPool*   -> Constant*
Rename ConstPoolVals.h -> ConstantVals.h


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1407 91177308-0d34-0410-b5e6-96231b3b80d8
2001-12-03 22:26:30 +00:00
Chris Lattner
7061dc50b2 Split the PHINode class out from the iOther.h file into the iPHINode.h file
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1405 91177308-0d34-0410-b5e6-96231b3b80d8
2001-12-03 18:02:31 +00:00
Chris Lattner
6148c02591 Initial checkin of indvar stuff
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1404 91177308-0d34-0410-b5e6-96231b3b80d8
2001-12-03 17:28:42 +00:00
Chris Lattner
c50df7e3aa Compile the scalar directory
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1403 91177308-0d34-0410-b5e6-96231b3b80d8
2001-12-03 17:28:15 +00:00
Chris Lattner
cee8f9ae67 Create a new #include "Support/..." directory structure to move things
from "llvm/Support/..." that are not llvm dependant.

Move files and fix #includes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1400 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-27 00:03:19 +00:00
Chris Lattner
0900980cc5 Turn off debug info
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1396 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-26 19:36:58 +00:00
Chris Lattner
9e00579228 Make strings be internal
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1384 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-26 19:14:33 +00:00
Chris Lattner
e81dc1dd94 Remove debugging output
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1383 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-26 19:14:16 +00:00
Chris Lattner
c54692b969 Support internal linkage
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1382 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-26 19:14:03 +00:00
Chris Lattner
d4c1550cac Build IPO directory
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1381 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-26 18:59:30 +00:00
Chris Lattner
e4d25aad16 Implement support for internal methods
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1380 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-26 18:59:18 +00:00
Chris Lattner
bd70bb94d6 Include const prop as part of -raise
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1379 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-26 18:58:55 +00:00
Chris Lattner
5b7d42b142 Misc cleanups
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1377 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-26 18:57:38 +00:00
Chris Lattner
faffb053fe Expose constant propogation of an instruction in a clean way
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1376 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-26 18:57:12 +00:00
Chris Lattner
30474bb929 Implement DCE of global values
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1360 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-26 18:42:17 +00:00
Chris Lattner
7c54b4a067 Support array indexing
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1345 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-26 17:00:43 +00:00
Chris Lattner
491b29f247 Support Composite's, not just structs
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1344 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-26 17:00:13 +00:00
Chris Lattner
89a1c806ea losslessCastableTypes is moved to Type class
getStructOffsetType supports array indexing


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1343 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-26 16:59:47 +00:00
Chris Lattner
12739d9f87 Support selectable structure transformations
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1342 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-26 16:59:10 +00:00
Chris Lattner
8090e8c18e Support mutation of array indexing
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1341 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-26 16:58:33 +00:00
Chris Lattner
3cc7ddedbb Clean up code, implement array indexing stuff
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1340 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-26 16:58:14 +00:00
Chris Lattner
a0fa588d77 Implement array indexing reverse engineering
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1339 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-26 16:57:31 +00:00
Vikram S. Adve
2ed5ccd512 Print incoming arguments and return values.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1315 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-15 15:00:16 +00:00
Chris Lattner
430aa9ec1c -cleangcc pass now remove type names that are never referenced and type names for pointers to primitive types.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1312 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-15 04:34:46 +00:00
Chris Lattner
65ea171409 Remove much cruft from the MemAccessInst instruction
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1298 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-14 11:27:58 +00:00
Chris Lattner
d5b48ca422 Better heuristics for handling arrays
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1296 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-14 11:02:49 +00:00
Chris Lattner
ce22ec1251 * Change ExpressionConvertableToType to more closely match map behavior of
ConvertExpressionToType
* Make ValueHandle's remove instruction from maps when they are deleted so that
  no false map hits occur if a subsequent instruction is allocated to the same
  space in memory.  This was a VERY VERY VERY EVIL NASTY BUG to track down. :-P


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1288 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-13 05:01:36 +00:00
Chris Lattner
3d775c3f39 Avoid assertion failure when taking size of unsized array. Todo item herE
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1286 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-13 04:59:41 +00:00
Chris Lattner
fd79ab5088 Fix minor bug
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1273 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-12 20:13:04 +00:00
Ruchira Sasanka
061b8edb27 Changed insert instructions only for CONSTANTS - back to original
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1271 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-12 19:32:04 +00:00
Chris Lattner
7546c21ae1 Initail checking of structure swapper
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1248 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-10 07:28:25 +00:00
Chris Lattner
bff7c3a898 Initial checkin of structure mutator
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1246 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-10 07:26:31 +00:00
Chris Lattner
cf1ae7cea1 Remove false optimization that basically broke everything
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1219 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-09 01:08:10 +00:00
Chris Lattner
0bf7bad0c3 * Add better caching of data to avoid silly recusions
* Only check to see if uses of instructions can be converted for expressions... so we don't look at all of the uses of a constant.  This was making the code unnecessarily conservative


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1218 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-08 22:06:31 +00:00
Chris Lattner
c0b90e7dd5 Improve raising significantly
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1214 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-08 20:19:56 +00:00
Vikram S. Adve
ddf5ff6f8c Bug fix: cannot modify Phi operands while iterating over them!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1203 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-08 05:25:33 +00:00
Chris Lattner
161aa5ad93 Add #includes to enable buiding in Release mode
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1174 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-07 13:49:45 +00:00
Chris Lattner
75747cd9e8 Fix minor bug for shifts
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1160 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-06 21:51:48 +00:00
Chris Lattner
e34443db3c Fix bugs
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1152 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-06 08:34:29 +00:00
Chris Lattner
71344bd650 Fix many bugs. Implement PHI transforms & other cycles
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1151 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-06 08:34:17 +00:00
Chris Lattner
c109d30239 Fix bug with ADD nodes and malloc promotion
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1144 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-05 21:13:30 +00:00
Chris Lattner
277b4e4a9b Don't print spurious linking warnings about methods that are never used.
Cleanup ExprTypeConvert a bit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1141 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-05 19:43:10 +00:00
Chris Lattner
e4f4d8c3ec Use the expression map correctly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1140 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-05 18:30:53 +00:00
Chris Lattner
901216d527 New file for expression tree conversion
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1128 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-04 23:24:20 +00:00
Chris Lattner
59cd9f1e9f Refactor code to share stuff
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1127 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-04 23:24:06 +00:00
Chris Lattner
bacec7bc24 * Relax restriction that prevented malloc promotion in certain cases
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1125 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-04 22:11:10 +00:00
Chris Lattner
b980e18066 * Disable debug output
* fix minor bug with taking datasize of unsized array type
* Insert code to support speculative changes later


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1122 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-04 21:32:11 +00:00
Chris Lattner
f3b976e65f Convert backward conversion of expression trees into a new more powerful bidirectional approach. Add transforms for more instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1121 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-04 20:21:12 +00:00
Chris Lattner
8e7f409169 Minor method rename
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1119 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-04 08:08:34 +00:00
Chris Lattner
b96939519b Add transformations for Load and GetElementPtr. Fix broken transform with shr.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1118 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-04 07:42:17 +00:00
Chris Lattner
ab9f21f4c4 Fix cast instructions that end up in bad places in GCC output
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1117 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-04 07:40:51 +00:00
Chris Lattner
081431a639 Avoid making a broken transformation!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1115 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-03 21:30:22 +00:00
Chris Lattner
5b497ee7c2 Add new cleanup pass:
//  1. PHI nodes with multiple entries for the same predecessor.  GCC sometimes
//     generates code that looks like this:
//
//  bb7:  br bool %cond1004, label %bb8, label %bb8
//  bb8: %reg119 = phi uint [ 0, %bb7 ], [ 1, %bb7 ]
//
//     which is completely illegal LLVM code.  To compensate for this, we insert
//     an extra basic block, and convert the code to look like this:
//
//  bb7: br bool %cond1004, label %bbX, label %bb8
//  bbX: br label bb8
//  bb8: %reg119 = phi uint [ 0, %bbX ], [ 1, %bb7 ]
//


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1114 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-03 21:08:59 +00:00
Chris Lattner
b20807f23e * Export method to merge identically named methods
* Add code to fix PHI nodes that are missing arguments.  These PHI nodes can
  be generated by GCC if there is an uninitialized variable flowing into a merge
  point.  For example:

int foo(int y) {
  int X;
  if (y) X = 1;
  return X;
}


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1110 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-03 19:51:56 +00:00
Ruchira Sasanka
fca59d7dc9 Commented out code so that copies are inserted for all phi args
CahedCopyMap was disabled to insert phi elimination code for all phi args


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1105 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-03 17:09:59 +00:00
Chris Lattner
055c963f58 Changes to compile the TSP benchmark successfully. Favor warning instead of assertion failures.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1103 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-03 10:04:22 +00:00
Chris Lattner
b6b26921e3 Add code to link method together with the same name if one is vararg and the other isn't.
This resolves definitions like this:
   %list * "foo"(...)
   %list * "foo"(int)

together which can often occur because C programmers don't put prototypes in like they should.  GRR


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1102 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-03 09:19:00 +00:00
Chris Lattner
2c236f3e20 Don't forget to link type names together too. Fix for Olden/mst benchmark
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1094 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-03 05:18:24 +00:00
Chris Lattner
2d3e8bba62 Add extra code for debugging linker problems
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1091 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-03 03:27:29 +00:00
Chris Lattner
e99c66b74f * Add comments for peepholes
* Implement new peephole:
     // Peephole optimize the following instructions:
     // %t1 = cast {<...>} * %StructPtr to <ty> *
     //
     // Into: %t2 = getelementptr {<...>} * %StructPtr, <0, 0, 0, ...>
     //       %t1 = cast <eltype> * %t1 to <ty> *

  This peephole eliminated 9 evil casts in the health benchmark, and
  completely turned the addList method around.  :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1085 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-01 17:05:27 +00:00
Chris Lattner
68b07b7c5d Add DCE as integral part of the level raising to avoid processing instructions that are dead
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1084 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-01 07:00:51 +00:00
Chris Lattner
a1f6e648be Expose the low level DCE mechanism to external users
Refactor code to support it


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1083 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-01 07:00:27 +00:00
Chris Lattner
dedee7bf15 * Implement expression type conversion for constant values
* Fix a problem setting a name on a constant value that died because no symbol table was passed in
* Add some comments describing the passes
* Implement a new peephole:
     // Peephole optimize the following instructions:
     // %t = cast <T1>* %P to <T2> * ;; If T1 is losslessly convertable to T2
     // store <T2> %V, <T2>* %t
     //
     // Into:
     // %t = cast <T2> %V to <T1>
     // store <T1> %t2, <T1>* %P


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1080 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-01 05:57:59 +00:00
Chris Lattner
edefaa1196 Simplify DCE code a lot
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1079 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-01 05:55:29 +00:00
Chris Lattner
8d38e54c2f * Convert getelementptr/store pairs into a single store
* Convert getelementptr/load pairs into a single load


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1075 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-01 03:12:34 +00:00
Chris Lattner
d32a96121b Initial checkin of level raising code, after move and cleanup and expands from the opt directory
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1074 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-01 02:42:08 +00:00
Chris Lattner
591bda986e Propogate name to the malloc itself instead of to the cast
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1071 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-01 02:40:36 +00:00
Chris Lattner
7ef6559718 Use the correct prototype for malloc and free
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1066 91177308-0d34-0410-b5e6-96231b3b80d8
2001-10-31 06:36:23 +00:00
Chris Lattner
bfe11108ad Implement code to convert %malloc and %free FUNCTION CALLS into the instruction equivalent
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1065 91177308-0d34-0410-b5e6-96231b3b80d8
2001-10-31 06:35:59 +00:00
Chris Lattner
37aabf28b3 Implemented constant propogation of cast instructions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1064 91177308-0d34-0410-b5e6-96231b3b80d8
2001-10-31 05:07:57 +00:00
Chris Lattner
e51e03b3c6 Initial version of GCC cleanup pass: just removes extraneous global symbol table entries for types
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1062 91177308-0d34-0410-b5e6-96231b3b80d8
2001-10-31 04:33:19 +00:00
Chris Lattner
4f68528de4 Fix bug when inlining a method that refers to a global variable
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1056 91177308-0d34-0410-b5e6-96231b3b80d8
2001-10-31 02:27:26 +00:00
Chris Lattner
111bd01c11 Fix broken assertion. Didn't allow for pointer case
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1034 91177308-0d34-0410-b5e6-96231b3b80d8
2001-10-29 17:27:38 +00:00
Chris Lattner
43a6f2e332 Pull method symbols over when linking. Otherwise the result of the link will appear stripped
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1033 91177308-0d34-0410-b5e6-96231b3b80d8
2001-10-29 16:55:41 +00:00
Vikram S. Adve
c426c63b39 Make newlines be newlines! This should now work in both lli and native code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1016 91177308-0d34-0410-b5e6-96231b3b80d8
2001-10-28 22:44:02 +00:00
Chris Lattner
2301a070f6 Remove non linking related stuff
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1015 91177308-0d34-0410-b5e6-96231b3b80d8
2001-10-28 22:43:06 +00:00
Vikram S. Adve
9466f5113b Added name-mangling routines for future use.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1003 91177308-0d34-0410-b5e6-96231b3b80d8
2001-10-28 21:38:02 +00:00
Vikram S. Adve
d889330869 Use separate functions for printing values of each type.
Put trace code before condition-generating instruction in basic blocks
that end in a conditional branch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1002 91177308-0d34-0410-b5e6-96231b3b80d8
2001-10-28 21:37:25 +00:00
Chris Lattner
c2d774b6c1 Fix problem linking in a method prototype when a method body exists
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@965 91177308-0d34-0410-b5e6-96231b3b80d8
2001-10-23 20:43:42 +00:00
Chris Lattner
b81a0bff04 Refix bugs, stop using deprecated strstream header
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@898 91177308-0d34-0410-b5e6-96231b3b80d8
2001-10-18 20:06:03 +00:00
Chris Lattner
475becb7bc Initial checkin
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@897 91177308-0d34-0410-b5e6-96231b3b80d8
2001-10-18 20:05:37 +00:00
Vikram S. Adve
631b9a3523 Only print values live at BB or method exit, and insert loads at each
BB exit to read and print values stored in that BB.   Note that only
these stored values are live at method exit!.  Also, print messages at
method entry and exit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@892 91177308-0d34-0410-b5e6-96231b3b80d8
2001-10-18 18:16:11 +00:00
Vikram S. Adve
bedb00d6dc Handle multiple exit blocks correctly.
Restore string variable cache.
Resurrect code to use formatted printing instead of PrintVal
but leave it turned off for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@888 91177308-0d34-0410-b5e6-96231b3b80d8
2001-10-18 13:49:22 +00:00
Chris Lattner
4457163bc4 Convert to be compatible with lli.
Need to eliminate duplicate \n entries


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@883 91177308-0d34-0410-b5e6-96231b3b80d8
2001-10-18 06:03:05 +00:00
Chris Lattner
8d9e3776d8 Massive hacks to try to fix subtle logic bugs. I think it's all working now,
at least what used to.  I should disable method exit code completely because
it's broken (doesn't insert just post dominating values)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@881 91177308-0d34-0410-b5e6-96231b3b80d8
2001-10-18 05:28:08 +00:00
Chris Lattner
42c9c2cce4 Convert to new simpler pass itf
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@880 91177308-0d34-0410-b5e6-96231b3b80d8
2001-10-18 05:27:33 +00:00
Chris Lattner
5680ee6b28 Convert optimizations to the pass infrastructure
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@873 91177308-0d34-0410-b5e6-96231b3b80d8
2001-10-18 01:32:34 +00:00
Chris Lattner
1bffea0341 Add new Pass infrastructure and some examples
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@836 91177308-0d34-0410-b5e6-96231b3b80d8
2001-10-15 17:31:51 +00:00
Chris Lattner
c18545dc9e Rename ConstPoolPointerReference to ConstPoolPointerRef - My fingers get tired typing that much
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@822 91177308-0d34-0410-b5e6-96231b3b80d8
2001-10-15 13:21:42 +00:00
Chris Lattner
f84b9bc33b * getExitNode() doesn't exist in method anymore
* Make local functions static


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@820 91177308-0d34-0410-b5e6-96231b3b80d8
2001-10-15 13:07:21 +00:00
Vikram S. Adve
54287145e7 Added Instrumentation subdirectory.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@819 91177308-0d34-0410-b5e6-96231b3b80d8
2001-10-15 12:01:05 +00:00
Chris Lattner
8d2de8a82c Implement linking of global variable constant references
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@817 91177308-0d34-0410-b5e6-96231b3b80d8
2001-10-15 03:12:52 +00:00
Chris Lattner
5fdc4c91ae Minor cleanup
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@812 91177308-0d34-0410-b5e6-96231b3b80d8
2001-10-14 23:29:30 +00:00
Chris Lattner
5c377c524a Implement linker. It's 95% working now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@810 91177308-0d34-0410-b5e6-96231b3b80d8
2001-10-14 23:29:15 +00:00
Vikram S. Adve
df1892fee2 Insert code to trace values at basic block and method exits.
Current version does not check for liveness.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@800 91177308-0d34-0410-b5e6-96231b3b80d8
2001-10-14 23:18:45 +00:00
Chris Lattner
ce2a550d5e Check in makefile
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@788 91177308-0d34-0410-b5e6-96231b3b80d8
2001-10-13 16:57:03 +00:00
Chris Lattner
52f7e908cb Start of a linker
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@775 91177308-0d34-0410-b5e6-96231b3b80d8
2001-10-13 07:03:50 +00:00
Chris Lattner
93d39d23b4 Support the invoke instruction
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@765 91177308-0d34-0410-b5e6-96231b3b80d8
2001-10-13 06:52:41 +00:00
Chris Lattner
5a0d4179df Support indirect calls
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@764 91177308-0d34-0410-b5e6-96231b3b80d8
2001-10-13 06:52:31 +00:00
Chris Lattner
b00c582b6d Commit more code over to new cast style
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@697 91177308-0d34-0410-b5e6-96231b3b80d8
2001-10-02 03:41:24 +00:00
Chris Lattner
1d87bcf490 Convert more code to use new style casts
Eliminate old style casts from value.h


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@696 91177308-0d34-0410-b5e6-96231b3b80d8
2001-10-01 20:11:19 +00:00
Chris Lattner
cfe26c930a Add more support for new style casts
Convert more code to use them


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@695 91177308-0d34-0410-b5e6-96231b3b80d8
2001-10-01 18:26:53 +00:00
Chris Lattner
9636a91649 Add support for new style casts
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@694 91177308-0d34-0410-b5e6-96231b3b80d8
2001-10-01 16:18:37 +00:00
Chris Lattner
f0604b84c7 Pull predecessor and successor iterators out of the CFG*.h files, and plop them into
the BasicBlock class where they should be.  pred_begin/pred_end become methods on BasicBlock,
and the cfg namespace isn't used anymore.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@691 91177308-0d34-0410-b5e6-96231b3b80d8
2001-10-01 13:19:53 +00:00
Chris Lattner
3ff4387113 Pull iterators out of CFG.h and CFGdecls and put them in Support directory
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@664 91177308-0d34-0410-b5e6-96231b3b80d8
2001-09-28 22:56:31 +00:00
Chris Lattner
8a396e57ab ADCE is broken but at least we know why
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@656 91177308-0d34-0410-b5e6-96231b3b80d8
2001-09-28 00:06:42 +00:00
Chris Lattner
b8259dd93c Make ADCE more robust, it still has problems, but it's getting closer
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@521 91177308-0d34-0410-b5e6-96231b3b80d8
2001-09-09 22:26:47 +00:00
Chris Lattner
13b1f0cb4b Types and constants are wierd things in symbol tables now
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@457 91177308-0d34-0410-b5e6-96231b3b80d8
2001-09-07 16:43:50 +00:00
Chris Lattner
b70d82fb39 * Eliminate reference to ConstantPool class
* Constants are global objects that are not allocated or freed


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@456 91177308-0d34-0410-b5e6-96231b3b80d8
2001-09-07 16:43:22 +00:00
Chris Lattner
78721d5418 Constant pool is dead
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@455 91177308-0d34-0410-b5e6-96231b3b80d8
2001-09-07 16:42:51 +00:00
Chris Lattner
7365745546 Constants are now global unique objects
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@454 91177308-0d34-0410-b5e6-96231b3b80d8
2001-09-07 16:42:26 +00:00
Chris Lattner
2f11a9ded3 * Eliminate constant pool dependancies:
* Eliminate DoRemoveUnusedConstants


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@453 91177308-0d34-0410-b5e6-96231b3b80d8
2001-09-07 16:42:08 +00:00
Chris Lattner
9b644cc627 * Supoprt global constants
* Remove support for local constant pools
* Eliminate constant pool merging method, which is no longer neccesary
* Disable invalid optimization (todo: fix it)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@452 91177308-0d34-0410-b5e6-96231b3b80d8
2001-09-07 16:41:30 +00:00
Chris Lattner
ee7cb29866 Enable the elimination of method prototypes that are not referenced
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@325 91177308-0d34-0410-b5e6-96231b3b80d8
2001-07-28 17:51:49 +00:00
Chris Lattner
57dbb3ad63 Moved inline/llvm/Tools/* to include/llvm/Support/*
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@279 91177308-0d34-0410-b5e6-96231b3b80d8
2001-07-23 17:46:59 +00:00
Chris Lattner
bc7135f5c0 Support external methods
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200 91177308-0d34-0410-b5e6-96231b3b80d8
2001-07-15 21:43:45 +00:00
Chris Lattner
3b7bfdb201 Add knowledge about the struct form of the GetElementPtr instruction
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183 91177308-0d34-0410-b5e6-96231b3b80d8
2001-07-14 06:11:51 +00:00
Chris Lattner
20a155f5ab Remove dependency on the structure of ValueHolder.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182 91177308-0d34-0410-b5e6-96231b3b80d8
2001-07-14 06:11:26 +00:00
Chris Lattner
c262f7298f Don't clean out the type plane of the constant pool... this is a hack. FIXME
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172 91177308-0d34-0410-b5e6-96231b3b80d8
2001-07-09 19:38:52 +00:00
Chris Lattner
0bd654a049 Implement checking for new instructions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163 91177308-0d34-0410-b5e6-96231b3b80d8
2001-07-08 21:18:49 +00:00
Chris Lattner
72f1e9929a Use the CDG to mark branches alive on demand.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159 91177308-0d34-0410-b5e6-96231b3b80d8
2001-07-08 18:38:36 +00:00
Chris Lattner
0908309e3c Neg instruction removed. Cast instruction implemented.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156 91177308-0d34-0410-b5e6-96231b3b80d8
2001-07-08 04:57:15 +00:00
Chris Lattner
a41f50dea8 Broad superficial changes:
* Renamed getOpcode to getOpcodeName
* Changed getOpcodeName to return a const char * instead of string
* Added a getOpcode method to replace getInstType
* Changed code to use getOpcode instead of getInstType


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152 91177308-0d34-0410-b5e6-96231b3b80d8
2001-07-07 19:24:15 +00:00
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
63a0b2a9b4 Add method to unify all exit nodes of a method
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143 91177308-0d34-0410-b5e6-96231b3b80d8
2001-07-06 16:58:36 +00:00
Chris Lattner
d818312d09 Update to include right file
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138 91177308-0d34-0410-b5e6-96231b3b80d8
2001-07-06 16:32:07 +00:00
Chris Lattner
02e90d59c8 Initial checkin. Should print dead instructions, except it doesn't do
control dependencies.  :(


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-30 06:39:11 +00:00
Chris Lattner
49c8f64747 Rename DoSparseConditionalConstantProp -> DoSCCP
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-30 06:37:43 +00:00
Chris Lattner
7e02b7e600 Optimizations got their own header files
Optimizations now live in the 'opt' namespace
include/llvm/Opt was renamed include/llvm/Optimizations


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-30 04:36:40 +00:00
Chris Lattner
2b05880476 Export ConstantFoldTerminator, allow it to fold conditional branches to
the same label.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-29 23:56:58 +00:00
Chris Lattner
cb056de508 Added documentation. Constant fold terminators.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-29 23:56:23 +00:00
Chris Lattner
25d17a5001 * Factored RemovePredecessorFromBlock into BasicBlock::removePredecessor
* Avoid messing around with this case:
  br label %A
%A:  br label %A
* Enable optimizations that are correct now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-29 05:24:28 +00:00
Chris Lattner
bca26a4c6b We need to make sure to remove PHI nodes in the successor that cannot be
executed when removing branch dest.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-29 05:23:10 +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
138a124f09 Add a new Sparse Conditional Constant Propogation pass
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-27 23:38:11 +00:00
Chris Lattner
3b34c59dcb Misc cleanup
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-27 23:36:09 +00:00
Chris Lattner
531450d8a6 * Expose DoConstantPoolMerging
* Cleanups (post->pre increment, new cleaner API, etc)
* Moved stuff into ConstantHandling.h


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-27 23:35:26 +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
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
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
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
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
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
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
d213f0f3a1 Add a test case for interval code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-20 19:27:11 +00:00
Chris Lattner
d36c91c9c6 Updates to work with new cfg namespace
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-13 19:55:22 +00:00
Chris Lattner
ee976f3371 Updates to support
* Changes in PHI node structure


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-11 15:04:40 +00:00
Chris Lattner
dac6dda315 Updated to work with new CFG.h file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-07 21:18:45 +00:00
Chris Lattner
f155e13092 Significant rework. DCE is still not done (see #ifdef'd out parts)
but at least the stuff that is checked in, now works.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10 91177308-0d34-0410-b5e6-96231b3b80d8
2001-06-07 16:59:26 +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