LLVM因达沃斯通行证

LLVM因达沃斯通行证,llvm,llvm-clang,llvm-ir,canonicalization,Llvm,Llvm Clang,Llvm Ir,Canonicalization,我正在使用-indvars传入LLVM。它说这使得循环计数器在可能的情况下从0开始。我将它用于一个简单的循环,但它不会使循环计数从0开始。知道为什么吗 循环是 for(i=30;i<90;++i){ a1[i]=i*2; a1[i]=a1[i]+1;; } for(i=30;i经过一番挖掘,我发现-indvarspass现在不规范化归纳变量,因为现在大多数其他过程都是在不需要规范循环的情况下工作的 然而,我的pass要求循环采用规范形式,因此我发现旧的归纳

我正在使用
-indvars
传入LLVM。它说这使得循环计数器在可能的情况下从0开始。我将它用于一个简单的循环,但它不会使循环计数从0开始。知道为什么吗

循环是

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

for(i=30;i经过一番挖掘,我发现
-indvars
pass现在不规范化归纳变量,因为现在大多数其他过程都是在不需要规范循环的情况下工作的

然而,我的pass要求循环采用规范形式,因此我发现旧的归纳变量simplify pass并显式包含在我的文件中


如果有人对旧传球感兴趣。

可能相关:@MarcoA.谢谢,循环旋转的建议仍然不起作用。但是我发现旧的indvar simplify传球并包含在我的源代码中,并使其起作用。我不知道他们为什么首先删除了如此重要的传球好,你应该添加它作为答案并将其标记为a他被接受了。