commit a6d9730f403afa8b591f278101996ecca9ad2dd2
Author: Hans Wennborg <hans@hanshq.net>
Date:   Wed Apr 12 13:28:25 2023 +0200

    Revert "Move "auto-init" instructions to the dominator of their users"
    
    This could also move initialization of sret args, causing actually
    initialized parts of such return values to be uninitialized. See
    discussion on the code review.
    
    > As a result of -ftrivial-auto-var-init, clang generates instructions to
    > set alloca'd memory to a given pattern, right after the allocation site.
    > In some cases, this (somehow costly) operation could be delayed, leading
    > to conditional execution in some cases.
    >
    > This is not an uncommon situation: it happens ~500 times on the cPython
    > code base, and much more on the LLVM codebase. The benefit greatly
    > varies on the execution path, but it should not regress on performance.
    >
    > This is a recommit of cca01008cc31a891d0ec70aff2201b25d05d8f1b with
    > MemorySSA update fixes.
    >
    > Differential Revision: https://reviews.llvm.org/D137707
    
    This reverts commit 50b2a113db197a97f60ad2aace8b7382dc9b8c31
    and follow-up commit ad9ad3735c4821ff4651fab7537a75b8f0bb60f8.

diff --git a/llvm/include/llvm/Transforms/Utils/MoveAutoInit.h b/llvm/include/llvm/Transforms/Utils/MoveAutoInit.h
deleted file mode 100644
index 980b55f46f11..000000000000
--- a/llvm/include/llvm/Transforms/Utils/MoveAutoInit.h
+++ /dev/null
@@ -1,29 +0,0 @@
-//===- MoveAutoInit.h - Move insts marked as auto-init Pass --*- C++ -*-======//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-//
-// This pass moves instructions marked as auto-init closer to their use if
-// profitable, generally because it moves them under a guard, potentially
-// skipping the overhead of the auto-init under some execution paths.
-//
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_TRANSFORMS_UTILS_MOVEAUTOINIT_H
-#define LLVM_TRANSFORMS_UTILS_MOVEAUTOINIT_H
-
-#include "llvm/IR/PassManager.h"
-
-namespace llvm {
-
-class MoveAutoInitPass : public PassInfoMixin<MoveAutoInitPass> {
-public:
-  PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
-};
-} // end namespace llvm
-
-#endif // LLVM_TRANSFORMS_UTILS_MOVEAUTOINIT_H
diff --git a/llvm/lib/Passes/PassBuilder.cpp b/llvm/lib/Passes/PassBuilder.cpp
index ebfd5374e2bc..a04f8bbaa5dc 100644
--- a/llvm/lib/Passes/PassBuilder.cpp
+++ b/llvm/lib/Passes/PassBuilder.cpp
@@ -247,7 +247,6 @@
 #include "llvm/Transforms/Utils/LowerSwitch.h"
 #include "llvm/Transforms/Utils/Mem2Reg.h"
 #include "llvm/Transforms/Utils/MetaRenamer.h"
-#include "llvm/Transforms/Utils/MoveAutoInit.h"
 #include "llvm/Transforms/Utils/NameAnonGlobals.h"
 #include "llvm/Transforms/Utils/PredicateInfo.h"
 #include "llvm/Transforms/Utils/RelLookupTableConverter.h"
diff --git a/llvm/lib/Passes/PassBuilderPipelines.cpp b/llvm/lib/Passes/PassBuilderPipelines.cpp
index fce249973a0a..fe6d0ba09862 100644
--- a/llvm/lib/Passes/PassBuilderPipelines.cpp
+++ b/llvm/lib/Passes/PassBuilderPipelines.cpp
@@ -125,7 +125,6 @@
 #include "llvm/Transforms/Utils/InjectTLIMappings.h"
 #include "llvm/Transforms/Utils/LibCallsShrinkWrap.h"
 #include "llvm/Transforms/Utils/Mem2Reg.h"
-#include "llvm/Transforms/Utils/MoveAutoInit.h"
 #include "llvm/Transforms/Utils/NameAnonGlobals.h"
 #include "llvm/Transforms/Utils/RelLookupTableConverter.h"
 #include "llvm/Transforms/Utils/SimplifyCFGOptions.h"
