| # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py |
| # RUN: llc -mtriple=thumb-apple-ios -run-pass=if-converter %s -o - | FileCheck %s |
| |
| # bb.2 has no successors, presumably because __stack_chk_fail doesn't return, |
| # so there should be no edge from bb.2 to bb.3. |
| # Nevertheless, IfConversion treats bb.1, bb.2, bb.3 as a triangle and |
| # inserts a predicated copy of bb.2 in bb.1. |
| |
| # This caused r302876 to die with a failed assertion. |
| |
| --- | |
| declare void @__stack_chk_fail() |
| declare void @bar() |
| |
| define void @foo() { |
| ret void |
| } |
| ... |
| --- |
| name: foo |
| body: | |
| ; CHECK-LABEL: name: foo |
| ; CHECK: bb.0: |
| ; CHECK: successors: %bb.2(0x40000000), %bb.1(0x40000000) |
| ; CHECK: tBcc %bb.2, 1 /* CC::ne */, $cpsr |
| ; CHECK: bb.1: |
| ; CHECK: successors: |
| ; CHECK: tBL 14 /* CC::al */, $cpsr, @__stack_chk_fail |
| ; CHECK: bb.2: |
| ; CHECK: tBL 1 /* CC::ne */, $cpsr, @__stack_chk_fail |
| ; CHECK: $sp = tADDspi $sp, 2, 14 /* CC::al */, $noreg |
| ; CHECK: $sp = tADDspi $sp, 2, 14 /* CC::al */, $noreg |
| ; CHECK: tTAILJMPdND @bar, 14 /* CC::al */, $cpsr |
| |
| bb.0: |
| tBcc %bb.1, 1, $cpsr |
| tB %bb.2, 14, $noreg |
| |
| bb.1: |
| tBcc %bb.3, 0, $cpsr |
| |
| bb.2: |
| successors: |
| tBL 14, $cpsr, @__stack_chk_fail |
| |
| bb.3: |
| successors: |
| $sp = tADDspi $sp, 2, 14, _ |
| $sp = tADDspi $sp, 2, 14, _ |
| tTAILJMPdND @bar, 14, $cpsr |
| ... |