2017-05-10 21:06:13 +08:00
|
|
|
# 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
|
|
|
|
|
2018-02-01 06:04:26 +08:00
|
|
|
Bcc %bb.4, 1, $cpsr
|
2017-05-10 21:06:13 +08:00
|
|
|
|
|
|
|
bb.2:
|
|
|
|
successors: %bb.3, %bb.5
|
|
|
|
|
2018-02-01 06:04:26 +08:00
|
|
|
Bcc %bb.5, 1, $cpsr
|
2017-05-10 21:06:13 +08:00
|
|
|
|
|
|
|
bb.3:
|
|
|
|
successors: %bb.5
|
|
|
|
|
|
|
|
B %bb.5
|
|
|
|
|
|
|
|
bb.4:
|
|
|
|
successors:
|
|
|
|
|
|
|
|
bb.5:
|
|
|
|
successors: %bb.1, %bb.6
|
|
|
|
|
2018-02-01 06:04:26 +08:00
|
|
|
Bcc %bb.1, 1, $cpsr
|
2017-05-10 21:06:13 +08:00
|
|
|
|
|
|
|
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
|
2017-09-20 07:34:12 +08:00
|
|
|
# and we cannot guess them: we should print an empty list of successors.
|
2017-05-10 21:06:13 +08:00
|
|
|
#CHECK: bb.2:
|
2017-09-20 07:34:12 +08:00
|
|
|
#CHECK: successors:{{ *$}}
|
2017-05-10 21:06:13 +08:00
|
|
|
|
|
|
|
#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
|
|
|
|
|