Renamed pass functions in gen/optimizer.cpp by prepending legacy. This is allow the corresponding functions for the new pass manager to be use the old names. (#4115)

Co-authored-by: james <jamesragray@bitbucket.org>
This commit is contained in:
jamesragray 2022-09-07 01:43:36 +02:00 committed by GitHub
parent 148e55feee
commit 0bf5d96284
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -149,7 +149,7 @@ llvm::CodeGenOpt::Level codeGenOptLevel() {
return llvm::CodeGenOpt::Default; return llvm::CodeGenOpt::Default;
} }
static inline void addPass(PassManagerBase &pm, Pass *pass) { static inline void legacyAddPass(PassManagerBase &pm, Pass *pass) {
pm.add(pass); pm.add(pass);
if (verifyEach) { if (verifyEach) {
@ -157,35 +157,35 @@ static inline void addPass(PassManagerBase &pm, Pass *pass) {
} }
} }
static void addStripExternalsPass(const PassManagerBuilder &builder, static void legacyAddStripExternalsPass(const PassManagerBuilder &builder,
PassManagerBase &pm) { PassManagerBase &pm) {
if (builder.OptLevel >= 1) { if (builder.OptLevel >= 1) {
addPass(pm, createStripExternalsPass()); legacyAddPass(pm, createStripExternalsPass());
addPass(pm, createGlobalDCEPass()); legacyAddPass(pm, createGlobalDCEPass());
} }
} }
static void addSimplifyDRuntimeCallsPass(const PassManagerBuilder &builder, static void legacyAddSimplifyDRuntimeCallsPass(const PassManagerBuilder &builder,
PassManagerBase &pm) { PassManagerBase &pm) {
if (builder.OptLevel >= 2 && builder.SizeLevel == 0) { if (builder.OptLevel >= 2 && builder.SizeLevel == 0) {
addPass(pm, createSimplifyDRuntimeCalls()); legacyAddPass(pm, createSimplifyDRuntimeCalls());
} }
} }
static void addGarbageCollect2StackPass(const PassManagerBuilder &builder, static void legacyAddGarbageCollect2StackPass(const PassManagerBuilder &builder,
PassManagerBase &pm) { PassManagerBase &pm) {
if (builder.OptLevel >= 2 && builder.SizeLevel == 0) { if (builder.OptLevel >= 2 && builder.SizeLevel == 0) {
addPass(pm, createGarbageCollect2Stack()); legacyAddPass(pm, createGarbageCollect2Stack());
} }
} }
static void addAddressSanitizerPasses(const PassManagerBuilder &Builder, static void legacyAddAddressSanitizerPasses(const PassManagerBuilder &Builder,
PassManagerBase &PM) { PassManagerBase &PM) {
PM.add(createAddressSanitizerFunctionPass()); PM.add(createAddressSanitizerFunctionPass());
PM.add(createModuleAddressSanitizerLegacyPassPass()); PM.add(createModuleAddressSanitizerLegacyPassPass());
} }
static void addMemorySanitizerPass(const PassManagerBuilder &Builder, static void legacyAddMemorySanitizerPass(const PassManagerBuilder &Builder,
PassManagerBase &PM) { PassManagerBase &PM) {
int trackOrigins = fSanitizeMemoryTrackOrigins; int trackOrigins = fSanitizeMemoryTrackOrigins;
bool recover = false; bool recover = false;
@ -206,12 +206,12 @@ static void addMemorySanitizerPass(const PassManagerBuilder &Builder,
} }
} }
static void addThreadSanitizerPass(const PassManagerBuilder &Builder, static void legacyAddThreadSanitizerPass(const PassManagerBuilder &Builder,
PassManagerBase &PM) { PassManagerBase &PM) {
PM.add(createThreadSanitizerLegacyPassPass()); PM.add(createThreadSanitizerLegacyPassPass());
} }
static void addSanitizerCoveragePass(const PassManagerBuilder &Builder, static void legacyAddSanitizerCoveragePass(const PassManagerBuilder &Builder,
legacy::PassManagerBase &PM) { legacy::PassManagerBase &PM) {
#if LDC_LLVM_VER >= 1000 #if LDC_LLVM_VER >= 1000
PM.add(createModuleSanitizerCoverageLegacyPassPass( PM.add(createModuleSanitizerCoverageLegacyPassPass(
@ -223,7 +223,7 @@ static void addSanitizerCoveragePass(const PassManagerBuilder &Builder,
} }
// Adds PGO instrumentation generation and use passes. // Adds PGO instrumentation generation and use passes.
static void addPGOPasses(PassManagerBuilder &builder, static void legacyAddPGOPasses(PassManagerBuilder &builder,
legacy::PassManagerBase &mpm, unsigned optLevel) { legacy::PassManagerBase &mpm, unsigned optLevel) {
if (opts::isInstrumentingForASTBasedPGO()) { if (opts::isInstrumentingForASTBasedPGO()) {
InstrProfOptions options; InstrProfOptions options;
@ -252,7 +252,7 @@ static void addPGOPasses(PassManagerBuilder &builder,
* The selection mirrors Clang behavior and is based on LLVM's * The selection mirrors Clang behavior and is based on LLVM's
* PassManagerBuilder. * PassManagerBuilder.
*/ */
static void addOptimizationPasses(legacy::PassManagerBase &mpm, static void legacyAddOptimizationPasses(legacy::PassManagerBase &mpm,
legacy::FunctionPassManager &fpm, legacy::FunctionPassManager &fpm,
unsigned optLevel, unsigned sizeLevel) { unsigned optLevel, unsigned sizeLevel) {
if (!noVerify) { if (!noVerify) {
@ -291,49 +291,49 @@ static void addOptimizationPasses(legacy::PassManagerBase &mpm,
if (opts::isSanitizerEnabled(opts::AddressSanitizer)) { if (opts::isSanitizerEnabled(opts::AddressSanitizer)) {
builder.addExtension(PassManagerBuilder::EP_OptimizerLast, builder.addExtension(PassManagerBuilder::EP_OptimizerLast,
addAddressSanitizerPasses); legacyAddAddressSanitizerPasses);
builder.addExtension(PassManagerBuilder::EP_EnabledOnOptLevel0, builder.addExtension(PassManagerBuilder::EP_EnabledOnOptLevel0,
addAddressSanitizerPasses); legacyAddAddressSanitizerPasses);
} }
if (opts::isSanitizerEnabled(opts::MemorySanitizer)) { if (opts::isSanitizerEnabled(opts::MemorySanitizer)) {
builder.addExtension(PassManagerBuilder::EP_OptimizerLast, builder.addExtension(PassManagerBuilder::EP_OptimizerLast,
addMemorySanitizerPass); legacyAddMemorySanitizerPass);
builder.addExtension(PassManagerBuilder::EP_EnabledOnOptLevel0, builder.addExtension(PassManagerBuilder::EP_EnabledOnOptLevel0,
addMemorySanitizerPass); legacyAddMemorySanitizerPass);
} }
if (opts::isSanitizerEnabled(opts::ThreadSanitizer)) { if (opts::isSanitizerEnabled(opts::ThreadSanitizer)) {
builder.addExtension(PassManagerBuilder::EP_OptimizerLast, builder.addExtension(PassManagerBuilder::EP_OptimizerLast,
addThreadSanitizerPass); legacyAddThreadSanitizerPass);
builder.addExtension(PassManagerBuilder::EP_EnabledOnOptLevel0, builder.addExtension(PassManagerBuilder::EP_EnabledOnOptLevel0,
addThreadSanitizerPass); legacyAddThreadSanitizerPass);
} }
if (opts::isSanitizerEnabled(opts::CoverageSanitizer)) { if (opts::isSanitizerEnabled(opts::CoverageSanitizer)) {
builder.addExtension(PassManagerBuilder::EP_OptimizerLast, builder.addExtension(PassManagerBuilder::EP_OptimizerLast,
addSanitizerCoveragePass); legacyAddSanitizerCoveragePass);
builder.addExtension(PassManagerBuilder::EP_EnabledOnOptLevel0, builder.addExtension(PassManagerBuilder::EP_EnabledOnOptLevel0,
addSanitizerCoveragePass); legacyAddSanitizerCoveragePass);
} }
if (!disableLangSpecificPasses) { if (!disableLangSpecificPasses) {
if (!disableSimplifyDruntimeCalls) { if (!disableSimplifyDruntimeCalls) {
builder.addExtension(PassManagerBuilder::EP_LoopOptimizerEnd, builder.addExtension(PassManagerBuilder::EP_LoopOptimizerEnd,
addSimplifyDRuntimeCallsPass); legacyAddSimplifyDRuntimeCallsPass);
} }
if (!disableGCToStack) { if (!disableGCToStack) {
builder.addExtension(PassManagerBuilder::EP_LoopOptimizerEnd, builder.addExtension(PassManagerBuilder::EP_LoopOptimizerEnd,
addGarbageCollect2StackPass); legacyAddGarbageCollect2StackPass);
} }
} }
// EP_OptimizerLast does not exist in LLVM 3.0, add it manually below. // EP_OptimizerLast does not exist in LLVM 3.0, add it manually below.
builder.addExtension(PassManagerBuilder::EP_OptimizerLast, builder.addExtension(PassManagerBuilder::EP_OptimizerLast,
addStripExternalsPass); legacyAddStripExternalsPass);
addPGOPasses(builder, mpm, optLevel); legacyAddPGOPasses(builder, mpm, optLevel);
builder.populateFunctionPassManager(fpm); builder.populateFunctionPassManager(fpm);
builder.populateModulePassManager(mpm); builder.populateModulePassManager(mpm);
@ -389,7 +389,7 @@ bool ldc_optimize_module(llvm::Module *M) {
mpm.add(createStripSymbolsPass(true)); mpm.add(createStripSymbolsPass(true));
} }
addOptimizationPasses(mpm, fpm, optLevel(), sizeLevel()); legacyAddOptimizationPasses(mpm, fpm, optLevel(), sizeLevel());
if (global.params.dllimport != DLLImport::none) { if (global.params.dllimport != DLLImport::none) {
mpm.add(createDLLImportRelocationPass()); mpm.add(createDLLImportRelocationPass());