Отслеживание границ при генерации IR LLVM? - PullRequest
2 голосов
/ 23 мая 2019

Я пишу компилятор для простого императивного языка. Этот язык допускает определения инкапсулированных функций (например, Python). Эти функции (их тела) играют роль областей действия, что означает, что если переменная x объявлена ​​внутри функции foo, то она не видна за ее пределами, но x видна внутри функций, которые определены после x, внутри foo. То же самое относится и к функциям, и, конечно, разрешено дублирование переменных и функций.

Существует ли стандартный / рекомендуемый способ, предоставляемый LLVM C ++ API, для отслеживания того, какие переменные / функции видны при генерировании LLVM IR для моего языка в любой данный момент (например, «стек областей»)?

Прямо сейчас, я отслеживаю их с моим собственным классом регистратора.

...