0

如何在 LLVM 中获取运算符的全名?

我正在遍历块,然后,在他们的每条指令中,我都尝试获取操作员名称,但我只得到了其中的一部分。运行以下代码:

virtual bool runOnBasicBlock(BasicBlock &bb) {
    for (auto it(bb.begin()); it != bb.end(); ++it) {
        errs() << it->getName() << '\t' << *it << '\n';
    }
}

我得到如下输出行:

icmp        %cmp = icmp slt i32 %i.0, %argc
icmp        %cmp1 = icmp sgt i32 %call, %max.0
add       %inc = add nsw i32 %i.0, 1

我想得到icmp slt, icmp sgt, and add nsw, 而不是icmpand add

4

1 回答 1

3

好吧,sltsgt其他的icmp只是论点。您可以使用getPredicate(方法CmpInst)访问它们。另请参阅中的有用功能getPredicateTextlib/IR/AsmWriter.cpp

对于类似的东西nsw,请查看方法hasNoSignedWrap和类似方法。

于 2013-04-20T13:15:59.757 回答