Kyle Butt | 0846e56 | 2016-10-11 20:36:43 +0000 | [diff] [blame] | 1 | ; RUN: llc -O2 %s -o - | FileCheck %s |
| 2 | target datalayout = "E-m:e-i64:64-n32:64" |
| 3 | target triple = "powerpc64-unknown-linux-gnu" |
| 4 | |
| 5 | ; Function Attrs: nounwind |
Matt Arsenault | f10061e | 2017-04-10 20:18:21 +0000 | [diff] [blame] | 6 | declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #0 |
Kyle Butt | 0846e56 | 2016-10-11 20:36:43 +0000 | [diff] [blame] | 7 | |
| 8 | declare void @f1() |
| 9 | declare void @f2() |
| 10 | declare void @f3() |
| 11 | declare void @f4() |
| 12 | |
| 13 | ; Function Attrs: nounwind |
| 14 | ; CHECK-LABEL: tail_dup_fallthrough_with_branch |
Francis Visoiu Mistrih | 25528d6 | 2017-12-04 17:18:51 +0000 | [diff] [blame] | 15 | ; CHECK: # %bb.{{[0-9]+}}: # %entry |
Kyle Butt | 0846e56 | 2016-10-11 20:36:43 +0000 | [diff] [blame] | 16 | ; CHECK-NOT: # %{{[-_a-zA-Z0-9]+}} |
Francis Visoiu Mistrih | 25528d6 | 2017-12-04 17:18:51 +0000 | [diff] [blame] | 17 | ; CHECK: # %bb.{{[0-9]+}}: # %entry |
Kyle Butt | 0846e56 | 2016-10-11 20:36:43 +0000 | [diff] [blame] | 18 | ; CHECK-NOT: # %{{[-_a-zA-Z0-9]+}} |
Francis Visoiu Mistrih | 25528d6 | 2017-12-04 17:18:51 +0000 | [diff] [blame] | 19 | ; CHECK: # %bb.{{[0-9]+}}: # %sw.0 |
Kyle Butt | 0846e56 | 2016-10-11 20:36:43 +0000 | [diff] [blame] | 20 | ; CHECK-NOT: # %{{[-_a-zA-Z0-9]+}} |
| 21 | ; CHECK: # %sw.1 |
| 22 | ; CHECK-NOT: # %{{[-_a-zA-Z0-9]+}} |
| 23 | ; CHECK: # %sw.default |
| 24 | ; CHECK-NOT: # %{{[-_a-zA-Z0-9]+}} |
Francis Visoiu Mistrih | 25528d6 | 2017-12-04 17:18:51 +0000 | [diff] [blame] | 25 | ; CHECK: # %bb.{{[0-9]+}}: # %if.then |
Kyle Butt | 0846e56 | 2016-10-11 20:36:43 +0000 | [diff] [blame] | 26 | ; CHECK-NOT: # %{{[-_a-zA-Z0-9]+}} |
| 27 | ; CHECK: # %if.else |
| 28 | ; CHECK-NOT: # %{{[-_a-zA-Z0-9]+}} |
| 29 | ; CHECK: .Lfunc_end0 |
| 30 | define fastcc void @tail_dup_fallthrough_with_branch(i32 %a, i1 %b) unnamed_addr #0 { |
| 31 | entry: |
| 32 | switch i32 %a, label %sw.default [ |
| 33 | i32 0, label %sw.0 |
| 34 | i32 1, label %sw.1 |
| 35 | ] |
| 36 | |
| 37 | sw.0: ; preds = %entry |
| 38 | call void @f1() #0 |
| 39 | br label %dup1 |
| 40 | |
| 41 | sw.1: ; preds = %entry |
| 42 | call void @f2() #0 |
| 43 | br label %dup1 |
| 44 | |
| 45 | sw.default: ; preds = %entry |
| 46 | br i1 %b, label %if.then, label %if.else |
| 47 | |
| 48 | if.then: ; preds = %sw.default |
| 49 | call void @f3() #0 |
| 50 | br label %dup2 |
| 51 | |
| 52 | if.else: ; preds = %sw.default |
| 53 | call void @f4() #0 |
| 54 | br label %dup2 |
| 55 | |
| 56 | dup1: ; preds = %sw.0, %sw.1 |
Matt Arsenault | f10061e | 2017-04-10 20:18:21 +0000 | [diff] [blame] | 57 | call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull undef) #0 |
Kyle Butt | 0846e56 | 2016-10-11 20:36:43 +0000 | [diff] [blame] | 58 | unreachable |
| 59 | |
| 60 | dup2: ; preds = %if.then, %if.else |
Matt Arsenault | f10061e | 2017-04-10 20:18:21 +0000 | [diff] [blame] | 61 | call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull undef) #0 |
Kyle Butt | 0846e56 | 2016-10-11 20:36:43 +0000 | [diff] [blame] | 62 | unreachable |
| 63 | } |
| 64 | |
| 65 | attributes #0 = { nounwind } |