[cfe-users] Retrieve value from DeclExprRef
Marcos Horro Varela via cfe-users
cfe-users at lists.llvm.org
Wed Mar 3 13:29:36 PST 2021
Hello all,
Having a loop like this:
.
|-DeclStmt 0x233fe40 <line:14:5, col:14>
| `-VarDecl 0x233fdb8 <col:5, col:13> col:9 used I 'int' cinit
| `-IntegerLiteral 0x233fe20 <col:13> 'int' 0
.
`-ForStmt 0x236b390 <line:29:5, line:33:5>
|-DeclStmt 0x2340710 <line:29:10, col:19>
| `-VarDecl 0x2340670 <col:10, col:18> col:14 used i 'int' cinit
| `-ImplicitCastExpr 0x23406f8 <col:18> 'int' <LValueToRValue>
| `-DeclRefExpr 0x23406d8 <col:18> 'int' lvalue Var 0x233fdb8 'I'
'int'
Which basically corresponds to:
Int I;
int I = 0;
.
for (i = I; ...)
I am trying to parse that loop such as:
const ASTContext *C = .
const DeclStmt *NameValInit = dyn_cast<DeclStmt>(ForLoop->getInit());
...
if (NameValInit != nullptr) {
clang::Expr::EvalResult R;
V = dyn_cast<VarDecl>(NameValInit->getSingleDecl());
if (V != nullptr) {
if (V->getInit()->EvaluateAsInt(R, *C)) {
return R.Val.getInt().getExtValue();
}
.
I have checked this thread [1], which is very insightful. I guess that my
conceptual error lies in the "EvaluateAsInt", however, how can I retrieve
the value of the IntegerLiteral of the VarDecl referenced by the
DeclrRexExpr?
Thanks for your time.
Kind regards,
[1]
http://clang-developers.42468.n3.nabble.com/How-does-Clang-Staic-Analyzer-de
al-with-DeclRefExpr-tp4036387p4036398.html
--
H.
http://gac.udc.es/~horro
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-users/attachments/20210303/3e3a5c0a/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 5997 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-users/attachments/20210303/3e3a5c0a/attachment.bin>
More information about the cfe-users
mailing list