Re-land [openmp] Fix warnings when building on Windows with latest MSVC or Clang...
[llvm-project.git] / llvm / test / Transforms / SimplifyCFG / DeadSetCC.ll
blobfc3ff033a0371be97e1c873ff8456a1fe008a348
1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2 ; RUN: opt < %s -passes=simplifycfg -simplifycfg-require-and-preserve-domtree=1 -switch-range-to-icmp -S | FileCheck %s
4 ; Check that simplifycfg deletes a dead 'seteq' instruction when it
5 ; folds a conditional branch into a switch instruction.
7 declare void @foo()
9 declare void @bar()
11 define void @testcfg(i32 %V) {
12 ; CHECK-LABEL: @testcfg(
13 ; CHECK-NEXT:    [[V_OFF:%.*]] = add i32 [[V:%.*]], -15
14 ; CHECK-NEXT:    [[SWITCH:%.*]] = icmp ult i32 [[V_OFF]], 2
15 ; CHECK-NEXT:    br i1 [[SWITCH]], label [[L2:%.*]], label [[L1:%.*]]
16 ; CHECK:       common.ret:
17 ; CHECK-NEXT:    ret void
18 ; CHECK:       L1:
19 ; CHECK-NEXT:    call void @foo()
20 ; CHECK-NEXT:    br label [[COMMON_RET:%.*]]
21 ; CHECK:       L2:
22 ; CHECK-NEXT:    call void @bar()
23 ; CHECK-NEXT:    br label [[COMMON_RET]]
25   %C = icmp eq i32 %V, 18
26   %D = icmp eq i32 %V, 180
27   %E = or i1 %C, %D
28   br i1 %E, label %L1, label %Sw
29 Sw:             ; preds = %0
30   switch i32 %V, label %L1 [
31   i32 15, label %L2
32   i32 16, label %L2
33   ]
34 L1:             ; preds = %Sw, %0
35   call void @foo( )
36   ret void
37 L2:             ; preds = %Sw, %Sw
38   call void @bar( )
39   ret void