| 514 | } |
| 515 | #else |
| 516 | static void OptimizeModuleWithLegacyPassManager(llvm::Module& module, |
| 517 | llvm::TargetIRAnalysis target_analysis) { |
| 518 | std::unique_ptr<llvm::legacy::PassManager> pass_manager( |
| 519 | new llvm::legacy::PassManager()); |
| 520 | |
| 521 | pass_manager->add( |
| 522 | llvm::createTargetTransformInfoWrapperPass(std::move(target_analysis))); |
| 523 | pass_manager->add(llvm::createFunctionInliningPass()); |
| 524 | pass_manager->add(llvm::createInstructionCombiningPass()); |
| 525 | pass_manager->add(llvm::createPromoteMemoryToRegisterPass()); |
| 526 | pass_manager->add(llvm::createGVNPass()); |
| 527 | pass_manager->add(llvm::createNewGVNPass()); |
| 528 | pass_manager->add(llvm::createCFGSimplificationPass()); |
| 529 | pass_manager->add(llvm::createLoopVectorizePass()); |
| 530 | pass_manager->add(llvm::createSLPVectorizerPass()); |
| 531 | pass_manager->add(llvm::createGlobalOptimizerPass()); |
| 532 | |
| 533 | // run the optimiser |
| 534 | llvm::PassManagerBuilder pass_builder; |
| 535 | pass_builder.OptLevel = 3; |
| 536 | pass_builder.populateModulePassManager(*pass_manager); |
| 537 | pass_manager->run(module); |
| 538 | } |
| 539 | #endif |
| 540 | |
| 541 | // Optimise and compile the module. |