LLVM: lib/LTO/LTOBackend.cpp File Reference (original) (raw)
Go to the source code of this file.
| Namespaces | |
|---|---|
| namespace | llvm |
| This is an optimization pass for GlobalISel generic memory operations. |
| Macros | |
|---|---|
| #define | DEBUG_TYPE "lto-backend" |
| #define | HANDLE_EXTENSION(Ext) |
| #define | HANDLE_EXTENSION(Ext) |
| Enumerations | |
|---|---|
| enum class | LTOBitcodeEmbedding { DoNotEmbed = 0 , EmbedOptimized = 1 , EmbedPostMergePreOptimized = 2 } |
| Variables | |
|---|---|
| static cl::opt< LTOBitcodeEmbedding > | EmbedBitcode ("lto-embed-bitcode", cl::init(LTOBitcodeEmbedding::DoNotEmbed), cl::values(clEnumValN(LTOBitcodeEmbedding::DoNotEmbed, "none", "Do not embed"), clEnumValN(LTOBitcodeEmbedding::EmbedOptimized, "optimized", "Embed after all optimization passes"), clEnumValN(LTOBitcodeEmbedding::EmbedPostMergePreOptimized, "post-merge-pre-opt", "Embed post merge, but before optimizations")), cl::desc("Embed LLVM bitcode in object files produced by LTO")) |
| static cl::opt< bool > | ThinLTOAssumeMerged ("thinlto-assume-merged", cl::init(false), cl::desc("Assume the input has already undergone ThinLTO function " "importing and the other pre-optimization pipeline changes.")) |
| cl::opt< bool > | llvm::NoPGOWarnMismatch |
◆ DEBUG_TYPE
#define DEBUG_TYPE "lto-backend"
◆ HANDLE_EXTENSION [1/2]
| #define HANDLE_EXTENSION | ( | Ext | ) |
|---|
Value:
decltype(auto) get(const PointerIntPair< PointerTy, IntBits, IntType, PtrTraits, Info > &Pair)
Information about the plugin required to load its passes.
Definition at line 181 of file LTOBackend.cpp.
◆ HANDLE_EXTENSION [2/2]
| #define HANDLE_EXTENSION | ( | Ext | ) |
|---|
Value:
get##Ext##PluginInfo().RegisterPassBuilderCallbacks(PB);
PassBuilder PB(Machine, PassOpts->PTO, std::nullopt, &PIC)
Definition at line 181 of file LTOBackend.cpp.
◆ LTOBitcodeEmbedding
| enum class LTOBitcodeEmbedding | strong |
|---|
| Enumerator |
|---|
| DoNotEmbed |
| EmbedOptimized |
| EmbedPostMergePreOptimized |
Definition at line 55 of file LTOBackend.cpp.
◆ codegen()
Definition at line 400 of file LTOBackend.cpp.
References llvm::MCTargetOptions::ABIName, llvm::legacy::PassManager::add(), llvm::TargetMachine::addPassesToEmitFile(), llvm::sys::path::append(), llvm::lto::Config::CGFileType, llvm::sys::fs::create_directories(), llvm::createImmutableModuleSummaryIndexWrapperPass(), llvm::lto::Config::DwoDir, llvm::TargetOptions::EABIVersion, EmbedBitcode, llvm::embedBitcodeInModule(), EmbedOptimized, llvm::SmallVectorTemplateCommon< T, typename >::empty(), llvm::TargetOptions::ExceptionModel, llvm::TargetOptions::FloatABIType, isEmptyModule(), llvm::TargetOptions::MCOptions, Mod, llvm::TargetOptions::ObjectFilenameForDebug, llvm::sys::fs::OF_None, llvm::TargetMachine::Options, llvm::lto::Config::PreCodeGenModuleHook, llvm::lto::Config::PreCodeGenPassesHook, llvm::report_fatal_error(), llvm::legacy::PassManager::run(), llvm::lto::Config::SplitDwarfFile, llvm::MCTargetOptions::SplitDwarfFile, llvm::lto::Config::SplitDwarfOutput, llvm::Expected< T >::takeError(), and llvm::TargetOptions::VecLib.
◆ createTargetMachine()
Definition at line 203 of file LTOBackend.cpp.
References A(), llvm::MCTargetOptions::ABIName, llvm::SubtargetFeatures::AddFeature(), assert(), llvm::lto::Config::CGOptLevel, llvm::lto::Config::CodeModel, llvm::lto::Config::CPU, llvm::Target::createTargetMachine(), llvm::SubtargetFeatures::getDefaultSubtargetFeatures(), llvm::SubtargetFeatures::getString(), llvm::lto::Config::MAttrs, llvm::TargetOptions::MCOptions, llvm::PICLevel::NotPIC, llvm::lto::Config::Options, llvm::Reloc::PIC_, llvm::lto::Config::RelocModel, and llvm::Reloc::Static.
◆ dropDeadSymbols()
◆ initAndLookupTarget()
◆ isEmptyModule()
◆ RegisterPassPlugins()
◆ reportOpenError()
◆ runNewPMPasses()
Definition at line 240 of file LTOBackend.cpp.
References llvm::lto::Config::AAPipeline, llvm::lto::Config::AddFSDiscriminator, llvm::PassManager< IRUnitT, AnalysisManagerT, ExtraArgTs >::addPass(), CGAM, llvm::PGOOptions::CSIRInstr, llvm::lto::Config::CSIRProfile, llvm::PGOOptions::CSIRUse, llvm::lto::Config::DebugPassManager, llvm::PGOOptions::Default, llvm::lto::Config::DisableVerify, FAM, llvm::lto::Config::Freestanding, llvm::TargetMachine::getTargetTriple(), llvm::PGOOptions::IRUse, LAM, llvm_unreachable, MAM, Mod, llvm::PGOOptions::NoAction, llvm::PGOOptions::NoCSAction, llvm::NoPGOWarnMismatch, llvm::OptimizationLevel::O0, llvm::OptimizationLevel::O1, llvm::OptimizationLevel::O2, llvm::OptimizationLevel::O3, llvm::lto::Config::OptPipeline, llvm::outs(), PassName, llvm::lto::Config::PassPlugins, PB(), llvm::lto::Config::PGOWarnMismatch, PIC, llvm::PassManager< IRUnitT, AnalysisManagerT, ExtraArgTs >::printPipeline(), llvm::PrintPipelinePasses, llvm::lto::Config::ProfileRemapping, llvm::lto::Config::PTO, RegisterPassPlugins(), llvm::report_fatal_error(), llvm::PassManager< IRUnitT, AnalysisManagerT, ExtraArgTs >::run(), llvm::lto::Config::RunCSIRInstr, llvm::lto::Config::SampleProfile, llvm::PGOOptions::SampleUse, llvm::TargetMachine::setPGOOption(), llvm::toString(), and llvm::lto::Config::VerifyEach.
Referenced by llvm::lto::opt().
◆ splitCodeGen()
Definition at line 479 of file LTOBackend.cpp.
References llvm::ThreadPoolInterface::async(), llvm::CallingConv::C, createTargetMachine(), llvm::Expected< T >::get(), llvm::TargetMachine::getTarget(), llvm::heavyweight_hardware_concurrency(), Mod, llvm::parseBitcodeFile(), llvm::report_fatal_error(), llvm::SplitModule(), llvm::TargetMachine::splitModule(), llvm::SmallString< InternalLen >::str(), T, ThreadCount, llvm::SingleThreadExecutor::wait(), and llvm::WriteBitcodeToFile().
Referenced by llvm::lto::backend().
◆ EmbedBitcode
| cl::opt< LTOBitcodeEmbedding > EmbedBitcode("lto-embed-bitcode", cl::init(LTOBitcodeEmbedding::DoNotEmbed), cl::values(clEnumValN(LTOBitcodeEmbedding::DoNotEmbed, "none", "Do not embed"), clEnumValN(LTOBitcodeEmbedding::EmbedOptimized, "optimized", "Embed after all optimization passes"), clEnumValN(LTOBitcodeEmbedding::EmbedPostMergePreOptimized, "post-merge-pre-opt", "Embed post merge, but before optimizations")), cl::desc("Embed LLVM bitcode in object files produced by LTO")) ( "lto-embed-bitcode" , cl::init(LTOBitcodeEmbedding::DoNotEmbed) , cl::values(clEnumValN(LTOBitcodeEmbedding::DoNotEmbed, "none", "Do not embed"), clEnumValN(LTOBitcodeEmbedding::EmbedOptimized, "optimized", "Embed after all optimization passes"), clEnumValN(LTOBitcodeEmbedding::EmbedPostMergePreOptimized, "post-merge-pre-opt", "Embed post merge, but before optimizations")) , cl::desc("Embed LLVM bitcode in object files produced by LTO") ) | static |
|---|
◆ ThinLTOAssumeMerged
| cl::opt< bool > ThinLTOAssumeMerged("thinlto-assume-merged", cl::init(false), cl::desc("Assume the input has already undergone ThinLTO function " "importing and the other pre-optimization pipeline changes.")) ( "thinlto-assume-merged" , cl::init(false) , cl::desc("Assume the input has already undergone ThinLTO function " "importing and the other pre-optimization pipeline changes.") ) | static |
|---|