如何在for循环中获取变量的数量?

时间:2017-12-29 07:35:17

标签: c++ c llvm

考虑以下代码:

int main() {
    int a = 0;
    int b = 1;

    for (int i = 0; i < 3; i++) {
        a = 2;
        int c = 1;
        int d = 3;
        d = a + c;
    }

   a = b+2;
}

在上面的代码段中,三个变量的生命周期包含在循环体中(icd)。我希望能够使用LLVM计算任何给定循环体中存在寿命的变量(即对于此循环,我的代码应该返回3)。

我找到Live Variables Analysis,但我无法使用它来查找我上面描述的内容。

1 个答案:

答案 0 :(得分:1)

也许这只是一个评论,但我无法在线表达代码:

循环体中只有两个变量具有持续时间。我在循环开始之前声明,并持续到循环体的最后一次执行之后。换句话说,c和d被构造/破坏3次;在他们第三次被毁坏之后,我就是。

因此,您编写的for循环等同于:

{
    int i = 0;
    while (i < 3)
    {
        a = 2;
        int c = 1;
        int d = 3;
        d = a + c;

    }
    i++;
}

额外的括号组调用块范围;我超出了范围并在for循环体之外被破坏,但在任何后续代码之前。