载入LL文件
C++
#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/Module.h"
#include "llvm/IRReader/IRReader.h"
#include "llvm/Support/SourceMgr.h"
#include "llvm/Support/raw_ostream.h"
#include <memory>
std::unique_ptr<llvm::Module> loadModuleFromFile(const std::string& filename) {
// 创建 LLVMContext
llvm::LLVMContext context;
// 用于存储诊断信息
llvm::SMDiagnostic error;
// 解析 .ll 文件并返回 Module
std::unique_ptr<llvm::Module> module = llvm::parseIRFile(filename, error, context);
// 检查是否成功加载
if (!module) {
llvm::errs() << "Error loading file '" << filename << "':\n";
error.print("loadModule", llvm::errs());
return nullptr;
}
// 输出成功信息(可选)
llvm::outs() << "Successfully loaded module: " << module->getName() << "\n";
return module;
}
int main() {
// 指定要加载的 .ll 文件
std::string filename = "input.ll";
// 调用函数加载 Module
std::unique_ptr<llvm::Module> module = loadModuleFromFile(filename);
if (module) {
// 成功加载,可以进一步操作 module
module->print(llvm::outs(), nullptr); // 打印到标准输出,验证内容
}
return 0;
}