如何在分支条件下提取常量?

时间:2015-08-09 22:28:34

标签: assembly llvm llvm-ir

我需要提取分支条件中涉及的常量。

例如,在分支if(a > 10)中,10是我想要提取的。

我想知道如何使用LLVM做到这一点?相应的LLVM指令 上面的分支是

%cmp = icmp sgt i32 %2, 10
br i1 %cmp, label %if.then, label %if.else`.

很容易找到分支IR,但常量不在IR中。

1 个答案:

答案 0 :(得分:2)

比较指令是icmp sgt i32 %2, 10 - 常数10显然在那里。

给定br,您可以通过调用Value来检测它所分支的IR getCondition,然后查找常量。但请注意,那里总是不会有一个常数......如果条件为if (a > b),那么常数是什么?