记录一下LLVM踩的坑

LLVM遇到什么坑都更新在这里,防止其它师傅踩&二次自己踩。

ConstantFP

在测试 OLLVM BogusControlFlow 的代码的时候遇到了下面两条指令:

1
2
Value *LHS = ConstantFP::get(Type::getFloatTy(F.getContext()), 1.0);
Value *RHS = ConstantFP::get(Type::getFloatTy(F.getContext()), 1.0);

直接会被阻塞,运行起来看上去像死循环了一样。原理还没弄清楚,暂时可行的方法就是不使用 ConstantFP 而是使用 ConstantInt 去构造不透明谓词[1]。

参考文献

  • [1]:http://www.qfrost.com/posts/llvm/llvmollvm%E6%8E%92%E5%9D%91%E4%BC%98%E5%8C%96/