//===- GenericConvergenceVerifierImpl.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 // //===----------------------------------------------------------------------===// /// /// \file /// /// A verifier for the static rules of convergence control tokens that works /// with both LLVM IR and MIR. /// /// This template implementation resides in a separate file so that it does not /// get injected into every .cpp file that includes the generic header. /// /// DO NOT INCLUDE THIS FILE WHEN MERELY USING CYCLEINFO. /// /// This file should only be included by files that implement a /// specialization of the relevant templates. Currently these are: /// - llvm/lib/IR/Verifier.cpp /// - llvm/lib/CodeGen/MachineVerifier.cpp /// //===----------------------------------------------------------------------===// #ifndef LLVM_IR_GENERICCONVERGENCEVERIFIERIMPL_H #define LLVM_IR_GENERICCONVERGENCEVERIFIERIMPL_H #include "llvm/ADT/GenericConvergenceVerifier.h" #include "llvm/ADT/PostOrderIterator.h" #include "llvm/ADT/Twine.h" #include "llvm/IR/IntrinsicInst.h" #define Check(C, ...) … #define CheckOrNull(C, ...) … namespace llvm { template <class ContextT> void GenericConvergenceVerifier<ContextT>::clear() { … } template <class ContextT> void GenericConvergenceVerifier<ContextT>::visit(const BlockT &BB) { … } template <class ContextT> void GenericConvergenceVerifier<ContextT>::visit(const InstructionT &I) { … } template <class ContextT> void GenericConvergenceVerifier<ContextT>::reportFailure( const Twine &Message, ArrayRef<Printable> DumpedValues) { … } template <class ContextT> void GenericConvergenceVerifier<ContextT>::verify(const DominatorTreeT &DT) { … } } // end namespace llvm #endif // LLVM_IR_GENERICCONVERGENCEVERIFIERIMPL_H