bool runOnFunction(Function &F) override {
outs() << "Inside Function: "<<F.getName()<<"\n";
int i = 0;
map<int, Instruction*> work;
for(BasicBlock &BB : F)
for(Instruction &I : BB){
if(i == 15)
work.insert({i, &I});
i++;
}
std::map<int, Instruction*>::iterator it = work.begin();
it->second->eraseFromParent();
return true;
}
The above is my code snippet. Here, in the above code, I would like to remove an instruction randomly.. just for the sake of knowing how to use this api. But, It is ending up with segmentation fault!!, no matter what I try. Need some guidance, here please
Inside Function: change_g
While deleting: i32 %
Use still stuck around after Def is destroyed: %add = add nsw i32 <badref>, %l
opt: /home/user/llvm-project/llvm/lib/IR/Value.cpp:103: llvm::Value::~Value(): Assertion `materialized_use_empty() && "Uses remain when a value is destroyed!"' failed.