Optimization 是不是;"叮当",;执行公共子表达式消除?
我尝试将我的opencl内核编译成llvm IR 按照下面的指示 /home/mypass/llvm/Debug+Asserts/bin/clang-I/home/ian031545/libclc/generic/include-include-clc/clc.h-Dcl\u clang\u存储类\u说明符-target nvptx--nvidiacl-Xclang-mlink位码文件-Xclang/ian031545/libclc/nvptx--nvidiacl/buildins.bc-S-emit llvm kernel.cl-o kernel.ll opencl内核的结构如下所示Optimization 是不是;"叮当",;执行公共子表达式消除?,optimization,compiler-construction,clang,llvm,llvm-ir,Optimization,Compiler Construction,Clang,Llvm,Llvm Ir,我尝试将我的opencl内核编译成llvm IR 按照下面的指示 /home/mypass/llvm/Debug+Asserts/bin/clang-I/home/ian031545/libclc/generic/include-include-clc/clc.h-Dcl\u clang\u存储类\u说明符-target nvptx--nvidiacl-Xclang-mlink位码文件-Xclang/ian031545/libclc/nvptx--nvidiacl/buildins.bc-S-e
__kernel(){
if() x[i]=a+b+1
else x[i]=a+b+2
}
entry: // it perform a+b here , we say c
then part: // it perform c+1
else part: // it perform c+2
使用上述指令后的llvm IR如下所示
__kernel(){
if() x[i]=a+b+1
else x[i]=a+b+2
}
entry: // it perform a+b here , we say c
then part: // it perform c+1
else part: // it perform c+2
有人知道为什么clang会在这里进行这种优化吗?(我们称之为前端)
或者它可能不是一种优化
我不知道为什么叮当在这里这么做,为了什么
我可以通过在上面的指令中添加标志来要求clang不要这样做吗
提前感谢尝试使用带有叮当声的
-O0
标志。谢谢,但这并不影响早期优化。我可以关闭一些特定的优化,比如“早期cse”吗?据我所知不是这样。但是你可以使用<代码> opt<代码>来做所有你需要的优化,一旦你用<代码> -O0生成了未优化的IR。@ IanTsai考虑投票和/或接受答案,如果它有帮助的话。