[llvm-dev] opt with Polly doesn't find the passes

Frank Winter via llvm-dev llvm-dev at lists.llvm.org
Wed Feb 3 06:36:33 PST 2016

Hi Tobias,

the system does not have a /usr/local/bin/opt (I didn't install any 
Ubuntu clang rpm). I made sure I was using the correct 'opt'. But I also 
qualify the full pathname and it responds the same way.

If I grep -help-hidden for canonicalize I get an empty output. Below is 
the full (polly related) output.

This is odd.


~/toolchain/install/llvm-3.8/bin/opt -load 
~/toolchain/install/llvm-3.8/lib/libPolly.so -help-hidden|grep polly
   -polly-dce-precise-steps=<int>                                 - The 
number of precise steps between two approximating iterations. (A value 
of -1 schedules another approximation stage before the actual dead code 
   -polly-num-threads=<int>                                       - 
Number of threads to use (0 = auto)
   -polly-view-all                                                - Also 
show functions without any scops
   -polly-view-only=<string>                                      - Only 
view functions that match this pattern
Configure the polly loop optimizer
   -disable-polly-legality                                        - 
Disable polly legality check
   -enable-polly-aligned                                          - 
Assumed aligned memory accesses.
   -polly                                                         - 
Enable the polly optimizer (only at -O3)
   -polly-2nd-level-default-tile-size=<int>                       - The 
default 2nd-level tile size (if not enough were provided by 
   -polly-2nd-level-tile-sizes=<int>                              - A 
tile size for each loop dimension, filled with --polly-default-tile-size
   -polly-2nd-level-tiling                                        - 
Enable a 2nd level loop of loop tiling
   -polly-allow-nonaffine                                         - 
Allow non affine access functions in arrays
   -polly-allow-nonaffine-branches                                - 
Allow non affine conditions for branches
   -polly-allow-nonaffine-loops                                   - 
Allow non affine conditions for loops
   -polly-allow-unsigned                                          - 
Allow unsigned expressions
   -polly-analyze-read-only-scalars                               - 
Model read-only scalar values in the scop description
   -polly-ast-detect-parallel                                     - 
Detect parallelism
   -polly-ast-use-context                                         - Use 
   -polly-code-generator                                          - 
Select the code generator
   -polly-codegen-add-debug-printing                              - Add 
printf calls that show the values loaded/stored.
   -polly-context=<isl parameter set>                             - 
Provide additional constraints on the context parameters
   -polly-default-tile-size=<int>                                 - The 
default tile size (if not enough were provided by --polly-tile-sizes)
   -polly-delinearize                                             - 
Delinearize array access functions
   -polly-dependences-analysis-type                               - The 
kind of dependence analysis to use
   -polly-dependences-computeout=<int>                            - 
Bound the dependence analysis by a maximal amount of computational steps 
(0 means no bound)
   -polly-dependences-use-reductions                              - 
Exploit reductions in dependence analysis
   -polly-detect-keep-going                                       - Do 
not fail on the first error.
   -polly-detect-profitability-min-per-loop-insts=<int>           - The 
minimal number of per-loop instructions before a single loop region is 
considered profitable
   -polly-detect-reductions                                       - 
Detect and exploit reductions
   -polly-detect-track-failures                                   - 
Track failure strings in detecting scop regions
   -polly-detect-verify                                           - 
Verify the detected SCoPs after each transformation
   -polly-disable-multiplicative-reductions                       - 
Disable multiplicative reductions
   -polly-dot                                                     - 
Enable the Polly DOT printer in -O3
   -polly-dot-only                                                - 
Enable the Polly DOT printer in -O3 (no BB content)
   -polly-export                                                  - 
Export the polyhedral description of the detected Scops
   -polly-ignore-aliasing                                         - 
Ignore possible aliasing of the array bases
   -polly-ignore-integer-wrapping                                 - Do 
not build run-time checks to proof absence of integer wrapping
   -polly-import                                                  - 
Export the polyhedral description of the detected Scops
   -polly-import-jscop-dir=<Directory path>                       - The 
directory to import the .jscop files from.
   -polly-import-jscop-postfix=<File postfix>                     - 
Postfix to append to the import .jsop files.
   -polly-max-disjuncts-assumed=<int>                             - The 
maximal number of disjuncts we allow in the assumption context (this 
bounds compile time)
   -polly-only-func=<string>                                      - Only 
run on functions that contain a certain string
   -polly-only-region=<identifier>                                - Only 
run on certain regions (The provided identifier must appear in the name 
of the region's entry block
   -polly-only-scop-detection                                     - Only 
run scop detection, but no other optimizations
   -polly-opt-fusion=<string>                                     - The 
fusion strategy to choose (min/max)
   -polly-opt-max-coefficient=<int>                               - The 
maximal coefficient allowed (-1 is unlimited)
   -polly-opt-max-constant-term=<int>                             - The 
maximal constant term allowed (-1 is unlimited)
   -polly-opt-maximize-bands=<string>                             - 
Maximize the band depth (yes/no)
   -polly-opt-optimize-only=<string>                              - Only 
a certain kind of dependences (all/raw)
   -polly-opt-simplify-deps=<string>                              - 
Dependences should be simplified (yes/no)
   -polly-optimizer                                               - 
Select the scheduling optimizer
   -polly-parallel                                                - 
Generate thread parallel code (isl codegen only)
   -polly-parallel-force                                          - 
Force generation of thread parallel code ignoring any cost model
   -polly-position                                                - 
Where to run polly in the pass pipeline
   -polly-prevect-width=<int>                                     - The 
number of loop iterations to strip-mine for pre-vectorization
   -polly-process-unprofitable                                    - 
Process scops that are unlikely to benefit from Polly optimizations.
   -polly-register-tile-sizes=<int>                               - A 
tile size for each loop dimension, filled with --polly-register-tile-size
   -polly-register-tiling                                         - 
Enable register tiling
   -polly-register-tiling-default-tile-size=<int>                 - The 
default register tile size (if not enough were provided by 
   -polly-report                                                  - 
Print information about the activities of Polly
   -polly-rtc-max-arrays-per-group=<uint>                         - The 
maximal number of arrays to compare in each alias group.
   -polly-rtc-max-parameters=<uint>                               - The 
maximal number of parameters allowed in RTCs.
   -polly-run-dce                                                 - Run 
the dead code elimination
   -polly-run-inliner                                             - Run 
an early inliner pass before Polly
   -polly-show                                                    - 
Highlight the code regions that will be optimized in a (CFG BBs and 
LLVM-IR instructions)
   -polly-show-only                                               - 
Highlight the code regions that will be optimized in a (CFG only BBs)
   -polly-tile-sizes=<int>                                        - A 
tile size for each loop dimension, filled with --polly-default-tile-size
   -polly-tiling                                                  - 
Enable loop tiling
   -polly-use-runtime-alias-checks                                - Use 
runtime alias checks to resolve possible aliasing.
   -polly-vectorizer                                              - 
Select the vectorization strategy
     =polly                                                       - 
Polly internal vectorizer
   -polly-view-cfg                                                - Show 
the Polly CFG right after code generation

On 02/03/2016 04:46 AM, Tobias Grosser wrote:
> On 02/03/2016 02:55 AM, Frank Winter via llvm-dev wrote:
>> I just checkout release_38 branches of llvm, clang and polly and built
>> it on and x86 Ubuntu with cmake:
>> CMAKE_INSTALL_PREFIX="$HOME/toolchain/install/llvm-3.8"
>> cmake -G "Unix Makefiles" \
>> $SRC
>> The build went fine, even 'make check-polly' looks okay:
>> Scanning dependencies of target check-polly
>> [100%] Running polly regression tests
>> Testing Time: 37.39s
>>    Expected Passes    : 574
>>    Expected Failures  : 17
>> [100%] Built target check-polly
>> Now, I like to follow the matmul example in polly. But whatever polly
>> pass I am trying to run opt seem to not find it:
>> opt -load ~/toolchain/install/llvm-3.8/lib/libPolly.so -S
>> -polly-canonicalize matmul.s > matmul.preopt.ll
>> opt: Unknown command line argument '-polly-canonicalize'.  Try: 'opt
>> -help'
>> opt: Did you mean '-polly-delinearize'?
>> I am sure that loading the library works, since opt -load
>> ~/toolchain/install/llvm-3.8/lib/libPolly.so -help prints out:
> Hi Frank,
> this is interesting and I do not yet understand what is going on here.
> Let me shoot some first guesses:
> Which 'opt' are you runnning. Did you run:
> ~/toolchain/install/llvm-3.8/bin/opt -load
> ~/toolchain/install/llvm-3.8/lib/libPolly.so
> or rather some
> /usr/local/bin/opt -load ~/toolchain/install/llvm-3.8/lib/libPolly.so
> Also, what does:
> ~/toolchain/install/llvm-3.8/bin/opt -load
> ~/toolchain/install/llvm-3.8/lib/libPolly.so -help-hidden | grep
> canonicalize give you?
> Best,
> Tobias

More information about the llvm-dev mailing list