[PATCH] D109106: [ISEL][BitTestBlock] pre-commit test for D109103

Nick Desaulniers via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Sep 1 16:09:53 PDT 2021


nickdesaulniers created this revision.
nickdesaulniers added reviewers: lebedev.ri, craig.topper, hans.
Herald added a subscriber: pengfei.
nickdesaulniers requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.

Upload a test that shows ISEL taking a SwitchInst that has an
unreachable BB for a default target being lowered to an unconditional
jump off the end of a function.

Link: https://bugs.llvm.org/show_bug.cgi?id=50080
Link: https://github.com/ClangBuiltLinux/linux/issues/679
Link: https://github.com/ClangBuiltLinux/linux/issues/1440


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D109106

Files:
  llvm/test/CodeGen/X86/SwitchLowering.ll


Index: llvm/test/CodeGen/X86/SwitchLowering.ll
===================================================================
--- llvm/test/CodeGen/X86/SwitchLowering.ll
+++ llvm/test/CodeGen/X86/SwitchLowering.ll
@@ -62,3 +62,46 @@
 
 declare void @foo(i8)
 
+define i32 @baz(i32 %0) {
+; CHECK-LABEL: baz:
+; CHECK:       # %bb.0:
+; CHECK-NEXT:    xorl %eax, %eax
+; CHECK-NEXT:    movl {{[0-9]+}}(%esp), %ecx
+; CHECK-NEXT:    movl $13056, %edx # imm = 0x3300
+; CHECK-NEXT:    btl %ecx, %edx
+; CHECK-NEXT:    jae .LBB1_1
+; CHECK-NEXT:  # %bb.3: # %return
+; CHECK-NEXT:    retl
+; CHECK-NEXT:  .LBB1_1:
+; CHECK-NEXT:    movl $48, %eax
+; CHECK-NEXT:    btl %ecx, %eax
+; CHECK-NEXT:    jae .LBB1_4
+; CHECK-NEXT:  # %bb.2: # %sw.epilog8
+; CHECK-NEXT:    movl $1, %eax
+; CHECK-NEXT:    retl
+; CHECK-NEXT:  .LBB1_4: # %if.then.unreachabledefault
+  switch i32 %0, label %if.then.unreachabledefault [
+    i32 4, label %sw.epilog8
+    i32 5, label %sw.epilog8
+    i32 8, label %sw.bb2
+    i32 9, label %sw.bb2
+    i32 12, label %sw.bb4
+    i32 13, label %sw.bb4
+  ]
+
+sw.bb2:
+  br label %return
+
+sw.bb4:
+  br label %return
+
+sw.epilog8:
+  br label %return
+
+if.then.unreachabledefault:
+  unreachable
+
+return:
+  %retval.0 = phi i32 [ 1, %sw.epilog8 ], [ 0, %sw.bb2 ], [ 0, %sw.bb4 ]
+  ret i32 %retval.0
+}


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D109106.370101.patch
Type: text/x-patch
Size: 1321 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210901/9ef1522d/attachment.bin>


More information about the llvm-commits mailing list