Skip to content
This repository was archived by the owner on May 9, 2024. It is now read-only.

Commit dc6dc45

Browse files
committed
Use new Pass Manager for NVVMReflect pass
1 parent e28494c commit dc6dc45

File tree

2 files changed

+7
-18
lines changed

2 files changed

+7
-18
lines changed

omniscidb/QueryEngine/Compiler/Backend.cpp

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
#include <llvm/IR/LegacyPassManager.h>
2828
#include <llvm/IR/Verifier.h>
2929
#include <llvm/IRReader/IRReader.h>
30+
#include <llvm/Passes/PassBuilder.h>
3031
#include <llvm/Support/TargetSelect.h>
3132
#include <llvm/Transforms/IPO/PassManagerBuilder.h>
3233

@@ -592,7 +593,6 @@ auto insert_emtpy_abort_replacement(llvm::Module* m) {
592593

593594
void CUDABackend::linkModuleWithLibdevice(const std::unique_ptr<llvm::Module>& ext,
594595
llvm::Module& llvm_module,
595-
llvm::PassManagerBuilder& pass_manager_builder,
596596
const GPUTarget& gpu_target,
597597
llvm::TargetMachine* nvptx_target_machine) {
598598
#ifdef HAVE_CUDA
@@ -641,17 +641,13 @@ void CUDABackend::linkModuleWithLibdevice(const std::unique_ptr<llvm::Module>& e
641641
fn.addFnAttr("nvptx-f32ftz", "true");
642642
}
643643

644-
// add nvvm reflect pass replacing any NVVM conditionals with constants
645-
nvptx_target_machine->adjustPassManager(pass_manager_builder);
646-
llvm::legacy::FunctionPassManager FPM(&llvm_module);
647-
pass_manager_builder.populateFunctionPassManager(FPM);
644+
llvm::PassBuilder pass_builder(nvptx_target_machine);
645+
llvm::ModuleAnalysisManager module_analysis_manager;
646+
pass_builder.registerModuleAnalyses(module_analysis_manager);
647+
llvm::ModulePassManager module_pass_manager;
648+
CHECK(!pass_builder.parsePassPipeline(module_pass_manager, "NVVMReflect"));
648649

649-
// Run the NVVMReflectPass here rather than inside optimize_ir
650-
FPM.doInitialization();
651-
for (auto& F : llvm_module) {
652-
FPM.run(F);
653-
}
654-
FPM.doFinalization();
650+
module_pass_manager.run(llvm_module, module_analysis_manager);
655651
#endif
656652
}
657653

@@ -688,18 +684,12 @@ std::shared_ptr<CudaCompilationContext> CUDABackend::generateNativeGPUCode(
688684
`gpu_target.cgen_state->module_` appears to be the same as `llvm_module`
689685
*/
690686
CHECK(gpu_target.cgen_state->module_ == llvm_module);
691-
llvm::PassManagerBuilder pass_manager_builder = llvm::PassManagerBuilder();
692-
693-
pass_manager_builder.OptLevel = 0;
694-
llvm::legacy::PassManager module_pass_manager;
695-
pass_manager_builder.populateModulePassManager(module_pass_manager);
696687

697688
bool requires_libdevice = check_module_requires_libdevice(llvm_module);
698689

699690
if (requires_libdevice) {
700691
linkModuleWithLibdevice(exts.at(ExtModuleKinds::rt_libdevice_module),
701692
*llvm_module,
702-
pass_manager_builder,
703693
gpu_target,
704694
nvptx_target_machine);
705695
}

omniscidb/QueryEngine/Compiler/Backend.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,6 @@ class CUDABackend : public Backend {
173173

174174
static void linkModuleWithLibdevice(const std::unique_ptr<llvm::Module>& ext,
175175
llvm::Module& module,
176-
llvm::PassManagerBuilder& pass_manager_builder,
177176
const GPUTarget& gpu_target,
178177
llvm::TargetMachine* nvptx_target_machine);
179178

0 commit comments

Comments
 (0)