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
smime.p7s
Description: S/MIME cryptographic signature
_______________________________________________ cfe-users mailing list cfe-users@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-users