如何在分支条件中提取常量?
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)
常数在哪里?
我需要提取分支条件中涉及的常量。
比如分支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)
常数在哪里?