[llvm-branch-commits] [llvm] 1cc477f - [SimplifyCFG] Add test for PR48778 (NFC)

Nikita Popov via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Sun Jan 17 11:11:16 PST 2021


Author: Nikita Popov
Date: 2021-01-17T20:06:17+01:00
New Revision: 1cc477f030bdeb6de98c6bde89fa7850630def24

URL: https://github.com/llvm/llvm-project/commit/1cc477f030bdeb6de98c6bde89fa7850630def24
DIFF: https://github.com/llvm/llvm-project/commit/1cc477f030bdeb6de98c6bde89fa7850630def24.diff

LOG: [SimplifyCFG] Add test for PR48778 (NFC)

The sdiv is incorrectly speculated.

Added: 
    llvm/test/Transforms/SimplifyCFG/pr48778-sdiv-speculation.ll

Modified: 
    

Removed: 
    


################################################################################
diff  --git a/llvm/test/Transforms/SimplifyCFG/pr48778-sdiv-speculation.ll b/llvm/test/Transforms/SimplifyCFG/pr48778-sdiv-speculation.ll
new file mode 100644
index 000000000000..992736c48572
--- /dev/null
+++ b/llvm/test/Transforms/SimplifyCFG/pr48778-sdiv-speculation.ll
@@ -0,0 +1,26 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
+; RUN: opt -simplifycfg -S < %s | FileCheck %s
+
+; sdiv INT_MIN / -1 should not be speculated.
+define i32 @test(i1 %cmp) {
+; CHECK-LABEL: @test(
+; CHECK-NEXT:  else:
+; CHECK-NEXT:    [[DIV:%.*]] = sdiv i32 -2147483648, -1
+; CHECK-NEXT:    [[CMP2:%.*]] = icmp ne i32 [[DIV]], 0
+; CHECK-NEXT:    [[OR_COND:%.*]] = and i1 [[CMP:%.*]], [[CMP2]]
+; CHECK-NEXT:    [[MERGE:%.*]] = select i1 [[OR_COND]], i32 1, i32 0
+; CHECK-NEXT:    ret i32 [[MERGE]]
+;
+  br i1 %cmp, label %if, label %else
+
+if:
+  %div = sdiv i32 -2147483648, -1
+  %cmp2 = icmp ne i32 %div, 0
+  br i1 %cmp2, label %end, label %else
+
+else:
+  ret i32 0
+
+end:
+  ret i32 1
+}


        


More information about the llvm-branch-commits mailing list