Compiler construction 如何在opt(LLVM)中关闭矢量化

Compiler construction 如何在opt(LLVM)中关闭矢量化,compiler-construction,clang,llvm,vectorization,Compiler Construction,Clang,Llvm,Vectorization,我正在努力理解polly(LLVM的多面体优化器)的内部工作,但我遇到了一个问题:我知道如何在叮当声中关闭矢量化(-fno vectorize命令选项可以),但在opt中做同样的事情让我不知所措。文档仅显示如何打开而不是关闭此过程。据我所知,省略它的唯一方法是使用clang,它无法打印传球的统计数据(或者我找不到如何打印)。 有人能帮我吗?谢谢 我正在使用以下命令运行程序: clang -Xclang -load -Xclang ~/llvm_build/tools/polly/Debug+As

我正在努力理解polly(LLVM的多面体优化器)的内部工作,但我遇到了一个问题:我知道如何在叮当声中关闭矢量化(-fno vectorize命令选项可以),但在opt中做同样的事情让我不知所措。文档仅显示如何打开而不是关闭此过程。据我所知,省略它的唯一方法是使用clang,它无法打印传球的统计数据(或者我找不到如何打印)。 有人能帮我吗?谢谢

我正在使用以下命令运行程序:

clang -Xclang -load -Xclang ~/llvm_build/tools/polly/Debug+Asserts/lib/LLVMPolly.so -O3 -fno-vectorize -mllvm -polly -mllvm -polly-vectorizer=polly -S -emit-llvm in.c -o out.ll
opt -load ~/{Polly shared lib}.so -O3 -polly -polly-vectorizer=polly -stats in.ll -o out.ll

第一个忽略了铿锵矢量化,但不打印统计信息,第二个打印统计信息,但使用了我不想要的矢量化信息。

经验证的方法是检查来源:


您正在查找
opt-disable循环向量化…

尝试
opt-load~/{Polly shared lib}。so-O0-Polly-Polly vectorier=Polly-stats in.ll-o out。ll
opt不将
-O0
作为参数,最小值是
-O1
,并且
O1
包括矢量化?根据我在文档页面中的理解,所有LLVM编译都包括矢量化(“默认情况下启用循环矢量化器,但可以使用命令行标志通过clang禁用循环矢量化器”)。文件中提到在叮当声中禁用它,但在opt中没有提到。