[llvm] [CodeGen][GC] Skip function without GC in `GCLoweringPass` (PR #84421)

via llvm-commits llvm-commits at lists.llvm.org
Thu Mar 7 22:22:21 PST 2024


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-backend-x86

Author: None (paperchalice)

<details>
<summary>Changes</summary>



---
Full diff: https://github.com/llvm/llvm-project/pull/84421.diff


2 Files Affected:

- (modified) llvm/lib/CodeGen/GCRootLowering.cpp (+3) 
- (modified) llvm/test/CodeGen/X86/GC/alloc_loop.ll (+7) 


``````````diff
diff --git a/llvm/lib/CodeGen/GCRootLowering.cpp b/llvm/lib/CodeGen/GCRootLowering.cpp
index 894ab9a0486a7b..0d82f2bab8960b 100644
--- a/llvm/lib/CodeGen/GCRootLowering.cpp
+++ b/llvm/lib/CodeGen/GCRootLowering.cpp
@@ -81,6 +81,9 @@ class GCMachineCodeAnalysis : public MachineFunctionPass {
 
 PreservedAnalyses GCLoweringPass::run(Function &F,
                                       FunctionAnalysisManager &FAM) {
+  if (!F.hasGC())
+    return PreservedAnalyses::all();
+
   auto &Info = FAM.getResult<GCFunctionAnalysis>(F);
 
   bool Changed = DoLowering(F, Info.getStrategy());
diff --git a/llvm/test/CodeGen/X86/GC/alloc_loop.ll b/llvm/test/CodeGen/X86/GC/alloc_loop.ll
index 4b7230fee9c5a9..4e87735e830ffe 100644
--- a/llvm/test/CodeGen/X86/GC/alloc_loop.ll
+++ b/llvm/test/CodeGen/X86/GC/alloc_loop.ll
@@ -1,4 +1,5 @@
 ; RUN: llc -mtriple=x86_64 < %s
+; RUN: opt -S -passes='require<collector-metadata>,function(gc-lowering)' < %s | FileCheck %s
 
 declare ptr @llvm_gc_allocate(i32)
 declare void @llvm_gc_initialize(i32)
@@ -31,6 +32,8 @@ entry:
 	%B.1 = load ptr, ptr %B
 	%A.1 = load ptr, ptr %A
 	call void @llvm.gcwrite(ptr %A.1, ptr %B.upgrd.1, ptr %B.1)
+	; CHECK-NOT: call void @llvm.gcwrite(ptr %A.1, ptr %B.upgrd.1, ptr %B.1)
+	; CHECK: store ptr %A.1, ptr %B.1, align 8
 	
 	br label %AllocLoop
 
@@ -47,4 +50,8 @@ Exit:
 	ret i32 0
 }
 
+define void @no_gc() {
+	ret void
+}
+
 declare void @__main()

``````````

</details>


https://github.com/llvm/llvm-project/pull/84421


More information about the llvm-commits mailing list