Skip to content

Commit f4f92c5

Browse files
authored
disable extra GVN pass in addMachinePasses at low opt levels (#43030)
1 parent 6779a9c commit f4f92c5

File tree

3 files changed

+8
-7
lines changed

3 files changed

+8
-7
lines changed

src/aotcompile.cpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -493,7 +493,7 @@ void jl_dump_native_impl(void *native_code,
493493
PM.add(createBitcodeWriterPass(unopt_bc_OS));
494494
if (bc_fname || obj_fname || asm_fname) {
495495
addOptimizationPasses(&PM, jl_options.opt_level, true, true);
496-
addMachinePasses(&PM, TM.get());
496+
addMachinePasses(&PM, TM.get(), jl_options.opt_level);
497497
}
498498
if (bc_fname)
499499
PM.add(createBitcodeWriterPass(bc_OS));
@@ -589,11 +589,12 @@ void addTargetPasses(legacy::PassManagerBase *PM, TargetMachine *TM)
589589
}
590590

591591

592-
void addMachinePasses(legacy::PassManagerBase *PM, TargetMachine *TM)
592+
void addMachinePasses(legacy::PassManagerBase *PM, TargetMachine *TM, int optlevel)
593593
{
594594
// TODO: don't do this on CPUs that natively support Float16
595595
PM->add(createDemoteFloat16Pass());
596-
PM->add(createGVNPass());
596+
if (optlevel > 1)
597+
PM->add(createGVNPass());
597598
}
598599

599600

@@ -823,7 +824,7 @@ class JuliaPipeline : public Pass {
823824
TPMAdapter Adapter(TPM);
824825
addTargetPasses(&Adapter, jl_TargetMachine);
825826
addOptimizationPasses(&Adapter, OptLevel);
826-
addMachinePasses(&Adapter, jl_TargetMachine);
827+
addMachinePasses(&Adapter, jl_TargetMachine, OptLevel);
827828
}
828829
JuliaPipeline() : Pass(PT_PassManager, ID) {}
829830
Pass *createPrinterPass(raw_ostream &O, const std::string &Banner) const override {
@@ -861,7 +862,7 @@ void *jl_get_llvmf_defn_impl(jl_method_instance_t *mi, size_t world, char getwra
861862
PM = new legacy::PassManager();
862863
addTargetPasses(PM, jl_TargetMachine);
863864
addOptimizationPasses(PM, jl_options.opt_level);
864-
addMachinePasses(PM, jl_TargetMachine);
865+
addMachinePasses(PM, jl_TargetMachine, jl_options.opt_level);
865866
}
866867

867868
// get the source code for this function

src/jitlayers.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -537,7 +537,7 @@ static void addPassesForOptLevel(legacy::PassManager &PM, TargetMachine &TM, raw
537537
{
538538
addTargetPasses(&PM, &TM);
539539
addOptimizationPasses(&PM, optlevel);
540-
addMachinePasses(&PM, &TM);
540+
addMachinePasses(&PM, &TM, optlevel);
541541
if (TM.addPassesToEmitMC(PM, Ctx, ObjStream))
542542
llvm_unreachable("Target does not support MC emission.");
543543
}

src/jitlayers.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ extern bool imaging_mode;
2323

2424
void addTargetPasses(legacy::PassManagerBase *PM, TargetMachine *TM);
2525
void addOptimizationPasses(legacy::PassManagerBase *PM, int opt_level, bool lower_intrinsics=true, bool dump_native=false);
26-
void addMachinePasses(legacy::PassManagerBase *PM, TargetMachine *TM);
26+
void addMachinePasses(legacy::PassManagerBase *PM, TargetMachine *TM, int optlevel);
2727
void jl_finalize_module(std::unique_ptr<Module> m);
2828
void jl_merge_module(Module *dest, std::unique_ptr<Module> src);
2929
Module *jl_create_llvm_module(StringRef name);

0 commit comments

Comments
 (0)