【发布时间】:2018-10-30 17:21:13
【问题描述】:
如果我在函数 F 中声明了一个基本块,如下所示:
BasicBlock* loopSetup = BasicBlock::Create(F.getContext(), "loop_setup", &F);
如何向它添加终止符指令?如果我这样做:
IRBuilder<> builder(loopSetup);
builder.SetInsertPoint(loopSetup);
BranchInst *end = builder.CreateBr(loopStart);
然后我在使用 opt 运行 pass 时收到此错误:
Basic Block in function 'main' does not have terminator!
label %loop_setup
显然没有设置终止符,因为loopSetup->getTerminator(); 返回 0。
【问题讨论】:
-
它最终会在哪里结束呢?尝试调用 F.dump()。 (专业提示:几乎每个班级都有一个 dump(),如果景观似乎与您的地图不匹配,这是查看景观的快速方法。)
标签: c++ llvm llvm-clang llvm-c++-api