aboutsummaryrefslogtreecommitdiffstats
path: root/include/llvm/LinkAllPasses.h
Commit message (Collapse)AuthorAgeFilesLines
* Introduce a pointertracking pass.Edwin Török2009-07-141-0/+2
| | | | | | | | | For now this only computes the allocated size of the memory pointed to by a pointer, and offset a pointer from allocated pointer. The actual checkLimits part will come later, after another round of review. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75657 91177308-0d34-0410-b5e6-96231b3b80d8
* Forgot a couple files when adding the -ssi-everything pass.Nick Lewycky2009-07-091-0/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75136 91177308-0d34-0410-b5e6-96231b3b80d8
* Add Static Single Information construction pass written by André Tavares!Nick Lewycky2009-07-031-0/+1
| | | | | | | | | Use it by requiring it through the pass manager, then calling its createSSI method on the variables that you want in SSI form. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74780 91177308-0d34-0410-b5e6-96231b3b80d8
* Scaffolding for LDA pass.Andreas Bolka2009-06-241-0/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74120 91177308-0d34-0410-b5e6-96231b3b80d8
* Add an early implementation of a partial inlining pass. The idea behind thisOwen Anderson2009-06-141-0/+1
| | | | | | | | | | | is that, for functions whose bodies are entirely guarded by an if-statement, it can be profitable to pull the test out of the callee and into the caller. This code has had some cursory testing, but still has a number of known issues on the LLVM test suite. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73338 91177308-0d34-0410-b5e6-96231b3b80d8
* Add a liveness analysis pass for LLVM IR values. This computesDan Gohman2009-03-191-0/+1
| | | | | | | | | | the set of blocks in which values are used, the set in which values are live-through, and the set in which values are killed. For the live-through and killed sets, conservative approximations are used. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67309 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix PR3415 (infinite loop in EscapeAnalysis) byDuncan Sands2009-01-281-2/+0
| | | | | | | deleting the escape analysis pass. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63197 91177308-0d34-0410-b5e6-96231b3b80d8
* Rename AddReadAttrs to FunctionAttrs, and teach it howDuncan Sands2008-12-311-1/+1
| | | | | | | | | to work out (in a very simplistic way) which function arguments (pointer arguments only) are only dereferenced and so do not escape. Mark such arguments 'nocapture'. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61525 91177308-0d34-0410-b5e6-96231b3b80d8
* Add -print-dbginfo pass that prints LLVM IR with comments inserted to showEdwin Török2008-12-161-0/+1
| | | | | | | | which source/line a certain BB/instruction comes from, original variable names, and original (unmangled) C++ name of functions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61085 91177308-0d34-0410-b5e6-96231b3b80d8
* Add new helper pass that strips all symbol names except debugging information.Devang Patel2008-11-181-0/+1
| | | | | | | This pass makes it easier to test wheter debugging info. influences optimization passes or not. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59552 91177308-0d34-0410-b5e6-96231b3b80d8
* Undo previous check-in.Devang Patel2008-11-111-1/+0
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59092 91177308-0d34-0410-b5e6-96231b3b80d8
* Add utility pass to remove dbg info.Devang Patel2008-11-111-0/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59068 91177308-0d34-0410-b5e6-96231b3b80d8
* Add a new pass to simplify specific half_powr function calls. This isDan Gohman2008-11-041-0/+1
| | | | | | | a specialized pass that it not likely to be generally useful. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58732 91177308-0d34-0410-b5e6-96231b3b80d8
* Add a new MergeFunctions pass. It finds identical functions and merges them.Nick Lewycky2008-11-021-0/+1
| | | | | | | | | This triggers only 60 times in llvm-test (look at .llvm.bc, not .linked.rbc) and so it probably wont be turned on by default. Also, may of those are likely to go away when PR2973 is fixed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58557 91177308-0d34-0410-b5e6-96231b3b80d8
* Privatize PrintModulePass and PrintFunctionPass and addDaniel Dunbar2008-10-211-0/+3
| | | | | | | | createPrintModulePass and createPrintFunctionPass. - So clients who compile w/o RTTI can use them. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57933 91177308-0d34-0410-b5e6-96231b3b80d8
* Add EscapeAnalysis.Owen Anderson2008-10-121-0/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57411 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove the MarkModRef pass (use AddReadAttrs instead).Duncan Sands2008-09-191-1/+0
| | | | | | | | | Unfortunately this means removing one regression test of GlobalsModRef because I couldn't work out how to perform it without MarkModRef. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56342 91177308-0d34-0410-b5e6-96231b3b80d8
* Add a new pass AddReadAttrs which works out which functionsDuncan Sands2008-09-191-0/+1
| | | | | | | | | | can get the readnone/readonly attributes, and gives them it. The plan is to remove markmodref (which did the same thing by querying GlobalsModRef) and delete the analogous functionality from GlobalsModRef. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56341 91177308-0d34-0410-b5e6-96231b3b80d8
* Initial version of a Partial Specialization IPO pass. It triggers a couple ↵Andrew Lenharth2008-09-031-0/+1
| | | | | | hundred times on 176.gcc. I don't know the performance impact yet, the heuristic is quite simple still. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55734 91177308-0d34-0410-b5e6-96231b3b80d8
* Add missing decls.Devang Patel2008-09-031-0/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55719 91177308-0d34-0410-b5e6-96231b3b80d8
* Add a small pass that sets the readnone/readonlyDuncan Sands2008-09-011-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | attributes on functions, based on the result of alias analysis. It's not hardwired to use GlobalsModRef even though this is the only (AFAIK) alias analysis that results in this pass actually doing something. Enable as follows: opt ... -globalsmodref-aa -markmodref ... Advantages of this pass: (1) records the result of globalsmodref in the bitcode, meaning it is available for use by later passes (currently the pass manager isn't smart enough to magically make an advanced alias analysis available to all later passes), which may expose more optimization opportunities; (2) hopefully speeds up compilation when code is optimized twice, for example when a file is compiled to bitcode, then later LTO is done on it: marking functions readonly/readnone when producing the initial bitcode should speed up alias analysis during LTO; (3) good for discovering that globalsmodref doesn't work very well :) Not currently turned on by default. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55604 91177308-0d34-0410-b5e6-96231b3b80d8
* Add a new trivial -inst-namer pass which makes it possible to diff theChris Lattner2008-08-231-0/+1
| | | | | | | before/after effects of a pass, crazy! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55230 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove GCSE, ValueNumbering, and LoadValueNumbering. These have been ↵Owen Anderson2008-08-151-4/+0
| | | | | | deprecated for almost a year; it's finally time for them to go away. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54822 91177308-0d34-0410-b5e6-96231b3b80d8
* Add a value range analysis that lazily computes ranges using ScalarEvolutions.Nick Lewycky2008-06-301-0/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52885 91177308-0d34-0410-b5e6-96231b3b80d8
* Force postdom to be linked into opt and bugpoint, even though it is no ↵Owen Anderson2008-05-291-0/+2
| | | | | | longer used by any passes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51686 91177308-0d34-0410-b5e6-96231b3b80d8
* Add a new LibCallAliasAnalysis pass, which is parameterizedChris Lattner2008-05-071-0/+1
| | | | | | | | | | | by an instance of LibCallInfo to provide mod/ref info of standard library functions. This is powerful enough to say that 'sqrt' is readonly except that it modifies errno, or that "printf doesn't store to memory unless the %n constraint is present" etc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50827 91177308-0d34-0410-b5e6-96231b3b80d8
* Rename DeadLoopElimination to LoopDeletion, part 2.Owen Anderson2008-04-291-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50437 91177308-0d34-0410-b5e6-96231b3b80d8
* Add dead loop elimination, which removes dead loops for which we can computeOwen Anderson2008-04-291-0/+1
| | | | | | | the trip count. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50382 91177308-0d34-0410-b5e6-96231b3b80d8
* Add a new Jump Threading pass, which will handle casesChris Lattner2008-04-201-0/+1
| | | | | | | | such as those in PR2235. Right now the pass is not very effective. :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50000 91177308-0d34-0410-b5e6-96231b3b80d8
* Factor a bunch of functionality related to memcpy and memset transforms out of Owen Anderson2008-04-091-0/+1
| | | | | | | GVN and into its own pass. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49419 91177308-0d34-0410-b5e6-96231b3b80d8
* Add new sretpromotion pass.Devang Patel2008-03-071-0/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48032 91177308-0d34-0410-b5e6-96231b3b80d8
* Add StripDeadPrototypes pass.Devang Patel2008-02-221-0/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47488 91177308-0d34-0410-b5e6-96231b3b80d8
* remove the LowerSelect pass. The last client was the old Sparc backend, ↵Chris Lattner2008-02-191-1/+0
| | | | | | which is long dead by now. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47323 91177308-0d34-0410-b5e6-96231b3b80d8
* remove the lower packed pass. It can never work and even the parts that Chris Lattner2008-02-191-1/+0
| | | | | | | | could work don't work fully. This fixes PR1705. Oh yeah, we don't have packed types anymore either ;-) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47322 91177308-0d34-0410-b5e6-96231b3b80d8
* The CorrelatedExpressionElimination pass is known to be buggy. Remove it.Bill Wendling2008-01-271-1/+0
| | | | | | | This fixes PR1769. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46408 91177308-0d34-0410-b5e6-96231b3b80d8
* With this patch, the LowerGC transformation becomes theGordon Henriksen2008-01-071-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ShadowStackCollector, which additionally has reduced overhead with no sacrifice in portability. Considering a function @fun with 8 loop-local roots, ShadowStackCollector introduces the following overhead (x86): ; shadowstack prologue movl L_llvm_gc_root_chain$non_lazy_ptr, %eax movl (%eax), %ecx movl $___gc_fun, 20(%esp) movl $0, 24(%esp) movl $0, 28(%esp) movl $0, 32(%esp) movl $0, 36(%esp) movl $0, 40(%esp) movl $0, 44(%esp) movl $0, 48(%esp) movl $0, 52(%esp) movl %ecx, 16(%esp) leal 16(%esp), %ecx movl %ecx, (%eax) ; shadowstack loop overhead (none) ; shadowstack epilogue movl 48(%esp), %edx movl %edx, (%ecx) ; shadowstack metadata .align 3 ___gc_fun: # __gc_fun .long 8 .space 4 In comparison to LowerGC: ; lowergc prologue movl L_llvm_gc_root_chain$non_lazy_ptr, %eax movl (%eax), %ecx movl %ecx, 48(%esp) movl $8, 52(%esp) movl $0, 60(%esp) movl $0, 56(%esp) movl $0, 68(%esp) movl $0, 64(%esp) movl $0, 76(%esp) movl $0, 72(%esp) movl $0, 84(%esp) movl $0, 80(%esp) movl $0, 92(%esp) movl $0, 88(%esp) movl $0, 100(%esp) movl $0, 96(%esp) movl $0, 108(%esp) movl $0, 104(%esp) movl $0, 116(%esp) movl $0, 112(%esp) ; lowergc loop overhead leal 44(%esp), %eax movl %eax, 56(%esp) leal 40(%esp), %eax movl %eax, 64(%esp) leal 36(%esp), %eax movl %eax, 72(%esp) leal 32(%esp), %eax movl %eax, 80(%esp) leal 28(%esp), %eax movl %eax, 88(%esp) leal 24(%esp), %eax movl %eax, 96(%esp) leal 20(%esp), %eax movl %eax, 104(%esp) leal 16(%esp), %eax movl %eax, 112(%esp) ; lowergc epilogue movl 48(%esp), %edx movl %edx, (%ecx) ; lowergc metadata (none) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45670 91177308-0d34-0410-b5e6-96231b3b80d8
* fix an accidental commit that broke all the testers :(Chris Lattner2008-01-061-1/+0
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45659 91177308-0d34-0410-b5e6-96231b3b80d8
* rename isStore -> mayStore to more accurately reflect what it captures.Chris Lattner2008-01-061-0/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45656 91177308-0d34-0410-b5e6-96231b3b80d8
* Didn't mean to commit this.Owen Anderson2008-01-051-1/+0
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45606 91177308-0d34-0410-b5e6-96231b3b80d8
* Move some more functionality from MRegisterInfo to TargetInstrInfo.Owen Anderson2008-01-041-0/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45603 91177308-0d34-0410-b5e6-96231b3b80d8
* Don't attribute in file headers anymore. See llvmdev for theChris Lattner2007-12-291-2/+2
| | | | | | | | discussion of this change. Boy are my fingers tired. ;-) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45411 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove RLE from the headers, since the pass itself is gone now.Owen Anderson2007-09-141-1/+0
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41971 91177308-0d34-0410-b5e6-96231b3b80d8
* Begin loop index split pass.Devang Patel2007-08-071-0/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40883 91177308-0d34-0410-b5e6-96231b3b80d8
* Rename FastDSE to just DSE.Owen Anderson2007-08-011-1/+0
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40668 91177308-0d34-0410-b5e6-96231b3b80d8
* Add a GVN pass, using the value numbering code I developed for GVNPRE and theOwen Anderson2007-07-241-0/+1
| | | | | | | load elimination code from RedundantLoadElimination. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40469 91177308-0d34-0410-b5e6-96231b3b80d8
* Rename a lot of things to change FastDLE to RedundantLoadElimination.Owen Anderson2007-07-241-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40457 91177308-0d34-0410-b5e6-96231b3b80d8
* Forgot to commit this file.Owen Anderson2007-07-231-0/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40447 91177308-0d34-0410-b5e6-96231b3b80d8
* It's not necessary to do rounding for alloca operations when the requestedDan Gohman2007-07-181-0/+127
alignment is equal to the stack alignment. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40004 91177308-0d34-0410-b5e6-96231b3b80d8