我正在尝试创建一个将加载的值传递给外部函数的传递。 这就是我正在做的事情
cpProfFunc = M.getOrInsertFunction("_Z6cpProfiiiiii",Type::getVoidTy(*Context),Type::getInt8tInt8PtrTy(*Context),NULL);
if(isa<LoadInst>(&(*BI)) ) //next in block iterator
std::vector<Value*> a1(1);
LoadInst *CI = dyn_cast<LoadInst>(BI);
a1[0]=dyn_cast<ConstantExpr>(CI->getPointerOperand());
CallInst* newInst = CallInst::Create(cpProf,a1,"");
BB->getInstList().insert((Instruction*)CI, newInst);
这给了我一个错误。我不知道我错在哪里。有人,请指正。
答案 0 :(得分:0)
您写道您收到错误:
Stack dump:
0. Program arguments: opt -load /home/anshul/llvm/llvm-3.2/Release+Asserts/lib/Ass1Pri.so -anshul_insert
1. Running pass 'test function exist' on module '<stdin>'.
./myscript: line 6: 10726 Segmentation fault (core dumped)
opt -load /home/anshul/llvm/llvm-3.2/Release+Asserts/lib/Ass1Pri.so -anshul_insert < a.bc > b1.bc
'main' function not found in module.
所以似乎一个名为“test function exists”的传递试图实际运行一些bitcode文件(可能在其上调用lli),但该文件中缺少main
函数。