我需要提取分支条件中涉及的常量。
例如,在分支if(a > 10)
中,10是我想要提取的。
我想知道如何使用LLVM做到这一点?相应的LLVM指令 上面的分支是
%cmp = icmp sgt i32 %2, 10
br i1 %cmp, label %if.then, label %if.else`.
很容易找到分支IR,但常量不在IR中。
答案 0 :(得分:2)
比较指令是icmp sgt i32 %2, 10
- 常数10显然在那里。
给定br
,您可以通过调用Value
来检测它所分支的IR getCondition
,然后查找常量。但请注意,那里总是不会有一个常数......如果条件为if (a > b)
,那么常数是什么?