-1

ロードされた値を外部関数に渡すパスを作成しようとしています。これが私がやっていることです

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);

これは私にエラーを与えています.私はどこが間違っているのかわかりません.誰か,私を修正してください.

4

1 に答える 1

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.

したがって、「テスト関数が存在する」というパスが実際にビットコードファイルを実行しようとしているように見えますが(おそらくlliを呼び出しています)、mainそのファイルには関数がありません。

于 2013-03-10T09:12:26.727 に答える