2016-12-06 1 views
1

Я расширяю LLVM для экспериментов. Поэтому я хочу отслеживать использование переменной и ее зависимости.Алгоритмы для возврата к использованию и зависимостей переменной

Например, после нахождения условной ветви, вызванной сопоставлением двух операндов, я хочу отменить все применения этой переменной и определить все ее зависимости (какие переменные используются для вычисления операнда условия). Для меня это выглядит как рекурсивный backtrack.

Существуют ли специальные алгоритмы, специализированные для этой проблемы?

+0

С какого состояния? Источник? ИК? АСТ? Структура данных информации - это алгоритмы предварительной и последующей ходьбы и т. Д. И т. Д. –

+0

Промежуточное представление. –

+0

ОК, я не знаком с библиотекой, классами или функциями C++, но это может быть вашей лучшей надеждой. Мой внешний компилятор испускает LLVM-IR, поэтому я выполняю зависимости переменных во время семантического анализа (используя post-walks и т. Д.), Извините –

ответ

0

То, что вас называют «достижением определений». Это назначения (или побочные эффекты) для переменных, значение которых «достигает» выражения или выражения интереса.

См. https://en.wikipedia.org/wiki/Reaching_definition для более подробного обсуждения и алгоритмов их вычисления (а также любого классического учебника по компилятору).

Я ожидаю, что LLVM будет иметь встроенные механизмы, которые помогут рассчитать это. Я не эксперт LLVM, поэтому я могу ошибаться.

Смежные вопросы