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

How to extract constant in the branch condition?

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

比如分支if(a > 10),我要提取的是10

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

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

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

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

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