| # RUN: llc -mtriple=arm-apple-ios -o - %s -run-pass if-converter | FileCheck %s | |
| --- | |
| name: f1 | |
| body: | | |
| bb.0: | |
| successors: %bb.1 | |
| B %bb.1 | |
| bb.1: | |
| successors: %bb.2, %bb.4 | |
| Bcc %bb.4, 1, $cpsr | |
| bb.2: | |
| successors: %bb.3, %bb.5 | |
| Bcc %bb.5, 1, $cpsr | |
| bb.3: | |
| successors: %bb.5 | |
| B %bb.5 | |
| bb.4: | |
| successors: | |
| bb.5: | |
| successors: %bb.1, %bb.6 | |
| Bcc %bb.1, 1, $cpsr | |
| bb.6: | |
| BX_RET 14, _ | |
| ... | |
| # IfConversion.cpp/canFallThroughTo thought there was a fallthrough from | |
| # bb.4 to bb5 even if the successor list was empty. | |
| # bb.4 is empty, so it surely looks like it can fallthrough, but this is what | |
| # happens for a bb just containing an "unreachable". | |
| #CHECK: body: | | |
| #CHECK: bb.0: | |
| #CHECK: successors: %bb.1 | |
| #CHECK: bb.1: | |
| #CHECK: successors: %bb.3({{.*}}), %bb.2 | |
| # The original brr_cond from bb.1, jumping to the empty bb | |
| #CHECK: Bcc %bb.2 | |
| #CHECK: B %bb.3 | |
| # Empty bb.2, originally containing "unreachable" and thus has no successors | |
| # and we cannot guess them: we should print an empty list of successors. | |
| #CHECK: bb.2: | |
| #CHECK: successors:{{ *$}} | |
| #CHECK: bb.3: | |
| #CHECK: successors: %bb.1 | |
| # Conditional BX_RET and then loop back to bb.1 | |
| #CHECK: BX_RET 0 | |
| #CHECK: B %bb.1 | |