[llvm] 0fdb25c - [AMDGPU] Disable garbage collection passes

Stanislav Mekhanoshin via llvm-commits llvm-commits at lists.llvm.org
Wed Jul 7 16:03:30 PDT 2021


Author: Stanislav Mekhanoshin
Date: 2021-07-07T15:47:57-07:00
New Revision: 0fdb25cd954c5aaf86259e713f03d119ab9f2700

URL: https://github.com/llvm/llvm-project/commit/0fdb25cd954c5aaf86259e713f03d119ab9f2700
DIFF: https://github.com/llvm/llvm-project/commit/0fdb25cd954c5aaf86259e713f03d119ab9f2700.diff

LOG: [AMDGPU] Disable garbage collection passes

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

Added: 
    

Modified: 
    llvm/include/llvm/CodeGen/Passes.h
    llvm/lib/CodeGen/CodeGen.cpp
    llvm/lib/CodeGen/GCRootLowering.cpp
    llvm/lib/CodeGen/ShadowStackGCLowering.cpp
    llvm/lib/CodeGen/TargetPassConfig.cpp
    llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
    llvm/test/CodeGen/AMDGPU/llc-pipeline.ll

Removed: 
    


################################################################################
diff  --git a/llvm/include/llvm/CodeGen/Passes.h b/llvm/include/llvm/CodeGen/Passes.h
index d0fe1a264b74..76667eac051d 100644
--- a/llvm/include/llvm/CodeGen/Passes.h
+++ b/llvm/include/llvm/CodeGen/Passes.h
@@ -270,11 +270,19 @@ namespace llvm {
   /// operations.
   FunctionPass *createGCLoweringPass();
 
+  /// GCLowering Pass - Used by gc.root to perform its default lowering
+  /// operations.
+  extern char &GCLoweringID;
+
   /// ShadowStackGCLowering - Implements the custom lowering mechanism
   /// used by the shadow stack GC.  Only runs on functions which opt in to
   /// the shadow stack collector.
   FunctionPass *createShadowStackGCLoweringPass();
 
+  /// ShadowStackGCLowering - Implements the custom lowering mechanism
+  /// used by the shadow stack GC.
+  extern char &ShadowStackGCLoweringID;
+
   /// GCMachineCodeAnalysis - Target-independent pass to mark safe points
   /// in machine code. Must be added very late during code generation, just
   /// prior to output, and importantly after all CFG transformations (such as

diff  --git a/llvm/lib/CodeGen/CodeGen.cpp b/llvm/lib/CodeGen/CodeGen.cpp
index d2400d0371e3..708325298aae 100644
--- a/llvm/lib/CodeGen/CodeGen.cpp
+++ b/llvm/lib/CodeGen/CodeGen.cpp
@@ -99,6 +99,7 @@ void llvm::initializeCodeGen(PassRegistry &Registry) {
   initializeRegisterCoalescerPass(Registry);
   initializeRenameIndependentSubregsPass(Registry);
   initializeSafeStackLegacyPassPass(Registry);
+  initializeShadowStackGCLoweringPass(Registry);
   initializeShrinkWrapPass(Registry);
   initializeSjLjEHPreparePass(Registry);
   initializeSlotIndexesPass(Registry);

diff  --git a/llvm/lib/CodeGen/GCRootLowering.cpp b/llvm/lib/CodeGen/GCRootLowering.cpp
index faf0fb7f09a7..58269e172c57 100644
--- a/llvm/lib/CodeGen/GCRootLowering.cpp
+++ b/llvm/lib/CodeGen/GCRootLowering.cpp
@@ -85,6 +85,7 @@ INITIALIZE_PASS_END(LowerIntrinsics, "gc-lowering", "GC Lowering", false, false)
 FunctionPass *llvm::createGCLoweringPass() { return new LowerIntrinsics(); }
 
 char LowerIntrinsics::ID = 0;
+char &llvm::GCLoweringID = LowerIntrinsics::ID;
 
 LowerIntrinsics::LowerIntrinsics() : FunctionPass(ID) {
   initializeLowerIntrinsicsPass(*PassRegistry::getPassRegistry());

diff  --git a/llvm/lib/CodeGen/ShadowStackGCLowering.cpp b/llvm/lib/CodeGen/ShadowStackGCLowering.cpp
index 36752ef86526..86b559fd6413 100644
--- a/llvm/lib/CodeGen/ShadowStackGCLowering.cpp
+++ b/llvm/lib/CodeGen/ShadowStackGCLowering.cpp
@@ -89,6 +89,7 @@ class ShadowStackGCLowering : public FunctionPass {
 } // end anonymous namespace
 
 char ShadowStackGCLowering::ID = 0;
+char &llvm::ShadowStackGCLoweringID = ShadowStackGCLowering::ID;
 
 INITIALIZE_PASS_BEGIN(ShadowStackGCLowering, DEBUG_TYPE,
                       "Shadow Stack GC Lowering", false, false)

diff  --git a/llvm/lib/CodeGen/TargetPassConfig.cpp b/llvm/lib/CodeGen/TargetPassConfig.cpp
index 2d8ecd5025fa..2a4f6bfd98b0 100644
--- a/llvm/lib/CodeGen/TargetPassConfig.cpp
+++ b/llvm/lib/CodeGen/TargetPassConfig.cpp
@@ -857,8 +857,8 @@ void TargetPassConfig::addIRPasses() {
 
   // Run GC lowering passes for builtin collectors
   // TODO: add a pass insertion point here
-  addPass(createGCLoweringPass());
-  addPass(createShadowStackGCLoweringPass());
+  addPass(&GCLoweringID);
+  addPass(&ShadowStackGCLoweringID);
   addPass(createLowerConstantIntrinsicsPass());
 
   // Make sure that no unreachable blocks are instruction selected.

diff  --git a/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp b/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
index f611c893cde4..7f74204229c2 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
@@ -763,6 +763,9 @@ class AMDGPUPassConfig : public TargetPassConfig {
     // anything.
     disablePass(&StackMapLivenessID);
     disablePass(&FuncletLayoutID);
+    // Garbage collection is not supported.
+    disablePass(&GCLoweringID);
+    disablePass(&ShadowStackGCLoweringID);
   }
 
   AMDGPUTargetMachine &getAMDGPUTargetMachine() const {

diff  --git a/llvm/test/CodeGen/AMDGPU/llc-pipeline.ll b/llvm/test/CodeGen/AMDGPU/llc-pipeline.ll
index 4d4230732765..80d05799281a 100644
--- a/llvm/test/CodeGen/AMDGPU/llc-pipeline.ll
+++ b/llvm/test/CodeGen/AMDGPU/llc-pipeline.ll
@@ -22,8 +22,8 @@
 ; GCN-O0-NEXT: Target Transform Information
 ; GCN-O0-NEXT: Assumption Cache Tracker
 ; GCN-O0-NEXT: Profile summary info
-; GCN-O0-NEXT: Create Garbage Collector Module Metadata
 ; GCN-O0-NEXT: Argument Register Usage Information Storage
+; GCN-O0-NEXT: Create Garbage Collector Module Metadata
 ; GCN-O0-NEXT: Register Usage Information Storage
 ; GCN-O0-NEXT: Machine Branch Probability Analysis
 ; GCN-O0-NEXT:   ModulePass Manager
@@ -43,9 +43,7 @@
 ; GCN-O0-NEXT:     Lower OpenCL enqueued blocks
 ; GCN-O0-NEXT:     Lower uses of LDS variables from non-kernel functions
 ; GCN-O0-NEXT:     FunctionPass Manager
-; GCN-O0-NEXT:     Expand Atomic instructions
-; GCN-O0-NEXT:       Lower Garbage Collection Instructions
-; GCN-O0-NEXT:       Shadow Stack GC Lowering
+; GCN-O0-NEXT:       Expand Atomic instructions
 ; GCN-O0-NEXT:       Lower constant intrinsics
 ; GCN-O0-NEXT:       Remove unreachable blocks from the CFG
 ; GCN-O0-NEXT:       Expand vector predication intrinsics
@@ -165,8 +163,8 @@
 ; GCN-O1-NEXT: External Alias Analysis
 ; GCN-O1-NEXT: Type-Based Alias Analysis
 ; GCN-O1-NEXT: Scoped NoAlias Alias Analysis
-; GCN-O1-NEXT: Create Garbage Collector Module Metadata
 ; GCN-O1-NEXT: Argument Register Usage Information Storage
+; GCN-O1-NEXT: Create Garbage Collector Module Metadata
 ; GCN-O1-NEXT: Machine Branch Probability Analysis
 ; GCN-O1-NEXT: Register Usage Information Storage
 ; GCN-O1-NEXT:   ModulePass Manager
@@ -209,8 +207,6 @@
 ; GCN-O1-NEXT:       Lazy Branch Probability Analysis
 ; GCN-O1-NEXT:       Lazy Block Frequency Analysis
 ; GCN-O1-NEXT:       Expand memcmp() to load/stores
-; GCN-O1-NEXT:       Lower Garbage Collection Instructions
-; GCN-O1-NEXT:       Shadow Stack GC Lowering
 ; GCN-O1-NEXT:       Lower constant intrinsics
 ; GCN-O1-NEXT:       Remove unreachable blocks from the CFG
 ; GCN-O1-NEXT:       Natural Loop Information
@@ -413,8 +409,8 @@
 ; GCN-O1-OPTS-NEXT: External Alias Analysis
 ; GCN-O1-OPTS-NEXT: Type-Based Alias Analysis
 ; GCN-O1-OPTS-NEXT: Scoped NoAlias Alias Analysis
-; GCN-O1-OPTS-NEXT: Create Garbage Collector Module Metadata
 ; GCN-O1-OPTS-NEXT: Argument Register Usage Information Storage
+; GCN-O1-OPTS-NEXT: Create Garbage Collector Module Metadata
 ; GCN-O1-OPTS-NEXT: Machine Branch Probability Analysis
 ; GCN-O1-OPTS-NEXT: Register Usage Information Storage
 ; GCN-O1-OPTS-NEXT:   ModulePass Manager
@@ -475,8 +471,6 @@
 ; GCN-O1-OPTS-NEXT:       Lazy Branch Probability Analysis
 ; GCN-O1-OPTS-NEXT:       Lazy Block Frequency Analysis
 ; GCN-O1-OPTS-NEXT:       Expand memcmp() to load/stores
-; GCN-O1-OPTS-NEXT:       Lower Garbage Collection Instructions
-; GCN-O1-OPTS-NEXT:       Shadow Stack GC Lowering
 ; GCN-O1-OPTS-NEXT:       Lower constant intrinsics
 ; GCN-O1-OPTS-NEXT:       Remove unreachable blocks from the CFG
 ; GCN-O1-OPTS-NEXT:       Natural Loop Information
@@ -694,8 +688,8 @@
 ; GCN-O2-NEXT: External Alias Analysis
 ; GCN-O2-NEXT: Type-Based Alias Analysis
 ; GCN-O2-NEXT: Scoped NoAlias Alias Analysis
-; GCN-O2-NEXT: Create Garbage Collector Module Metadata
 ; GCN-O2-NEXT: Argument Register Usage Information Storage
+; GCN-O2-NEXT: Create Garbage Collector Module Metadata
 ; GCN-O2-NEXT: Machine Branch Probability Analysis
 ; GCN-O2-NEXT: Register Usage Information Storage
 ; GCN-O2-NEXT:   ModulePass Manager
@@ -756,8 +750,6 @@
 ; GCN-O2-NEXT:       Lazy Branch Probability Analysis
 ; GCN-O2-NEXT:       Lazy Block Frequency Analysis
 ; GCN-O2-NEXT:       Expand memcmp() to load/stores
-; GCN-O2-NEXT:       Lower Garbage Collection Instructions
-; GCN-O2-NEXT:       Shadow Stack GC Lowering
 ; GCN-O2-NEXT:       Lower constant intrinsics
 ; GCN-O2-NEXT:       Remove unreachable blocks from the CFG
 ; GCN-O2-NEXT:       Natural Loop Information
@@ -976,8 +968,8 @@
 ; GCN-O3-NEXT: External Alias Analysis
 ; GCN-O3-NEXT: Type-Based Alias Analysis
 ; GCN-O3-NEXT: Scoped NoAlias Alias Analysis
-; GCN-O3-NEXT: Create Garbage Collector Module Metadata
 ; GCN-O3-NEXT: Argument Register Usage Information Storage
+; GCN-O3-NEXT: Create Garbage Collector Module Metadata
 ; GCN-O3-NEXT: Machine Branch Probability Analysis
 ; GCN-O3-NEXT: Register Usage Information Storage
 ; GCN-O3-NEXT:   ModulePass Manager
@@ -1043,8 +1035,6 @@
 ; GCN-O3-NEXT:       Lazy Branch Probability Analysis
 ; GCN-O3-NEXT:       Lazy Block Frequency Analysis
 ; GCN-O3-NEXT:       Expand memcmp() to load/stores
-; GCN-O3-NEXT:       Lower Garbage Collection Instructions
-; GCN-O3-NEXT:       Shadow Stack GC Lowering
 ; GCN-O3-NEXT:       Lower constant intrinsics
 ; GCN-O3-NEXT:       Remove unreachable blocks from the CFG
 ; GCN-O3-NEXT:       Natural Loop Information


        


More information about the llvm-commits mailing list