[PATCH] D66657: [CodegenPrepare] Guard against degenerate branches

Valentin Churavy via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sat Dec 14 08:43:15 PST 2019


vchuravy updated this revision to Diff 233938.
vchuravy added a comment.

- update aaccording to comments


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D66657

Files:
  llvm/lib/CodeGen/CodeGenPrepare.cpp
  llvm/test/CodeGen/X86/codegen-prepare-collapse.ll


Index: llvm/test/CodeGen/X86/codegen-prepare-collapse.ll
===================================================================
--- /dev/null
+++ llvm/test/CodeGen/X86/codegen-prepare-collapse.ll
@@ -0,0 +1,18 @@
+; RUN: llc -fast-isel=true -O1 -mtriple=x86_64-unkown-linux-gnu -start-before=codegenprepare -stop-after=codegenprepare -o - < %s | FileCheck %s
+
+; CHECK-LABEL: @foo
+define void @foo() {
+top:
+; CHECK: br label %L34
+  br label %L34
+
+L34:                                              ; preds = %L34, %L34, %top
+  %.sroa.075.0 = phi i64 [ undef, %top ], [ undef, %L34 ], [ undef, %L34 ]
+  %0 = icmp sgt i8 undef, -1
+  %cond5896 = icmp eq i8 0, 2
+  %cond58 = and i1 %cond5896, %0
+; During codegenprepare such degenerate branches can occure and should not
+; lead to crashes.
+; CHECK: br label %L34
+  br i1 %cond58, label %L34, label %L34
+}
Index: llvm/lib/CodeGen/CodeGenPrepare.cpp
===================================================================
--- llvm/lib/CodeGen/CodeGenPrepare.cpp
+++ llvm/lib/CodeGen/CodeGenPrepare.cpp
@@ -7204,6 +7204,10 @@
     if (Br1->getMetadata(LLVMContext::MD_unpredictable))
       continue;
 
+    // The merging of mostly empty BB can cause a degenerate branch
+    if (TBB == FBB)
+      continue;
+
     unsigned Opc;
     Value *Cond1, *Cond2;
     if (match(LogicOp, m_And(m_OneUse(m_Value(Cond1)),


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D66657.233938.patch
Type: text/x-patch
Size: 1365 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20191214/79002d30/attachment.bin>


More information about the llvm-commits mailing list