llvm-project/clang/lib/Analysis
Ted Kremenek b50e716bac Refine CFG so that '&&' and '||' don't lead to extra confluence points when used in a branch, but
instead push the terminator for the branch down into the basic blocks of the subexpressions of '&&' and '||'
respectively.  This eliminates some artifical control-flow from the CFG and results in a more
compact CFG.

Note that this patch only alters the branches 'while', 'if' and 'for'.  This was complex enough for
one patch.  The remaining branches (e.g., do...while) can be handled in a separate patch, but they
weren't immediately tackled because they were less important.

It is possible that this patch introduces some subtle bugs, particularly w.r.t. to destructor placement.
I've tried to audit these changes, but it is also known that the destructor logic needs some refinement
in the area of '||' and '&&' regardless (i.e., their are known bugs).

llvm-svn: 160218
2012-07-14 05:04:10 +00:00
..
AnalysisDeclContext.cpp Drop the ASTContext.h include from DeclFriend.h and DeclTemplate.h. 2012-07-04 20:19:54 +00:00
CFG.cpp Refine CFG so that '&&' and '||' don't lead to extra confluence points when used in a branch, but 2012-07-14 05:04:10 +00:00
CFGReachabilityAnalysis.cpp remove unneeded llvm:: namespace qualifiers on some core types now that LLVM.h imports 2011-07-23 10:55:15 +00:00
CFGStmtMap.cpp Constify the result of CFGStmt::getStmt(). 2011-08-23 23:05:04 +00:00
CMakeLists.txt Implement AST classes for comments, a real parser for Doxygen comments and a 2012-07-06 00:28:32 +00:00
CallGraph.cpp Remove unused private member variables found by clang's new -Wunused-private-field. 2012-06-06 17:32:50 +00:00
CocoaConventions.cpp Kill cocoa::deriveNamingConvention and cocoa::followsFundamentalRule. They are now just simple wrappers around method families, and method decls can cache method family lookups. Also, no one is using them right now. 2012-03-17 20:51:32 +00:00
Dominators.cpp Unweaken vtables as per http://llvm.org/docs/CodingStandards.html#ll_virtual_anch 2011-12-20 02:48:34 +00:00
FormatString.cpp Teach printf/scanf about enums with fixed underlying types. 2012-06-04 22:48:57 +00:00
FormatStringParsing.h Support the 'a' length modifier in scanf format strings as a C90 2011-12-15 10:25:47 +00:00
LiveVariables.cpp Bail out the LiveVariables analysis when the CFG is very large, as 2012-07-02 20:21:52 +00:00
Makefile BUILD_ARCHIVE is the default for libraries, no need to set it. 2010-07-18 00:14:47 +00:00
PostOrderCFGView.cpp Unweaken vtables as per http://llvm.org/docs/CodingStandards.html#ll_virtual_anch 2011-12-20 02:48:34 +00:00
PrintfFormatString.cpp Make suggestions for mismatched enum arguments to printf/scanf. 2012-06-04 22:49:02 +00:00
ProgramPoint.cpp [analyzer] Run remove dead bindings right before leaving a function. 2012-04-20 21:59:08 +00:00
PseudoConstantAnalysis.cpp Drop the ASTContext.h include from Stmt.h and fix up transitive users. 2012-07-04 17:04:04 +00:00
ReachableCode.cpp Unweaken vtables as per http://llvm.org/docs/CodingStandards.html#ll_virtual_anch 2011-12-20 02:48:34 +00:00
ScanfFormatString.cpp Make suggestions for mismatched enum arguments to printf/scanf. 2012-06-04 22:49:02 +00:00
ThreadSafety.cpp Thread safety analysis: impove handling of trylock expressions. 2012-07-10 21:47:55 +00:00
UninitializedValues.cpp PR13360: When deciding the earliest point which inevitably leads to an 2012-07-13 23:33:44 +00:00