[docs] Add LICENSE.txt to the root of the mono-repo
[llvm-project.git] / llvm / test / Transforms / SimplifyCFG / callbr-destinations.ll
blob368bc5e9331f7021a12848bb99b091ee6b591fda
1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2 ; RUN: opt < %s -S -simplifycfg -simplifycfg-require-and-preserve-domtree=1 | FileCheck %s
4 define void @callbr_duplicate_dest() {
5 ; CHECK-LABEL: @callbr_duplicate_dest(
6 ; CHECK-NEXT:  entry:
7 ; CHECK-NEXT:    callbr void asm sideeffect "", "!i"()
8 ; CHECK-NEXT:    to label [[BB:%.*]] [label %bb]
9 ; CHECK:       bb:
10 ; CHECK-NEXT:    ret void
12 entry:
13   callbr void asm sideeffect "", "!i"()
14   to label %bb [label %bb]
16 bb:
17   ret void
20 ; TODO: Can fold to a duplicate callbr destination.
21 define void @callbr_can_fold_to_duplicate_dest1() {
22 ; CHECK-LABEL: @callbr_can_fold_to_duplicate_dest1(
23 ; CHECK-NEXT:  entry:
24 ; CHECK-NEXT:    callbr void asm sideeffect "", "!i"()
25 ; CHECK-NEXT:    to label [[BB2:%.*]] [label %common.ret]
26 ; CHECK:       common.ret:
27 ; CHECK-NEXT:    ret void
28 ; CHECK:       bb2:
29 ; CHECK-NEXT:    br label [[COMMON_RET:%.*]]
31 entry:
32   callbr void asm sideeffect "", "!i"()
33   to label %bb2 [label %bb1]
35 bb1:
36   ret void
38 bb2:
39   ret void
42 ; TODO: Can fold to a duplicate callbr destination.
43 define void @callbr_can_fold_to_duplicate_dest2() {
44 ; CHECK-LABEL: @callbr_can_fold_to_duplicate_dest2(
45 ; CHECK-NEXT:  entry:
46 ; CHECK-NEXT:    callbr void asm sideeffect "", "!i,!i"()
47 ; CHECK-NEXT:    to label [[COMMON_RET:%.*]] [label [[BB2:%.*]], label %bb3]
48 ; CHECK:       common.ret:
49 ; CHECK-NEXT:    ret void
50 ; CHECK:       bb2:
51 ; CHECK-NEXT:    br label [[COMMON_RET]]
52 ; CHECK:       bb3:
53 ; CHECK-NEXT:    br label [[COMMON_RET]]
55 entry:
56   callbr void asm sideeffect "", "!i,!i"()
57   to label %bb1 [label %bb2, label %bb3]
59 bb1:
60   ret void
62 bb2:
63   ret void
65 bb3:
66   ret void