diff --git a/bolt/include/bolt/Passes/ADRRelaxationPass.h b/bolt/include/bolt/Passes/ADRRelaxationPass.h index 1d35a335c025..b9f92dec7f03 100644 --- a/bolt/include/bolt/Passes/ADRRelaxationPass.h +++ b/bolt/include/bolt/Passes/ADRRelaxationPass.h @@ -25,7 +25,8 @@ namespace bolt { class ADRRelaxationPass : public BinaryFunctionPass { public: - explicit ADRRelaxationPass() : BinaryFunctionPass(false) {} + explicit ADRRelaxationPass(const cl::opt &PrintPass) + : BinaryFunctionPass(PrintPass) {} const char *getName() const override { return "adr-relaxation"; } diff --git a/bolt/lib/Rewrite/BinaryPassManager.cpp b/bolt/lib/Rewrite/BinaryPassManager.cpp index b09060418334..6f074d5d1191 100644 --- a/bolt/lib/Rewrite/BinaryPassManager.cpp +++ b/bolt/lib/Rewrite/BinaryPassManager.cpp @@ -126,6 +126,11 @@ static cl::opt PrintJTFootprintReduction( cl::desc("print function after jt-footprint-reduction pass"), cl::Hidden, cl::cat(BoltOptCategory)); +static cl::opt + PrintAdrRelaxation("print-adr-relaxation", + cl::desc("print functions after ADR Relaxation pass"), + cl::Hidden, cl::cat(BoltOptCategory)); + static cl::opt PrintLongJmp("print-longjmp", cl::desc("print functions after longjmp pass"), cl::Hidden, @@ -493,7 +498,8 @@ Error BinaryFunctionPassManager::runAllPasses(BinaryContext &BC) { Manager.registerPass(std::make_unique()); if (BC.isAArch64()) { - Manager.registerPass(std::make_unique()); + Manager.registerPass( + std::make_unique(PrintAdrRelaxation)); // Tighten branches according to offset differences between branch and // targets. No extra instructions after this pass, otherwise we may have