Как получить число переменных в цикле for?

Рассмотрим следующий фрагмент кода:

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;
}

В куске кода выше трех переменных имеют продолжительность жизни, содержащуюся в теле цикла (i, c и d). Я хотел бы иметь возможность подсчитать переменные, срок жизни которых существует в теле любого заданного цикла с использованием LLVM (т.е. Для этого цикла мой код должен возвращать 3).

Я нашел анализ переменных в реальном времени, но у меня возникли проблемы с его использованием, чтобы найти то, что я описал выше.

Ответ 1

Может быть, это должен быть комментарий, но я не могу выразить код inline:

Только две переменные имеют длительность внутри тела цикла. я объявляется до начала цикла и продолжается до последнего выполнения цикла. Другими словами, c и d строятся/разрушаются 3 раза; после третьего раза они разрушаются, тогда я.

Таким образом, цикл for, который вы написали, эквивалентен:

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

    }
    i++;
}

Дополнительный набор фигурных скобок вызывает обзор области; я выходит за пределы области действия и уничтожается вне тела цикла for, но перед любым последующим кодом.