[llvm] ca688ae - Revert "[LoopUnswitch] Fix incorrect Modified status"

David Stenberg via llvm-commits llvm-commits at lists.llvm.org
Thu Aug 20 02:14:58 PDT 2020


Author: David Stenberg
Date: 2020-08-20T11:14:23+02:00
New Revision: ca688ae4975932f0566b113dad10a66db852259e

URL: https://github.com/llvm/llvm-project/commit/ca688ae4975932f0566b113dad10a66db852259e
DIFF: https://github.com/llvm/llvm-project/commit/ca688ae4975932f0566b113dad10a66db852259e.diff

LOG: Revert "[LoopUnswitch] Fix incorrect Modified status"

This reverts commit dfd447c22043b0a64bf1d146735ca33f926bd22d.

After I pushed this commit, llvm-sphinx-docs started failing, due to:

  Warning, treated as error:
  extension 'recommonmark' has no setup() function;
  is it really a Sphinx extension module?

I don't see how this commit may have caused that, but I'm still
reverting it since I don't know how to proceed with that
troubleshooting.

Added: 
    

Modified: 
    llvm/lib/Transforms/Scalar/LoopUnswitch.cpp

Removed: 
    llvm/test/Transforms/LoopUnswitch/convergent-hoist-modified.ll
    llvm/test/Transforms/LoopUnswitch/invoke-hoist-modified.ll
    llvm/test/Transforms/LoopUnswitch/optsize-hoist-modified.ll


################################################################################
diff  --git a/llvm/lib/Transforms/Scalar/LoopUnswitch.cpp b/llvm/lib/Transforms/Scalar/LoopUnswitch.cpp
index d83b7b05f88b..645a89bbd0ff 100644
--- a/llvm/lib/Transforms/Scalar/LoopUnswitch.cpp
+++ b/llvm/lib/Transforms/Scalar/LoopUnswitch.cpp
@@ -661,7 +661,7 @@ bool LoopUnswitch::processCurrentLoop() {
   // FIXME: Use Function::hasOptSize().
   if (OptimizeForSize ||
       LoopHeader->getParent()->hasFnAttribute(Attribute::OptimizeForSize))
-    return Changed;
+    return false;
 
   // Run through the instructions in the loop, keeping track of three things:
   //
@@ -685,10 +685,10 @@ bool LoopUnswitch::processCurrentLoop() {
       if (!CB)
         continue;
       if (CB->isConvergent())
-        return Changed;
+        return false;
       if (auto *II = dyn_cast<InvokeInst>(&I))
         if (!II->getUnwindDest()->canSplitPredecessors())
-          return Changed;
+          return false;
       if (auto *II = dyn_cast<IntrinsicInst>(&I))
         if (II->getIntrinsicID() == Intrinsic::experimental_guard)
           Guards.push_back(II);

diff  --git a/llvm/test/Transforms/LoopUnswitch/convergent-hoist-modified.ll b/llvm/test/Transforms/LoopUnswitch/convergent-hoist-modified.ll
deleted file mode 100644
index bb77f4ca8b75..000000000000
--- a/llvm/test/Transforms/LoopUnswitch/convergent-hoist-modified.ll
+++ /dev/null
@@ -1,42 +0,0 @@
-; RUN: opt -loop-unswitch -enable-new-pm=0 %s -S | FileCheck %s
-
-; When hoisting simple values out from a loop, and not being able to unswitch
-; the loop due to the convergent call, the pass would return an incorrect
-; Modified status. This was caught by the pass return status check that is
-; hidden under EXPENSIVE_CHECKS.
-
-; CHECK-LABEL: entry:
-; CHECK-NEXT: %0 = call i32 @llvm.objectsize.i32.p0i8(i8* bitcast (%struct.anon* @b to i8*), i1 false, i1 false, i1 false)
-; CHECK-NEXT: %1 = icmp uge i32 %0, 1
-; CHECK-NEXT: br label %for.cond
-
-%struct.anon = type { i16 }
-
- at b = global %struct.anon zeroinitializer, align 1
-
-; Function Attrs: nounwind
-define i16 @c() #0 {
-entry:
-  br label %for.cond
-
-for.cond:                                         ; preds = %cont, %entry
-  br label %for.inc
-
-for.inc:                                          ; preds = %for.cond
-  %0 = call i32 @llvm.objectsize.i32.p0i8(i8* bitcast (%struct.anon* @b to i8*), i1 false, i1 false, i1 false)
-  %1 = icmp uge i32 %0, 1
-  br i1 %1, label %cont, label %cont
-
-cont:                                             ; preds = %for.inc
-  call void @conv() convergent
-  %2 = load i16, i16* getelementptr inbounds (%struct.anon, %struct.anon* @b, i32 0, i32 0), align 1
-  br label %for.cond
-}
-
-; Function Attrs: nounwind readnone speculatable willreturn
-declare i32 @llvm.objectsize.i32.p0i8(i8*, i1 immarg, i1 immarg, i1 immarg) #1
-
-declare void @conv() convergent
-
-attributes #0 = { nounwind }
-attributes #1 = { nounwind readnone speculatable willreturn }

diff  --git a/llvm/test/Transforms/LoopUnswitch/invoke-hoist-modified.ll b/llvm/test/Transforms/LoopUnswitch/invoke-hoist-modified.ll
deleted file mode 100644
index 367bae21e89a..000000000000
--- a/llvm/test/Transforms/LoopUnswitch/invoke-hoist-modified.ll
+++ /dev/null
@@ -1,53 +0,0 @@
-; RUN: opt -loop-unswitch -enable-new-pm=0 %s -S | FileCheck %s
-
-; When hoisting simple values out from a loop, and not being able to unswitch
-; the loop due to the invoke instruction, the pass would return an incorrect
-; Modified status. This was caught by the pass return status check that is
-; hidden under EXPENSIVE_CHECKS.
-
-; CHECK-LABEL: for.cond:
-; CHECK-NEXT: %0 = call i32 @llvm.objectsize.i32.p0i8(i8* bitcast (%struct.anon* @b to i8*), i1 false, i1 false, i1 false)
-; CHECK-NEXT: %1 = icmp uge i32 %0, 1
-; CHECK-NEXT: br label %for.inc
-
-%struct.anon = type { i16 }
-
- at b = global %struct.anon zeroinitializer, align 1
-
-; Function Attrs: nounwind
-define i32 @c() #0 personality i32 (...)* @__CxxFrameHandler3 {
-entry:
-  br label %for.cond
-
-for.cond:                                         ; preds = %cont, %entry
-  br label %for.inc
-
-for.inc:                                          ; preds = %for.cond
-  %0 = call i32 @llvm.objectsize.i32.p0i8(i8* bitcast (%struct.anon* @b to i8*), i1 false, i1 false, i1 false)
-  %1 = icmp uge i32 %0, 1
-  br i1 %1, label %delete.notnull, label %delete.notnull
-
-delete.notnull:                                   ; preds = %for.inc
-  invoke void @g() to label %invoke.cont unwind label %lpad
-
-invoke.cont:                                      ; preds = %delete.notnull
-  br label %for.inc
-
-lpad:                                             ; preds = %delete.notnull
-  %cp = cleanuppad within none []
-  cleanupret from %cp unwind to caller
-
-cont:                                             ; preds = %for.inc
-  %2 = load i16, i16* getelementptr inbounds (%struct.anon, %struct.anon* @b, i32 0, i32 0), align 1
-  br label %for.cond
-}
-
-; Function Attrs: nounwind readnone speculatable willreturn
-declare i32 @llvm.objectsize.i32.p0i8(i8*, i1 immarg, i1 immarg, i1 immarg) #1
-
-declare void @g()
-
-declare i32 @__CxxFrameHandler3(...)
-
-attributes #0 = { nounwind }
-attributes #1 = { nounwind readnone speculatable willreturn }

