llvm-project/clang/lib/AST
Ted Kremenek 35de14540f [analyzer; alternate edges] improve support for edges with PseudoObjectExprs.
This optimizes some spurious edges resulting from PseudoObjectExprs.
This required far more changes than I anticipated.  The current
ParentMap does not record any hierarchy information between
a PseudoObjectExpr and its *semantic* expressions that may be
wrapped in OpaqueValueExprs, which are the expressions actually
laid out in the CFG.  This means the arrow pruning logic could
not map from an expression to its containing PseudoObjectExprs.

To solve this, this patch adds a variant of ParentMap that
returns the "semantic" parentage of expressions (essentially
as they are viewed by the CFG).  This alternate ParentMap is then
used by the arrow reducing logic to identify edges into pseudo
object expressions, and then eliminate them.

llvm-svn: 182083
2013-05-17 09:41:40 +00:00
..
APValue.cpp Don't crash while printing APValues that are lvalues casted to a 2013-01-29 01:26:43 +00:00
ASTConsumer.cpp Sort all of Clang's files under 'lib', and fix up the broken headers 2012-12-04 09:13:33 +00:00
ASTContext.cpp Add static_cast to assertion to silence sign/unsigned comparison warning. 2013-05-14 23:41:50 +00:00
ASTDiagnostic.cpp Provide operator<< for stream output of DeclarationNames 2013-05-14 21:04:00 +00:00
ASTDumper.cpp AST dumping: if a declaration has an uncomputed or uninstantiated exception specification, include that in the dump. 2013-05-17 02:09:46 +00:00
ASTImporter.cpp Use only explicit bool conversion operator 2013-05-15 07:37:26 +00:00
AttrImpl.cpp [ms-cxxabi] Give the MS inheritance attributes a base class 2013-03-26 18:30:28 +00:00
CMakeLists.txt OpenMP threadprivate directive parsing and semantic analysis 2013-03-22 06:34:35 +00:00
CXXABI.h [ms-cxxabi] Correctly compute the size of member pointers 2013-03-28 20:02:56 +00:00
CXXInheritance.cpp Fix Cast 2013-01-15 22:09:40 +00:00
Comment.cpp Replace ArrayRef<T>() with None, now that we have an implicit ArrayRef constructor from None 2013-05-05 00:41:58 +00:00
CommentBriefParser.cpp Some refactoring in my patch on document 2013-03-02 02:39:57 +00:00
CommentCommandTraits.cpp [doc parsing]: make single character command impostures 2013-05-09 17:18:52 +00:00
CommentLexer.cpp [doc parsing]: make single character command impostures 2013-05-09 17:18:52 +00:00
CommentParser.cpp Replace ArrayRef<T>() with None, now that we have an implicit ArrayRef constructor from None 2013-05-05 00:41:58 +00:00
CommentSema.cpp documentation comment parsing. Added couple of 2013-03-18 23:45:52 +00:00
Decl.cpp Fix pr15930. 2013-05-16 04:30:21 +00:00
DeclBase.cpp Make all 'is in extern "C"' tests use the lexical context. 2013-05-05 20:15:21 +00:00
DeclCXX.cpp First pass of semantic analysis for init-captures: check the initializer, build 2013-05-16 06:20:58 +00:00
DeclFriend.cpp Added outer template parameter lists to friend type AST nodes. 2013-01-31 09:54:08 +00:00
DeclGroup.cpp Sort all of Clang's files under 'lib', and fix up the broken headers 2012-12-04 09:13:33 +00:00
DeclObjC.cpp Replace ArrayRef<T>() with None, now that we have an implicit ArrayRef constructor from None 2013-05-05 00:41:58 +00:00
DeclOpenMP.cpp OpenMP threadprivate with qualified names. 2013-05-13 04:18:18 +00:00
DeclPrinter.cpp OpenMP threadprivate with qualified names. 2013-05-13 04:18:18 +00:00
DeclTemplate.cpp A little ArrayRef'ization. 2013-05-17 03:04:50 +00:00
DeclarationName.cpp Provide operator<< for stream output of DeclarationNames 2013-05-14 21:04:00 +00:00
DumpXML.cpp Revert r175912, "Add support for coldcc to clang" at John's request. 2013-02-23 00:06:18 +00:00
Expr.cpp Use only explicit bool conversion operator 2013-05-15 07:37:26 +00:00
ExprCXX.cpp First pass of semantic analysis for init-captures: check the initializer, build 2013-05-16 06:20:58 +00:00
ExprClassification.cpp C++1y: Allow aggregates to have default initializers. 2013-04-20 22:23:05 +00:00
ExprConstant.cpp Tidy up now that PointerUnion has an operator== that works. 2013-05-16 05:04:51 +00:00
ExternalASTSource.cpp Simplify FindExternalVisibleDeclsByName by making it return a bool indicating 2013-02-07 03:30:24 +00:00
InheritViz.cpp Remove an unneeded const_cast 2013-01-14 00:25:25 +00:00
ItaniumCXXABI.cpp [ms-cxxabi] Correctly compute the size of member pointers 2013-03-28 20:02:56 +00:00
ItaniumMangle.cpp Cleanup handling of UniqueExternalLinkage. 2013-05-13 00:12:11 +00:00
LambdaMangleContext.cpp ArrayRef-ize ASTContext::getFunctionType and Sema::BuildFunctionType. 2013-03-08 21:51:21 +00:00
Makefile
Mangle.cpp Sort all of Clang's files under 'lib', and fix up the broken headers 2012-12-04 09:13:33 +00:00
MicrosoftCXXABI.cpp [ms-cxxabi] Implement member pointer emission and dereferencing 2013-04-11 18:13:19 +00:00
MicrosoftMangle.cpp Fix clang -Werror build due to -Wreorder violation introduced in r181825 2013-05-14 21:31:46 +00:00
NSAPI.cpp Use None rather than Optional<T>() where possible. 2013-02-21 01:47:18 +00:00
NestedNameSpecifier.cpp Streamify getNameForDiagnostic and remove the string versions of PrintTemplateArgumentList. 2013-02-22 15:46:01 +00:00
ParentMap.cpp [analyzer; alternate edges] improve support for edges with PseudoObjectExprs. 2013-05-17 09:41:40 +00:00
RawCommentList.cpp [Doc parsing] Provide diagnostics for unknown documentation 2013-05-03 23:15:20 +00:00
RecordLayout.cpp First pass at abstracting out a class for the target C++ ABI. 2013-01-25 22:30:49 +00:00
RecordLayoutBuilder.cpp [ms-cxxabi] Mangle in an implicit 'E' for certain types on win64 2013-05-14 20:30:42 +00:00
SelectorLocationsKind.cpp Fix crash when using archaic protocol, rdar://10238337 2011-10-05 21:28:06 +00:00
Stmt.cpp First pass of semantic analysis for init-captures: check the initializer, build 2013-05-16 06:20:58 +00:00
StmtIterator.cpp Support for C++11 (non-template) alias declarations. 2011-04-15 14:24:37 +00:00
StmtPrinter.cpp First pass of semantic analysis for init-captures: check the initializer, build 2013-05-16 06:20:58 +00:00
StmtProfile.cpp First pass of semantic analysis for init-captures: check the initializer, build 2013-05-16 06:20:58 +00:00
StmtViz.cpp
TemplateBase.cpp Debug Info: include address-of ('&') operator and qualified names in template argument lists 2013-05-09 22:43:45 +00:00
TemplateName.cpp Add quotation marks to template names in diagnostics. 2013-03-05 06:21:38 +00:00
Type.cpp Cleanup handling of UniqueExternalLinkage. 2013-05-13 00:12:11 +00:00
TypeLoc.cpp Rename TypeLoc's isType to isKind 2013-02-21 01:47:08 +00:00
TypePrinter.cpp Don't treat a non-deduced 'auto' type as being type-dependent. Instead, there 2013-04-30 13:56:41 +00:00
VTTBuilder.cpp Remove get(V)BaseClassOffsetInBits, the CharUnit functions should be used instead. 2012-07-04 18:45:14 +00:00
VTableBuilder.cpp Fix one FIXME in VTableBuilder 2013-05-08 08:09:21 +00:00