llvm-project/clang/lib/Analysis
Artem Dergachev ab7747b727 [analyzer] Treat functions without run-time branches as "small".
Currently we always inline functions that have no branches, i.e. have exactly
three CFG blocks: ENTRY, some code, EXIT. This makes sense because when there
are no branches, it means that there's no exponential complexity introduced
by inlining such function. Such functions also don't trigger various fundamental
problems with our inlining mechanism, such as the problem of inlined
defensive checks.

Sometimes the CFG may contain more blocks, but in practice it still has
linear structure because all directions (except, at most, one) of all branches
turned out to be unreachable. When this happens, still treat the function
as "small". This is useful, in particular, for dealing with C++17 if constexpr.

Differential Revision: https://reviews.llvm.org/D61051

llvm-svn: 359531
2019-04-30 03:01:02 +00:00
..
AnalysisDeclContext.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
BodyFarm.cpp [analyzer] Unbreak body farms in presence of multiple declarations. 2019-04-23 02:56:00 +00:00
CFG.cpp [analyzer] Treat functions without run-time branches as "small". 2019-04-30 03:01:02 +00:00
CFGReachabilityAnalysis.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
CFGStmtMap.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
CMakeLists.txt [analyzer] Port RetainSummaryManager to the new AnyCall interface, decouple ARCMT from the analyzer 2019-01-25 01:24:04 +00:00
CallGraph.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
CloneDetection.cpp Use llvm::stable_sort 2019-04-24 14:43:05 +00:00
CocoaConventions.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
CodeInjector.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
ConstructionContext.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Consumed.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Dominators.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
ExprMutationAnalyzer.cpp [analyzer] handle modification of vars inside an expr with comma operator 2019-03-07 15:50:52 +00:00
LiveVariables.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
ObjCNoReturn.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
PostOrderCFGView.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
ProgramPoint.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
ReachableCode.cpp Fix file headers. NFC 2019-03-01 06:49:51 +00:00
RetainSummaryManager.cpp [analyzer] RetainCount: Add a suppression for "the Matching rule". 2019-04-26 02:05:18 +00:00
ThreadSafety.cpp Thread safety analysis: Add note for unlock kind mismatch 2019-03-18 23:26:54 +00:00
ThreadSafetyCommon.cpp Thread Safety: also look at ObjC methods 2019-03-25 20:06:32 +00:00
ThreadSafetyLogical.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
ThreadSafetyTIL.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
UninitializedValues.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00