diff  --git a/llvm/test/Transforms/LoopUnswitch/optsize-hoist-modified.ll b/llvm/test/Transforms/LoopUnswitch/optsize-hoist-modified.ll
deleted file mode 100644
index 9ec1f40703cd..000000000000
--- a/llvm/test/Transforms/LoopUnswitch/optsize-hoist-modified.ll
+++ /dev/null
@@ -1,39 +0,0 @@
-; RUN: opt -loop-unswitch -enable-new-pm=0 %s -S | FileCheck %s
-
-; When hoisting simple values out from a loop, and not being able to attempt to
-; non-trivally unswitch the loop, due to the optsize attribute, the pass would
-; return an incorrect Modified status. This was caught by the pass return
-; status check that is hidden under EXPENSIVE_CHECKS.
-
-; CHECK-LABEL: entry:
-; CHECK-NEXT: %0 = call i32 @llvm.objectsize.i32.p0i8(i8* bitcast (%struct.anon* @b to i8*), i1 false, i1 false, i1 false)
-; CHECK-NEXT: %1 = icmp uge i32 %0, 1
-; CHECK-NEXT: br label %for.cond
-
-%struct.anon = type { i16 }
-
- at b = global %struct.anon zeroinitializer, align 1
-
-; Function Attrs: minsize nounwind optsize
-define i16 @c() #0 {
-entry:
-  br label %for.cond
-
-for.cond:                                         ; preds = %cont, %entry
-  br label %for.inc
-
-for.inc:                                          ; preds = %for.cond
-  %0 = call i32 @llvm.objectsize.i32.p0i8(i8* bitcast (%struct.anon* @b to i8*), i1 false, i1 false, i1 false)
-  %1 = icmp uge i32 %0, 1
-  br i1 %1, label %cont, label %cont
-
-cont:                                             ; preds = %for.inc
-  %2 = load i16, i16* getelementptr inbounds (%struct.anon, %struct.anon* @b, i32 0, i32 0), align 1
-  br label %for.cond
-}
-
-; Function Attrs: nounwind readnone speculatable willreturn
-declare i32 @llvm.objectsize.i32.p0i8(i8*, i1 immarg, i1 immarg, i1 immarg) #1
-
-attributes #0 = { minsize nounwind optsize }
-attributes #1 = { nounwind readnone speculatable willreturn }


        


More information about the llvm-commits mailing list