llvm:循环的输入和输出值

时间:2015-07-01 15:23:14

标签: compiler-construction clang llvm

我正在尝试使用findInputsOutputs()获取循环的输入和输出值,如下面的代码所示:

DominatorTree &DT = getAnalysis<DominatorTreeWrapperPass>().getDomTree();
CodeExtractor Extractor(DT, *L);
Extractor.findInputsOutputs(inputs, outputs);

当我打印以下测试代码的输入和输出值时:

void aFunc(void)
{
    int sum=0;
    puts("aFunc()");
    for (int i = 0; i < 10; i++)
    {
        int fact=i*2;
        sum=sum+i+fact;
    }
    printf("%d",sum);
}

我得到以下内容:

Inputs
type i32*      name i
type i32*      name fact
type i32*      name sum

Outputs

但是,我期待输出为:

Inputs
type i32*      name sum

Outputs
type i32*      name sum

因为据我所知,ifact在循环中被声明,因此它们既不是输入也不是输出。其次,sum在循环外使用,因此应出现在输出中。

我是对的吗?

0 个答案:

没有答案