请告诉我如何在LLVM IR中检测是否存在使用nsw和nuw标志的指令。
答案 0 :(得分:2)
OverflowingBinaryOperator
为此目的提供了hasNoUnsignedWrap
和hasNoSignedWrap
谓词。
更具体地说,给出了一些指令ii
:
if (OverflowingBinaryOperator *op = dyn_cast<OverflowingBinaryOperator>(ii)) {
if (op->hasNoUnsignedWrap())
errs() << " has nuw\n";
else if (op->hasNoSignedWrap())
errs() << " has nsw\n";
}
}