【发布时间】:2017-09-06 11:02:21
【问题描述】:
我想通过 LLVM pass 删除 IR 代码中的分支指令。
下面的代码是我的函数传递(Github):
virtual bool runOnFunction(Function &F) {
for (auto &B : F) {
for (auto &I : B) {
auto op_name = I.getOpcodeName();
if(strcmp(op_name, "br")==0) {
I.eraseFromParent();
}
}
}
return true;
}
Function Pass 编译成功,但是在 test.c 上使用时,出现Pastebin 之类的错误
【问题讨论】:
-
我不太确定使用什么容器来存储指令,但这可能与您实质上是通过在迭代同一容器时进行擦除来修改基本块中的指令容器这一事实有关?
标签: llvm llvm-clang llvm-ir llvm-c++-api