在 LLVM 中,我们有LLVMContext
,它是存储单元,我们有llvm::Module
,它是构建新符号(函数和类型)的地方。
我的问题是;用于编译单元的正确 llvm 抽象是什么?是Module
?还是这实际上意味着更大的范围,即:共享库目标
在我看来,编译单元必须满足全有或全无的结果;它要么编译所有内容而没有错误,要么存在错误并且需要在 CU 中的任何符号可用之前对其进行修复和重新构建。在我看来,这是编译单元应该代表什么的定义
如果模块是 CU 的正确抽象,我如何将其他(正确编译的)Module
对象中的符号呈现给即将构建的新模块,以便它能够找到那些?我需要添加声明还是有其他加速方法?
指向相关行clang
会很有帮助