[llvm] ba3d7a5 - [NewPM] Wire up gc-empty-basic-blocks into pipeline (#194179)

via llvm-commits llvm-commits at lists.llvm.org
Mon Apr 27 06:02:41 PDT 2026


Author: Aiden Grossman
Date: 2026-04-27T06:02:36-07:00
New Revision: ba3d7a59016b0ecae7eb5249bbcf289e3e189c55

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

LOG: [NewPM] Wire up gc-empty-basic-blocks into pipeline (#194179)

Same setup as the old pipeline and resolves a testing TODO now that we
have a full pipeline for x86.

Added: 
    

Modified: 
    llvm/include/llvm/Passes/CodeGenPassBuilder.h
    llvm/test/CodeGen/X86/gc-empty-basic-blocks.ll

Removed: 
    llvm/test/CodeGen/X86/gc-empty-basic-blocks.mir


################################################################################
diff  --git a/llvm/include/llvm/Passes/CodeGenPassBuilder.h b/llvm/include/llvm/Passes/CodeGenPassBuilder.h
index 0e0568610ebd8..7b17130751fa3 100644
--- a/llvm/include/llvm/Passes/CodeGenPassBuilder.h
+++ b/llvm/include/llvm/Passes/CodeGenPassBuilder.h
@@ -36,6 +36,7 @@
 #include "llvm/CodeGen/FEntryInserter.h"
 #include "llvm/CodeGen/FinalizeISel.h"
 #include "llvm/CodeGen/FixupStatepointCallerSaved.h"
+#include "llvm/CodeGen/GCEmptyBasicBlocks.h"
 #include "llvm/CodeGen/GCMetadata.h"
 #include "llvm/CodeGen/GlobalMerge.h"
 #include "llvm/CodeGen/GlobalMergeFunctions.h"
@@ -1076,6 +1077,9 @@ Error CodeGenPassBuilder<Derived, TargetMachineT>::addMachinePasses(
     }
   }
 
+  if (Opt.EnableGCEmptyBlocks)
+    addMachineFunctionPass(GCEmptyBasicBlocksPass(), PMW);
+
   derived().addPostBBSections(PMW);
 
   addMachineFunctionPass(StackFrameLayoutAnalysisPass(), PMW);

diff  --git a/llvm/test/CodeGen/X86/gc-empty-basic-blocks.ll b/llvm/test/CodeGen/X86/gc-empty-basic-blocks.ll
index 3a0c5f10980ee..1ea408233ccc2 100644
--- a/llvm/test/CodeGen/X86/gc-empty-basic-blocks.ll
+++ b/llvm/test/CodeGen/X86/gc-empty-basic-blocks.ll
@@ -1,6 +1,7 @@
 ;; This test verifies that -enable-gc-empty-basic-blocks removes regular empty
 ;; blocks but does not remove empty blocks which have their address taken.
 ; RUN: llc < %s -mtriple=x86_64 -O0 -enable-gc-empty-basic-blocks | FileCheck %s
+; RUN: llc < %s -mtriple=x86_64 -O0 -enable-gc-empty-basic-blocks -enable-new-pm | FileCheck %s
 
 ;; This function has a regular empty block.
 define void @foo(i1 zeroext %0) nounwind {

diff  --git a/llvm/test/CodeGen/X86/gc-empty-basic-blocks.mir b/llvm/test/CodeGen/X86/gc-empty-basic-blocks.mir
deleted file mode 100644
index 72bdfbe565bbd..0000000000000
--- a/llvm/test/CodeGen/X86/gc-empty-basic-blocks.mir
+++ /dev/null
@@ -1,51 +0,0 @@
-# TODO(boomanaiden154): Remove this and use gc-empty-basic-blocks.ll directly.
-# This should be trivial once we have an asm printer setup for X86 and at least
-# a pipeline skeleton.
-# RUN: llc %s -mtriple=x86_64 -passes=gc-empty-basic-blocks -o - | FileCheck %s
---- |
-  define void @foo(i1 zeroext %0) #0 {
-    br i1 %0, label %2, label %empty_block
-  
-  2:                                                ; preds = %1
-    %3 = call i32 @baz()
-    br label %4
-  
-  empty_block:                                      ; preds = %1
-    unreachable
-  
-  4:                                                ; preds = %2
-    ret void
-  }
-
-  declare i32 @baz()
-  
-  attributes #0 = { nounwind }
-...
----
-name:            foo
-alignment:       16
-body:             |
-  bb.0:
-    successors: %bb.1(0x40000000), %bb.2(0x40000000)
-    liveins: $edi
-  
-    frame-setup PUSH64r undef $rax, implicit-def $rsp, implicit $rsp
-    $al = MOV8rr $dil, implicit killed $edi
-    TEST8ri killed renamable $al, 1, implicit-def $eflags
-    JCC_1 %bb.1, 5, implicit killed $eflags
-    JMP_1 %bb.2
-  
-  bb.1:
-    successors: %bb.3(0x80000000)
-  
-    CALL64pcrel32 target-flags(x86-plt) @baz, csr_64, implicit $rsp, implicit $ssp, implicit-def $eax
-    JMP_1 %bb.3
-  
-  bb.2.empty_block:
-    successors:
-  
-  bb.3:
-    $rax = frame-destroy POP64r implicit-def $rsp, implicit $rsp
-    RET64
-...
-# CHECK-NOT: bb.2.empty_block:


        


More information about the llvm-commits mailing list