From 4b86d7904863b3d0e552db37f455fe76430e6d46 Mon Sep 17 00:00:00 2001 From: Fedor Sergeev Date: Fri, 15 Dec 2017 09:32:11 +0000 Subject: [PATCH] [PM] port Rewrite Statepoints For GC to the new pass manager. Summary: The port is nearly straightforward. The only complication is related to the analyses handling, since one of the analyses used in this module pass is domtree, which is a function analysis. That requires asking for the results of each function and disallows a single interface for run-on-module pass action. Decided to copy-paste the main body of this pass. Most of its code is requesting analyses anyway, so not that much of a copy-paste. The rest of the code movement is to transform all the implementation helper functions like stripNonValidData into non-member statics. Extended all the related LLVM tests with new-pass-manager use. No failures. Reviewers: sanjoy, anna, reames Reviewed By: anna Subscribers: skatkov, llvm-commits Differential Revision: https://reviews.llvm.org/D41162 llvm-svn: 320796 --- llvm/include/llvm/InitializePasses.h | 2 +- llvm/include/llvm/Transforms/Scalar.h | 2 +- .../Scalar/RewriteStatepointsForGC.h | 39 +++++ llvm/lib/Passes/PassBuilder.cpp | 1 + llvm/lib/Passes/PassRegistry.def | 1 + .../Scalar/RewriteStatepointsForGC.cpp | 161 +++++++++++------- llvm/lib/Transforms/Scalar/Scalar.cpp | 2 +- .../base-pointers-1.ll | 1 + .../base-pointers-10.ll | 1 + .../base-pointers-11.ll | 1 + .../base-pointers-12.ll | 1 + .../base-pointers-13.ll | 1 + .../base-pointers-2.ll | 1 + .../base-pointers-3.ll | 1 + .../base-pointers-4.ll | 1 + .../base-pointers-5.ll | 1 + .../base-pointers-6.ll | 1 + .../base-pointers-7.ll | 1 + .../base-pointers-8.ll | 1 + .../base-pointers-9.ll | 1 + .../RewriteStatepointsForGC/base-pointers.ll | 1 + .../RewriteStatepointsForGC/base-vector.ll | 1 + .../RewriteStatepointsForGC/basic.ll | 1 + .../RewriteStatepointsForGC/basics.ll | 1 + .../RewriteStatepointsForGC/call-gc-result.ll | 1 + .../RewriteStatepointsForGC/codegen-cond.ll | 1 + .../RewriteStatepointsForGC/constants.ll | 1 + .../deopt-intrinsic-cconv.ll | 1 + .../deopt-intrinsic.ll | 1 + .../deopt-lowering-attrs.ll | 1 + .../RewriteStatepointsForGC/deref-pointers.ll | 1 + .../drop-invalid-metadata.ll | 1 + .../gc-relocate-creation.ll | 1 + .../RewriteStatepointsForGC/invokes.ll | 1 + .../RewriteStatepointsForGC/leaf-function.ll | 1 + .../RewriteStatepointsForGC/libcall.ll | 1 + .../live-vector-nosplit.ll | 1 + .../liveness-basics.ll | 1 + .../patchable-statepoints.ll | 1 + .../RewriteStatepointsForGC/preprocess.ll | 1 + .../relocate-invoke-result.ll | 1 + .../RewriteStatepointsForGC/relocation.ll | 1 + .../rematerialize-derived-pointers.ll | 1 + .../RewriteStatepointsForGC/rewrite-invoke.ll | 1 + .../statepoint-attrs.ll | 1 + .../statepoint-calling-conventions.ll | 1 + .../statepoint-coreclr.ll | 1 + .../statepoint-format.ll | 1 + .../two-invokes-one-landingpad.ll | 1 + .../RewriteStatepointsForGC/vector-bitcast.ll | 1 + 50 files changed, 188 insertions(+), 63 deletions(-) create mode 100644 llvm/include/llvm/Transforms/Scalar/RewriteStatepointsForGC.h diff --git a/llvm/include/llvm/InitializePasses.h b/llvm/include/llvm/InitializePasses.h index a0e9f759613c..dd7aa722ed2b 100644 --- a/llvm/include/llvm/InitializePasses.h +++ b/llvm/include/llvm/InitializePasses.h @@ -321,7 +321,7 @@ void initializeRegisterCoalescerPass(PassRegistry&); void initializeRenameIndependentSubregsPass(PassRegistry&); void initializeResetMachineFunctionPass(PassRegistry&); void initializeReversePostOrderFunctionAttrsLegacyPassPass(PassRegistry&); -void initializeRewriteStatepointsForGCPass(PassRegistry&); +void initializeRewriteStatepointsForGCLegacyPassPass(PassRegistry &); void initializeRewriteSymbolsLegacyPassPass(PassRegistry&); void initializeSafepointIRVerifierPass(PassRegistry&); void initializeSCCPLegacyPassPass(PassRegistry&); diff --git a/llvm/include/llvm/Transforms/Scalar.h b/llvm/include/llvm/Transforms/Scalar.h index 6fe35b441b5b..49186bc5cd66 100644 --- a/llvm/include/llvm/Transforms/Scalar.h +++ b/llvm/include/llvm/Transforms/Scalar.h @@ -521,7 +521,7 @@ FunctionPass *createPlaceSafepointsPass(); // RewriteStatepointsForGC - Rewrite any gc.statepoints which do not yet have // explicit relocations to include explicit relocations. // -ModulePass *createRewriteStatepointsForGCPass(); +ModulePass *createRewriteStatepointsForGCLegacyPass(); //===----------------------------------------------------------------------===// // diff --git a/llvm/include/llvm/Transforms/Scalar/RewriteStatepointsForGC.h b/llvm/include/llvm/Transforms/Scalar/RewriteStatepointsForGC.h new file mode 100644 index 000000000000..128f176f4420 --- /dev/null +++ b/llvm/include/llvm/Transforms/Scalar/RewriteStatepointsForGC.h @@ -0,0 +1,39 @@ +//===- RewriteStatepointsForGC.h - ------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This file provides interface to "Rewrite Statepoints for GC" pass. +// +// This passe rewrites call/invoke instructions so as to make potential +// relocations performed by the garbage collector explicit in the IR. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_TRANSFORMS_SCALAR_REWRITE_STATEPOINTS_FOR_GC_H +#define LLVM_TRANSFORMS_SCALAR_REWRITE_STATEPOINTS_FOR_GC_H + +#include "llvm/IR/PassManager.h" + +namespace llvm { + +class DominatorTree; +class Function; +class Module; +class TargetTransformInfo; +class TargetLibraryInfo; + +struct RewriteStatepointsForGC : public PassInfoMixin { + PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM); + + bool runOnFunction(Function &F, DominatorTree &, TargetTransformInfo &, + const TargetLibraryInfo &); +}; + +} // namespace llvm + +#endif // LLVM_TRANSFORMS_SCALAR_REWRITE_STATEPOINTS_FOR_GC_H diff --git a/llvm/lib/Passes/PassBuilder.cpp b/llvm/lib/Passes/PassBuilder.cpp index d33c4df70c60..cbae16a04ca6 100644 --- a/llvm/lib/Passes/PassBuilder.cpp +++ b/llvm/lib/Passes/PassBuilder.cpp @@ -126,6 +126,7 @@ #include "llvm/Transforms/Scalar/NewGVN.h" #include "llvm/Transforms/Scalar/PartiallyInlineLibCalls.h" #include "llvm/Transforms/Scalar/Reassociate.h" +#include "llvm/Transforms/Scalar/RewriteStatepointsForGC.h" #include "llvm/Transforms/Scalar/SCCP.h" #include "llvm/Transforms/Scalar/SROA.h" #include "llvm/Transforms/Scalar/SimpleLoopUnswitch.h" diff --git a/llvm/lib/Passes/PassRegistry.def b/llvm/lib/Passes/PassRegistry.def index 3fbc549d336b..4d9045aedfce 100644 --- a/llvm/lib/Passes/PassRegistry.def +++ b/llvm/lib/Passes/PassRegistry.def @@ -68,6 +68,7 @@ MODULE_PASS("print-callgraph", CallGraphPrinterPass(dbgs())) MODULE_PASS("print", PrintModulePass(dbgs())) MODULE_PASS("print-lcg", LazyCallGraphPrinterPass(dbgs())) MODULE_PASS("print-lcg-dot", LazyCallGraphDOTPrinterPass(dbgs())) +MODULE_PASS("rewrite-statepoints-for-gc", RewriteStatepointsForGC()) MODULE_PASS("rewrite-symbols", RewriteSymbolPass()) MODULE_PASS("rpo-functionattrs", ReversePostOrderFunctionAttrsPass()) MODULE_PASS("sample-profile", SampleProfileLoaderPass()) diff --git a/llvm/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp b/llvm/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp index 44acfc885797..3b45cfa482e6 100644 --- a/llvm/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp +++ b/llvm/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp @@ -12,6 +12,8 @@ // //===----------------------------------------------------------------------===// +#include "llvm/Transforms/Scalar/RewriteStatepointsForGC.h" + #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/DenseMap.h" #include "llvm/ADT/DenseSet.h" @@ -108,30 +110,96 @@ static cl::opt AllowStatepointWithNoDeoptInfo("rs4gc-allow-statepoint-with-no-deopt-info", cl::Hidden, cl::init(true)); +/// The IR fed into RewriteStatepointsForGC may have had attributes and +/// metadata implying dereferenceability that are no longer valid/correct after +/// RewriteStatepointsForGC has run. This is because semantically, after +/// RewriteStatepointsForGC runs, all calls to gc.statepoint "free" the entire +/// heap. stripNonValidData (conservatively) restores +/// correctness by erasing all attributes in the module that externally imply +/// dereferenceability. Similar reasoning also applies to the noalias +/// attributes and metadata. gc.statepoint can touch the entire heap including +/// noalias objects. +/// Apart from attributes and metadata, we also remove instructions that imply +/// constant physical memory: llvm.invariant.start. +static void stripNonValidData(Module &M); + +static bool shouldRewriteStatepointsIn(Function &F); + +PreservedAnalyses RewriteStatepointsForGC::run(Module &M, + ModuleAnalysisManager &AM) { + bool Changed = false; + auto &FAM = AM.getResult(M).getManager(); + for (Function &F : M) { + // Nothing to do for declarations. + if (F.isDeclaration() || F.empty()) + continue; + + // Policy choice says not to rewrite - the most common reason is that we're + // compiling code without a GCStrategy. + if (!shouldRewriteStatepointsIn(F)) + continue; + + auto &DT = FAM.getResult(F); + auto &TTI = FAM.getResult(F); + auto &TLI = FAM.getResult(F); + Changed |= runOnFunction(F, DT, TTI, TLI); + } + if (!Changed) + return PreservedAnalyses::all(); + + // stripNonValidData asserts that shouldRewriteStatepointsIn + // returns true for at least one function in the module. Since at least + // one function changed, we know that the precondition is satisfied. + stripNonValidData(M); + + PreservedAnalyses PA; + PA.preserve(); + PA.preserve(); + return PA; +} + namespace { -struct RewriteStatepointsForGC : public ModulePass { +class RewriteStatepointsForGCLegacyPass : public ModulePass { + RewriteStatepointsForGC Impl; + +public: static char ID; // Pass identification, replacement for typeid - RewriteStatepointsForGC() : ModulePass(ID) { - initializeRewriteStatepointsForGCPass(*PassRegistry::getPassRegistry()); + RewriteStatepointsForGCLegacyPass() : ModulePass(ID), Impl() { + initializeRewriteStatepointsForGCLegacyPassPass( + *PassRegistry::getPassRegistry()); } - bool runOnFunction(Function &F); - bool runOnModule(Module &M) override { bool Changed = false; - for (Function &F : M) - Changed |= runOnFunction(F); + const TargetLibraryInfo &TLI = + getAnalysis().getTLI(); + for (Function &F : M) { + // Nothing to do for declarations. + if (F.isDeclaration() || F.empty()) + continue; - if (Changed) { - // stripNonValidData asserts that shouldRewriteStatepointsIn - // returns true for at least one function in the module. Since at least - // one function changed, we know that the precondition is satisfied. - stripNonValidData(M); + // Policy choice says not to rewrite - the most common reason is that + // we're compiling code without a GCStrategy. + if (!shouldRewriteStatepointsIn(F)) + continue; + + TargetTransformInfo &TTI = + getAnalysis().getTTI(F); + auto &DT = getAnalysis(F).getDomTree(); + + Changed |= Impl.runOnFunction(F, DT, TTI, TLI); } - return Changed; + if (!Changed) + return false; + + // stripNonValidData asserts that shouldRewriteStatepointsIn + // returns true for at least one function in the module. Since at least + // one function changed, we know that the precondition is satisfied. + stripNonValidData(M); + return true; } void getAnalysisUsage(AnalysisUsage &AU) const override { @@ -141,43 +209,23 @@ struct RewriteStatepointsForGC : public ModulePass { AU.addRequired(); AU.addRequired(); } - - /// The IR fed into RewriteStatepointsForGC may have had attributes and - /// metadata implying dereferenceability that are no longer valid/correct after - /// RewriteStatepointsForGC has run. This is because semantically, after - /// RewriteStatepointsForGC runs, all calls to gc.statepoint "free" the entire - /// heap. stripNonValidData (conservatively) restores - /// correctness by erasing all attributes in the module that externally imply - /// dereferenceability. Similar reasoning also applies to the noalias - /// attributes and metadata. gc.statepoint can touch the entire heap including - /// noalias objects. - /// Apart from attributes and metadata, we also remove instructions that imply - /// constant physical memory: llvm.invariant.start. - void stripNonValidData(Module &M); - - // Helpers for stripNonValidData - void stripNonValidDataFromBody(Function &F); - void stripNonValidAttributesFromPrototype(Function &F); - - // Certain metadata on instructions are invalid after running RS4GC. - // Optimizations that run after RS4GC can incorrectly use this metadata to - // optimize functions. We drop such metadata on the instruction. - void stripInvalidMetadataFromInstruction(Instruction &I); }; } // end anonymous namespace -char RewriteStatepointsForGC::ID = 0; +char RewriteStatepointsForGCLegacyPass::ID = 0; -ModulePass *llvm::createRewriteStatepointsForGCPass() { - return new RewriteStatepointsForGC(); +ModulePass *llvm::createRewriteStatepointsForGCLegacyPass() { + return new RewriteStatepointsForGCLegacyPass(); } -INITIALIZE_PASS_BEGIN(RewriteStatepointsForGC, "rewrite-statepoints-for-gc", +INITIALIZE_PASS_BEGIN(RewriteStatepointsForGCLegacyPass, + "rewrite-statepoints-for-gc", "Make relocations explicit at statepoints", false, false) INITIALIZE_PASS_DEPENDENCY(DominatorTreeWrapperPass) INITIALIZE_PASS_DEPENDENCY(TargetTransformInfoWrapperPass) -INITIALIZE_PASS_END(RewriteStatepointsForGC, "rewrite-statepoints-for-gc", +INITIALIZE_PASS_END(RewriteStatepointsForGCLegacyPass, + "rewrite-statepoints-for-gc", "Make relocations explicit at statepoints", false, false) namespace { @@ -2346,8 +2394,7 @@ static void RemoveNonValidAttrAtIndex(LLVMContext &Ctx, AttrHolder &AH, AH.setAttributes(AH.getAttributes().removeAttributes(Ctx, Index, R)); } -void -RewriteStatepointsForGC::stripNonValidAttributesFromPrototype(Function &F) { +static void stripNonValidAttributesFromPrototype(Function &F) { LLVMContext &Ctx = F.getContext(); for (Argument &A : F.args()) @@ -2359,7 +2406,10 @@ RewriteStatepointsForGC::stripNonValidAttributesFromPrototype(Function &F) { RemoveNonValidAttrAtIndex(Ctx, F, AttributeList::ReturnIndex); } -void RewriteStatepointsForGC::stripInvalidMetadataFromInstruction(Instruction &I) { +/// Certain metadata on instructions are invalid after running RS4GC. +/// Optimizations that run after RS4GC can incorrectly use this metadata to +/// optimize functions. We drop such metadata on the instruction. +static void stripInvalidMetadataFromInstruction(Instruction &I) { if (!isa(I) && !isa(I)) return; // These are the attributes that are still valid on loads and stores after @@ -2387,7 +2437,7 @@ void RewriteStatepointsForGC::stripInvalidMetadataFromInstruction(Instruction &I I.dropUnknownNonDebugMetadata(ValidMetadataAfterRS4GC); } -void RewriteStatepointsForGC::stripNonValidDataFromBody(Function &F) { +static void stripNonValidDataFromBody(Function &F) { if (F.empty()) return; @@ -2462,7 +2512,7 @@ static bool shouldRewriteStatepointsIn(Function &F) { return false; } -void RewriteStatepointsForGC::stripNonValidData(Module &M) { +static void stripNonValidData(Module &M) { #ifndef NDEBUG assert(llvm::any_of(M, shouldRewriteStatepointsIn) && "precondition!"); #endif @@ -2474,21 +2524,12 @@ void RewriteStatepointsForGC::stripNonValidData(Module &M) { stripNonValidDataFromBody(F); } -bool RewriteStatepointsForGC::runOnFunction(Function &F) { - // Nothing to do for declarations. - if (F.isDeclaration() || F.empty()) - return false; - - // Policy choice says not to rewrite - the most common reason is that we're - // compiling code without a GCStrategy. - if (!shouldRewriteStatepointsIn(F)) - return false; - - DominatorTree &DT = getAnalysis(F).getDomTree(); - TargetTransformInfo &TTI = - getAnalysis().getTTI(F); - const TargetLibraryInfo &TLI = - getAnalysis().getTLI(); +bool RewriteStatepointsForGC::runOnFunction(Function &F, DominatorTree &DT, + TargetTransformInfo &TTI, + const TargetLibraryInfo &TLI) { + assert(!F.isDeclaration() && !F.empty() && + "need function body to rewrite statepoints in"); + assert(shouldRewriteStatepointsIn(F) && "mismatch in rewrite decision"); auto NeedsRewrite = [&TLI](Instruction &I) { if (ImmutableCallSite CS = ImmutableCallSite(&I)) diff --git a/llvm/lib/Transforms/Scalar/Scalar.cpp b/llvm/lib/Transforms/Scalar/Scalar.cpp index 01d557f8113f..3b99ddff2e06 100644 --- a/llvm/lib/Transforms/Scalar/Scalar.cpp +++ b/llvm/lib/Transforms/Scalar/Scalar.cpp @@ -81,7 +81,7 @@ void llvm::initializeScalarOpts(PassRegistry &Registry) { initializePartiallyInlineLibCallsLegacyPassPass(Registry); initializeReassociateLegacyPassPass(Registry); initializeRegToMemPass(Registry); - initializeRewriteStatepointsForGCPass(Registry); + initializeRewriteStatepointsForGCLegacyPassPass(Registry); initializeSCCPLegacyPassPass(Registry); initializeIPSCCPLegacyPassPass(Registry); initializeSROALegacyPassPass(Registry); diff --git a/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-1.ll b/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-1.ll index 54e9f41c99be..bc8a863896be 100644 --- a/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-1.ll +++ b/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-1.ll @@ -1,4 +1,5 @@ ; RUN: opt < %s -rewrite-statepoints-for-gc -spp-print-base-pointers -S 2>&1 | FileCheck %s +; RUN: opt < %s -passes=rewrite-statepoints-for-gc -spp-print-base-pointers -S 2>&1 | FileCheck %s ; CHECK: derived %merged_value base %merged_value.base diff --git a/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-10.ll b/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-10.ll index 04795741ead6..8aee4edea194 100644 --- a/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-10.ll +++ b/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-10.ll @@ -1,4 +1,5 @@ ; RUN: opt < %s -rewrite-statepoints-for-gc -spp-print-base-pointers -S 2>&1 | FileCheck %s +; RUN: opt < %s -passes=rewrite-statepoints-for-gc -spp-print-base-pointers -S 2>&1 | FileCheck %s declare i1 @runtime_value() "gc-leaf-function" diff --git a/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-11.ll b/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-11.ll index 5149a2918152..ceb094606b0e 100644 --- a/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-11.ll +++ b/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-11.ll @@ -1,4 +1,5 @@ ; RUN: opt < %s -rewrite-statepoints-for-gc -spp-print-base-pointers -S 2>&1 | FileCheck %s +; RUN: opt < %s -passes=rewrite-statepoints-for-gc -spp-print-base-pointers -S 2>&1 | FileCheck %s ; CHECK: derived %next base %base_obj diff --git a/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-12.ll b/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-12.ll index 4706ce70df18..bf107694d990 100644 --- a/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-12.ll +++ b/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-12.ll @@ -1,4 +1,5 @@ ; RUN: opt < %s -rewrite-statepoints-for-gc -spp-print-base-pointers -S 2>&1 | FileCheck %s +; RUN: opt < %s -passes=rewrite-statepoints-for-gc -spp-print-base-pointers -S 2>&1 | FileCheck %s ; CHECK: derived %select base null diff --git a/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-13.ll b/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-13.ll index d01c771349e1..ce502f966254 100644 --- a/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-13.ll +++ b/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-13.ll @@ -1,4 +1,5 @@ ; RUN: opt < %s -rewrite-statepoints-for-gc -spp-print-base-pointers -S 2>&1 | FileCheck %s +; RUN: opt < %s -passes=rewrite-statepoints-for-gc -spp-print-base-pointers -S 2>&1 | FileCheck %s ; CHECK: derived %derived base null diff --git a/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-2.ll b/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-2.ll index f7676d272f58..c4ce644764eb 100644 --- a/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-2.ll +++ b/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-2.ll @@ -1,4 +1,5 @@ ; RUN: opt < %s -rewrite-statepoints-for-gc -spp-print-base-pointers -S 2>&1 | FileCheck %s +; RUN: opt < %s -passes=rewrite-statepoints-for-gc -spp-print-base-pointers -S 2>&1 | FileCheck %s ; CHECK: derived %merged_value base %base_obj diff --git a/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-3.ll b/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-3.ll index 6f54f8929869..1eac5df5e7c3 100644 --- a/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-3.ll +++ b/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-3.ll @@ -1,4 +1,5 @@ ; RUN: opt < %s -rewrite-statepoints-for-gc -spp-print-base-pointers -S 2>&1 | FileCheck %s +; RUN: opt < %s -passes=rewrite-statepoints-for-gc -spp-print-base-pointers -S 2>&1 | FileCheck %s ; CHECK: derived %next.i64 base %base_obj diff --git a/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-4.ll b/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-4.ll index 5694cfd5ecb0..b9f67c1a3740 100644 --- a/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-4.ll +++ b/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-4.ll @@ -1,4 +1,5 @@ ; RUN: opt < %s -rewrite-statepoints-for-gc -spp-print-base-pointers -S 2>&1 | FileCheck %s +; RUN: opt < %s -passes=rewrite-statepoints-for-gc -spp-print-base-pointers -S 2>&1 | FileCheck %s ; CHECK: derived %obj_to_consume base %obj_to_consume.base diff --git a/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-5.ll b/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-5.ll index c1e3a368de00..990a252d489e 100644 --- a/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-5.ll +++ b/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-5.ll @@ -1,4 +1,5 @@ ; RUN: opt < %s -rewrite-statepoints-for-gc -spp-print-base-pointers -S 2>&1 | FileCheck %s +; RUN: opt < %s -passes=rewrite-statepoints-for-gc -spp-print-base-pointers -S 2>&1 | FileCheck %s ; CHECK: derived %merged_value base %merged_value.base diff --git a/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-6.ll b/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-6.ll index 5db6d7ad6aed..267bc53aa91e 100644 --- a/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-6.ll +++ b/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-6.ll @@ -1,4 +1,5 @@ ; RUN: opt < %s -rewrite-statepoints-for-gc -spp-print-base-pointers -S 2>&1 | FileCheck %s +; RUN: opt < %s -passes=rewrite-statepoints-for-gc -spp-print-base-pointers -S 2>&1 | FileCheck %s ; CHECK: derived %merged_value base %merged_value.base diff --git a/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-7.ll b/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-7.ll index 930a8380df80..173d7fdb8914 100644 --- a/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-7.ll +++ b/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-7.ll @@ -1,4 +1,5 @@ ; RUN: opt < %s -rewrite-statepoints-for-gc -spp-print-base-pointers -S 2>&1 | FileCheck %s +; RUN: opt < %s -passes=rewrite-statepoints-for-gc -spp-print-base-pointers -S 2>&1 | FileCheck %s ; CHECK: derived %merged_value base %merged_value.base diff --git a/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-8.ll b/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-8.ll index 2f7fcd9974be..240ca74f08db 100644 --- a/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-8.ll +++ b/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-8.ll @@ -1,4 +1,5 @@ ; RUN: opt < %s -rewrite-statepoints-for-gc -spp-print-base-pointers -S 2>&1 | FileCheck %s +; RUN: opt < %s -passes=rewrite-statepoints-for-gc -spp-print-base-pointers -S 2>&1 | FileCheck %s ; CHECK: derived %next_element_ptr base %array_obj diff --git a/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-9.ll b/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-9.ll index bf49f69515cf..8741a0cebdcd 100644 --- a/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-9.ll +++ b/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers-9.ll @@ -1,4 +1,5 @@ ; RUN: opt < %s -rewrite-statepoints-for-gc -spp-print-base-pointers -S 2>&1 | FileCheck %s +; RUN: opt < %s -passes=rewrite-statepoints-for-gc -spp-print-base-pointers -S 2>&1 | FileCheck %s ; CHECK: derived %next base %base_obj diff --git a/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers.ll b/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers.ll index e65897e7a899..46a73c28f1ec 100644 --- a/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers.ll +++ b/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers.ll @@ -1,4 +1,5 @@ ; RUN: opt < %s -rewrite-statepoints-for-gc -S 2>&1 | FileCheck %s +; RUN: opt < %s -passes=rewrite-statepoints-for-gc -S 2>&1 | FileCheck %s ; The rewriting needs to make %obj loop variant by inserting a phi ; of the original value and it's relocation. diff --git a/llvm/test/Transforms/RewriteStatepointsForGC/base-vector.ll b/llvm/test/Transforms/RewriteStatepointsForGC/base-vector.ll index c34462f45169..d862b82e9aff 100644 --- a/llvm/test/Transforms/RewriteStatepointsForGC/base-vector.ll +++ b/llvm/test/Transforms/RewriteStatepointsForGC/base-vector.ll @@ -1,4 +1,5 @@ ; RUN: opt < %s -rewrite-statepoints-for-gc -S | FileCheck %s +; RUN: opt < %s -passes=rewrite-statepoints-for-gc -S | FileCheck %s define i64 addrspace(1)* @test(<2 x i64 addrspace(1)*> %vec, i32 %idx) gc "statepoint-example" { diff --git a/llvm/test/Transforms/RewriteStatepointsForGC/basic.ll b/llvm/test/Transforms/RewriteStatepointsForGC/basic.ll index bb2210c7849a..c1c160b14274 100644 --- a/llvm/test/Transforms/RewriteStatepointsForGC/basic.ll +++ b/llvm/test/Transforms/RewriteStatepointsForGC/basic.ll @@ -1,4 +1,5 @@ ; RUN: opt -S -rewrite-statepoints-for-gc < %s | FileCheck %s +; RUN: opt -S -passes=rewrite-statepoints-for-gc < %s | FileCheck %s declare void @g() declare i32 @h() diff --git a/llvm/test/Transforms/RewriteStatepointsForGC/basics.ll b/llvm/test/Transforms/RewriteStatepointsForGC/basics.ll index 967a804f7a18..9b611079114e 100644 --- a/llvm/test/Transforms/RewriteStatepointsForGC/basics.ll +++ b/llvm/test/Transforms/RewriteStatepointsForGC/basics.ll @@ -1,5 +1,6 @@ ; This is a collection of really basic tests for gc.statepoint rewriting. ; RUN: opt < %s -rewrite-statepoints-for-gc -spp-rematerialization-threshold=0 -S | FileCheck %s +; RUN: opt < %s -passes=rewrite-statepoints-for-gc -spp-rematerialization-threshold=0 -S | FileCheck %s ; Trivial relocation over a single call diff --git a/llvm/test/Transforms/RewriteStatepointsForGC/call-gc-result.ll b/llvm/test/Transforms/RewriteStatepointsForGC/call-gc-result.ll index 6fcd9b5644ad..a38eb6f61483 100644 --- a/llvm/test/Transforms/RewriteStatepointsForGC/call-gc-result.ll +++ b/llvm/test/Transforms/RewriteStatepointsForGC/call-gc-result.ll @@ -1,4 +1,5 @@ ;; RUN: opt < %s -rewrite-statepoints-for-gc -S | FileCheck %s +;; RUN: opt < %s -passes=rewrite-statepoints-for-gc -S | FileCheck %s ;; This test is to verify that gc_result from a call statepoint ;; can have preceding phis in its parent basic block. Unlike diff --git a/llvm/test/Transforms/RewriteStatepointsForGC/codegen-cond.ll b/llvm/test/Transforms/RewriteStatepointsForGC/codegen-cond.ll index 9e8cbaf0260d..74fd5b9a517a 100644 --- a/llvm/test/Transforms/RewriteStatepointsForGC/codegen-cond.ll +++ b/llvm/test/Transforms/RewriteStatepointsForGC/codegen-cond.ll @@ -1,4 +1,5 @@ ; RUN: opt -rewrite-statepoints-for-gc -S < %s | FileCheck %s +; RUN: opt -passes=rewrite-statepoints-for-gc -S < %s | FileCheck %s ; A null test of a single value diff --git a/llvm/test/Transforms/RewriteStatepointsForGC/constants.ll b/llvm/test/Transforms/RewriteStatepointsForGC/constants.ll index 0a16f38f1369..deaf3e703b88 100644 --- a/llvm/test/Transforms/RewriteStatepointsForGC/constants.ll +++ b/llvm/test/Transforms/RewriteStatepointsForGC/constants.ll @@ -1,4 +1,5 @@ ; RUN: opt -S -rewrite-statepoints-for-gc < %s | FileCheck %s +; RUN: opt -S -passes=rewrite-statepoints-for-gc < %s | FileCheck %s ; constants don't get relocated. @G = addrspace(1) global i8 5 diff --git a/llvm/test/Transforms/RewriteStatepointsForGC/deopt-intrinsic-cconv.ll b/llvm/test/Transforms/RewriteStatepointsForGC/deopt-intrinsic-cconv.ll index b74c1963ddfd..86899d294344 100644 --- a/llvm/test/Transforms/RewriteStatepointsForGC/deopt-intrinsic-cconv.ll +++ b/llvm/test/Transforms/RewriteStatepointsForGC/deopt-intrinsic-cconv.ll @@ -1,4 +1,5 @@ ; RUN: opt -rewrite-statepoints-for-gc -S < %s | FileCheck %s +; RUN: opt -passes=rewrite-statepoints-for-gc -S < %s | FileCheck %s target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-apple-macosx10.11.0" diff --git a/llvm/test/Transforms/RewriteStatepointsForGC/deopt-intrinsic.ll b/llvm/test/Transforms/RewriteStatepointsForGC/deopt-intrinsic.ll index ef0e2bd61afc..78087e8b1e38 100644 --- a/llvm/test/Transforms/RewriteStatepointsForGC/deopt-intrinsic.ll +++ b/llvm/test/Transforms/RewriteStatepointsForGC/deopt-intrinsic.ll @@ -1,4 +1,5 @@ ; RUN: opt -rewrite-statepoints-for-gc -S < %s | FileCheck %s +; RUN: opt -passes=rewrite-statepoints-for-gc -S < %s | FileCheck %s target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-apple-macosx10.11.0" diff --git a/llvm/test/Transforms/RewriteStatepointsForGC/deopt-lowering-attrs.ll b/llvm/test/Transforms/RewriteStatepointsForGC/deopt-lowering-attrs.ll index bbf10714e5e1..d0a331905088 100644 --- a/llvm/test/Transforms/RewriteStatepointsForGC/deopt-lowering-attrs.ll +++ b/llvm/test/Transforms/RewriteStatepointsForGC/deopt-lowering-attrs.ll @@ -1,4 +1,5 @@ ; RUN: opt -rewrite-statepoints-for-gc -S < %s | FileCheck %s +; RUN: opt -passes=rewrite-statepoints-for-gc -S < %s | FileCheck %s ; Check that the "deopt-lowering" function attribute gets transcoded into ; flags on the resulting statepoint diff --git a/llvm/test/Transforms/RewriteStatepointsForGC/deref-pointers.ll b/llvm/test/Transforms/RewriteStatepointsForGC/deref-pointers.ll index 551da0843ad0..d08da73887a3 100644 --- a/llvm/test/Transforms/RewriteStatepointsForGC/deref-pointers.ll +++ b/llvm/test/Transforms/RewriteStatepointsForGC/deref-pointers.ll @@ -1,4 +1,5 @@ ; RUN: opt -S -rewrite-statepoints-for-gc < %s | FileCheck %s +; RUN: opt -S -passes=rewrite-statepoints-for-gc < %s | FileCheck %s ; CHECK: declare i8 addrspace(1)* @some_function_ret_deref() ; CHECK: define i8 addrspace(1)* @test_deref_arg(i8 addrspace(1)* %a) diff --git a/llvm/test/Transforms/RewriteStatepointsForGC/drop-invalid-metadata.ll b/llvm/test/Transforms/RewriteStatepointsForGC/drop-invalid-metadata.ll index ebc15865a67d..f6a5e17a3be1 100644 --- a/llvm/test/Transforms/RewriteStatepointsForGC/drop-invalid-metadata.ll +++ b/llvm/test/Transforms/RewriteStatepointsForGC/drop-invalid-metadata.ll @@ -1,4 +1,5 @@ ; RUN: opt -S -rewrite-statepoints-for-gc < %s | FileCheck %s +; RUN: opt -S -passes=rewrite-statepoints-for-gc < %s | FileCheck %s ; This test checks that metadata that's invalid after RS4GC is dropped. ; We can miscompile if optimizations scheduled after RS4GC uses the diff --git a/llvm/test/Transforms/RewriteStatepointsForGC/gc-relocate-creation.ll b/llvm/test/Transforms/RewriteStatepointsForGC/gc-relocate-creation.ll index 714d7399c5b3..644f5bd7fa76 100644 --- a/llvm/test/Transforms/RewriteStatepointsForGC/gc-relocate-creation.ll +++ b/llvm/test/Transforms/RewriteStatepointsForGC/gc-relocate-creation.ll @@ -1,4 +1,5 @@ ; RUN: opt < %s -rewrite-statepoints-for-gc -S | FileCheck %s +; RUN: opt < %s -passes=rewrite-statepoints-for-gc -S | FileCheck %s ; This test is to verify gc.relocate can handle pointer to vector of ; pointers (<2 x i32 addrspace(1)*> addrspace(1)* in this case). diff --git a/llvm/test/Transforms/RewriteStatepointsForGC/invokes.ll b/llvm/test/Transforms/RewriteStatepointsForGC/invokes.ll index afcb6ad559de..d9ebd3029138 100644 --- a/llvm/test/Transforms/RewriteStatepointsForGC/invokes.ll +++ b/llvm/test/Transforms/RewriteStatepointsForGC/invokes.ll @@ -1,4 +1,5 @@ ; RUN: opt < %s -S -rewrite-statepoints-for-gc | FileCheck %s +; RUN: opt < %s -S -passes=rewrite-statepoints-for-gc | FileCheck %s declare i64 addrspace(1)* @some_call(i64 addrspace(1)*) declare i32 @personality_function() diff --git a/llvm/test/Transforms/RewriteStatepointsForGC/leaf-function.ll b/llvm/test/Transforms/RewriteStatepointsForGC/leaf-function.ll index e2350d4f9e0a..5de85153e719 100644 --- a/llvm/test/Transforms/RewriteStatepointsForGC/leaf-function.ll +++ b/llvm/test/Transforms/RewriteStatepointsForGC/leaf-function.ll @@ -1,4 +1,5 @@ ; RUN: opt < %s -S -rewrite-statepoints-for-gc | FileCheck %s +; RUN: opt < %s -S -passes=rewrite-statepoints-for-gc | FileCheck %s declare void @foo() "gc-leaf-function" declare void @bar() diff --git a/llvm/test/Transforms/RewriteStatepointsForGC/libcall.ll b/llvm/test/Transforms/RewriteStatepointsForGC/libcall.ll index 4dbc9fefa6d0..cb548584db0c 100644 --- a/llvm/test/Transforms/RewriteStatepointsForGC/libcall.ll +++ b/llvm/test/Transforms/RewriteStatepointsForGC/libcall.ll @@ -2,6 +2,7 @@ ; This test verifies that calls to libcalls functions do not get converted to ; statepoint calls. ; RUN: opt -S -rewrite-statepoints-for-gc < %s | FileCheck %s +; RUN: opt -S -passes=rewrite-statepoints-for-gc < %s | FileCheck %s declare double @ldexp(double %x, i32 %n) nounwind readnone diff --git a/llvm/test/Transforms/RewriteStatepointsForGC/live-vector-nosplit.ll b/llvm/test/Transforms/RewriteStatepointsForGC/live-vector-nosplit.ll index cc0140a97c5d..3e63f0127242 100644 --- a/llvm/test/Transforms/RewriteStatepointsForGC/live-vector-nosplit.ll +++ b/llvm/test/Transforms/RewriteStatepointsForGC/live-vector-nosplit.ll @@ -1,6 +1,7 @@ ; Test that we can correctly handle vectors of pointers in statepoint ; rewriting. ; RUN: opt < %s -rewrite-statepoints-for-gc -S | FileCheck %s +; RUN: opt < %s -passes=rewrite-statepoints-for-gc -S | FileCheck %s ; A non-vector relocation for comparison define i64 addrspace(1)* @test(i64 addrspace(1)* %obj) gc "statepoint-example" { diff --git a/llvm/test/Transforms/RewriteStatepointsForGC/liveness-basics.ll b/llvm/test/Transforms/RewriteStatepointsForGC/liveness-basics.ll index 9c848e52faf9..457a5b204467 100644 --- a/llvm/test/Transforms/RewriteStatepointsForGC/liveness-basics.ll +++ b/llvm/test/Transforms/RewriteStatepointsForGC/liveness-basics.ll @@ -1,6 +1,7 @@ ; A collection of liveness test cases to ensure we're reporting the ; correct live values at statepoints ; RUN: opt -rewrite-statepoints-for-gc -spp-rematerialization-threshold=0 -S < %s | FileCheck %s +; RUN: opt -passes=rewrite-statepoints-for-gc -spp-rematerialization-threshold=0 -S < %s | FileCheck %s ; Tests to make sure we consider %obj live in both the taken and untaken ; predeccessor of merge. diff --git a/llvm/test/Transforms/RewriteStatepointsForGC/patchable-statepoints.ll b/llvm/test/Transforms/RewriteStatepointsForGC/patchable-statepoints.ll index 924620a64678..63814ba9f210 100644 --- a/llvm/test/Transforms/RewriteStatepointsForGC/patchable-statepoints.ll +++ b/llvm/test/Transforms/RewriteStatepointsForGC/patchable-statepoints.ll @@ -1,4 +1,5 @@ ; RUN: opt -S -rewrite-statepoints-for-gc < %s | FileCheck %s +; RUN: opt -S -passes=rewrite-statepoints-for-gc < %s | FileCheck %s declare void @f() declare i32 @personality_function() diff --git a/llvm/test/Transforms/RewriteStatepointsForGC/preprocess.ll b/llvm/test/Transforms/RewriteStatepointsForGC/preprocess.ll index df42eb14cfd6..105e0e88ac21 100644 --- a/llvm/test/Transforms/RewriteStatepointsForGC/preprocess.ll +++ b/llvm/test/Transforms/RewriteStatepointsForGC/preprocess.ll @@ -1,4 +1,5 @@ ; RUN: opt -rewrite-statepoints-for-gc -S < %s | FileCheck %s +; RUN: opt -passes=rewrite-statepoints-for-gc -S < %s | FileCheck %s ; Test to make sure we destroy LCSSA's single entry phi nodes before ; running liveness diff --git a/llvm/test/Transforms/RewriteStatepointsForGC/relocate-invoke-result.ll b/llvm/test/Transforms/RewriteStatepointsForGC/relocate-invoke-result.ll index b96ec3e3962d..d198b2727780 100644 --- a/llvm/test/Transforms/RewriteStatepointsForGC/relocate-invoke-result.ll +++ b/llvm/test/Transforms/RewriteStatepointsForGC/relocate-invoke-result.ll @@ -1,5 +1,6 @@ ;; RUN: opt -rewrite-statepoints-for-gc -verify -S < %s | FileCheck %s +;; RUN: opt -passes=rewrite-statepoints-for-gc -verify -S < %s | FileCheck %s ;; This test is to verify that RewriteStatepointsForGC correctly relocates values ;; defined by invoke instruction results. diff --git a/llvm/test/Transforms/RewriteStatepointsForGC/relocation.ll b/llvm/test/Transforms/RewriteStatepointsForGC/relocation.ll index eaa826c52dc2..daf4a7928c6a 100644 --- a/llvm/test/Transforms/RewriteStatepointsForGC/relocation.ll +++ b/llvm/test/Transforms/RewriteStatepointsForGC/relocation.ll @@ -1,4 +1,5 @@ ; RUN: opt < %s -rewrite-statepoints-for-gc -spp-rematerialization-threshold=0 -S | FileCheck %s +; RUN: opt < %s -passes=rewrite-statepoints-for-gc -spp-rematerialization-threshold=0 -S | FileCheck %s declare void @foo() diff --git a/llvm/test/Transforms/RewriteStatepointsForGC/rematerialize-derived-pointers.ll b/llvm/test/Transforms/RewriteStatepointsForGC/rematerialize-derived-pointers.ll index 6372c9b80de5..3f36b99404fc 100644 --- a/llvm/test/Transforms/RewriteStatepointsForGC/rematerialize-derived-pointers.ll +++ b/llvm/test/Transforms/RewriteStatepointsForGC/rematerialize-derived-pointers.ll @@ -1,4 +1,5 @@ ; RUN: opt < %s -rewrite-statepoints-for-gc -S | FileCheck %s +; RUN: opt < %s -passes=rewrite-statepoints-for-gc -S | FileCheck %s declare void @use_obj16(i16 addrspace(1)*) "gc-leaf-function" diff --git a/llvm/test/Transforms/RewriteStatepointsForGC/rewrite-invoke.ll b/llvm/test/Transforms/RewriteStatepointsForGC/rewrite-invoke.ll index 91d4fa303b1b..f096f30ba06a 100644 --- a/llvm/test/Transforms/RewriteStatepointsForGC/rewrite-invoke.ll +++ b/llvm/test/Transforms/RewriteStatepointsForGC/rewrite-invoke.ll @@ -1,4 +1,5 @@ ; RUN: opt -rewrite-statepoints-for-gc -verify -S < %s | FileCheck %s +; RUN: opt -passes=rewrite-statepoints-for-gc -verify -S < %s | FileCheck %s declare i8 addrspace(1)* @gc_call() diff --git a/llvm/test/Transforms/RewriteStatepointsForGC/statepoint-attrs.ll b/llvm/test/Transforms/RewriteStatepointsForGC/statepoint-attrs.ll index 38ad79e887f7..4bebbc80cba1 100644 --- a/llvm/test/Transforms/RewriteStatepointsForGC/statepoint-attrs.ll +++ b/llvm/test/Transforms/RewriteStatepointsForGC/statepoint-attrs.ll @@ -1,4 +1,5 @@ ; RUN: opt -S -rewrite-statepoints-for-gc < %s | FileCheck %s +; RUN: opt -S -passes=rewrite-statepoints-for-gc < %s | FileCheck %s ; Ensure statepoints copy (valid) attributes from callsites. declare void @f(i8 addrspace(1)* %obj) diff --git a/llvm/test/Transforms/RewriteStatepointsForGC/statepoint-calling-conventions.ll b/llvm/test/Transforms/RewriteStatepointsForGC/statepoint-calling-conventions.ll index f40ff8f3a7d1..bb2697ec1c77 100644 --- a/llvm/test/Transforms/RewriteStatepointsForGC/statepoint-calling-conventions.ll +++ b/llvm/test/Transforms/RewriteStatepointsForGC/statepoint-calling-conventions.ll @@ -1,4 +1,5 @@ ; RUN: opt -rewrite-statepoints-for-gc -S < %s | FileCheck %s +; RUN: opt -passes=rewrite-statepoints-for-gc -S < %s | FileCheck %s ; Ensure that the gc.statepoint calls / invokes we generate carry over ; the right calling conventions. diff --git a/llvm/test/Transforms/RewriteStatepointsForGC/statepoint-coreclr.ll b/llvm/test/Transforms/RewriteStatepointsForGC/statepoint-coreclr.ll index a19196eab5cf..9f88c79cd99d 100644 --- a/llvm/test/Transforms/RewriteStatepointsForGC/statepoint-coreclr.ll +++ b/llvm/test/Transforms/RewriteStatepointsForGC/statepoint-coreclr.ll @@ -1,4 +1,5 @@ ; RUN: opt < %s -S -rewrite-statepoints-for-gc | FileCheck %s +; RUN: opt < %s -S -passes=rewrite-statepoints-for-gc | FileCheck %s ; Basic test to make sure that safepoints are placed ; for CoreCLR GC diff --git a/llvm/test/Transforms/RewriteStatepointsForGC/statepoint-format.ll b/llvm/test/Transforms/RewriteStatepointsForGC/statepoint-format.ll index 029864e3efa0..3e42a79037a3 100644 --- a/llvm/test/Transforms/RewriteStatepointsForGC/statepoint-format.ll +++ b/llvm/test/Transforms/RewriteStatepointsForGC/statepoint-format.ll @@ -1,4 +1,5 @@ ; RUN: opt -rewrite-statepoints-for-gc -S < %s | FileCheck %s +; RUN: opt -passes=rewrite-statepoints-for-gc -S < %s | FileCheck %s ; Ensure that the gc.statepoint calls / invokes we generate have the ; set of arguments we expect it to have. diff --git a/llvm/test/Transforms/RewriteStatepointsForGC/two-invokes-one-landingpad.ll b/llvm/test/Transforms/RewriteStatepointsForGC/two-invokes-one-landingpad.ll index f35a3668a6b1..caec74676ec0 100644 --- a/llvm/test/Transforms/RewriteStatepointsForGC/two-invokes-one-landingpad.ll +++ b/llvm/test/Transforms/RewriteStatepointsForGC/two-invokes-one-landingpad.ll @@ -1,4 +1,5 @@ ; RUN: opt < %s -rewrite-statepoints-for-gc -S | FileCheck %s +; RUN: opt < %s -passes=rewrite-statepoints-for-gc -S | FileCheck %s declare void @some_call(i64 addrspace(1)*) diff --git a/llvm/test/Transforms/RewriteStatepointsForGC/vector-bitcast.ll b/llvm/test/Transforms/RewriteStatepointsForGC/vector-bitcast.ll index 981942a91ee1..74943fc93d49 100644 --- a/llvm/test/Transforms/RewriteStatepointsForGC/vector-bitcast.ll +++ b/llvm/test/Transforms/RewriteStatepointsForGC/vector-bitcast.ll @@ -1,4 +1,5 @@ ; RUN: opt -S -rewrite-statepoints-for-gc < %s | FileCheck %s +; RUN: opt -S -passes=rewrite-statepoints-for-gc < %s | FileCheck %s ; ; A test to make sure that we can look through bitcasts of ; vector types when a base pointer is contained in a vector.