我试图找到最简单的方法来获取常量SVal中的值。目前我正在做一些事情:
SVal s = ...; // Get valid SVal from somewhere
int64_t val = 0; // Will hold value of SVal
if (!s.isUnknownOrUndef() && s.isConstant()) {
switch (s.getBaseKind()) {
case NonLocKind: {
s_val = s.getAs<nonloc::ConcreteInt>().getValue();
val = s_val.getValue().getExtValue();
}
// handle other cases
// ...
}
}
llvm::outs() << "Value is " << val << "\n";
我没有在这里显示它,但有更多的代码检查值已知,检查常量的符号和类型等。我觉得可能有更好的方法。