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

Frank Winter via llvm-dev llvm-dev at lists.llvm.org
Tue Feb 2 17:55:15 PST 2016


I just checkout release_38 branches of llvm, clang and polly and built 
it on and x86 Ubuntu with cmake:

CMAKE_BUILD_TYPE="Debug"
CMAKE_INSTALL_PREFIX="$HOME/toolchain/install/llvm-3.8"
LLVM_TARGETS_TO_BUILD="X86"

cmake -G "Unix Makefiles" \
-DBUILD_SHARED_LIBS="ON" \
-DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE \
-DCMAKE_INSTALL_PREFIX=$CMAKE_INSTALL_PREFIX \
-DLLVM_TARGETS_TO_BUILD=$LLVM_TARGETS_TO_BUILD \
$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:

Polly Options:
Configure the polly loop optimizer

   -polly                                                         - 
Enable the polly optimizer (only at -O3)
   -polly-2nd-level-tiling                                        - 
Enable a 2nd level loop of loop tiling
   -polly-context=<isl parameter set>                             - 
Provide additional constraints on the context parameters
   -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-parallel                                                - 
Generate thread parallel code (isl codegen only)
   -polly-parallel-force                                          - 
Force generation of thread parallel code ignoring any cost model
   -polly-process-unprofitable                                    - 
Process scops that are unlikely to benefit from Polly optimizations.
   -polly-register-tiling                                         - 
Enable register tiling
   -polly-report                                                  - 
Print information about the activities of 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-tiling                                                  - 
Enable loop tiling
   -polly-vectorizer                                              - 
Select the vectorization strategy
     =none                                                        -   No 
Vectorization
     =polly                                                       - 
Polly internal vectorizer
     =stripmine                                                   - 
Strip-mine outer loops for the loop-vectorizer to trigger


(If I grep the polly source for 'canonicalize' I see the module pass 
class PollyCanonicalize).


What am I missing?

Thanks,
Frank




More information about the llvm-dev mailing list