[PATCH] D77651: [IfConversion] Disallow TrueBB == FalseBB for valid diamonds

Mikael Holmén via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Apr 8 04:17:45 PDT 2020


This revision was automatically updated to reflect the committed changes.
Closed by commit rG893df2032d48: [IfConversion] Disallow TrueBB == FalseBB for valid diamonds (authored by uabelho).
Herald added a project: LLVM.

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D77651/new/

https://reviews.llvm.org/D77651

Files:
  llvm/lib/CodeGen/IfConversion.cpp
  llvm/test/CodeGen/ARM/ifcvt_diamondSameTrueFalse.mir


Index: llvm/test/CodeGen/ARM/ifcvt_diamondSameTrueFalse.mir
===================================================================
--- /dev/null
+++ llvm/test/CodeGen/ARM/ifcvt_diamondSameTrueFalse.mir
@@ -0,0 +1,40 @@
+# 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
Index: llvm/lib/CodeGen/IfConversion.cpp
===================================================================
--- llvm/lib/CodeGen/IfConversion.cpp
+++ llvm/lib/CodeGen/IfConversion.cpp
@@ -972,6 +972,11 @@
       FalseBBI.IsBeingAnalyzed || FalseBBI.IsDone)
     return false;
 
+  // If the True and False BBs are equal we're dealing with a degenerate case
+  // that we don't treat as a diamond.
+  if (TrueBBI.BB == FalseBBI.BB)
+    return false;
+
   MachineBasicBlock *TT = TrueBBI.TrueBB;
   MachineBasicBlock *FT = FalseBBI.TrueBB;
 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D77651.255955.patch
Type: text/x-patch
Size: 1497 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200408/9dce29b3/attachment.bin>


More information about the llvm-commits mailing list