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 3 4define 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 11; 12entry: 13 callbr void asm sideeffect "", "!i"() 14 to label %bb [label %bb] 15 16bb: 17 ret void 18} 19 20define void @callbr_can_fold_to_duplicate_dest1() { 21; CHECK-LABEL: @callbr_can_fold_to_duplicate_dest1( 22; CHECK-NEXT: entry: 23; CHECK-NEXT: callbr void asm sideeffect "", "!i"() 24; CHECK-NEXT: to label [[COMMON_RET:%.*]] [label %common.ret] 25; CHECK: common.ret: 26; CHECK-NEXT: ret void 27; 28entry: 29 callbr void asm sideeffect "", "!i"() 30 to label %bb2 [label %bb1] 31 32bb1: 33 ret void 34 35bb2: 36 ret void 37} 38 39define void @callbr_can_fold_to_duplicate_dest2() { 40; CHECK-LABEL: @callbr_can_fold_to_duplicate_dest2( 41; CHECK-NEXT: entry: 42; CHECK-NEXT: callbr void asm sideeffect "", "!i,!i"() 43; CHECK-NEXT: to label [[COMMON_RET:%.*]] [label [[COMMON_RET]], label %common.ret] 44; CHECK: common.ret: 45; CHECK-NEXT: ret void 46; 47entry: 48 callbr void asm sideeffect "", "!i,!i"() 49 to label %bb1 [label %bb2, label %bb3] 50 51bb1: 52 ret void 53 54bb2: 55 ret void 56 57bb3: 58 ret void 59} 60