我正在尝试从位代码文件解析LLVM IR。我完成了以下步骤。
HELLO.CPP
#include <iostream>
int main() {
std::cout << "Hello world!" << "\n";
return 0;
}
dump.cpp
#include <llvm/IR/Module.h>
#include <llvm/IRReader/IRReader.h>
#include <llvm/IR/LLVMContext.h>
#include <llvm/Support/SourceMgr.h>
using namespace llvm;
int main()
{
LLVMContext context;
SMDiagnostic error;
Module *m = parseIRFile("hello.bc", error, context).get();
if(m)
{
m->dump();
}
return 0;
}
$ clang ++ -O3 -emit-llvm hello.cpp -c -o hello.bc
$ clang ++ -g -O3 dump.cpp llvm-config --cxxflags --ldflags --system-libs --libs all
-o dump
$ ./dump
断言失败:(Val&amp;&amp;&#34; isa&lt;&gt;用于空指针&#34;),函数doit,文件/ Users / chamibuddhika / Builds / llvm / include /llvm/Support/Casting.h,第106行。 中止陷阱:6
所以我最后得到了上面的错误。可能是什么导致了这个?我在llvm-6.0 rc2。