[llvm] r318551 - [LICM] Fix PR35342

Jun Bum Lim via llvm-commits llvm-commits at lists.llvm.org
Fri Nov 17 12:38:26 PST 2017


Author: junbuml
Date: Fri Nov 17 12:38:25 2017
New Revision: 318551

URL: http://llvm.org/viewvc/llvm-project?rev=318551&view=rev
Log:
[LICM] Fix PR35342

Summary: This change fix PR35342 by replacing only the current use with undef in unreachable blocks.

Reviewers: efriedma, mcrosier, igor-laevsky

Reviewed By: efriedma

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D40184

Added:
    llvm/trunk/test/Transforms/LICM/pr35342.ll
Modified:
    llvm/trunk/lib/Transforms/Scalar/LICM.cpp

Modified: llvm/trunk/lib/Transforms/Scalar/LICM.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/LICM.cpp?rev=318551&r1=318550&r2=318551&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Scalar/LICM.cpp (original)
+++ llvm/trunk/lib/Transforms/Scalar/LICM.cpp Fri Nov 17 12:38:25 2017
@@ -906,7 +906,7 @@ static bool sink(Instruction &I, LoopInf
       continue;
 
     if (!DT->isReachableFromEntry(User->getParent())) {
-      User->replaceUsesOfWith(&I, UndefValue::get(I.getType()));
+      U = UndefValue::get(I.getType());
       continue;
     }
 

Added: llvm/trunk/test/Transforms/LICM/pr35342.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/LICM/pr35342.ll?rev=318551&view=auto
==============================================================================
--- llvm/trunk/test/Transforms/LICM/pr35342.ll (added)
+++ llvm/trunk/test/Transforms/LICM/pr35342.ll Fri Nov 17 12:38:25 2017
@@ -0,0 +1,26 @@
+; RUN: opt -licm -S < %s | FileCheck %s
+
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128-ni:1"
+target triple = "x86_64-unknown-linux-gnu"
+
+; CHECK-LABEL: @f1
+; CHECK-LABEL: bci_524:
+; CHECK: add i32 undef, undef
+define void @f1(i32 %v) {
+not_zero.lr.ph:
+  br label %not_zero
+
+not_zero:
+  br i1 undef, label %bci_748 ,  label %bci_314
+
+bci_314:
+  %0 = select i1 undef, i32 undef, i32 undef
+  br label %not_zero
+
+bci_524:                   ; No predecessors!
+  %add = add i32 %0, %0
+  br label %bci_748
+
+bci_748:
+  ret void
+}




More information about the llvm-commits mailing list