aboutsummaryrefslogtreecommitdiffstats
path: root/include/llvm/Transforms
Commit message (Collapse)AuthorAgeFilesLines
* Unbreak VC++ build.Jeff Cohen2006-11-052-3/+3
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31464 91177308-0d34-0410-b5e6-96231b3b80d8
* add option to isCriticalEdgeChris Lattner2006-10-281-1/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31258 91177308-0d34-0410-b5e6-96231b3b80d8
* Expose a smarter way to break critical edges.Chris Lattner2006-10-281-4/+11
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31256 91177308-0d34-0410-b5e6-96231b3b80d8
* Corrected formatting.Bill Wendling2006-10-131-62/+66
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30942 91177308-0d34-0410-b5e6-96231b3b80d8
* add setJumpBufSize() and setJumpBufAlignment() to target-lowering.Duraid Madina2006-09-041-2/+1
| | | | | | | | Call these from your backend to enjoy setjmp/longjmp goodness, see lib/Target/IA64/IA64ISelLowering.cpp for an example git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30095 91177308-0d34-0410-b5e6-96231b3b80d8
* Add PredicateSimplifier pass. Collapses equal variables into one formNick Lewycky2006-08-281-0/+5
| | | | | | | | and simplifies expressions. This implements the optimization described in PR807. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29947 91177308-0d34-0410-b5e6-96231b3b80d8
* For PR885:Reid Spencer2006-08-211-116/+0
| | | | | | | | Consolidate the LinkAllAnalyses.h and LinkAllPasses.h headers into one so there is no dupliation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29787 91177308-0d34-0410-b5e6-96231b3b80d8
* Introducing plugable register allocators and instruction schedulers.Jim Laskey2006-08-011-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29434 91177308-0d34-0410-b5e6-96231b3b80d8
* Add new constructor to accept vector of exported names while creatingDevang Patel2006-07-201-0/+1
| | | | | | | InternalizePass. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29222 91177308-0d34-0410-b5e6-96231b3b80d8
* Update some comments, and expose LCSSAID in preparation for having other passesOwen Anderson2006-06-081-0/+1
| | | | | | | require LCSSA. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28734 91177308-0d34-0410-b5e6-96231b3b80d8
* Force anything that #includes llvm/Transforms/Utils/UnifyFunctionExitNodes.hChris Lattner2006-06-021-0/+6
| | | | | | | | to link in the implementation. Thanks to Anton Korobeynikov for figuring out what was going on here. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28660 91177308-0d34-0410-b5e6-96231b3b80d8
* Implement a new method: CloneAndPruneFunctionInto, as documented.Chris Lattner2006-05-271-0/+13
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28518 91177308-0d34-0410-b5e6-96231b3b80d8
* Add an interface to constant fold and instruction given it's opcode, typeChris Lattner2006-05-271-0/+9
| | | | | | | and operands. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28516 91177308-0d34-0410-b5e6-96231b3b80d8
* Skeletal LCSSA pass. This is currently non-functional. Expect functionalityOwen Anderson2006-05-262-0/+6
| | | | | | | and documentation updates soo. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28495 91177308-0d34-0410-b5e6-96231b3b80d8
* Add a CloneModule call that exposes the mapping of values from the old moduleChris Lattner2006-05-171-0/+1
| | | | | | | to the new module. Patch provided by Nick Lewycky! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28349 91177308-0d34-0410-b5e6-96231b3b80d8
* This is a proper fix for the compiler warning. A termination condition isChris Lattner2006-05-141-3/+11
| | | | | | | not needed, as it can never be reached: an edge must exist. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28282 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix an infinite loop bug that Vladimir Prus identified.Reid Spencer2006-05-131-1/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28281 91177308-0d34-0410-b5e6-96231b3b80d8
* Add pass ID's for various passes, so they can be AddRequiredID. Patch byChris Lattner2006-05-021-14/+20
| | | | | | | Domagoj Babic! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28048 91177308-0d34-0410-b5e6-96231b3b80d8
* remove a dead prototypeChris Lattner2006-04-201-4/+0
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27882 91177308-0d34-0410-b5e6-96231b3b80d8
* Add a simple pass to make sure that all (non-library) calls to malloc and freeAndrew Lenharth2006-04-102-1/+6
| | | | | | | | | | | are visible to analysis as intrinsics. That is, make sure someone doesn't pass free around by address in some struct (as happens in say 176.gcc). This doesn't get rid of any indirect calls, just ensure calls to free and malloc are always direct. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27560 91177308-0d34-0410-b5e6-96231b3b80d8
* For each loop, keep track of all the IV expressions inserted indexed byEvan Cheng2006-03-161-9/+5
| | | | | | | | | | | | | | | stride. For a set of uses of the IV of a stride which is a multiple of another stride, do not insert a new IV expression. Rather, reuse the previous IV and rewrite the uses as uses of IV expression multiplied by the factor. e.g. x = 0 ...; x ++ y = 0 ...; y += 4 then use of y can be rewritten as use of 4*x for x86. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26803 91177308-0d34-0410-b5e6-96231b3b80d8
* Added target lowering hooks which LSR consults to make more intelligentEvan Cheng2006-03-131-2/+8
| | | | | | | transformation decisions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26738 91177308-0d34-0410-b5e6-96231b3b80d8
* Make the LLVM headers "-ansi -pedantic -Wno-long-long" clean.Chris Lattner2006-02-222-2/+2
| | | | | | | Patch by Martin Partel! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26313 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove a level of indirection.Chris Lattner2006-02-101-9/+8
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26109 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove a never-working passChris Lattner2006-01-161-1/+0
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25348 91177308-0d34-0410-b5e6-96231b3b80d8
* Teach inline function how to update the callgraph when it makes changes.Chris Lattner2006-01-141-9/+13
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25318 91177308-0d34-0410-b5e6-96231b3b80d8
* Allow the code cloning interfaces to capture some important info about theChris Lattner2006-01-131-6/+39
| | | | | | | code being cloned if the client wants. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25281 91177308-0d34-0410-b5e6-96231b3b80d8
* Added documented rsprofiler interface. Also remove new profiler passes, theAndrew Lenharth2005-11-283-4/+30
| | | | | | | old ones have been updated to implement the interface. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24499 91177308-0d34-0410-b5e6-96231b3b80d8
* Random sampling (aka Arnold and Ryder) profiling. This is still ↵Andrew Lenharth2005-11-282-0/+12
| | | | | | | | | | | | | | | | | | preliminary, but it works on spec on x86 and alpha. The idea is to allow profiling passes to remember what profiling they inserted, then a random sampling framework is inserted which consists of duplicated basic blocks (without profiling), such that at each backedge in the program and entry into every function, the framework chooses whether to use the instrumented code or the instrumentation free code. The goal of such a framework is to make it reasonably cheap to do random sampling of very expensive profiling products (such as load-value profiling). The code is organized into 3 parts (2 passes) 1) a linked set of profiling passes, which implement an analysis group (linked, like alias analysis are). These insert profiling into the program, and remember what they inserted, so that at a later time they can be queried about any instruction. 2) a pass that handles inserting the random sampling framework. This also has options to control how random samples are choosen. Currently implemented are Global counters, register allocated global counters, and read cycle counter (see? there was a reason for it). The profiling passes are almost identical to the existing ones (block, function, and null profiling is supported right now), and they are valid passes without the sampling framework (hence the existing passes can be unified with the new ones, not done yet). Some things are a bit ugly still, but that should be fixed up soon enough. Other todo? making the counter values not "magic 2^16 -1" values, but dynamically choosable. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24493 91177308-0d34-0410-b5e6-96231b3b80d8
* Reg2Mem is something a pass may depend on, so allow thatAndrew Lenharth2005-11-221-0/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24488 91177308-0d34-0410-b5e6-96231b3b80d8
* needs to go here to apparently.Andrew Lenharth2005-11-101-0/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24268 91177308-0d34-0410-b5e6-96231b3b80d8
* The pass everyone has been waiting for!Andrew Lenharth2005-11-101-0/+6
| | | | | | | | | Reg2Mem for fun you can opt -reg2mem -mem2reg git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24267 91177308-0d34-0410-b5e6-96231b3b80d8
* Add support alignment of allocation instructions.Nate Begeman2005-11-051-1/+2
| | | | | | | | | | Add support for specifying alignment and size of setjmp jmpbufs. No targets currently do anything with this information, nor is it presrved in the bytecode representation. That's coming up next. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24196 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove the LowerConstantExpressionsPass passChris Lattner2005-10-292-6/+0
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24089 91177308-0d34-0410-b5e6-96231b3b80d8
* Move some constant folding functions into LLVMAnalysis since they are usedJohn Criswell2005-10-271-8/+1
| | | | | | | by Analysis and Transformation passes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24038 91177308-0d34-0410-b5e6-96231b3b80d8
* Don't link these three passes in anymoreChris Lattner2005-10-241-3/+0
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23941 91177308-0d34-0410-b5e6-96231b3b80d8
* Don't invade the system namespaceChris Lattner2005-10-241-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23917 91177308-0d34-0410-b5e6-96231b3b80d8
* There is no need for this to be VC++ onlyChris Lattner2005-10-241-15/+6
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23915 91177308-0d34-0410-b5e6-96231b3b80d8
* Make this work with the internalize changeChris Lattner2005-10-191-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23812 91177308-0d34-0410-b5e6-96231b3b80d8
* add an option to the internalize passChris Lattner2005-10-181-3/+5
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23782 91177308-0d34-0410-b5e6-96231b3b80d8
* allow demotion to volatile valuesChris Lattner2005-09-271-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23472 91177308-0d34-0410-b5e6-96231b3b80d8
* add a new functionChris Lattner2005-09-261-0/+5
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23443 91177308-0d34-0410-b5e6-96231b3b80d8
* add a helperChris Lattner2005-08-171-0/+7
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22823 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix a fixme in CondPropagate.cpp by moving a PhiNode optimization intoNate Begeman2005-08-041-10/+0
| | | | | | | | | BasicBlock's removePredecessor routine. This requires shuffling around the definition and implementation of hasContantValue from Utils.h,cpp into Instructions.h,cpp git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22664 91177308-0d34-0410-b5e6-96231b3b80d8
* Add SimplyLibCalls.cpp to VC++ buildJeff Cohen2005-04-261-0/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21554 91177308-0d34-0410-b5e6-96231b3b80d8
* Declare a function to create the SimplifyLibCalls pass.Reid Spencer2005-04-251-0/+4
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21523 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove trailing whitespaceMisha Brukman2005-04-2110-28/+28
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21412 91177308-0d34-0410-b5e6-96231b3b80d8
* new passChris Lattner2005-04-151-0/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21307 91177308-0d34-0410-b5e6-96231b3b80d8
* add a new prototypeChris Lattner2005-04-151-0/+7
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21305 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix VC++ build breakageJeff Cohen2005-03-281-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20888 91177308-0d34-0410-b5e6-96231b3b80d8