Update prebuilt Clang to r365631c1 from Android.
The version we had was segfaulting.
Bug: 132420445
Change-Id: Icb45a6fe0b4e2166f7895e669df1157cec9fb4e0
diff --git a/linux-x64/clang/include/llvm/IR/OptBisect.h b/linux-x64/clang/include/llvm/IR/OptBisect.h
index 8d51b68..1b2b0bd 100644
--- a/linux-x64/clang/include/llvm/IR/OptBisect.h
+++ b/linux-x64/clang/include/llvm/IR/OptBisect.h
@@ -19,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.
@@ -32,12 +26,14 @@
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
@@ -59,23 +55,19 @@
/// 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);