Commit Graph

3100 Commits

Author SHA1 Message Date
Chris Lattner
7608a46cbe Updates to move some header files out of include/llvm/Transforms into
the Scalar and Utils subdirectories

llvm-svn: 2523
2002-05-07 18:36:35 +00:00
Chris Lattner
9b55e5a2f4 Reduce dependance on TransformInternals.h, instead using the TransformUtils library
llvm-svn: 2518
2002-05-07 18:12:18 +00:00
Chris Lattner
3d86d49604 Add #include no longer included by llvm/Transforms/Scalar/ConstantProp.h
llvm-svn: 2517
2002-05-07 18:11:30 +00:00
Chris Lattner
560da70f8c Factor code out to the TransformUtils library
llvm-svn: 2516
2002-05-07 18:10:55 +00:00
Chris Lattner
6a51585155 Factor code out of TransformInternals into the Transform Utils library
llvm-svn: 2515
2002-05-07 18:09:15 +00:00
Chris Lattner
664d085cb3 Build Transforms Utils library
llvm-svn: 2514
2002-05-07 18:08:50 +00:00
Chris Lattner
28537dff72 Add code pulled out of TransformInternals.cpp, ConstProp.cpp, and DCE.cpp
llvm-svn: 2513
2002-05-07 18:07:59 +00:00
Chris Lattner
d66a6e33e9 * Convert InstWorkList to vector instead of set, because on big programs it
is empirically faster by a noticable margin, even though duplicates can
  happen.

llvm-svn: 2511
2002-05-07 04:29:32 +00:00
Chris Lattner
87e8806f05 * Remove all cfg simplification stuff for a new cfg simplify pass (todo)
* Convert to worklist instead of iterative algorithm

llvm-svn: 2510
2002-05-07 04:24:11 +00:00
Chris Lattner
a6e047a5d9 Only do masking for unsigned values!
llvm-svn: 2504
2002-05-06 18:54:59 +00:00
Chris Lattner
e548507e8c * Eliminate dead code that should have been removed in last revision
* Convert main constant propogation pass to be worklist driven instead of
  iterative.
* -constprop pass no longer "constant propogates" terminator instructions
   - CFG is now preserved!

llvm-svn: 2502
2002-05-06 18:21:31 +00:00
Chris Lattner
bbbdd852b8 Handle X = phi Y --> X = Y
llvm-svn: 2501
2002-05-06 18:06:38 +00:00
Chris Lattner
4c3366405a * Use simplified interface to constant propogation stuff.
* Remove dead PHI case (which could not work due to getNumOperands rather than
  getNumIncomingValues.  This really belongs in InstCombine, anyway so we'll
  move it there.

llvm-svn: 2497
2002-05-06 17:54:10 +00:00
Chris Lattner
019f3649bd Clean up ADCE by removing extraneous wrapper class
llvm-svn: 2494
2002-05-06 17:27:57 +00:00
Chris Lattner
5d6bec5e26 Combine not (not X) -> X
llvm-svn: 2493
2002-05-06 17:03:21 +00:00
Chris Lattner
9fa53de7e9 Support more cases...
llvm-svn: 2490
2002-05-06 16:49:18 +00:00
Chris Lattner
f4cdbf34e5 Add many more instruction combination simplifications
llvm-svn: 2484
2002-05-06 16:14:14 +00:00
Chris Lattner
66e25b8b62 Merge blocks like this:
void "test3"(bool %T) {
        br bool %T, label %BB1, label %BB1
BB1:
        ret void
}

llvm-svn: 2472
2002-05-06 03:02:02 +00:00
Chris Lattner
940daedc22 Implement constant propogation of shift instructions
llvm-svn: 2471
2002-05-06 03:01:37 +00:00
Chris Lattner
7b80b53ab9 Ok, really it only takes me 3 times to get this right!
Now use #if 0 instead of #ifdef 0

llvm-svn: 2448
2002-05-02 21:49:50 +00:00
Chris Lattner
dd390e1736 Oops, disable debugging code all the way. :)
llvm-svn: 2447
2002-05-02 21:47:40 +00:00
Chris Lattner
fe6c9eeae3 * Finish the implementation of isEdgeFeasible this fixes bug:
test/Regression/Transforms/SCCP/2002-05-02-EdgeFailure.ll
* SCCP now preserves the CFG:  It leaves conditional branches the way they
  are in the program, not simplifying them.  A seperate pass should eliminate
  the potentially dead basic blocks and edges in the CFG.

llvm-svn: 2446
2002-05-02 21:44:00 +00:00
Chris Lattner
13b52e71d8 * Enable SCCP debugging to be turned on with a simple change of #define
* Change worklist to a set so that duplicates cannot happen
* Add support for the invoke instruction
* Avoid marking store and free instructions as overdefined, since they
  cannot produce a value anyway.
* Inline the OperandChangedState implementation
* Add isEdgeFeasible in preparation to fix a bug.  Right now it behaves
  exactly as before.
* Remove obsolete comment about constant pools

