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) llvm::PassPluginLibraryInfo get##Ext##PluginInfo(); |
#define | HANDLE_EXTENSION(Ext) get##Ext##PluginInfo().RegisterPassBuilderCallbacks(PB); |
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]
◆ HANDLE_EXTENSION [2/2]
| #define HANDLE_EXTENSION | ( | | Ext | ) | get##Ext##PluginInfo().RegisterPassBuilderCallbacks(PB); | | ------------------------- | - | | --- | - | ----------------------------------------------------------------------------------------------------------------------------- |
◆ LTOBitcodeEmbedding
Enumerator |
---|
DoNotEmbed |
EmbedOptimized |
EmbedPostMergePreOptimized |
Definition at line 56 of file LTOBackend.cpp.
◆ codegen()
Definition at line 396 of file LTOBackend.cpp.
References llvm::legacy::PassManager::add(), llvm::sys::path::append(), llvm::lto::Config::CGFileType, codegen(), llvm::sys::fs::create_directories(), llvm::createImmutableModuleSummaryIndexWrapperPass(), llvm::lto::Config::DwoDir, EmbedBitcode, llvm::embedBitcodeInModule(), llvm::SmallVectorBase< Size_T >::empty(), isEmptyModule(), llvm::Mod, llvm::sys::fs::OF_None, llvm::lto::Config::PreCodeGenModuleHook, llvm::lto::Config::PreCodeGenPassesHook, llvm::report_fatal_error(), llvm::legacy::PassManager::run(), llvm::lto::Config::SplitDwarfFile, llvm::lto::Config::SplitDwarfOutput, and llvm::Expected< T >::takeError().
Referenced by llvm::lto::backend(), codegen(), splitCodeGen(), and llvm::lto::thinBackend().
◆ createTargetMachine()
Definition at line 204 of file LTOBackend.cpp.
References A, 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::PICLevel::NotPIC, llvm::lto::Config::Options, llvm::Reloc::PIC_, llvm::lto::Config::RelocModel, and llvm::Reloc::Static.
◆ dropDeadSymbols()
◆ initAndLookupTarget()
◆ isEmptyModule()
◆ RegisterPassPlugins()
static void RegisterPassPlugins ( ArrayRef< std::string > PassPlugins, PassBuilder & PB ) | static |
---|
◆ reportOpenError()
◆ runNewPMPasses()
Definition at line 236 of file LTOBackend.cpp.
References llvm::lto::Config::AAPipeline, llvm::lto::Config::AddFSDiscriminator, llvm::PassManager< IRUnitT, AnalysisManagerT, ExtraArgTs >::addPass(), llvm::PassBuilder::buildLTODefaultPipeline(), llvm::PassBuilder::buildThinLTODefaultPipeline(), CGAM, llvm::PassBuilder::crossRegisterProxies(), 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::PassInstrumentationCallbacks::getPassNameForClassName(), llvm::vfs::getRealFileSystem(), llvm::PGOOptions::IRUse, LAM, llvm_unreachable, MAM, llvm::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, OS, llvm::outs(), llvm::PassBuilder::parseAAPipeline(), llvm::PassBuilder::parsePassPipeline(), 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, llvm::PassBuilder::registerCGSCCAnalyses(), llvm::PassBuilder::registerFunctionAnalyses(), llvm::PassBuilder::registerLoopAnalyses(), llvm::PassBuilder::registerModuleAnalyses(), llvm::AnalysisManager< IRUnitT, ExtraArgTs >::registerPass(), RegisterPassPlugins(), llvm::report_fatal_error(), llvm::PassManager< IRUnitT, AnalysisManagerT, ExtraArgTs >::run(), llvm::lto::Config::RunCSIRInstr, llvm::lto::Config::SampleProfile, llvm::PGOOptions::SampleUse, llvm::toString(), and llvm::lto::Config::VerifyEach.
Referenced by llvm::lto::opt().
◆ splitCodeGen()
Definition at line 460 of file LTOBackend.cpp.
References llvm::ThreadPoolInterface::async(), llvm::CallingConv::C, codegen(), createTargetMachine(), llvm::Expected< T >::get(), llvm::heavyweight_hardware_concurrency(), llvm::Mod, llvm::parseBitcodeFile(), llvm::report_fatal_error(), llvm::SplitModule(), llvm::SmallString< InternalLen >::str(), 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 |
---|