LLVM 因变量传递

标签 llvm llvm-clang llvm-ir canonicalization

我在 LLVM 中使用 -indvars 传递。它说这是使循环计数器在可能的情况下从 0 开始。我将它用于一个简单的循环,但它并没有使循环计数从 0 开始。知道为什么会这样吗?

循环是

for(i=30;i<90;++i){
        a1[i]=i*2;
        a1[i]=a1[i]+1;;
}

最佳答案

经过一些挖掘后,我发现 -indvars pass 现在不规范化归纳变量,因为现在大多数其他 passes 都可以在不需要规范循环的情况下工作。

但是我的 pass 要求循环采用规范形式,所以我发现旧的归纳变量简化了 pass 并明确包含在我的文件中。

如果有人感兴趣here是旧通行证。

关于LLVM 因变量传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26963339/

相关文章:

llvm - 基于LLVM的语言可以用于操作系统开发吗?

clang - 在哪里可以找到 LangOptions 方法的详尽列表

c++ - clang 编译器卡在 Windows 上

c++ - eraseFromParent() 错误

clang - 在 C 代码中使用 memcpy 并使用 wasm 目标进行编译时出现 llvm-link 错误

swift - LLVM 编译器是否足够智能,可以删除不可访问的 if 语句中的代码?

c++ - OS X 上的 LLVM 与 clang

c++ - 让 clang-tidy 修复头文件

llvm - 构建 LLVM 会耗尽所有 RAM

c - 为什么在 LLVM IR 中没有将空函数作为死代码删除?