llvm-project/clang/lib/StaticAnalyzer/Core
Balazs Benics de361df3f6 [analyzer][Z3-refutation] Fix a refutation BugReporterVisitor bug
FalsePositiveRefutationBRVisitor had a bug where the constraints were not
properly collected thus crosschecked with Z3.
This patch demonstratest and fixes that bug.

Bug:
The visitor wanted to collect all the constraints on a BugPath.
Since it is a visitor, it stated the visitation of the BugPath with the node
before the ErrorNode. As a final step, it visited the ErrorNode explicitly,
before it processed the collected constraints.

In principle, the ErrorNode should have visited before every other node.
Since the constraints were collected into a map, mapping each symbol to its
RangeSet, if the map already had a mapping with the symbol, then it was skipped.

This behavior was flawed if:
We already had a constraint on a symbol, but at the end in the ErrorNode we have
a tighter constraint on that. Therefore, this visitor would not utilize that
tighter constraint during the crosscheck validation.

Differential Revision: https://reviews.llvm.org/D78457
2020-06-29 18:51:24 +02:00
..
APSIntType.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
AnalysisManager.cpp [analyzer] CheckerContext: Make the Preprocessor available 2020-01-30 17:05:52 +01:00
AnalyzerOptions.cpp Revert "Convert a reachable llvm_unreachable into an assert." 2020-03-24 16:06:14 -04:00
BasicValueFactory.cpp C++2a -> C++20 in some identifiers; NFC. 2020-04-21 15:37:19 -04:00
BlockCounter.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
BugReporter.cpp [analyzer][Z3-refutation] Fix a refutation BugReporterVisitor bug 2020-06-29 18:51:24 +02:00
BugReporterVisitors.cpp [analyzer][Z3-refutation] Fix a refutation BugReporterVisitor bug 2020-06-29 18:51:24 +02:00
CMakeLists.txt [openmp] Base of tablegen generated OpenMP common declaration 2020-06-23 10:32:32 -04:00
CallEvent.cpp [analyzer] Enable constructor support in evalCall event. 2020-06-25 09:47:13 -07:00
Checker.cpp [analyzer][NFC] Fix inconsistent references to checkers as "checks" 2019-09-12 19:09:24 +00:00
CheckerContext.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
CheckerHelpers.cpp [analyzer] Fix StdLibraryFunctionsChecker crash on macOS 2020-06-16 16:10:07 +03:00
CheckerManager.cpp [analyzer] Enable constructor support in evalCall event. 2020-06-25 09:47:13 -07:00
CommonBugCategories.cpp [analyzer] CERT: POS34-C 2020-02-19 18:12:19 +01:00
ConstraintManager.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
CoreEngine.cpp [Analyzer][NFC] Remove the SubEngine interface 2020-05-26 19:56:55 +02:00
DynamicSize.cpp [analyzer] ApiModeling: Add buffer size arg constraint 2020-05-29 16:13:57 +02:00
DynamicType.cpp [analyzer] Track runtime types represented by Obj-C Class objects 2020-04-29 13:35:53 +03:00
Environment.cpp [analyzer] pr43036: Fix support for operator 'sizeof...'. 2019-08-28 18:44:35 +00:00
ExplodedGraph.cpp [analyzer] Consider array subscripts to be interesting lvalues. 2020-04-23 19:52:45 +03:00
ExprEngine.cpp [analyzer] Add support for ObjCIndirectCopyRestoreExpr. 2020-06-03 19:06:04 +03:00
ExprEngineC.cpp [Analyzer] [NFC] Parameter Regions 2020-06-09 12:08:56 +02:00
ExprEngineCXX.cpp [analyzer] Enable constructor support in evalCall event. 2020-06-25 09:47:13 -07:00
ExprEngineCallAndReturn.cpp [analyzer] Enable constructor support in evalCall event. 2020-06-25 09:47:13 -07:00
ExprEngineObjC.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
FunctionSummary.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HTMLDiagnostics.cpp [analyzer] Add support for IE of keyboard and mouse navigation in HTML report 2020-05-27 09:04:30 +03:00
IssueHash.cpp Make SourceManager::createFileID(UnownedTag, ...) take a const llvm::MemoryBuffer* 2019-04-04 21:06:41 +00:00
LoopUnrolling.cpp [analyzer] LoopUnrolling: fix crash when a parameter is a loop counter. 2020-05-22 16:14:48 +03:00
LoopWidening.cpp [analyzer] LoopWidening: fix crash by avoiding aliased references invalidation 2020-06-09 12:55:54 +03:00
MemRegion.cpp [Analyzer] [NFC] Parameter Regions 2020-06-09 12:08:56 +02:00
PlistDiagnostics.cpp SmallPtrSet::find -> SmallPtrSet::count 2020-06-07 22:38:08 +02:00
PrettyStackTraceLocationContext.h [analyzer] print() JSONify: Environment implementation 2019-05-29 15:36:58 +00:00
ProgramState.cpp [Analyzer][NFC] Remove the SubEngine interface 2020-05-26 19:56:55 +02:00
RangeConstraintManager.cpp [analyzer] Reasoning about comparison expressions in RangeConstraintManager 2020-06-15 18:35:15 +03:00
RangedConstraintManager.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
RegionStore.cpp [analyzer] Allow bindings of the CompoundLiteralRegion 2020-05-28 14:11:57 +03:00
SMTConstraintManager.cpp [Analyzer][NFC] Remove the SubEngine interface 2020-05-26 19:56:55 +02:00
SValBuilder.cpp [Analyzer][NFC] Remove the SubEngine interface 2020-05-26 19:56:55 +02:00
SVals.cpp [analyzer] print() JSONify: SVal implementation 2019-05-29 18:38:52 +00:00
SarifDiagnostics.cpp Revert "[analyzer] Change the default output type to PD_TEXT_MINIMAL in the frontend, error if an output loc is missing for PathDiagConsumers that need it" 2020-05-22 20:18:16 +02:00
SimpleConstraintManager.cpp [Analyzer][NFC] Remove the SubEngine interface 2020-05-26 19:56:55 +02:00
SimpleSValBuilder.cpp [analyzer] Introduce reasoning about symbolic remainder operator 2020-05-28 18:56:38 +03:00
Store.cpp [Analyzer] [NFC] Parameter Regions 2020-06-09 12:08:56 +02:00
SymbolManager.cpp [analyzer] Merge implementations of SymInt, IntSym, and SymSym exprs 2020-05-28 18:54:27 +03:00
TextDiagnostics.cpp [analyzer] Display the checker name in the text output 2020-04-09 16:21:45 +02:00
WorkList.cpp [Clang] Migrate llvm::make_unique to std::make_unique 2019-08-14 23:04:18 +00:00