llvm-svn: 2445
2002-05-02 21:18:01 +00:00
Chris Lattner
5364d1a74a * Simplify the code by not bothering to name the folded constant
* Do not skip the instruction immediately after a folded instruction.  This
  was causing the testcase failure:
	test/Regression/Transforms/SCCP/2002-05-02-MissSecondInst.ll

llvm-svn: 2443
2002-05-02 20:32:51 +00:00
Chris Lattner
05cd52199d ExprTypeConvert will already do this transformation, no need to specialize
it here.

llvm-svn: 2431
2002-05-02 17:38:55 +00:00
Chris Lattner
39db871f86 Be a little more efficient, do not generate loads and stores with indices in them.
llvm-svn: 2430
2002-05-02 17:38:14 +00:00
Chris Lattner
94dcd411a5 Fix bug: test/Regression/Transforms/LevelRaise/2002-05-02-BadCastElimination.ll
llvm-svn: 2429
2002-05-02 17:37:34 +00:00
Chris Lattner
48a44f7e23 * Add ability to eliminate a bunch of different cascading cast variations
* Allow elimination of getelementptr X, uint 0 (which is a noop)

llvm-svn: 2428
2002-05-02 17:06:02 +00:00
Chris Lattner
b3e81510d7 Fixed bug: test/Regression/Transforms/Mem2Reg/2002-05-01-ShouldNotPromoteThisAlloca.ll
llvm-svn: 2423
2002-05-01 15:38:23 +00:00
Chris Lattner
f328577307 Remove unneccesary pass
llvm-svn: 2420
2002-04-30 20:52:49 +00:00
Chris Lattner
31ba129cbe Add folding rules for mul X, 0 and mul X, 2
llvm-svn: 2417
2002-04-29 22:24:47 +00:00
Chris Lattner
7d3253876a Significantly clean up SCCP pass. Now the two classes are merged and in
an anonymous namespace where they belong.

llvm-svn: 2415
2002-04-29 21:26:08 +00:00
Chris Lattner
27eeecbb69 Range insertion now returns an iterator
llvm-svn: 2414
2002-04-29 21:25:34 +00:00
Chris Lattner
09bbb5c015 Remove unused files: This is the old induction varaible cannonicalization
pass built on top of interval analysis

llvm-svn: 2411
2002-04-29 20:18:00 +00:00
Chris Lattner
767210feb7 Fix for problem when allocating something like this:
malloc(100-i);

llvm-svn: 2409
2002-04-29 20:09:21 +00:00
Chris Lattner
15e8f4c012 changes because iMemory.h no longer #includes DerivedTypes.h
This only requires Type.h anyway

llvm-svn: 2405
2002-04-29 18:48:30 +00:00
Chris Lattner
b4de02df67 Eliminate dead global variables
llvm-svn: 2400
2002-04-29 18:13:11 +00:00
Chris Lattner
d5a847057b Eliminate duplicate or unneccesary #include's
llvm-svn: 2397
2002-04-29 17:42:12 +00:00
Chris Lattner
2dfc667a7d Remove broken assertion.
llvm-svn: 2396
2002-04-29 16:20:25 +00:00
Chris Lattner
37104aace8 Add new optional getPassName() virtual function that a Pass can override
to make debugging output a lot nicer.

llvm-svn: 2395
2002-04-29 14:57:45 +00:00
Chris Lattner
8d843f6b77 More cleanups
llvm-svn: 2392
2002-04-29 01:58:47 +00:00
Chris Lattner
fc1a433dae Code cleanups
llvm-svn: 2391
2002-04-29 01:22:55 +00:00
Chris Lattner
f12cc842b3 Tighten up the AnalysisUsage of lots of passes, primarily to correctly indicate whether or not they invalidate the CFGA
llvm-svn: 2386
2002-04-28 21:27:06 +00:00
Chris Lattner
ca14237696 Split ConstantVals.h into Constant.h and Constants.h
llvm-svn: 2378
2002-04-28 19:55:58 +00:00
Chris Lattner
b3d1caf947 Eliminate the PromoteInstance class, incorporating it into the PromotePass
class.

llvm-svn: 2375
2002-04-28 19:12:38 +00:00
Chris Lattner
13dbfe5217 Eliminate visited, CurrentValue, and WriteSets as instance variables of
PromoteInstance.  Make them local variables that are passed around as
appropriate.  Especially in the case of CurrentValue, this makes the
code simpler.

llvm-svn: 2374
2002-04-28 18:54:01 +00:00
Chris Lattner
ff8a62589c * Fix bug: test/Regression/Transforms/Mem2Reg/2002-03-28-UninitializedVal.ll
* Minor cleanup that was missed in last patch

llvm-svn: 2373
2002-04-28 18:39:46 +00:00
Chris Lattner
421873de24 This huge changeset is a strictly cleanup change
Bugfixes will come in the next revision so that the diff is obvious.

llvm-svn: 2372
2002-04-28 18:27:55 +00:00
Chris Lattner
78dd56fe62 Eliminate the cfg namespace, moving LoopInfo, Dominators, Interval* classes
to the global namespace

llvm-svn: 2370
2002-04-28 16:21:30 +00:00
Chris Lattner
ee2e78b86c Be careful not to make "external" function internal
llvm-svn: 2363
2002-04-28 05:48:34 +00:00