1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2 2; RUN: llc < %s -mtriple=arm -o - | FileCheck %s 3 4define void @foo(i32 %i) nounwind { 5; CHECK-LABEL: foo: 6; CHECK: @ %bb.0: @ %entry 7; CHECK-NEXT: push {r11, lr} 8; CHECK-NEXT: cmp r0, #7 9; CHECK-NEXT: beq .LBB0_3 10; CHECK-NEXT: @ %bb.1: @ %entry 11; CHECK-NEXT: cmp r0, #5 12; CHECK-NEXT: bne .LBB0_4 13; CHECK-NEXT: @ %bb.2: @ %if.then 14; CHECK-NEXT: bl bar 15; CHECK-NEXT: pop {r11, lr} 16; CHECK-NEXT: b bar 17; CHECK-NEXT: .LBB0_3: @ %if.then2 18; CHECK-NEXT: bl bar 19; CHECK-NEXT: .LBB0_4: @ %if.end3 20; CHECK-NEXT: pop {r11, lr} 21; CHECK-NEXT: b bar 22entry: 23 switch i32 %i, label %if.end3 [ 24 i32 5, label %if.then 25 i32 7, label %if.then2 26 ] 27 28if.then: 29 tail call void @bar() #0 30 br label %if.end3 31 32if.then2: 33 tail call void @bar() #0 34 br label %if.end3 35 36if.end3: 37 tail call void @bar() #0 38 ret void 39} 40 41define void @foo_tail(i1 %i) nounwind { 42; CHECK-LABEL: foo_tail: 43; CHECK: @ %bb.0: @ %entry 44; CHECK-NEXT: tst r0, #1 45; CHECK-NEXT: beq .LBB1_2 46; CHECK-NEXT: @ %bb.1: @ %if.then 47; CHECK-NEXT: b bar 48; CHECK-NEXT: .LBB1_2: @ %if.else 49; CHECK-NEXT: b bar 50entry: 51 br i1 %i, label %if.then, label %if.else 52 53if.then: 54 tail call void @bar() #0 55 br label %if.end 56 57if.else: 58 tail call void @bar() #0 59 br label %if.end 60 61if.end: 62 ret void 63} 64 65declare void @bar() 66 67attributes #0 = { nomerge } 68