//===- bolt/Passes/ReachingDefOrUse.h ---------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #ifndef BOLT_PASSES_REACHINGDEFORUSE_H #define BOLT_PASSES_REACHINGDEFORUSE_H #include "bolt/Passes/DataflowAnalysis.h" #include "bolt/Passes/RegAnalysis.h" #include "llvm/Support/CommandLine.h" #include <optional> namespace opts { extern llvm::cl::opt<bool> TimeOpts; } namespace llvm { namespace bolt { /// If \p Def is true, this computes a forward dataflow equation to /// propagate reaching definitions. /// If false, this computes a backward dataflow equation propagating /// uses to their definitions. template <bool Def = false> class ReachingDefOrUse : public InstrsDataflowAnalysis<ReachingDefOrUse<Def>, !Def> { … }; } // end namespace bolt } // end namespace llvm #endif