forked from OSchip/llvm-project
6de19ea4b6
Previous changes like D101202 and D104261 have eliminated the special status that break and continue once had, since now we're making decisions purely based on the structure of the CFG without regard for the underlying source code constructs. This means we don't gain anything from defering handling for these blocks. Dropping it moves some diagnostics, though arguably into a better place. We're working around a "quirk" in the CFG that perhaps wasn't visible before: while loops have an empty "transition block" where continue statements and the regular loop exit meet, before continuing to the loop entry. To get a source location for that, we slightly extend our handling for empty blocks. The source location for the transition ends up to be the loop entry then, but formally this isn't a back edge. We pretend it is anyway. (This is safe: we can always treat edges as back edges, it just means we allow less and don't modify the lock set. The other way around it wouldn't be safe.) Reviewed By: aaron.ballman Differential Revision: https://reviews.llvm.org/D106715 |
||
---|---|---|
.. | ||
plugins | ||
AnalysisDeclContext.cpp | ||
BodyFarm.cpp | ||
CFG.cpp | ||
CFGReachabilityAnalysis.cpp | ||
CFGStmtMap.cpp | ||
CMakeLists.txt | ||
CallGraph.cpp | ||
CalledOnceCheck.cpp | ||
CloneDetection.cpp | ||
CocoaConventions.cpp | ||
CodeInjector.cpp | ||
ConstructionContext.cpp | ||
Consumed.cpp | ||
Dominators.cpp | ||
ExprMutationAnalyzer.cpp | ||
IssueHash.cpp | ||
LiveVariables.cpp | ||
MacroExpansionContext.cpp | ||
ObjCNoReturn.cpp | ||
PathDiagnostic.cpp | ||
PostOrderCFGView.cpp | ||
ProgramPoint.cpp | ||
ReachableCode.cpp | ||
RetainSummaryManager.cpp | ||
ThreadSafety.cpp | ||
ThreadSafetyCommon.cpp | ||
ThreadSafetyLogical.cpp | ||
ThreadSafetyTIL.cpp | ||
UninitializedValues.cpp |