[llvm] 507df68 - [NFC][SimplifyCFG] Revisit tail-merge-resume.ll test

Roman Lebedev via llvm-commits llvm-commits at lists.llvm.org
Thu Jun 24 10:36:19 PDT 2021


Author: Roman Lebedev
Date: 2021-06-24T20:31:49+03:00
New Revision: 507df686aff631da454173d2d54cbb12c6f9bcf7

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

LOG: [NFC][SimplifyCFG] Revisit tail-merge-resume.ll test

Add an already somewhat-common resume block

Added: 
    

Modified: 
    llvm/test/Transforms/SimplifyCFG/tail-merge-resume.ll

Removed: 
    


################################################################################
diff  --git a/llvm/test/Transforms/SimplifyCFG/tail-merge-resume.ll b/llvm/test/Transforms/SimplifyCFG/tail-merge-resume.ll
index e38937a58aeb..2268f4371ff0 100644
--- a/llvm/test/Transforms/SimplifyCFG/tail-merge-resume.ll
+++ b/llvm/test/Transforms/SimplifyCFG/tail-merge-resume.ll
@@ -3,65 +3,97 @@
 
 ; Test that we tail merge resume blocks and phi operands properly.
 
+declare void @maybe_throws()
 declare void @foo()
 declare void @bar()
 declare void @baz()
 declare void @qux()
 declare void @quux()
 declare void @quuz()
+declare void @common()
 
 define void @merge_simple(i1 %cond) personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
 ; CHECK-LABEL: @merge_simple(
-; CHECK-NEXT:    invoke void @foo()
+; CHECK-NEXT:    invoke void @maybe_throws()
 ; CHECK-NEXT:    to label [[INVOKE_CONT:%.*]] unwind label [[LPAD:%.*]]
 ; CHECK:       invoke.cont:
-; CHECK-NEXT:    invoke void @bar()
+; CHECK-NEXT:    invoke void @maybe_throws()
 ; CHECK-NEXT:    to label [[INVOKE_CONT2:%.*]] unwind label [[LPAD2:%.*]]
 ; CHECK:       invoke.cont2:
+; CHECK-NEXT:    invoke void @maybe_throws()
+; CHECK-NEXT:    to label [[INVOKE_CONT3:%.*]] unwind label [[LPAD3:%.*]]
+; CHECK:       invoke.cont3:
 ; CHECK-NEXT:    ret void
 ; CHECK:       lpad:
 ; CHECK-NEXT:    [[LP:%.*]] = landingpad { i8*, i32 }
 ; CHECK-NEXT:    cleanup
-; CHECK-NEXT:    call void @baz()
+; CHECK-NEXT:    call void @foo()
 ; CHECK-NEXT:    br i1 [[COND:%.*]], label [[RESUME0:%.*]], label [[RESUME1:%.*]]
 ; CHECK:       lpad2:
 ; CHECK-NEXT:    [[LP2:%.*]] = landingpad { i8*, i32 }
 ; CHECK-NEXT:    cleanup
-; CHECK-NEXT:    call void @quuz()
-; CHECK-NEXT:    resume { i8*, i32 } [[LP2]]
+; CHECK-NEXT:    call void @bar()
+; CHECK-NEXT:    br label [[RESUME2:%.*]]
+; CHECK:       lpad3:
+; CHECK-NEXT:    [[LP3:%.*]] = landingpad { i8*, i32 }
+; CHECK-NEXT:    cleanup
+; CHECK-NEXT:    call void @baz()
+; CHECK-NEXT:    br label [[RESUME2]]
 ; CHECK:       resume0:
 ; CHECK-NEXT:    call void @qux()
+; CHECK-NEXT:    call void @common()
 ; CHECK-NEXT:    resume { i8*, i32 } [[LP]]
 ; CHECK:       resume1:
 ; CHECK-NEXT:    call void @quux()
+; CHECK-NEXT:    call void @common()
 ; CHECK-NEXT:    resume { i8*, i32 } [[LP]]
+; CHECK:       resume2:
+; CHECK-NEXT:    [[SEMICOMMON_LP:%.*]] = phi { i8*, i32 } [ [[LP2]], [[LPAD2]] ], [ [[LP3]], [[LPAD3]] ]
+; CHECK-NEXT:    call void @quuz()
+; CHECK-NEXT:    call void @common()
+; CHECK-NEXT:    resume { i8*, i32 } [[SEMICOMMON_LP]]
 ;
-  invoke void @foo() to label %invoke.cont unwind label %lpad
+  invoke void @maybe_throws() to label %invoke.cont unwind label %lpad
 
 invoke.cont:
-  invoke void @bar()to label %invoke.cont2 unwind label %lpad2
-  ret void
+  invoke void @maybe_throws() to label %invoke.cont2 unwind label %lpad2
 
 invoke.cont2:
+  invoke void @maybe_throws() to label %invoke.cont3 unwind label %lpad3
+
+invoke.cont3:
   ret void
 
 lpad:
   %lp = landingpad { i8*, i32 } cleanup
-  call void @baz()
+  call void @foo()
   br i1 %cond, label %resume0, label %resume1
 
 lpad2:
   %lp2 = landingpad { i8*, i32 } cleanup
-  call void @quuz()
-  resume { i8*, i32 } %lp2
+  call void @bar()
+  br label %resume2
+
+lpad3:
+  %lp3 = landingpad { i8*, i32 } cleanup
+  call void @baz()
+  br label %resume2
 
 resume0:
   call void @qux()
+  call void @common()
   resume { i8*, i32 } %lp
 
 resume1:
   call void @quux()
+  call void @common()
   resume { i8*, i32 } %lp
+
+resume2:
+  %semicommon.lp = phi { i8*, i32 } [ %lp2, %lpad2 ], [ %lp3, %lpad3 ]
+  call void @quuz()
+  call void @common()
+  resume { i8*, i32 } %semicommon.lp
 }
 
 declare dso_local i32 @__gxx_personality_v0(...)


        


More information about the llvm-commits mailing list