diff options
Diffstat (limited to 'include/llvm/IR/OptBisect.h')
-rw-r--r-- | include/llvm/IR/OptBisect.h | 43 |
1 files changed, 17 insertions, 26 deletions
diff --git a/include/llvm/IR/OptBisect.h b/include/llvm/IR/OptBisect.h index aa24c94c0130..1b2b0bd7acaa 100644 --- a/include/llvm/IR/OptBisect.h +++ b/include/llvm/IR/OptBisect.h @@ -1,9 +1,8 @@ //===- llvm/IR/OptBisect.h - LLVM Bisect support ----------------*- C++ -*-===// // -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. +// 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 // //===----------------------------------------------------------------------===// /// @@ -20,12 +19,6 @@ namespace llvm { class Pass; -class Module; -class Function; -class BasicBlock; -class Region; -class Loop; -class CallGraphSCC; /// Extensions to this class implement mechanisms to disable passes and /// individual optimizations at compile time. @@ -33,12 +26,14 @@ class OptPassGate { public: virtual ~OptPassGate() = default; - virtual bool shouldRunPass(const Pass *P, const Module &U) { return true; } - virtual bool shouldRunPass(const Pass *P, const Function &U) {return true; } - virtual bool shouldRunPass(const Pass *P, const BasicBlock &U) { return true; } - virtual bool shouldRunPass(const Pass *P, const Region &U) { return true; } - virtual bool shouldRunPass(const Pass *P, const Loop &U) { return true; } - virtual bool shouldRunPass(const Pass *P, const CallGraphSCC &U) { return true; } + /// IRDescription is a textual description of the IR unit the pass is running + /// over. + virtual bool shouldRunPass(const Pass *P, StringRef IRDescription) { + return true; + } + + /// isEnabled should return true before calling shouldRunPass + virtual bool isEnabled() const { return false; } }; /// This class implements a mechanism to disable passes and individual @@ -60,23 +55,19 @@ public: /// Checks the bisect limit to determine if the specified pass should run. /// - /// These functions immediately return true if bisection is disabled. If the - /// bisect limit is set to -1, the functions print a message describing + /// If the bisect limit is set to -1, the function prints a message describing /// the pass and the bisect number assigned to it and return true. Otherwise, - /// the functions print a message with the bisect number assigned to the + /// the function prints a message with the bisect number assigned to the /// pass and indicating whether or not the pass will be run and return true if /// the bisect limit has not yet been exceeded or false if it has. /// - /// Most passes should not call these routines directly. Instead, they are + /// Most passes should not call this routine directly. Instead, they are /// called through helper routines provided by the pass base classes. For /// instance, function passes should call FunctionPass::skipFunction(). - bool shouldRunPass(const Pass *P, const Module &U) override; - bool shouldRunPass(const Pass *P, const Function &U) override; - bool shouldRunPass(const Pass *P, const BasicBlock &U) override; - bool shouldRunPass(const Pass *P, const Region &U) override; - bool shouldRunPass(const Pass *P, const Loop &U) override; - bool shouldRunPass(const Pass *P, const CallGraphSCC &U) override; + bool shouldRunPass(const Pass *P, StringRef IRDescription) override; + /// isEnabled should return true before calling shouldRunPass + bool isEnabled() const override { return BisectEnabled; } private: bool checkPass(const StringRef PassName, const StringRef TargetDesc); |