Мне бы хотелось, чтобы на моем языке была функция подъема функций, поэтому что-то вроде этого должно работать,
foo();
void foo() {
// Do stuff
}
Каков наилучший подход для этого с LLVM? Есть ли пропуск, который можно использовать? Должен ли я написать свой пропуск? Будет ли легче переставить AST, прежде чем попасть в LLVM?