[cfe-dev] Traverse AST and save Stmt* pointers for later use

Igor Ivanov via cfe-dev cfe-dev at lists.llvm.org
Wed May 9 02:00:56 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 .

Currently I have a class that inherits  ast_matchers::MatchFinder::MatchCallback  and in its  void run(const MatchResult &match)  stores pointers of interest to a container. However it seems that at some point during/after the  run()  is finished, 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 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