llvm-project/clang/lib/StaticAnalyzer/Core
Jordan Rose 61e221f68d [analyzer] Replace isIntegerType() with isIntegerOrEnumerationType().
Previously, the analyzer used isIntegerType() everywhere, which uses the C
definition of "integer". The C++ predicate with the same behavior is
isIntegerOrUnscopedEnumerationType().

However, the analyzer is /really/ using this to ask if it's some sort of
"integrally representable" type, i.e. it should include C++11 scoped
enumerations as well. hasIntegerRepresentation() sounds like the right
predicate, but that includes vectors, which the analyzer represents by its
elements.

This commit audits all uses of isIntegerType() and replaces them with the
general isIntegerOrEnumerationType(), except in some specific cases where
it makes sense to exclude scoped enumerations, or any enumerations. These
cases now use isIntegerOrUnscopedEnumerationType() and getAs<BuiltinType>()
plus BuiltinType::isInteger().

isIntegerType() is hereby banned in the analyzer - lib/StaticAnalysis and
include/clang/StaticAnalysis. :-)

Fixes real assertion failures. PR15703 / <rdar://problem/12350701>

llvm-svn: 179081
2013-04-09 02:30:33 +00:00
..
APSIntType.cpp [analyzer] Teach constraint managers about unsigned comparisons. 2013-03-23 01:21:33 +00:00
AnalysisManager.cpp Add configuration plumbing to enable static initializer branching in the CFG for the analyzer. 2013-03-29 00:09:22 +00:00
AnalyzerOptions.cpp [analyzer] Enable destructor inlining by default (c++-inlining=destructors). 2013-04-04 23:10:29 +00:00
BasicValueFactory.cpp [analyzer] Disallow creation of int vals with explicit bit width / signedness. 2012-09-01 17:39:24 +00:00
BlockCounter.cpp
BugReporter.cpp [analyzer] When creating a trimmed graph, preserve whether a node is a sink. 2013-04-06 01:42:02 +00:00
BugReporterVisitors.cpp [analyzer] Replace isIntegerType() with isIntegerOrEnumerationType(). 2013-04-09 02:30:33 +00:00
CMakeLists.txt Remove ProgramState::getSymVal(). It was being misused by Checkers, 2012-09-07 22:31:01 +00:00
CallEvent.cpp [analyzer] Teach invalidateRegions that regions within LazyCompoundVal need to be invalidated 2013-04-02 01:28:24 +00:00
Checker.cpp
CheckerContext.cpp [analyzer] Add some convenience accessors to CallEvent, and use them. 2012-11-02 23:49:29 +00:00
CheckerHelpers.cpp
CheckerManager.cpp [analyzer] Add support for escape of const pointers and use it to allow “newed” pointers to escape 2013-03-28 23:15:29 +00:00
CheckerRegistry.cpp Remove useless 'llvm::' qualifier from names like StringRef and others that are 2013-01-12 19:30:44 +00:00
ConstraintManager.cpp [analyzer] Let ConstraintManager subclasses provide a more efficient checkNull. 2012-10-31 16:44:55 +00:00
CoreEngine.cpp Add static analyzer support for conditionally executing static initializers. 2013-03-29 00:09:28 +00:00
Environment.cpp Include llvm::Optional in clang/Basic/LLVM.h 2013-02-20 22:23:23 +00:00
ExplodedGraph.cpp [analyzer] Cleanup: only get the PostStmt when we need the underlying Stmt + comment 2013-03-27 17:36:01 +00:00
ExprEngine.cpp [analyzer] Replace isIntegerType() with isIntegerOrEnumerationType(). 2013-04-09 02:30:33 +00:00
ExprEngineC.cpp [analyzer] Replace isIntegerType() with isIntegerOrEnumerationType(). 2013-04-09 02:30:33 +00:00
ExprEngineCXX.cpp [analyzer] Better model for copying of array fields in implicit copy ctors. 2013-04-03 01:39:08 +00:00
ExprEngineCallAndReturn.cpp [analyzer] Better model for copying of array fields in implicit copy ctors. 2013-04-03 01:39:08 +00:00
ExprEngineObjC.cpp Include llvm::Optional in clang/Basic/LLVM.h 2013-02-20 22:23:23 +00:00
FunctionSummary.cpp [analyzer] Use inline storage in the FunctionSummary DenseMap. 2013-04-02 00:26:26 +00:00
HTMLDiagnostics.cpp Pass AnalyzerOptions to PathDiagnosticConsumer to make analyzer options accessible there. 2012-12-19 01:35:35 +00:00
Makefile
MemRegion.cpp [analyzer] Special-case bitfields when finding sub-region bindings. 2013-03-01 23:03:17 +00:00
PathDiagnostic.cpp [analyzer] Show path diagnostic for C++ initializers 2013-04-05 00:59:33 +00:00
PlistDiagnostics.cpp Remove useless 'llvm::' qualifier from names like StringRef and others that are 2013-01-12 19:30:44 +00:00
ProgramState.cpp [analyzer] Replace isIntegerType() with isIntegerOrEnumerationType(). 2013-04-09 02:30:33 +00:00
RangeConstraintManager.cpp [analyzer] Teach constraint managers about unsigned comparisons. 2013-03-23 01:21:33 +00:00
RegionStore.cpp [analyzer] Replace isIntegerType() with isIntegerOrEnumerationType(). 2013-04-09 02:30:33 +00:00
SValBuilder.cpp [analyzer] Replace isIntegerType() with isIntegerOrEnumerationType(). 2013-04-09 02:30:33 +00:00
SVals.cpp [analyzer] Loc-Loc operations (subtraction or comparison) produce a NonLoc. 2013-03-23 01:21:29 +00:00
SimpleConstraintManager.cpp [analyzer] Replace isIntegerType() with isIntegerOrEnumerationType(). 2013-04-09 02:30:33 +00:00
SimpleConstraintManager.h [analyzer] Translate "a != b" to "(b - a) != 0" in the constraint manager. 2013-03-23 01:21:16 +00:00
SimpleSValBuilder.cpp [analyzer] Replace isIntegerType() with isIntegerOrEnumerationType(). 2013-04-09 02:30:33 +00:00
Store.cpp [analyzer] Record whether a base object region represents a virtual base. 2013-02-21 03:12:32 +00:00
SubEngine.cpp
SymbolManager.cpp [analyzer] Replace isIntegerType() with isIntegerOrEnumerationType(). 2013-04-09 02:30:33 +00:00
TextPathDiagnostics.cpp Pass AnalyzerOptions to PathDiagnosticConsumer to make analyzer options accessible there. 2012-12-19 01:35:35 +00:00