[llvm] [IPO] Prevent removal of some convergent attr (PR #134863)
    Matt Arsenault via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Tue Apr  8 08:42:16 PDT 2025
    
    
  
================
@@ -0,0 +1,46 @@
+; RUN: opt %s -passes=adce -S | FileCheck %s
+
+; CHECK:      Function Attrs: convergent
+; CHECK-NEXT: define i32 @foo(i32 %a) #0 {
+define i32 @foo(i32 %a) #0 {
+entry:
+; CHECK-NOT: %0 = call token @llvm.experimental.convergence.entry()
+  %0 = call token @llvm.experimental.convergence.entry()
+  ret i32 %a
+}
+
+; CHECK:      Function Attrs: convergent
+; CHECK-NEXT: define void @bar() #0 {
+define void @bar() #0 {
+entry:
+; CHECK-NOT: %0 = call token @llvm.experimental.convergence.entry()
+  %0 = call token @llvm.experimental.convergence.anchor()
+  ret void
+}
+
+; CHECK:      Function Attrs: convergent
+; CHECK-NEXT: define void @baz() #0 {
+define void @baz() #0 {
+entry:
+; CHECK-NOT: %0 = call token @llvm.experimental.convergence.entry()
+  %0 = call token @llvm.experimental.convergence.entry()
+  br label %header
+
+header:
+; CHECK-NOT: %1 = call token @llvm.experimental.convergence.loop() [ "convergencectrl"(token %0) ]
----------------
arsenm wrote:
Not checks are fragile and should be very vague. Just generate full checks 
https://github.com/llvm/llvm-project/pull/134863
    
    
More information about the llvm-commits
mailing list