[CFG] Add LoopExit information to CFG
This patch introduces a new CFG element CFGLoopExit that indicate when a loop ends. It does not deal with returnStmts yet (left it as a TODO). It hidden behind a new analyzer-config flag called cfg-loopexit (false by default). Test cases added. The main purpose of this patch right know is to make loop unrolling and loop widening easier and more efficient. However, this information can be useful for future improvements in the StaticAnalyzer core too. Differential Revision: https://reviews.llvm.org/D35668 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@311235 91177308-0d34-0410-b5e6-96231b3b80d8
Showing
- include/clang/Analysis/AnalysisContext.h 1 addition, 0 deletionsinclude/clang/Analysis/AnalysisContext.h
- include/clang/Analysis/CFG.h 30 additions, 1 deletioninclude/clang/Analysis/CFG.h
- include/clang/StaticAnalyzer/Core/AnalyzerOptions.h 10 additions, 0 deletionsinclude/clang/StaticAnalyzer/Core/AnalyzerOptions.h
- lib/Analysis/AnalysisDeclContext.cpp 2 additions, 0 deletionslib/Analysis/AnalysisDeclContext.cpp
- lib/Analysis/CFG.cpp 24 additions, 0 deletionslib/Analysis/CFG.cpp
- lib/StaticAnalyzer/Core/AnalysisManager.cpp 2 additions, 1 deletionlib/StaticAnalyzer/Core/AnalysisManager.cpp
- lib/StaticAnalyzer/Core/AnalyzerOptions.cpp 5 additions, 0 deletionslib/StaticAnalyzer/Core/AnalyzerOptions.cpp
- lib/StaticAnalyzer/Core/ExprEngine.cpp 1 addition, 0 deletionslib/StaticAnalyzer/Core/ExprEngine.cpp
- lib/StaticAnalyzer/Core/PathDiagnostic.cpp 3 additions, 1 deletionlib/StaticAnalyzer/Core/PathDiagnostic.cpp
- test/Analysis/analyzer-config.c 2 additions, 1 deletiontest/Analysis/analyzer-config.c
- test/Analysis/analyzer-config.cpp 2 additions, 1 deletiontest/Analysis/analyzer-config.cpp
- test/Analysis/loopexit-cfg-output.cpp 476 additions, 0 deletionstest/Analysis/loopexit-cfg-output.cpp
Loading
Please register or sign in to comment