summaryrefslogtreecommitdiffstats
path: root/polly/lib/RegisterPasses.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Refactor Polly's Pass creation and initialization.Andreas Simbuerger2014-03-111-289/+0
| | | | | | Rename some files and adjust cmake accordingly llvm-svn: 203609
* cmake: Split off functionality for LLVM loadable moduleTobias Grosser2014-03-031-60/+6
| | | | | | | | | | | | This fixes the buildbots who failed, because the linker eliminated most of the Polly functionality when building without BUILD_SHARED_LIBS=ON. Besides fixing the build, this change also brings additional functionality. With the new separation between the general polly libraries and the functionality for the polly module, it is now possible to link polly directly into a tool instead of using requiring users to load a shared library. llvm-svn: 202762
* Enable polyhedral dead code elimination by defaultTobias Grosser2014-02-211-1/+1
| | | | llvm-svn: 201889
* Remove an unused parameterTobias Grosser2014-01-271-2/+2
| | | | llvm-svn: 200209
* Allow Polly at all optimization levelsTobias Grosser2014-01-271-10/+0
| | | | | | | | | | | | Restricting Polly to -O3 does not make a lot of sense as it is opt-in anyway and users who specifically request it should get it. If this causes performance problems we should rather address them by scheduling the right cleanup passes then just prevent the user from trying. Also restricting Polly to -O3 made bugpoint not work with the -O3 flag and polly enabled. llvm-svn: 200208
* Introduce -polly-canonicalize passTobias Grosser2014-01-021-24/+3
| | | | | | | This ModulePass schedules the set of Polly canonicalization passes. It is a debugging tool that can be used to preoptimize .ll files for Polly processing. llvm-svn: 198376
* RegisterPasses: Do not claim we schedule canonicalization passes at -O0Tobias Grosser2014-01-021-19/+0
| | | | | | | | | | Also the code makes the impression this was happening, shouldEnablePolly() always returns false for optlevel equal to zero. This was previously different, but was accidentally changed by a commit a couple of months ago. As this behavior was mainly a debugging tool and adding this to clang never really made sense, we just remove the last traces. llvm-svn: 198370
* Fix 80 column violationTobias Grosser2013-11-171-2/+3
| | | | | | Found by clang-format. llvm-svn: 194949
* factor out code in shouldEnablePollySebastian Pop2013-11-161-9/+14
| | | | | | | to be able to call the same functionality from registerPollyEarlyAsPossiblePasses and registerPollyOptLevel0Passes. llvm-svn: 194922
* ScopDetect: Only track detection failures if actually needed.Tobias Grosser2013-07-251-0/+3
| | | | | | | | | | | | | | | String operations resulted by raw_string_ostream in the INVALID macro can lead to significant compile-time overhead when compiling large size source code. This is because raw_string_ostream relies on TypeFinder class, whose compile-time cost increases as the size of the module increases. This patch targets to ensure that it only track detection failures if actually needed. In this way, we can avoid expensive string operations in normal execution. With this patch file, the relative compile-time cost of Polly-detect pass does not increase even when compiling very large size source code. Contributed-by: Star Tan <tanmx_star@yeah.net> llvm-svn: 187102
* RegisterPass: Unhide -polly-show and -polly-show-onlyTobias Grosser2013-07-221-7/+8
| | | | llvm-svn: 186806
* Sort includesTobias Grosser2013-05-071-4/+2
| | | | llvm-svn: 181297
* Move polly options into separate option categoryTobias Grosser2013-05-071-16/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | Use the new cl::OptionCategory support to move the Polly options into a separate option category. The aim is to hide most options and show by default only the options a user needs to influence '-O3 -polly'. The available options probably need some care, but here is the current status: Polly Options: Configure the polly loop optimizer -enable-polly-openmp - Generate OpenMP parallel code -polly - Enable the polly optimizer (only at -O3) -polly-no-tiling - Disable tiling in the scheduler -polly-only-func=<function-name> - Only run on a single function -polly-report - Print information about the activities of Polly -polly-vectorizer - Select the vectorization strategy =none - No Vectorization =polly - Polly internal vectorizer =unroll-only - Only grouped unroll the vectorize candidate loops =bb - The Basic Block vectorizer driven by Polly llvm-svn: 181295
* Reformat with clang-formatTobias Grosser2013-05-071-8/+10
| | | | | | | clang-format become way more stable. This time we mainly reformat function signatures. llvm-svn: 181294
* Remove unneeded RegionSimplify pass.Tobias Grosser2013-04-171-17/+0
| | | | | | | | | | | | | We now support regions with multiple entries and multiple exits natively. Regions are not needed to be simplified to single entry and single exit. We need to XFAIL two test cases as this change increases the scop coverage and uncoveres two failures in the independent blocks pass. The first failure will be fixed in a subsequent commit, the second one is in the non-default -polly-codegen-scev mode and still needs to be fixed. Contributed-by: Star Tan <tanmx_star@yeah.net> llvm-svn: 179673
* SCEVCodegen should not run createIndVarSimplifyPassSebastian Pop2013-04-081-2/+4
| | | | llvm-svn: 179018
* RegisterPasses: Improve commentsTobias Grosser2013-03-231-51/+117
| | | | llvm-svn: 177831
* RegisterPasses: clang-formatTobias Grosser2013-03-231-76/+61
| | | | llvm-svn: 177787
* Do not canonicalize indvars with scev based codegenTobias Grosser2013-03-211-1/+4
| | | | | | | Scev code generation can now handle scops with non canonical induction variables. Hence there is no need to introduce canonical ones any more. llvm-svn: 177644
* Add option -polly-code-generator=noneTobias Grosser2013-03-201-1/+5
| | | | | | | | | This allows us to test Polly and the Polly optimizer without actually doing code generation at the end. By enabling this option, we can also measure the compile time overhead due to code generation and the cost of LLVM optimizing the newly generated code.t llvm-svn: 177516
* fix typoSebastian Pop2012-11-261-1/+1
| | | | | | | | Caught while compiling polly without cloog: ../tools/polly/lib/RegisterPasses.cpp:77: error: use of enum 'CodegenChoice' without previous declaration llvm-svn: 168624
* autoconf/cmake: Always require isl code generation.Tobias Grosser2012-10-211-21/+1
| | | | | | | | This change ensures that isl is only detected if it includes code generation support. This allows us to remove a lot of conditional compilation and also avoids missing test cases in case the feature is not available. llvm-svn: 166403
* RegisterPasses: Remove unreachable default case in switchTobias Grosser2012-10-211-2/+0
| | | | llvm-svn: 166397
* Add a new isl based code generationTobias Grosser2012-10-021-16/+54
| | | | | | | | | This pass implements a new code generator that uses the code generation algorithm included in isl. For the moment the new code generation is limited to sequential code. llvm-svn: 165037
* Add an ast pretty printer pass based on the isl code generatorTobias Grosser2012-10-021-0/+3
| | | | llvm-svn: 165036
* Add support for libpluto as the scheduling optimizer.Tobias Grosser2012-08-021-1/+13
| | | | llvm-svn: 161157
* Move CLooG.h into include/polly/CodeGen/Tobias Grosser2012-05-291-1/+1
| | | | llvm-svn: 157604
* make registerPollyPreoptPasses staticSebastian Pop2012-05-071-1/+1
| | | | llvm-svn: 156326
* make registerPollyPasses static, remove paramSebastian Pop2012-05-071-2/+2
| | | | llvm-svn: 156325
* Allow polly ask bb-vectorizer to vectorize the loop body.Hongbin Zheng2012-05-061-1/+27
| | | | llvm-svn: 156254
* compile cloog code only when CLOOG_FOUND is setSebastian Pop2012-05-041-0/+4
| | | | llvm-svn: 156199
* 1. Add a header guard for RegisterPasses.h to prevent multiple inclusion.Hongbin Zheng2012-04-261-3/+5
| | | | | | 2. Include the helper function and the helper class in the RegisterPasses.h into the polly namespace. llvm-svn: 155636
* Simplify import/export command line flags.Tobias Grosser2012-04-241-11/+5
| | | | | | | Instead of -polly-run-import-jscop and -polly-run-export-jscop, we just use -polly-import and -polly-export. llvm-svn: 155446
* Unify the optimizer selection.Tobias Grosser2012-04-241-32/+34
| | | | | | | We now support -polly-optimizer=isl, -polly-optimizer=pocc and -polly-optimizer=none. The option -polly-no-optimizer is gone. llvm-svn: 155445
* IndVarSimplify: Proberly initialize the pass.Tobias Grosser2012-03-231-0/+1
| | | | llvm-svn: 153316
* Do not fail if a command line argument is given more than onceTobias Grosser2012-03-161-9/+9
| | | | | | | | | | | | For boolean flags in Polly there is no problem if they are given more than once. Hence, we can allow it to not fail for build systems that (acciently) add flags several times. This fixes: PR12278 Reported by: Sebastian Pop <sebpop@gmail.com> llvm-svn: 152933
* RegisterPasses: Allow to print the CFG right after pollyTobias Grosser2012-02-161-0/+10
| | | | llvm-svn: 150674
* RegisterPasses: Add -polly-run-export-cloog optionTobias Grosser2012-02-161-0/+7
| | | | llvm-svn: 150671
* Copy IndVarSimplify pass from LLVM to PollyTobias Grosser2012-02-141-2/+2
| | | | | | | | This allows us to enable -enable-iv-rewrite by default and releases LLVM from the burdon to keep that feature. This is an intermediate step. We plan to soon remove the need for rewritten induction variables entirely. llvm-svn: 150481
* RegisterPasses: Make sure to always execute the SCoPInfo passTobias Grosser2012-02-061-0/+2
| | | | llvm-svn: 149871
* Add a sceleton for a polyhedral dead code elimination.Tobias Grosser2012-01-311-0/+10
| | | | | | | | | | | | | | | Such a dead code elimination can remove redundant stores to arrays. It can also eliminate calculations where the results are stored to memory but where they are overwritten before ever being read. It may also fix bugs like: http://llvm.org/bugs/show_bug.cgi?id=5117 This commit just adds a sceleton without any functionality. If anybody is interested to learn about polyhedral optimizations this would be a good task. Well definined, self contained and pretty simple. Ping me if you want to start and you need some pointers to get going. llvm-svn: 149386
* RegisterPass: Expose functions to register Polly passesTobias Grosser2012-01-301-41/+53
| | | | llvm-svn: 149240
* Allow to run the Polly preopt passes with -O0Tobias Grosser2011-12-141-30/+39
| | | | | | | | | | | To extract a preoptimized LLVM-IR file from a C-file run: clang -Xclang -load -Xclang LLVMPolly.so -O0 -mllvm -polly file.c -S -emit-llvm On the generated file you can directly run passes such as: 'opt -view-scops file.s' llvm-svn: 146560
* Register Passes: Use -polly-optimizer=(isl|pocc) to switch optimizersTobias Grosser2011-11-221-11/+14
| | | | | | | This replaces the old option -polly-use-pocc. Also call the passes uniformly -polly-opt-pocc and -polly-opt-isl. llvm-svn: 145071
* RegisterPass: Disable Polly by defaultTobias Grosser2011-11-171-3/+32
| | | | | | | | | | | | | | | | | We disable Polly by default and add a new option '-polly' that enables Polly. This allows us to create an the alias $ alias clang clang -Xclang -load -Xclang LLVMPolly.so which loads Polly always into clang. It can now be enabled by running: $ clang -O3 -mllvm -polly file.c To enable it by default an alias pollycc can be create $ alias pollycc clang -O3 -mllvm -polly llvm-svn: 144917
* RegisterPasses: Avoid double negationTobias Grosser2011-11-171-6/+8
| | | | | | Fix suggested by Sebastian Pop. llvm-svn: 144901
* Make JScop export/reimport accessible from clangTobias Grosser2011-11-151-1/+17
| | | | llvm-svn: 144638
* Add a workaround to fix SCoPs rejected because of 'region not simple'Tobias Grosser2011-11-101-3/+12
| | | | llvm-svn: 144281
* Add an option to run the PoCC optimizerTobias Grosser2011-10-231-2/+19
| | | | llvm-svn: 142773
* Allow to disable the schedule optimizerTobias Grosser2011-10-231-1/+6
| | | | | | The option -polly-no-optimizer disables the scheduling optimizer. llvm-svn: 142772
OpenPOWER on IntegriCloud