hanchenye-llvm-project/clang/lib/StaticAnalyzer/Core
Richard Smith c67fdd4eb9 AST representation for user-defined literals, plus just enough of semantic
analysis to make the AST representation testable. They are represented by a
new UserDefinedLiteral AST node, which is a sugared CallExpr. All semantic
properties, including full CodeGen support, are achieved for free by this
representation.

UserDefinedLiterals can never be dependent, so no custom instantiation
behavior is required. They are mangled as if they were direct calls to the
underlying literal operator. This matches g++'s apparent behavior (but not its
actual mangling, which is broken for literal-operator-ids).

User-defined *string* literals are now fully-operational, but the semantic
analysis is quite hacky and needs more work. No other forms of user-defined
literal are created yet, but the AST support for them is present.

This patch committed after midnight because we had already hit the quota for
new kinds of literal yesterday.

llvm-svn: 152211
2012-03-07 08:35:16 +00:00
..
AggExprVisitor.cpp Switch assert(0/false) llvm_unreachable. 2011-09-23 05:06:16 +00:00
AnalysisManager.cpp [analyzer] Bound the size of the functions being inlined + provide 2012-03-02 19:05:03 +00:00
BasicConstraintManager.cpp Change references to 'const ProgramState *' to typedef 'ProgramStateRef'. 2012-01-26 21:29:00 +00:00
BasicValueFactory.cpp Cleanup various declarations of 'Stmt*' to be 'Stmt *', etc. in libAnalyzer and libStaticAnalyzer[*]. It was highly inconsistent, and very ugly to look at. 2011-08-12 23:37:29 +00:00
BlockCounter.cpp Cleanup various declarations of 'Stmt*' to be 'Stmt *', etc. in libAnalyzer and libStaticAnalyzer[*]. It was highly inconsistent, and very ugly to look at. 2011-08-12 23:37:29 +00:00
BugReporter.cpp [analyzer] add a diagnostic event when entering a call via inlining, within the callee, and add an edge. 2012-03-06 01:25:01 +00:00
BugReporterVisitors.cpp [analyzer diagnostics] start prototyping stripping PathDiagnostics of unnecessary cruft caused by path inlining. 2012-02-28 23:06:21 +00:00
CMakeLists.txt Update the CMake build for r146959's new files. 2011-12-20 08:42:15 +00:00
Checker.cpp Reapply r149311 which I reverted by mistake. 2012-01-31 02:23:28 +00:00
CheckerContext.cpp [analyzer] Generalize function name checking in CString checker. 2012-02-17 22:35:26 +00:00
CheckerHelpers.cpp
CheckerManager.cpp Adopt ExprEngine and checkers to ObjC property refactoring. Everything was working, but now diagnostics are aware of message expressions implied by uses of properties. Fixes <rdar://problem/9241180>. 2012-02-18 20:53:30 +00:00
CheckerRegistry.cpp Revert my patches which removed Diagnostic.h includes by moving some operator overloads out of line. 2012-02-07 22:29:24 +00:00
CoreEngine.cpp Revert "Move ExplodedNode reclaimation out of ExprEngine and into CoreEngine. Also have it based on adding predecessors/successors, not node allocation. No measurable performance change." 2012-02-16 20:48:04 +00:00
Environment.cpp Add static analyzer support for new NSArray/NSDictionary/NSNumber literals. 2012-03-06 20:06:12 +00:00
ExplodedGraph.cpp Revert "Move ExplodedNode reclaimation out of ExprEngine and into CoreEngine. Also have it based on adding predecessors/successors, not node allocation. No measurable performance change." 2012-02-16 20:48:04 +00:00
ExprEngine.cpp AST representation for user-defined literals, plus just enough of semantic 2012-03-07 08:35:16 +00:00
ExprEngineC.cpp Generate an AST for the conversion from a lambda closure type to a 2012-02-22 05:02:47 +00:00
ExprEngineCXX.cpp Remove a recursive visitiation in ExprEngine that is no longer needed 2012-02-29 08:42:57 +00:00
ExprEngineCallAndReturn.cpp [analyzer] Bound the size of the functions being inlined + provide 2012-03-02 19:05:03 +00:00
ExprEngineObjC.cpp Adopt ExprEngine and checkers to ObjC property refactoring. Everything was working, but now diagnostics are aware of message expressions implied by uses of properties. Fixes <rdar://problem/9241180>. 2012-02-18 20:53:30 +00:00
HTMLDiagnostics.cpp [analyzer diagnostics] Change CompactPathDiagnostic to recursively compact diagnostics in calls into macro pieces. 2012-03-02 01:27:31 +00:00
Makefile
MemRegion.cpp [analyzer] teach analyzer about ObjC literals, thus trimming out a false positive with the malloc() checker involving 2012-02-28 00:56:05 +00:00
ObjCMessage.cpp Adopt ExprEngine and checkers to ObjC property refactoring. Everything was working, but now diagnostics are aware of message expressions implied by uses of properties. Fixes <rdar://problem/9241180>. 2012-02-18 20:53:30 +00:00
PathDiagnostic.cpp [analyzer] add a diagnostic event when entering a call via inlining, within the callee, and add an edge. 2012-03-06 01:25:01 +00:00
PlistDiagnostics.cpp [analyzer] add a diagnostic event when entering a call via inlining, within the callee, and add an edge. 2012-03-06 01:25:01 +00:00
ProgramState.cpp Have ScanReachableSymbols reported reachable regions. Fixes a false positive with nested array literals. <rdar://problem/10686586> 2012-02-21 00:46:29 +00:00
RangeConstraintManager.cpp Change references to 'const ProgramState *' to typedef 'ProgramStateRef'. 2012-01-26 21:29:00 +00:00
RegionStore.cpp Have conjured symbols depend on LocationContext, to add context sensitivity for functions called more than once. 2012-02-17 23:13:45 +00:00
SValBuilder.cpp Have conjured symbols depend on LocationContext, to add context sensitivity for functions called more than once. 2012-02-17 23:13:45 +00:00
SVals.cpp Remove unnecessary default cases in switches over enums. 2012-01-17 02:30:50 +00:00
SimpleConstraintManager.cpp Change references to 'const ProgramState *' to typedef 'ProgramStateRef'. 2012-01-26 21:29:00 +00:00
SimpleConstraintManager.h Change references to 'const ProgramState *' to typedef 'ProgramStateRef'. 2012-01-26 21:29:00 +00:00
SimpleSValBuilder.cpp Teach SimpleSValBuilder that (in the absence of more information) stack memory doesn't alias symbolic memory. This is a heuristic/hack, but works well in practice. Fixes <rdar://problem/10978247>. 2012-03-05 23:06:19 +00:00
Store.cpp [analyzer] teach analyzer about ObjC literals, thus trimming out a false positive with the malloc() checker involving 2012-02-28 00:56:05 +00:00
SubEngine.cpp Unweaken vtables as per http://llvm.org/docs/CodingStandards.html#ll_virtual_anch 2011-12-20 02:48:34 +00:00
SymbolManager.cpp Have conjured symbols depend on LocationContext, to add context sensitivity for functions called more than once. 2012-02-17 23:13:45 +00:00
TextPathDiagnostics.cpp Change PathDiagnosticPieces to be reference counted (simplifying their management), and introduce 'PathPieces' as a common container for PathDiagnosticPieces. 2012-02-08 04:32:34 +00:00