LLVM函数提升的最佳方法

LLVM函数提升的最佳方法,llvm,Llvm,我想在我的语言中使用函数提升,所以像这样的东西应该可以工作 foo(); void foo() { // Do stuff } 使用LLVM的最佳方法是什么?有可以使用的通行证吗?我需要自己写通行证吗?在进入LLVM之前重新安排AST会更容易吗?您能详细说明一下吗?在这种情况下,提升意味着什么?(假设您的意思是在定义函数之前调用它们:)LLVM并不真正关心您的语言中定义的顺序。但是为了生成函数调用,您需要有一个完整的原型(不仅对于LLVM,而且通常对于前端的其他任务,如类型检查)。

我想在我的语言中使用函数提升,所以像这样的东西应该可以工作

foo();

void foo() {
    // Do stuff
}

使用LLVM的最佳方法是什么?有可以使用的通行证吗?我需要自己写通行证吗?在进入LLVM之前重新安排AST会更容易吗?

您能详细说明一下吗?在这种情况下,提升意味着什么?(假设您的意思是在定义函数之前调用它们:)LLVM并不真正关心您的语言中定义的顺序。但是为了生成函数调用,您需要有一个完整的原型(不仅对于LLVM,而且通常对于前端的其他任务,如类型检查)。