diff --git a/clang/include/clang/Analysis/FlowSensitive/DataflowAnalysis.h b/clang/include/clang/Analysis/FlowSensitive/DataflowAnalysis.h --- a/clang/include/clang/Analysis/FlowSensitive/DataflowAnalysis.h +++ b/clang/include/clang/Analysis/FlowSensitive/DataflowAnalysis.h @@ -20,7 +20,6 @@ #include #include "clang/AST/ASTContext.h" -#include "clang/AST/Stmt.h" #include "clang/Analysis/CFG.h" #include "clang/Analysis/FlowSensitive/ControlFlowContext.h" #include "clang/Analysis/FlowSensitive/DataflowEnvironment.h" @@ -33,17 +32,6 @@ namespace clang { namespace dataflow { -template > -struct HasTransferFor : std::false_type {}; - -template -struct HasTransferFor< - AnalysisT, LatticeT, InputT, - std::void_t().transfer( - std::declval(), std::declval(), - std::declval()))>> : std::true_type {}; - /// Base class template for dataflow analyses built on a single lattice type. /// /// Requirements: @@ -110,17 +98,7 @@ void transferTypeErased(const CFGElement *Element, TypeErasedLattice &E, Environment &Env) final { Lattice &L = llvm::any_cast(E.Value); - if constexpr (HasTransferFor::value) { - static_cast(this)->transfer(Element, L, Env); - } - - // FIXME: Remove after users have been updated to implement `transfer` on - // `CFGElement`. - if constexpr (HasTransferFor::value) { - if (auto Stmt = Element->getAs()) { - static_cast(this)->transfer(Stmt->getStmt(), L, Env); - } - } + static_cast(this)->transfer(Element, L, Env); } private: