[clang][dataflow] Include terminator statements in buildStmtToBasicBlockMap
authorStanislav Gatev <sgatev@google.com>
Thu, 10 Feb 2022 16:34:07 +0000 (16:34 +0000)
committerStanislav Gatev <sgatev@google.com>
Fri, 11 Feb 2022 11:15:29 +0000 (11:15 +0000)
This will be necessary later when we add support for evaluating logic
expressions such as && and ||.

This is part of the implementation of the dataflow analysis framework.
See "[RFC] A dataflow analysis framework for Clang AST" on cfe-dev.

Reviewed-by: xazax.hun
Differential Revision: https://reviews.llvm.org/D119447

clang/lib/Analysis/FlowSensitive/ControlFlowContext.cpp

index 3ad2ed6..c0b8119 100644 (file)
@@ -38,6 +38,8 @@ buildStmtToBasicBlockMap(const CFG &Cfg) {
 
       StmtToBlock[Stmt.getValue().getStmt()] = Block;
     }
+    if (const Stmt *TerminatorStmt = Block->getTerminatorStmt())
+      StmtToBlock[TerminatorStmt] = Block;
   }
   return StmtToBlock;
 }