mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 19:23:23 +01:00
[IfConversion] Disallow TBB == FBB for valid triangles
Summary: Previously the case EBB | \_ | | | TBB | / FBB was treated as a valid triangle also when TBB and FBB was the same basic block. This could then lead to an invalid CFG when we removed the edge from EBB to TBB, since that meant we would also remove the edge from EBB to FBB. Since TBB == FBB is quite a degenerated case of a triangle, we now don't treat it as a valid triangle anymore, and thus we will avoid the trouble with updating the CFG. Reviewers: efriedma, dmgreen, kparzysz Reviewed By: efriedma Subscribers: bjope, hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D67832 llvm-svn: 372943
This commit is contained in:
parent
f84a7a5067
commit
34a44fe737
@ -569,6 +569,9 @@ bool IfConverter::ValidTriangle(BBInfo &TrueBBI, BBInfo &FalseBBI,
|
||||
bool FalseBranch, unsigned &Dups,
|
||||
BranchProbability Prediction) const {
|
||||
Dups = 0;
|
||||
if (TrueBBI.BB == FalseBBI.BB)
|
||||
return false;
|
||||
|
||||
if (TrueBBI.IsBeingAnalyzed || TrueBBI.IsDone)
|
||||
return false;
|
||||
|
||||
|
29
test/CodeGen/ARM/ifcvt_triangleSameCvtNext.mir
Normal file
29
test/CodeGen/ARM/ifcvt_triangleSameCvtNext.mir
Normal file
@ -0,0 +1,29 @@
|
||||
# RUN: llc -mtriple=arm-apple-ios -run-pass=if-converter -verify-machineinstrs %s -o - | FileCheck %s
|
||||
...
|
||||
---
|
||||
name: foo
|
||||
body: |
|
||||
bb.0:
|
||||
Bcc %bb.2, 1, $cpsr
|
||||
|
||||
bb.1:
|
||||
$sp = tADDspi $sp, 2, 14, _
|
||||
B %bb.1
|
||||
|
||||
bb.2:
|
||||
Bcc %bb.3, 0, $cpsr
|
||||
B %bb.2
|
||||
|
||||
bb.3:
|
||||
Bcc %bb.1, 1, $cpsr
|
||||
B %bb.1
|
||||
...
|
||||
|
||||
# Both branches in bb.3 jump to bb.1. IfConversion shouldn't treat this as a
|
||||
# tringle and insert the tADDspi in bb3, but leave it as it is.
|
||||
|
||||
# CHECK: bb.3:
|
||||
# CHECK: successors: %bb.1
|
||||
# CHECK-NOT: tADDspi
|
||||
# CHECK: Bcc %bb.1, 1, $cpsr
|
||||
# CHECK: B %bb.1
|
Loading…
Reference in New Issue
Block a user