@@ -493,7 +493,7 @@ void jl_dump_native_impl(void *native_code,
493
493
PM.add (createBitcodeWriterPass (unopt_bc_OS));
494
494
if (bc_fname || obj_fname || asm_fname) {
495
495
addOptimizationPasses (&PM, jl_options.opt_level , true , true );
496
- addMachinePasses (&PM, TM.get ());
496
+ addMachinePasses (&PM, TM.get (), jl_options. opt_level );
497
497
}
498
498
if (bc_fname)
499
499
PM.add (createBitcodeWriterPass (bc_OS));
@@ -589,11 +589,12 @@ void addTargetPasses(legacy::PassManagerBase *PM, TargetMachine *TM)
589
589
}
590
590
591
591
592
- void addMachinePasses (legacy::PassManagerBase *PM, TargetMachine *TM)
592
+ void addMachinePasses (legacy::PassManagerBase *PM, TargetMachine *TM, int optlevel )
593
593
{
594
594
// TODO: don't do this on CPUs that natively support Float16
595
595
PM->add (createDemoteFloat16Pass ());
596
- PM->add (createGVNPass ());
596
+ if (optlevel > 1 )
597
+ PM->add (createGVNPass ());
597
598
}
598
599
599
600
@@ -823,7 +824,7 @@ class JuliaPipeline : public Pass {
823
824
TPMAdapter Adapter (TPM);
824
825
addTargetPasses (&Adapter, jl_TargetMachine);
825
826
addOptimizationPasses (&Adapter, OptLevel);
826
- addMachinePasses (&Adapter, jl_TargetMachine);
827
+ addMachinePasses (&Adapter, jl_TargetMachine, OptLevel );
827
828
}
828
829
JuliaPipeline () : Pass(PT_PassManager, ID) {}
829
830
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
861
862
PM = new legacy::PassManager ();
862
863
addTargetPasses (PM, jl_TargetMachine);
863
864
addOptimizationPasses (PM, jl_options.opt_level );
864
- addMachinePasses (PM, jl_TargetMachine);
865
+ addMachinePasses (PM, jl_TargetMachine, jl_options. opt_level );
865
866
}
866
867
867
868
// get the source code for this function
0 commit comments