[llvm] 4b7f145 - [CVP] Add test for invalid use of undef range in urem transform (NFC)

Nikita Popov via llvm-commits llvm-commits at lists.llvm.org
Tue Dec 12 03:06:27 PST 2023


Author: Nikita Popov
Date: 2023-12-12T12:06:19+01:00
New Revision: 4b7f14573e32d0abd092f097d18e333267a6c2ea

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

LOG: [CVP] Add test for invalid use of undef range in urem transform (NFC)

Added: 
    

Modified: 
    llvm/test/Transforms/CorrelatedValuePropagation/urem.ll

Removed: 
    


################################################################################
diff  --git a/llvm/test/Transforms/CorrelatedValuePropagation/urem.ll b/llvm/test/Transforms/CorrelatedValuePropagation/urem.ll
index b9c112c69e1a62..9eed770e665d2c 100644
--- a/llvm/test/Transforms/CorrelatedValuePropagation/urem.ll
+++ b/llvm/test/Transforms/CorrelatedValuePropagation/urem.ll
@@ -394,4 +394,72 @@ else:
   ret void
 }
 
+; FIXME: This is a miscompile.
+define i8 @urem_undef_range_op1(i8 %x) {
+; CHECK-LABEL: @urem_undef_range_op1(
+; CHECK-NEXT:  entry:
+; CHECK-NEXT:    switch i8 [[X:%.*]], label [[JOIN:%.*]] [
+; CHECK-NEXT:      i8 1, label [[CASE1:%.*]]
+; CHECK-NEXT:      i8 2, label [[CASE2:%.*]]
+; CHECK-NEXT:    ]
+; CHECK:       case1:
+; CHECK-NEXT:    br label [[JOIN]]
+; CHECK:       case2:
+; CHECK-NEXT:    br label [[JOIN]]
+; CHECK:       join:
+; CHECK-NEXT:    [[PHI:%.*]] = phi i8 [ 1, [[CASE1]] ], [ 2, [[CASE2]] ], [ undef, [[ENTRY:%.*]] ]
+; CHECK-NEXT:    ret i8 [[PHI]]
+;
+entry:
+  switch i8 %x, label %join [
+  i8 1, label %case1
+  i8 2, label %case2
+  ]
+
+case1:
+  br label %join
+
+case2:
+  br label %join
+
+join:
+  %phi = phi i8 [ 1, %case1 ], [ 2, %case2 ], [ undef, %entry ]
+  %res = urem i8 %phi, 3
+  ret i8 %res
+}
+
+define i8 @urem_undef_range_op2(i8 %x) {
+; CHECK-LABEL: @urem_undef_range_op2(
+; CHECK-NEXT:  entry:
+; CHECK-NEXT:    switch i8 [[X:%.*]], label [[JOIN:%.*]] [
+; CHECK-NEXT:      i8 1, label [[CASE1:%.*]]
+; CHECK-NEXT:      i8 2, label [[CASE2:%.*]]
+; CHECK-NEXT:    ]
+; CHECK:       case1:
+; CHECK-NEXT:    br label [[JOIN]]
+; CHECK:       case2:
+; CHECK-NEXT:    br label [[JOIN]]
+; CHECK:       join:
+; CHECK-NEXT:    [[PHI:%.*]] = phi i8 [ 5, [[CASE1]] ], [ 6, [[CASE2]] ], [ undef, [[ENTRY:%.*]] ]
+; CHECK-NEXT:    [[RES:%.*]] = sub nuw i8 7, [[PHI]]
+; CHECK-NEXT:    ret i8 [[RES]]
+;
+entry:
+  switch i8 %x, label %join [
+  i8 1, label %case1
+  i8 2, label %case2
+  ]
+
+case1:
+  br label %join
+
+case2:
+  br label %join
+
+join:
+  %phi = phi i8 [ 5, %case1 ], [ 6, %case2 ], [ undef, %entry ]
+  %res = urem i8 7, %phi
+  ret i8 %res
+}
+
 declare void @use(i1)


        


More information about the llvm-commits mailing list