1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2025-01-31 20:51:52 +01:00
llvm-mirror/test/CodeGen/ARM/ifcvt_diamondSameTrueFalse.mir
Mikael Holmen d075e066f3 [IfConversion] Disallow TrueBB == FalseBB for valid diamonds
Summary:
This fixes PR45302.

Previously the case

     BB1
     / \
    |   |
   TBB FBB
    |   |
     \ /
     BB2

was treated as a valid diamond also when TBB and FBB was the same basic
block. This then lead to a failed assertion in IfConvertDiamond.

Since TBB == FBB is quite a degenerated case of a diamond, we now
don't treat it as a valid diamond anymore, and thus we will avoid the
trouble of making IfConvertDiamond handle it correctly.

Reviewers: efriedma, kparzysz

Reviewed By: efriedma

Subscribers: hiraditya, llvm-commits

Differential Revision: https://reviews.llvm.org/D77651
2020-04-08 12:50:36 +02:00

41 lines
699 B
YAML

# RUN: llc -mtriple=thumbv7-apple-ios -o - %s -run-pass if-converter -verify-machineinstrs | FileCheck %s
# Don't treat bb.1 as a valid diamond since IfConverter::IfConvertDiamond can't
# handle it and used to hit an assertion instead.
--- |
define void @func() minsize {
ret void
}
...
---
name: func
body: |
bb.0:
tBcc %bb.3, 1, $cpsr
bb.1:
tBcc %bb.2, 1, $cpsr
tB %bb.2, 14, $noreg
bb.2:
bb.3:
successors:
tBX_RET 14, _
...
# CHECK-LABEL: bb.0:
# CHECK: tBcc %bb.3, 1
# CHECK-LABEL: bb.1:
# CHECK: tBcc %bb.2, 1
# CHECK-NEXT: tB %bb.2, 14
# CHECK-LABEL: bb.2:
# CHECK-LABEL: bb.3:
# CHECK: tBX_RET 14