@@ -656,8 +655,6 @@ PassBuilder::buildFunctionSimplificationPipeline(OptimizationLevel Level,
   FPM.addPass(MemCpyOptPass());
 
   FPM.addPass(DSEPass());
-  FPM.addPass(MoveAutoInitPass());
-
   FPM.addPass(createFunctionToLoopPassAdaptor(
       LICMPass(PTO.LicmMssaOptCap, PTO.LicmMssaNoAccForPromotionCap,
                /*AllowSpeculation=*/true),
@@ -1802,7 +1799,6 @@ PassBuilder::buildLTODefaultPipeline(OptimizationLevel Level,
 
   // Nuke dead stores.
   MainFPM.addPass(DSEPass());
-  MainFPM.addPass(MoveAutoInitPass());
   MainFPM.addPass(MergedLoadStoreMotionPass());
 
   LoopPassManager LPM;
diff --git a/llvm/lib/Passes/PassRegistry.def b/llvm/lib/Passes/PassRegistry.def
index 2c6294130aed..82592a1ee9b5 100644
--- a/llvm/lib/Passes/PassRegistry.def
+++ b/llvm/lib/Passes/PassRegistry.def
@@ -333,7 +333,6 @@ FUNCTION_PASS("mem2reg", PromotePass())
 FUNCTION_PASS("memcpyopt", MemCpyOptPass())
 FUNCTION_PASS("mergeicmps", MergeICmpsPass())
 FUNCTION_PASS("mergereturn", UnifyFunctionExitNodesPass())
-FUNCTION_PASS("move-auto-init", MoveAutoInitPass())
 FUNCTION_PASS("nary-reassociate", NaryReassociatePass())
 FUNCTION_PASS("newgvn", NewGVNPass())
 FUNCTION_PASS("jump-threading", JumpThreadingPass())
diff --git a/llvm/lib/Transforms/Utils/CMakeLists.txt b/llvm/lib/Transforms/Utils/CMakeLists.txt
index a870071f3f64..6663ce6c4b0a 100644
--- a/llvm/lib/Transforms/Utils/CMakeLists.txt
+++ b/llvm/lib/Transforms/Utils/CMakeLists.txt
@@ -58,7 +58,6 @@ add_llvm_component_library(LLVMTransformUtils
   MetaRenamer.cpp
   MisExpect.cpp
   ModuleUtils.cpp
-  MoveAutoInit.cpp
   NameAnonGlobals.cpp
   PredicateInfo.cpp
   PromoteMemoryToRegister.cpp
diff --git a/llvm/lib/Transforms/Utils/MoveAutoInit.cpp b/llvm/lib/Transforms/Utils/MoveAutoInit.cpp
deleted file mode 100644
index 2c38adba57c2..000000000000
--- a/llvm/lib/Transforms/Utils/MoveAutoInit.cpp
+++ /dev/null
@@ -1,221 +0,0 @@
-//===-- MoveAutoInit.cpp - move auto-init inst closer to their use site----===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-//
-// This pass moves instruction maked as auto-init closer to the basic block that
-// use it, eventually removing it from some control path of the function.
-//
-//===----------------------------------------------------------------------===//
-
-#include "llvm/Transforms/Utils/MoveAutoInit.h"
-#include "llvm/ADT/STLExtras.h"
-#include "llvm/ADT/Statistic.h"
-#include "llvm/ADT/StringSet.h"
-#include "llvm/Analysis/MemorySSA.h"
-#include "llvm/Analysis/MemorySSAUpdater.h"
-#include "llvm/IR/DebugInfo.h"
-#include "llvm/IR/Dominators.h"
-#include "llvm/IR/IRBuilder.h"
-#include "llvm/IR/Instructions.h"
-#include "llvm/IR/IntrinsicInst.h"
-#include "llvm/Support/CommandLine.h"
-#include "llvm/Transforms/Utils.h"
-#include "llvm/Transforms/Utils/LoopUtils.h"
-
-using namespace llvm;
-
-#define DEBUG_TYPE "move-auto-init"
-
-STATISTIC(NumMoved, "Number of instructions moved");
-
-static cl::opt<unsigned> MoveAutoInitThreshold(
-    "move-auto-init-threshold", cl::Hidden, cl::init(128),
-    cl::desc("Maximum instructions to analyze per moved initialization"));
-
-static bool hasAutoInitMetadata(const Instruction &I) {
-  return I.hasMetadata(LLVMContext::MD_annotation) &&
-         any_of(I.getMetadata(LLVMContext::MD_annotation)->operands(),
-                [](const MDOperand &Op) {
-                  return cast<MDString>(Op.get())->getString() == "auto-init";
-                });
-}
-
-/// Finds a BasicBlock in the CFG where instruction `I` can be moved to while
-/// not changing the Memory SSA ordering and being guarded by at least one
-/// condition.
-static BasicBlock *usersDominator(Instruction *I, DominatorTree &DT,
-                                  MemorySSA &MSSA) {
-  BasicBlock *CurrentDominator = nullptr;
-  MemoryLocation ML;
-  if (auto *MI = dyn_cast<MemIntrinsic>(I))
-    ML = MemoryLocation::getForDest(MI);
-  else if (auto *SI = dyn_cast<StoreInst>(I))
-    ML = MemoryLocation::get(SI);
-  else
-    assert(false && "memory location set");
-
-  MemoryUseOrDef &IMA = *MSSA.getMemoryAccess(I);
-  BatchAAResults AA(MSSA.getAA());
-
-  SmallPtrSet<MemoryAccess *, 8> Visited;
-
-  auto AsMemoryAccess = [](User *U) { return cast<MemoryAccess>(U); };
-  SmallVector<MemoryAccess *> WorkList(map_range(IMA.users(), AsMemoryAccess));
-
-  while (!WorkList.empty()) {
-    MemoryAccess *MA = WorkList.pop_back_val();
-    if (!Visited.insert(MA).second)
-      continue;
-
-    if (Visited.size() > MoveAutoInitThreshold)
-      return nullptr;
-
-    bool FoundClobberingUser = false;
-    if (auto *M = dyn_cast<MemoryUseOrDef>(MA)) {
-      Instruction *MI = M->getMemoryInst();
-
-      // If this memory instruction may not clobber `I`, we can skip it.
-      // LifetimeEnd is a valid user, but we do not want it in the user
-      // dominator.
-      if (AA.getModRefInfo(MI, ML) != ModRefInfo::NoModRef &&
-          !MI->isLifetimeStartOrEnd() && MI != I) {
-        FoundClobberingUser = true;
-        CurrentDominator = CurrentDominator
-                               ? DT.findNearestCommonDominator(CurrentDominator,
-                                                               MI->getParent())
-                               : MI->getParent();
-      }
-    }
-    if (!FoundClobberingUser) {
-      auto UsersAsMemoryAccesses = map_range(MA->users(), AsMemoryAccess);
-      append_range(WorkList, UsersAsMemoryAccesses);
-    }
-  }
-  return CurrentDominator;
-}
-
-static bool runMoveAutoInit(Function &F, DominatorTree &DT, MemorySSA &MSSA) {
-  BasicBlock &EntryBB = F.getEntryBlock();
-  SmallVector<std::pair<Instruction *, BasicBlock *>> JobList;
-
-  //
-  // Compute movable instructions.
-  //
-  for (Instruction &I : EntryBB) {
-    if (!hasAutoInitMetadata(I))
-      continue;
-
-    if (I.isVolatile())
-      continue;
-
-    BasicBlock *UsersDominator = usersDominator(&I, DT, MSSA);
-    if (!UsersDominator)
-      continue;
-
-    if (UsersDominator == &EntryBB)
-      continue;
-
-    // Traverse the CFG to detect cycles `UsersDominator` would be part of.
-    SmallPtrSet<BasicBlock *, 8> TransitiveSuccessors;
-    SmallVector<BasicBlock *> WorkList(successors(UsersDominator));
-    bool HasCycle = false;
-    while (!WorkList.empty()) {
-      BasicBlock *CurrBB = WorkList.pop_back_val();
-      if (CurrBB == UsersDominator)
-        // No early exit because we want to compute the full set of transitive
-        // successors.
-        HasCycle = true;
-      for (BasicBlock *Successor : successors(CurrBB)) {
-        if (!TransitiveSuccessors.insert(Successor).second)
-          continue;
-        WorkList.push_back(Successor);
-      }
-    }
-
-    // Don't insert if that could create multiple execution of I,
-    // but we can insert it in the non back-edge predecessors, if it exists.
-    if (HasCycle) {
-      BasicBlock *UsersDominatorHead = UsersDominator;
-      while (BasicBlock *UniquePredecessor =
-                 UsersDominatorHead->getUniquePredecessor())
-        UsersDominatorHead = UniquePredecessor;
-
-      if (UsersDominatorHead == &EntryBB)
-        continue;
-
-      BasicBlock *DominatingPredecessor = nullptr;
-      for (BasicBlock *Pred : predecessors(UsersDominatorHead)) {
-        // If one of the predecessor of the dominator also transitively is a
-        // successor, moving to the dominator would do the inverse of loop
-        // hoisting, and we don't want that.
-        if (TransitiveSuccessors.count(Pred))
-          continue;
-
-        DominatingPredecessor =
-            DominatingPredecessor
-                ? DT.findNearestCommonDominator(DominatingPredecessor, Pred)
-                : Pred;
-      }
-
-      if (!DominatingPredecessor || DominatingPredecessor == &EntryBB)
-        continue;
-
-      UsersDominator = DominatingPredecessor;
-    }
-
-    // CatchSwitchInst blocks can only have one instruction, so they are not
-    // good candidates for insertion.
-    while (isa<CatchSwitchInst>(UsersDominator->getFirstInsertionPt())) {
-      for (BasicBlock *Pred : predecessors(UsersDominator))
-        UsersDominator = DT.findNearestCommonDominator(UsersDominator, Pred);
-    }
-
-    // We finally found a place where I can be moved while not introducing extra
-    // execution, and guarded by at least one condition.
-    if (UsersDominator != &EntryBB)
-      JobList.emplace_back(&I, UsersDominator);
-  }
-
-  //
-  // Perform the actual substitution.
-  //
-  if (JobList.empty())
-    return false;
-
-  MemorySSAUpdater MSSAU(&MSSA);
-
-  // Reverse insertion to respect relative order between instructions:
-  // if two instructions are moved from the same BB to the same BB, we insert
-  // the second one in the front, then the first on top of it.
-  for (auto &Job : reverse(JobList)) {
-    Job.first->moveBefore(&*Job.second->getFirstInsertionPt());
-    MSSAU.moveToPlace(MSSA.getMemoryAccess(Job.first), Job.first->getParent(),
-                      MemorySSA::InsertionPlace::Beginning);
-  }
-
-  if (VerifyMemorySSA)
-    MSSA.verifyMemorySSA();
-
-  NumMoved += JobList.size();
-
-  return true;
-}
-
-PreservedAnalyses MoveAutoInitPass::run(Function &F,
-                                        FunctionAnalysisManager &AM) {
-
-  auto &DT = AM.getResult<DominatorTreeAnalysis>(F);
-  auto &MSSA = AM.getResult<MemorySSAAnalysis>(F).getMSSA();
-  if (!runMoveAutoInit(F, DT, MSSA))
-    return PreservedAnalyses::all();
-
-  PreservedAnalyses PA;
-  PA.preserve<DominatorTreeAnalysis>();
-  PA.preserve<MemorySSAAnalysis>();
-  PA.preserveSet<CFGAnalyses>();
-  return PA;
-}
diff --git a/llvm/test/Other/new-pm-defaults.ll b/llvm/test/Other/new-pm-defaults.ll
index 7347b3626e52..9f46f1916ca2 100644
--- a/llvm/test/Other/new-pm-defaults.ll
+++ b/llvm/test/Other/new-pm-defaults.ll
@@ -206,7 +206,6 @@
 ; CHECK-O-NEXT: Running analysis: PostDominatorTreeAnalysis
 ; CHECK-O23SZ-NEXT: Running pass: MemCpyOptPass
 ; CHECK-O23SZ-NEXT: Running pass: DSEPass
-; CHECK-O23SZ-NEXT: Running pass: MoveAutoInitPass on foo
 ; CHECK-O23SZ-NEXT: Running pass: LoopSimplifyPass
 ; CHECK-O23SZ-NEXT: Running pass: LCSSAPass
 ; CHECK-O23SZ-NEXT: Running pass: LICMPass
diff --git a/llvm/test/Other/new-pm-lto-defaults.ll b/llvm/test/Other/new-pm-lto-defaults.ll
index 2f8cfd2a5d41..d794794de11d 100644
--- a/llvm/test/Other/new-pm-lto-defaults.ll
+++ b/llvm/test/Other/new-pm-lto-defaults.ll
@@ -108,7 +108,6 @@
 ; CHECK-O23SZ-NEXT: Running pass: MemCpyOptPass on foo
 ; CHECK-O23SZ-NEXT: Running pass: DSEPass on foo
 ; CHECK-O23SZ-NEXT: Running analysis: PostDominatorTreeAnalysis on foo
-; CHECK-O23SZ-NEXT: Running pass: MoveAutoInitPass on foo
 ; CHECK-O23SZ-NEXT: Running pass: MergedLoadStoreMotionPass on foo
 ; CHECK-O23SZ-NEXT: Running pass: LoopSimplifyPass on foo
 ; CHECK-O23SZ-NEXT: Running pass: LCSSAPass on foo
diff --git a/llvm/test/Other/new-pm-thinlto-postlink-defaults.ll b/llvm/test/Other/new-pm-thinlto-postlink-defaults.ll
index 1fa850c524c4..9a28cb1d5802 100644
--- a/llvm/test/Other/new-pm-thinlto-postlink-defaults.ll
+++ b/llvm/test/Other/new-pm-thinlto-postlink-defaults.ll
@@ -149,7 +149,6 @@
 ; CHECK-O-NEXT: Running analysis: PostDominatorTreeAnalysis
 ; CHECK-O23SZ-NEXT: Running pass: MemCpyOptPass
 ; CHECK-O23SZ-NEXT: Running pass: DSEPass
-; CHECK-O23SZ-NEXT: Running pass: MoveAutoInitPass on foo
 ; CHECK-O23SZ-NEXT: Running pass: LoopSimplifyPass
 ; CHECK-O23SZ-NEXT: Running pass: LCSSAPass
 ; CHECK-O23SZ-NEXT: Running pass: LICMPass on loop
diff --git a/llvm/test/Other/new-pm-thinlto-postlink-pgo-defaults.ll b/llvm/test/Other/new-pm-thinlto-postlink-pgo-defaults.ll
index 751fe31661b2..0bb8bb8830fa 100644
--- a/llvm/test/Other/new-pm-thinlto-postlink-pgo-defaults.ll
+++ b/llvm/test/Other/new-pm-thinlto-postlink-pgo-defaults.ll
@@ -136,7 +136,6 @@
 ; CHECK-O-NEXT: Running pass: ADCEPass
 ; CHECK-O23SZ-NEXT: Running pass: MemCpyOptPass
 ; CHECK-O23SZ-NEXT: Running pass: DSEPass
-; CHECK-O23SZ-NEXT: Running pass: MoveAutoInitPass on foo
 ; CHECK-O23SZ-NEXT: Running pass: LoopSimplifyPass
 ; CHECK-O23SZ-NEXT: Running pass: LCSSAPass
 ; CHECK-O23SZ-NEXT: Running pass: LICMPass
diff --git a/llvm/test/Other/new-pm-thinlto-postlink-samplepgo-defaults.ll b/llvm/test/Other/new-pm-thinlto-postlink-samplepgo-defaults.ll
index 4421cbdf81c1..d24afcc698eb 100644
--- a/llvm/test/Other/new-pm-thinlto-postlink-samplepgo-defaults.ll
+++ b/llvm/test/Other/new-pm-thinlto-postlink-samplepgo-defaults.ll
@@ -143,7 +143,6 @@
 ; CHECK-O-NEXT: Running pass: ADCEPass
 ; CHECK-O23SZ-NEXT: Running pass: MemCpyOptPass
 ; CHECK-O23SZ-NEXT: Running pass: DSEPass
-; CHECK-O23SZ-NEXT: Running pass: MoveAutoInitPass
 ; CHECK-O23SZ-NEXT: Running pass: LoopSimplifyPass
 ; CHECK-O23SZ-NEXT: Running pass: LCSSAPass
 ; CHECK-O23SZ-NEXT: Running pass: LICMPass
diff --git a/llvm/test/Other/new-pm-thinlto-prelink-defaults.ll b/llvm/test/Other/new-pm-thinlto-prelink-defaults.ll
index fde723a7fe1a..b9aa75daa6e5 100644
--- a/llvm/test/Other/new-pm-thinlto-prelink-defaults.ll
+++ b/llvm/test/Other/new-pm-thinlto-prelink-defaults.ll
@@ -147,7 +147,6 @@
 ; CHECK-O-NEXT: Running analysis: PostDominatorTreeAnalysis
 ; CHECK-O23SZ-NEXT: Running pass: MemCpyOptPass
 ; CHECK-O23SZ-NEXT: Running pass: DSEPass
-; CHECK-O23SZ-NEXT: Running pass: MoveAutoInitPass
 ; CHECK-O23SZ-NEXT: Running pass: LoopSimplifyPass
 ; CHECK-O23SZ-NEXT: Running pass: LCSSAPass
 ; CHECK-O23SZ-NEXT: Running pass: LICMPass on loop
diff --git a/llvm/test/Other/new-pm-thinlto-prelink-pgo-defaults.ll b/llvm/test/Other/new-pm-thinlto-prelink-pgo-defaults.ll
index d2d07a3f1a4a..ea0fc0947648 100644
--- a/llvm/test/Other/new-pm-thinlto-prelink-pgo-defaults.ll
+++ b/llvm/test/Other/new-pm-thinlto-prelink-pgo-defaults.ll
@@ -172,7 +172,6 @@
 ; CHECK-O-NEXT: Running pass: ADCEPass
 ; CHECK-O23SZ-NEXT: Running pass: MemCpyOptPass
 ; CHECK-O23SZ-NEXT: Running pass: DSEPass
-; CHECK-O23SZ-NEXT: Running pass: MoveAutoInitPass on foo
 ; CHECK-O23SZ-NEXT: Running pass: LoopSimplifyPass
 ; CHECK-O23SZ-NEXT: Running pass: LCSSAPass
 ; CHECK-O23SZ-NEXT: Running pass: LICMPass
diff --git a/llvm/test/Other/new-pm-thinlto-prelink-samplepgo-defaults.ll b/llvm/test/Other/new-pm-thinlto-prelink-samplepgo-defaults.ll
index 957cfc68f2e8..9b8f22918362 100644
--- a/llvm/test/Other/new-pm-thinlto-prelink-samplepgo-defaults.ll
+++ b/llvm/test/Other/new-pm-thinlto-prelink-samplepgo-defaults.ll
@@ -137,7 +137,6 @@
 ; CHECK-O-NEXT: Running pass: ADCEPass
 ; CHECK-O23SZ-NEXT: Running pass: MemCpyOptPass
 ; CHECK-O23SZ-NEXT: Running pass: DSEPass
-; CHECK-O23SZ-NEXT: Running pass: MoveAutoInitPass on foo
 ; CHECK-O23SZ-NEXT: Running pass: LoopSimplifyPass
 ; CHECK-O23SZ-NEXT: Running pass: LCSSAPass
 ; CHECK-O23SZ-NEXT: Running pass: LICMPass
diff --git a/llvm/test/Transforms/MoveAutoInit/branch.ll b/llvm/test/Transforms/MoveAutoInit/branch.ll
deleted file mode 100644
index 6c51e33c8c8e..000000000000
--- a/llvm/test/Transforms/MoveAutoInit/branch.ll
+++ /dev/null
@@ -1,41 +0,0 @@
-; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
-; RUN: opt < %s -S -passes='move-auto-init' -verify-memoryssa | FileCheck %s
-
-@__const.foo.buffer = private unnamed_addr constant [8 x i32] [i32 -1431655766, i32 -1431655766, i32 -1431655766, i32 -1431655766, i32 -1431655766, i32 -1431655766, i32 -1431655766, i32 -1431655766], align 16
-
-define void @foo(i32 %x) {
-; CHECK-LABEL: @foo(
-; CHECK-NEXT:  entry:
-; CHECK-NEXT:    [[BUFFER:%.*]] = alloca [8 x i32], align 16
-; CHECK-NEXT:    [[TOBOOL:%.*]] = icmp ne i32 [[X:%.*]], 0
-; CHECK-NEXT:    br i1 [[TOBOOL]], label [[IF_THEN:%.*]], label [[IF_END:%.*]]
-; CHECK:       if.then:
-; CHECK-NEXT:    call void @llvm.memcpy.p0.p0.i64(ptr align 16 [[BUFFER]], ptr align 16 @__const.foo.buffer, i64 32, i1 false), !annotation !0
-; CHECK-NEXT:    call void @dump(ptr [[BUFFER]])
-; CHECK-NEXT:    br label [[IF_END]]
-; CHECK:       if.end:
-; CHECK-NEXT:    ret void
-;
-
-entry:
-  %buffer = alloca [8 x i32], align 16
-  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %buffer, ptr align 16 @__const.foo.buffer, i64 32, i1 false), !annotation !0
-  %tobool = icmp ne i32 %x, 0
-  br i1 %tobool, label %if.then, label %if.end
-
-if.then:                                          ; preds = %entry
-  call void @dump(ptr %buffer)
-  br label %if.end
-
-if.end:                                           ; preds = %if.then, %entry
-  ret void
-}
-
-
-
-declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg)
-
-declare void @dump(ptr)
-
-!0 = !{!"auto-init"}
-
diff --git a/llvm/test/Transforms/MoveAutoInit/clobber.ll b/llvm/test/Transforms/MoveAutoInit/clobber.ll
deleted file mode 100644
index 0d70d85119f5..000000000000
--- a/llvm/test/Transforms/MoveAutoInit/clobber.ll
+++ /dev/null
@@ -1,100 +0,0 @@
-; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
-; Checks that move-auto-init can move instruction passed unclobbering memory
-; instructions.
-; RUN: opt < %s -S -passes='move-auto-init' -verify-memoryssa | FileCheck %s
-
-target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
-
-define i32 @foo(i32 noundef %0, i32 noundef %1, i32 noundef %2) #0 {
-; CHECK-LABEL: @foo(
-; CHECK-NEXT:    [[TMP4:%.*]] = alloca [100 x i8], align 16
-; CHECK-NEXT:    [[TMP5:%.*]] = alloca [2 x i8], align 1
-; CHECK-NEXT:    [[TMP6:%.*]] = getelementptr inbounds [100 x i8], ptr [[TMP4]], i64 0, i64 0
-; CHECK-NEXT:    call void @llvm.lifetime.start.p0(i64 100, ptr nonnull [[TMP6]]) #[[ATTR3:[0-9]+]]
-; CHECK-NEXT:    [[TMP7:%.*]] = getelementptr inbounds [2 x i8], ptr [[TMP5]], i64 0, i64 0
-; CHECK-NEXT:    call void @llvm.lifetime.start.p0(i64 2, ptr nonnull [[TMP7]]) #[[ATTR3]]
-; CHECK-NEXT:    [[TMP8:%.*]] = getelementptr inbounds [2 x i8], ptr [[TMP5]], i64 0, i64 1
-; CHECK-NEXT:    [[TMP9:%.*]] = icmp eq i32 [[TMP1:%.*]], 0
-; CHECK-NEXT:    br i1 [[TMP9]], label [[TMP15:%.*]], label [[TMP10:%.*]]
-; CHECK:       10:
-; CHECK-NEXT:    call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(100) [[TMP6]], i8 -86, i64 100, i1 false), !annotation !0
-; CHECK-NEXT:    [[TMP11:%.*]] = sext i32 [[TMP0:%.*]] to i64
-; CHECK-NEXT:    [[TMP12:%.*]] = getelementptr inbounds [100 x i8], ptr [[TMP4]], i64 0, i64 [[TMP11]]
-; CHECK-NEXT:    store i8 12, ptr [[TMP12]], align 1
-; CHECK-NEXT:    [[TMP13:%.*]] = load i8, ptr [[TMP6]], align 16
-; CHECK-NEXT:    [[TMP14:%.*]] = sext i8 [[TMP13]] to i32
-; CHECK-NEXT:    br label [[TMP22:%.*]]
-; CHECK:       15:
-; CHECK-NEXT:    [[TMP16:%.*]] = icmp eq i32 [[TMP2:%.*]], 0
-; CHECK-NEXT:    br i1 [[TMP16]], label [[TMP22]], label [[TMP17:%.*]]
-; CHECK:       17:
-; CHECK-NEXT:    store i8 -86, ptr [[TMP7]], align 1, !annotation !0
-; CHECK-NEXT:    store i8 -86, ptr [[TMP8]], align 1, !annotation !0
-; CHECK-NEXT:    [[TMP18:%.*]] = sext i32 [[TMP0]] to i64
-; CHECK-NEXT:    [[TMP19:%.*]] = getelementptr inbounds [2 x i8], ptr [[TMP5]], i64 0, i64 [[TMP18]]
-; CHECK-NEXT:    store i8 12, ptr [[TMP19]], align 1
-; CHECK-NEXT:    [[TMP20:%.*]] = load i8, ptr [[TMP7]], align 1
-; CHECK-NEXT:    [[TMP21:%.*]] = sext i8 [[TMP20]] to i32
-; CHECK-NEXT:    br label [[TMP22]]
-; CHECK:       22:
-; CHECK-NEXT:    [[TMP23:%.*]] = phi i32 [ [[TMP14]], [[TMP10]] ], [ [[TMP21]], [[TMP17]] ], [ 0, [[TMP15]] ]
-; CHECK-NEXT:    call void @llvm.lifetime.end.p0(i64 2, ptr nonnull [[TMP7]]) #[[ATTR3]]
-; CHECK-NEXT:    call void @llvm.lifetime.end.p0(i64 100, ptr nonnull [[TMP6]]) #[[ATTR3]]
-; CHECK-NEXT:    ret i32 [[TMP23]]
-;
-
-  %4 = alloca [100 x i8], align 16
-  %5 = alloca [2 x i8], align 1
-  %6 = getelementptr inbounds [100 x i8], [100 x i8]* %4, i64 0, i64 0
-  call void @llvm.lifetime.start.p0i8(i64 100, i8* nonnull %6) #3
-  ; This memset must move.
-  call void @llvm.memset.p0i8.i64(i8* noundef nonnull align 16 dereferenceable(100) %6, i8 -86, i64 100, i1 false), !annotation !0
-  %7 = getelementptr inbounds [2 x i8], [2 x i8]* %5, i64 0, i64 0
-  call void @llvm.lifetime.start.p0i8(i64 2, i8* nonnull %7) #3
-  ; This store must move.
-  store i8 -86, i8* %7, align 1, !annotation !0
-  %8 = getelementptr inbounds [2 x i8], [2 x i8]* %5, i64 0, i64 1
-  ; This store must move.
-  store i8 -86, i8* %8, align 1, !annotation !0
-  %9 = icmp eq i32 %1, 0
-  br i1 %9, label %15, label %10
-
-10:
-  %11 = sext i32 %0 to i64
-  %12 = getelementptr inbounds [100 x i8], [100 x i8]* %4, i64 0, i64 %11
-  store i8 12, i8* %12, align 1
-  %13 = load i8, i8* %6, align 16
-  %14 = sext i8 %13 to i32
-  br label %22
-
-15:
-  %16 = icmp eq i32 %2, 0
-  br i1 %16, label %22, label %17
-
-17:
-  %18 = sext i32 %0 to i64
-  %19 = getelementptr inbounds [2 x i8], [2 x i8]* %5, i64 0, i64 %18
-  store i8 12, i8* %19, align 1
-  %20 = load i8, i8* %7, align 1
-  %21 = sext i8 %20 to i32
-  br label %22
-
-22:
-  %23 = phi i32 [ %14, %10 ], [ %21, %17 ], [ 0, %15 ]
-  call void @llvm.lifetime.end.p0i8(i64 2, i8* nonnull %7) #3
-  call void @llvm.lifetime.end.p0i8(i64 100, i8* nonnull %6) #3
-  ret i32 %23
-}
-
-declare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture) #1
-
-declare void @llvm.memset.p0i8.i64(i8* nocapture writeonly, i8, i64, i1 immarg) #2
-
-declare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture) #1
-
-attributes #0 = { mustprogress nofree nosync nounwind readnone uwtable willreturn }
-attributes #1 = { argmemonly mustprogress nofree nosync nounwind willreturn }
-attributes #2 = { argmemonly mustprogress nofree nounwind willreturn writeonly }
-attributes #3 = { nounwind }
-
-!0 = !{!"auto-init"}
diff --git a/llvm/test/Transforms/MoveAutoInit/fence.ll b/llvm/test/Transforms/MoveAutoInit/fence.ll
deleted file mode 100644
index bce9c136942e..000000000000
--- a/llvm/test/Transforms/MoveAutoInit/fence.ll
+++ /dev/null
@@ -1,70 +0,0 @@
-; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
-; RUN: opt < %s -S -passes='move-auto-init' -verify-memoryssa | FileCheck %s
-
-target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
-
-; In that case, the store to %val happens before the fence and cannot go past
-; it.
-define void @foo(i32 %x) {
-; CHECK-LABEL: @foo(
-; CHECK-NEXT:  entry:
-; CHECK-NEXT:    [[VAL:%.*]] = alloca i32, align 4
-; CHECK-NEXT:    store i32 -1431655766, ptr [[VAL]], align 4, !annotation !0
-; CHECK-NEXT:    [[TOBOOL:%.*]] = icmp ne i32 [[X:%.*]], 0
-; CHECK-NEXT:    fence acquire
-; CHECK-NEXT:    br i1 [[TOBOOL]], label [[IF_THEN:%.*]], label [[IF_END:%.*]]
-; CHECK:       if.then:
-; CHECK-NEXT:    call void @dump(ptr [[VAL]])
-; CHECK-NEXT:    br label [[IF_END]]
-; CHECK:       if.end:
-; CHECK-NEXT:    ret void
-;
-entry:
-  %val = alloca i32, align 4
-  store i32 -1431655766, ptr %val, align 4, !annotation !0
-  %tobool = icmp ne i32 %x, 0
-  fence acquire
-  br i1 %tobool, label %if.then, label %if.end
-
-if.then:                                          ; preds = %entry
-  call void @dump(ptr %val)
-  br label %if.end
-
-if.end:                                           ; preds = %if.then, %entry
-  ret void
-}
-
-; In that case, the store to %val happens after the fence and it is moved within
-; the true branch as expected.
-define void @bar(i32 %x) {
-; CHECK-LABEL: @bar(
-; CHECK-NEXT:  entry:
-; CHECK-NEXT:    [[VAL:%.*]] = alloca i32, align 4
-; CHECK-NEXT:    [[TOBOOL:%.*]] = icmp ne i32 [[X:%.*]], 0
-; CHECK-NEXT:    fence acquire
-; CHECK-NEXT:    br i1 [[TOBOOL]], label [[IF_THEN:%.*]], label [[IF_END:%.*]]
-; CHECK:       if.then:
-; CHECK-NEXT:    store i32 -1431655766, ptr [[VAL]], align 4, !annotation !0
-; CHECK-NEXT:    call void @dump(ptr [[VAL]])
-; CHECK-NEXT:    br label [[IF_END]]
-; CHECK:       if.end:
-; CHECK-NEXT:    ret void
-;
-entry:
-  %val = alloca i32, align 4
-  %tobool = icmp ne i32 %x, 0
-  fence acquire
-  store i32 -1431655766, ptr %val, align 4, !annotation !0
-  br i1 %tobool, label %if.then, label %if.end
-
-if.then:                                          ; preds = %entry
-  call void @dump(ptr %val)
-  br label %if.end
-
-if.end:                                           ; preds = %if.then, %entry
-  ret void
-}
-
-declare void @dump(ptr)
-
-!0 = !{!"auto-init"}
diff --git a/llvm/test/Transforms/MoveAutoInit/loop.ll b/llvm/test/Transforms/MoveAutoInit/loop.ll
deleted file mode 100644
index 71153e58f4e3..000000000000
--- a/llvm/test/Transforms/MoveAutoInit/loop.ll
+++ /dev/null
@@ -1,102 +0,0 @@
-; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
-; RUN: opt < %s -S -passes='move-auto-init' -verify-memoryssa | FileCheck %s
-
-target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
-
-define void @foo(i32 %x) {
-; CHECK-LABEL: @foo(
-; CHECK-NEXT:  entry:
-; CHECK-NEXT:    [[BUFFER:%.*]] = alloca [80 x i32], align 16
-; CHECK-NEXT:    call void @llvm.memset.p0.i64(ptr align 16 [[BUFFER]], i8 -86, i64 320, i1 false), !annotation !0
-; CHECK-NEXT:    br label [[DO_BODY:%.*]]
-; CHECK:       do.body:
-; CHECK-NEXT:    [[X_ADDR_0:%.*]] = phi i32 [ [[X:%.*]], [[ENTRY:%.*]] ], [ [[DEC:%.*]], [[DO_COND:%.*]] ]
-; CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [80 x i32], ptr [[BUFFER]], i64 0, i64 0
-; CHECK-NEXT:    call void @dump(ptr [[ARRAYIDX]])
-; CHECK-NEXT:    br label [[DO_COND]]
-; CHECK:       do.cond:
-; CHECK-NEXT:    [[DEC]] = add nsw i32 [[X_ADDR_0]], -1
-; CHECK-NEXT:    [[TOBOOL:%.*]] = icmp ne i32 [[X_ADDR_0]], 0
-; CHECK-NEXT:    br i1 [[TOBOOL]], label [[DO_BODY]], label [[DO_END:%.*]]
-; CHECK:       do.end:
-; CHECK-NEXT:    ret void
-;
-
-entry:
-  %buffer = alloca [80 x i32], align 16
-  call void @llvm.memset.p0.i64(ptr align 16 %buffer, i8 -86, i64 320, i1 false), !annotation !0
-  br label %do.body
-
-do.body:                                          ; preds = %do.cond, %entry
-  %x.addr.0 = phi i32 [ %x, %entry ], [ %dec, %do.cond ]
-  %arrayidx = getelementptr inbounds [80 x i32], ptr %buffer, i64 0, i64 0
-  call void @dump(ptr %arrayidx)
-  br label %do.cond
-
-do.cond:                                          ; preds = %do.body
-  %dec = add nsw i32 %x.addr.0, -1
-  %tobool = icmp ne i32 %x.addr.0, 0
-  br i1 %tobool, label %do.body, label %do.end
-
-do.end:                                           ; preds = %do.cond
-  ret void
-}
-
-declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg)
-
-declare void @dump(ptr )
-
-define void @bar(i32 %x, i32 %y) {
-; CHECK-LABEL: @bar(
-; CHECK-NEXT:  entry:
-; CHECK-NEXT:    [[BUFFER:%.*]] = alloca [80 x i32], align 16
-; CHECK-NEXT:    [[TOBOOL:%.*]] = icmp ne i32 [[Y:%.*]], 0
-; CHECK-NEXT:    br i1 [[TOBOOL]], label [[IF_THEN:%.*]], label [[IF_END:%.*]]
-; CHECK:       if.then:
-; CHECK-NEXT:    call void @llvm.memset.p0.i64(ptr align 16 [[BUFFER]], i8 -86, i64 320, i1 false), !annotation !0
-; CHECK-NEXT:    [[ADD:%.*]] = add nsw i32 [[X:%.*]], [[Y]]
-; CHECK-NEXT:    br label [[DO_BODY:%.*]]
-; CHECK:       do.body:
-; CHECK-NEXT:    [[X_ADDR_0:%.*]] = phi i32 [ [[ADD]], [[IF_THEN]] ], [ [[DEC:%.*]], [[DO_COND:%.*]] ]
-; CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [80 x i32], ptr [[BUFFER]], i64 0, i64 0
-; CHECK-NEXT:    call void @dump(ptr [[ARRAYIDX]])
-; CHECK-NEXT:    br label [[DO_COND]]
-; CHECK:       do.cond:
-; CHECK-NEXT:    [[DEC]] = add nsw i32 [[X_ADDR_0]], -1
-; CHECK-NEXT:    [[TOBOOL1:%.*]] = icmp ne i32 [[X_ADDR_0]], 0
-; CHECK-NEXT:    br i1 [[TOBOOL1]], label [[DO_BODY]], label [[DO_END:%.*]]
-; CHECK:       do.end:
-; CHECK-NEXT:    br label [[IF_END]]
-; CHECK:       if.end:
-; CHECK-NEXT:    ret void
-;
-
-entry:
-  %buffer = alloca [80 x i32], align 16
-  call void @llvm.memset.p0.i64(ptr align 16 %buffer, i8 -86, i64 320, i1 false), !annotation !0
-  %tobool = icmp ne i32 %y, 0
-  br i1 %tobool, label %if.then, label %if.end
-
-if.then:                                          ; preds = %entry
-  %add = add nsw i32 %x, %y
-  br label %do.body
-
-do.body:                                          ; preds = %do.cond, %if.then
-  %x.addr.0 = phi i32 [ %add, %if.then ], [ %dec, %do.cond ]
-  %arrayidx = getelementptr inbounds [80 x i32], ptr %buffer, i64 0, i64 0
-  call void @dump(ptr %arrayidx)
-  br label %do.cond
-
-do.cond:                                          ; preds = %do.body
-  %dec = add nsw i32 %x.addr.0, -1
-  %tobool1 = icmp ne i32 %x.addr.0, 0
-  br i1 %tobool1, label %do.body, label %do.end
-
-do.end:                                           ; preds = %do.cond
-  br label %if.end
-
-if.end:                                           ; preds = %do.end, %entry
-  ret void
-}
-
-!0 = !{!"auto-init"}
diff --git a/llvm/test/Transforms/MoveAutoInit/scalar.ll b/llvm/test/Transforms/MoveAutoInit/scalar.ll
deleted file mode 100644
index 6929aebc58eb..000000000000
--- a/llvm/test/Transforms/MoveAutoInit/scalar.ll
+++ /dev/null
@@ -1,36 +0,0 @@
-; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
-; RUN: opt < %s -S -passes='move-auto-init' -verify-memoryssa | FileCheck %s
-
-target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
-
-define void @foo(i32 %x) {
-; CHECK-LABEL: @foo(
-; CHECK-NEXT:  entry:
-; CHECK-NEXT:    [[VAL:%.*]] = alloca i32, align 4
-; CHECK-NEXT:    [[TOBOOL:%.*]] = icmp ne i32 [[X:%.*]], 0
-; CHECK-NEXT:    br i1 [[TOBOOL]], label [[IF_THEN:%.*]], label [[IF_END:%.*]]
-; CHECK:       if.then:
-; CHECK-NEXT:    store i32 -1431655766, ptr [[VAL]], align 4, !annotation !0
-; CHECK-NEXT:    call void @dump(ptr [[VAL]])
-; CHECK-NEXT:    br label [[IF_END]]
-; CHECK:       if.end:
-; CHECK-NEXT:    ret void
-;
-
-entry:
-  %val = alloca i32, align 4
-  store i32 -1431655766, ptr %val, align 4, !annotation !0
-  %tobool = icmp ne i32 %x, 0
-  br i1 %tobool, label %if.then, label %if.end
-
-if.then:                                          ; preds = %entry
-  call void @dump(ptr %val)
-  br label %if.end
-
-if.end:                                           ; preds = %if.then, %entry
-  ret void
-}
-
-declare void @dump(ptr)
-
-!0 = !{!"auto-init"}
