diff options
author | Tom Weaver <Tom.Weaver@Sony.com> | 2023-07-04 14:05:54 +0100 |
---|---|---|
committer | Tom Weaver <Tom.Weaver@Sony.com> | 2023-07-04 14:05:54 +0100 |
commit | 7a72ce98224be76d9328e65eee472381f7c8e7fe (patch) | |
tree | fee9d107e678c8ad77a6d24ccf674d8835defa53 /clang/lib/Analysis/FlowSensitive/DataflowAnalysisContext.cpp | |
parent | 69f99f5308edf7dcb0cd688d7028733088305946 (diff) | |
download | llvm-7a72ce98224be76d9328e65eee472381f7c8e7fe.zip llvm-7a72ce98224be76d9328e65eee472381f7c8e7fe.tar.gz llvm-7a72ce98224be76d9328e65eee472381f7c8e7fe.tar.bz2 |
Revert "[dataflow] Add dedicated representation of boolean formulas"
This reverts commit 2fd614efc1bb9c27f1bc6c3096c60a7fe121e274.
Commit caused failures on the following two build bots:
http://45.33.8.238/win/80815/step_7.txt
https://lab.llvm.org/buildbot/#/builders/139/builds/44269
Diffstat (limited to 'clang/lib/Analysis/FlowSensitive/DataflowAnalysisContext.cpp')
-rw-r--r-- | clang/lib/Analysis/FlowSensitive/DataflowAnalysisContext.cpp | 23 |
1 files changed, 5 insertions, 18 deletions
diff --git a/clang/lib/Analysis/FlowSensitive/DataflowAnalysisContext.cpp b/clang/lib/Analysis/FlowSensitive/DataflowAnalysisContext.cpp index 42cc6d4..37bcc8b 100644 --- a/clang/lib/Analysis/FlowSensitive/DataflowAnalysisContext.cpp +++ b/clang/lib/Analysis/FlowSensitive/DataflowAnalysisContext.cpp @@ -15,7 +15,6 @@ #include "clang/Analysis/FlowSensitive/DataflowAnalysisContext.h" #include "clang/AST/ExprCXX.h" #include "clang/Analysis/FlowSensitive/DebugSupport.h" -#include "clang/Analysis/FlowSensitive/Formula.h" #include "clang/Analysis/FlowSensitive/Logger.h" #include "clang/Analysis/FlowSensitive/Value.h" #include "llvm/ADT/SetOperations.h" @@ -24,12 +23,9 @@ #include "llvm/Support/Debug.h" #include "llvm/Support/FileSystem.h" #include "llvm/Support/Path.h" -#include "llvm/Support/raw_ostream.h" #include <cassert> #include <memory> -#include <string> #include <utility> -#include <vector> static llvm::cl::opt<std::string> DataflowLog( "dataflow-log", llvm::cl::Hidden, llvm::cl::ValueOptional, @@ -133,10 +129,7 @@ Solver::Result DataflowAnalysisContext::querySolver(llvm::SetVector<BoolValue *> Constraints) { Constraints.insert(&arena().makeLiteral(true)); Constraints.insert(&arena().makeNot(arena().makeLiteral(false))); - std::vector<const Formula *> Formulas; - for (const BoolValue *Constraint : Constraints) - Formulas.push_back(&arena().getFormula(*Constraint)); - return S->solve(Formulas); + return S->solve(Constraints.getArrayRef()); } bool DataflowAnalysisContext::flowConditionImplies(AtomicBoolValue &Token, @@ -198,21 +191,15 @@ void DataflowAnalysisContext::addTransitiveFlowConditionConstraints( void DataflowAnalysisContext::dumpFlowCondition(AtomicBoolValue &Token, llvm::raw_ostream &OS) { - // TODO: accumulate formulas directly instead llvm::SetVector<BoolValue *> Constraints; Constraints.insert(&Token); llvm::DenseSet<AtomicBoolValue *> VisitedTokens; addTransitiveFlowConditionConstraints(Token, Constraints, VisitedTokens); - // TODO: have formulas know about true/false directly instead - Atom True = arena().getFormula(arena().makeLiteral(true)).getAtom(); - Atom False = arena().getFormula(arena().makeLiteral(false)).getAtom(); - Formula::AtomNames Names = {{False, "false"}, {True, "true"}}; - - for (const auto *Constraint : Constraints) { - arena().getFormula(*Constraint).print(OS, &Names); - OS << "\n"; - } + llvm::DenseMap<const AtomicBoolValue *, std::string> AtomNames = { + {&arena().makeLiteral(false), "False"}, + {&arena().makeLiteral(true), "True"}}; + OS << debugString(Constraints.getArrayRef(), AtomNames); } const ControlFlowContext * |