[NewPM][AMDGPU] Run InternalizePass when -amdgpu-internalize-symbols
authorArthur Eubanks <aeubanks@google.com>
Tue, 29 Dec 2020 04:32:58 +0000 (20:32 -0800)
committerArthur Eubanks <aeubanks@google.com>
Mon, 4 Jan 2021 19:34:40 +0000 (11:34 -0800)
The legacy PM doesn't run EP_ModuleOptimizerEarly on -O0, so skip
running it here when given O0.

Reviewed By: arsenm

Differential Revision: https://reviews.llvm.org/D93886

llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
llvm/test/CodeGen/AMDGPU/internalize.ll

index 7a09c91e62d75303d63c239142ebbbef5ecc2fc8..6c730be97b9dda862f9f929b8c649ac7ffab2ad0 100644 (file)
@@ -51,6 +51,8 @@
 #include "llvm/Target/TargetLoweringObjectFile.h"
 #include "llvm/Transforms/IPO.h"
 #include "llvm/Transforms/IPO/AlwaysInliner.h"
+#include "llvm/Transforms/IPO/GlobalDCE.h"
+#include "llvm/Transforms/IPO/Internalize.h"
 #include "llvm/Transforms/IPO/PassManagerBuilder.h"
 #include "llvm/Transforms/Scalar.h"
 #include "llvm/Transforms/Scalar/GVN.h"
@@ -525,6 +527,17 @@ void AMDGPUTargetMachine::registerPassBuilderCallbacks(PassBuilder &PB,
     PM.addPass(createModuleToFunctionPassAdaptor(std::move(FPM)));
   });
 
+  PB.registerPipelineEarlySimplificationEPCallback(
+      [](ModulePassManager &PM, PassBuilder::OptimizationLevel Level) {
+        if (Level == PassBuilder::OptimizationLevel::O0)
+          return;
+
+        if (InternalizeSymbols) {
+          PM.addPass(InternalizePass(mustPreserveGV));
+          PM.addPass(GlobalDCEPass());
+        }
+      });
+
   PB.registerCGSCCOptimizerLateEPCallback(
       [this, DebugPassManager](CGSCCPassManager &PM,
                                PassBuilder::OptimizationLevel Level) {
index 138b1c9cc6057c8bf2dd3336cdf2e24a6c361668..8bdd3d450ccf333d32c3c63f2da9a6172ed4514f 100644 (file)
@@ -1,5 +1,7 @@
-; RUN: opt -O1 -S -mtriple=amdgcn-unknown-amdhsa -amdgpu-internalize-symbols < %s | FileCheck -check-prefix=ALL -check-prefix=OPT %s
 ; RUN: opt -O0 -S -mtriple=amdgcn-unknown-amdhsa -amdgpu-internalize-symbols < %s | FileCheck -check-prefix=ALL -check-prefix=OPTNONE %s
+; RUN: opt -passes='default<O0>' -S -mtriple=amdgcn-unknown-amdhsa -amdgpu-internalize-symbols < %s | FileCheck -check-prefix=ALL -check-prefix=OPTNONE %s
+; RUN: opt -O1 -S -mtriple=amdgcn-unknown-amdhsa -amdgpu-internalize-symbols < %s | FileCheck -check-prefix=ALL -check-prefix=OPT %s
+; RUN: opt -passes='default<O1>' -S -mtriple=amdgcn-unknown-amdhsa -amdgpu-internalize-symbols < %s | FileCheck -check-prefix=ALL -check-prefix=OPT %s
 
 ; OPT-NOT: gvar_unused
 ; OPTNONE: gvar_unused