//===- bolt/Passes/ADRRelaxationPass.cpp ----------------------------------===// // // 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 // //===----------------------------------------------------------------------===// // // This file implements the ADRRelaxationPass class. // //===----------------------------------------------------------------------===// #include "bolt/Passes/ADRRelaxationPass.h" #include "bolt/Core/ParallelUtilities.h" #include "bolt/Utils/CommandLineOpts.h" #include <iterator> usingnamespacellvm; namespace opts { extern cl::OptionCategory BoltCategory; static cl::opt<bool> AdrPassOpt("adr-relaxation", cl::desc("Replace ARM non-local ADR instructions with ADRP"), cl::init(true), cl::cat(BoltCategory), cl::ReallyHidden); } // namespace opts namespace llvm { namespace bolt { // We don't exit directly from runOnFunction since it would call ThreadPool // destructor which might result in internal assert if we're not finished // creating async jobs on the moment of exit. So we're finishing all parallel // jobs and checking the exit flag after it. static bool PassFailed = …; void ADRRelaxationPass::runOnFunction(BinaryFunction &BF) { … } Error ADRRelaxationPass::runOnFunctions(BinaryContext &BC) { … } } // end namespace bolt } // end namespace llvm