[cfe-dev] Traverse AST and save Stmt* pointers for later use
Иванов Игорь via cfe-dev
cfe-dev at lists.llvm.org
Fri May 11 00:55:46 PDT 2018
Hello everyone!
I am writing a tool that traverses ASTs of my project files, stores several Stmt* pointers, and then compares them as present here https://clang.llvm.org/doxygen/IdenticalExprChecker_8cpp_source.html#l00307 .
I tried inheriting from ast_matchers::MatchFinder::MatchCallback and overriding its void run(const MatchResult &match) / inheriting RecursiveASTVisitor and implementing VisitFunctionDecl to store pointers of interest into a container. However it seems that at some point during/after traversing those pointers invalidate - e.g. if I check body->getStmtClass() during run, it correctly shows CompoundStmt , but afterwards it turns into some other clearly wrong class like If or For.
What are my options to solve this problem? I am aware that AST Matchers or Visitors might be a wrong tool in this case, so please don't hesitate to advise other means if those will suit me better.
Best regards,
Igor Ivanov
More information about the cfe-dev
mailing list