[clang] 10536d4 - [CFI] Extract DropTypeTestsPass from LowerTypeTestsPass (#192578)
via cfe-commits
cfe-commits at lists.llvm.org
Fri Apr 17 00:00:50 PDT 2026
Author: Vitaly Buka
Date: 2026-04-17T00:00:44-07:00
New Revision: 10536d48b700e82101d9c8f4a0a87c999b6f9251
URL: https://github.com/llvm/llvm-project/commit/10536d48b700e82101d9c8f4a0a87c999b6f9251
DIFF: https://github.com/llvm/llvm-project/commit/10536d48b700e82101d9c8f4a0a87c999b6f9251.diff
LOG: [CFI] Extract DropTypeTestsPass from LowerTypeTestsPass (#192578)
This patch introduces `DropTypeTestsPass` as a dedicated pass
to handle the dropping of type tests. Previously, this was handled
by `LowerTypeTestsPass` with a specific parameter.
By splitting this into its own pass, we simplify the pass pipeline
construction and make the intent clearer in `PassRegistry.def` and
various pipeline builders.
It's almost NFC, if not opt command line changes.
Added:
Modified:
clang/lib/CodeGen/BackendUtil.cpp
llvm/include/llvm/Transforms/IPO/LowerTypeTests.h
llvm/lib/Passes/PassBuilder.cpp
llvm/lib/Passes/PassBuilderPipelines.cpp
llvm/lib/Passes/PassRegistry.def
llvm/lib/Transforms/IPO/LowerTypeTests.cpp
llvm/test/Other/fatlto.ll
llvm/test/Other/new-pm-O0-defaults.ll
llvm/test/Other/new-pm-lto-defaults.ll
llvm/test/Other/new-pm-thinlto-postlink-defaults.ll
llvm/test/Other/new-pm-thinlto-postlink-pgo-defaults.ll
llvm/test/Other/new-pm-thinlto-postlink-samplepgo-defaults.ll
llvm/test/ThinLTO/X86/lower_type_test_phi.ll
llvm/test/Transforms/LowerTypeTests/drop_type_test.ll
llvm/test/Transforms/LowerTypeTests/drop_type_test_phi.ll
llvm/test/Transforms/LowerTypeTests/drop_type_test_select.ll
Removed:
################################################################################
diff --git a/clang/lib/CodeGen/BackendUtil.cpp b/clang/lib/CodeGen/BackendUtil.cpp
index 74c8bf1c670da..afd7ebcf336fe 100644
--- a/clang/lib/CodeGen/BackendUtil.cpp
+++ b/clang/lib/CodeGen/BackendUtil.cpp
@@ -1031,10 +1031,7 @@ void EmitAssemblyHelper::RunOptimizationPipeline(
if (IsThinLTOPostLink)
PB.registerPipelineStartEPCallback(
[](ModulePassManager &MPM, OptimizationLevel Level) {
- MPM.addPass(LowerTypeTestsPass(
- /*ExportSummary=*/nullptr,
- /*ImportSummary=*/nullptr,
- /*DropTypeTests=*/lowertypetests::DropTestKind::Assume));
+ MPM.addPass(DropTypeTestsPass());
});
// Register callbacks to schedule sanitizer passes at the appropriate part
diff --git a/llvm/include/llvm/Transforms/IPO/LowerTypeTests.h b/llvm/include/llvm/Transforms/IPO/LowerTypeTests.h
index bb8b40955077e..42e3c69886d91 100644
--- a/llvm/include/llvm/Transforms/IPO/LowerTypeTests.h
+++ b/llvm/include/llvm/Transforms/IPO/LowerTypeTests.h
@@ -195,7 +195,6 @@ LLVM_ABI bool isJumpTableCanonical(Function *F);
/// Specifies how to drop type tests.
enum class DropTestKind {
- None, /// Do not drop type tests (default).
Assume, /// Drop only llvm.assumes using type test value.
All, /// Drop the type test and all uses.
};
@@ -207,21 +206,30 @@ class LowerTypeTestsPass : public PassInfoMixin<LowerTypeTestsPass> {
ModuleSummaryIndex *ExportSummary = nullptr;
const ModuleSummaryIndex *ImportSummary = nullptr;
- lowertypetests::DropTestKind DropTypeTests =
- lowertypetests::DropTestKind::None;
public:
LowerTypeTestsPass() : UseCommandLine(true) {}
LowerTypeTestsPass(ModuleSummaryIndex *ExportSummary,
- const ModuleSummaryIndex *ImportSummary,
- lowertypetests::DropTestKind DropTypeTests =
- lowertypetests::DropTestKind::None)
- : ExportSummary(ExportSummary), ImportSummary(ImportSummary),
- DropTypeTests(DropTypeTests) {}
+ const ModuleSummaryIndex *ImportSummary)
+ : ExportSummary(ExportSummary), ImportSummary(ImportSummary) {}
static bool isRequired() { return true; }
LLVM_ABI PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM);
};
+class DropTypeTestsPass : public PassInfoMixin<DropTypeTestsPass> {
+ lowertypetests::DropTestKind Kind = lowertypetests::DropTestKind::Assume;
+
+public:
+ explicit DropTypeTestsPass(
+ lowertypetests::DropTestKind Kind = lowertypetests::DropTestKind::Assume)
+ : Kind(Kind) {}
+ static bool isRequired() { return true; }
+ LLVM_ABI void
+ printPipeline(raw_ostream &OS,
+ function_ref<StringRef(StringRef)> MapClassName2PassName);
+ LLVM_ABI PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM);
+};
+
class SimplifyTypeTestsPass : public PassInfoMixin<SimplifyTypeTestsPass> {
public:
LLVM_ABI PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM);
diff --git a/llvm/lib/Passes/PassBuilder.cpp b/llvm/lib/Passes/PassBuilder.cpp
index 8c9f5a0c395cd..1e68d1b01bddb 100644
--- a/llvm/lib/Passes/PassBuilder.cpp
+++ b/llvm/lib/Passes/PassBuilder.cpp
@@ -973,6 +973,26 @@ Expected<HWAddressSanitizerOptions> parseHWASanPassOptions(StringRef Params) {
return Result;
}
+Expected<lowertypetests::DropTestKind>
+parseDropTypeTestsPassOptions(StringRef Params) {
+ lowertypetests::DropTestKind Result = lowertypetests::DropTestKind::Assume;
+ while (!Params.empty()) {
+ StringRef ParamName;
+ std::tie(ParamName, Params) = Params.split(';');
+
+ if (ParamName == "all") {
+ Result = lowertypetests::DropTestKind::All;
+ } else if (ParamName == "assume") {
+ Result = lowertypetests::DropTestKind::Assume;
+ } else {
+ return make_error<StringError>(
+ formatv("invalid DropTypeTestsPass parameter '{}'", ParamName).str(),
+ inconvertibleErrorCode());
+ }
+ }
+ return Result;
+}
+
Expected<EmbedBitcodeOptions> parseEmbedBitcodePassOptions(StringRef Params) {
EmbedBitcodeOptions Result;
while (!Params.empty()) {
diff --git a/llvm/lib/Passes/PassBuilderPipelines.cpp b/llvm/lib/Passes/PassBuilderPipelines.cpp
index f017419791a85..0b732c6f14197 100644
--- a/llvm/lib/Passes/PassBuilderPipelines.cpp
+++ b/llvm/lib/Passes/PassBuilderPipelines.cpp
@@ -1181,8 +1181,7 @@ PassBuilder::buildModuleSimplificationPipeline(OptimizationLevel Level,
// post link pipeline after ICP. This is to enable usage of the type
// tests in ICP sequences.
if (Phase == ThinOrFullLTOPhase::ThinLTOPostLink)
- MPM.addPass(LowerTypeTestsPass(nullptr, nullptr,
- lowertypetests::DropTestKind::Assume));
+ MPM.addPass(DropTypeTestsPass());
invokePipelineEarlySimplificationEPCallbacks(MPM, Level, Phase);
@@ -1687,8 +1686,7 @@ PassBuilder::buildModuleOptimizationPipeline(OptimizationLevel Level,
/*ExportSummary*/ nullptr,
/*ImportSummary*/ nullptr,
/*DevirtSpeculatively*/ PTO.DevirtualizeSpeculatively));
- MPM.addPass(LowerTypeTestsPass(nullptr, nullptr,
- lowertypetests::DropTestKind::Assume));
+ MPM.addPass(DropTypeTestsPass());
// Given that the devirtualization creates more opportunities for inlining,
// we run the Inliner again here to maximize the optimization gain we
// get from devirtualization.
@@ -1776,7 +1774,7 @@ PassBuilder::buildFatLTODefaultPipeline(OptimizationLevel Level, bool ThinLTO,
// Perform any cleanups to the IR that aren't suitable for per TU compilation,
// like removing CFI/WPD related instructions. Note, we reuse
- // LowerTypeTestsPass to clean up type tests rather than duplicate that logic
+ // DropTypeTestsPass to clean up type tests rather than duplicate that logic
// in FatLtoCleanup.
MPM.addPass(FatLtoCleanup());
@@ -1784,8 +1782,7 @@ PassBuilder::buildFatLTODefaultPipeline(OptimizationLevel Level, bool ThinLTO,
// object code, only in the bitcode section, so drop it before we run
// module optimization and generate machine code. If llvm.type.test() isn't in
// the IR, this won't do anything.
- MPM.addPass(
- LowerTypeTestsPass(nullptr, nullptr, lowertypetests::DropTestKind::All));
+ MPM.addPass(DropTypeTestsPass(lowertypetests::DropTestKind::All));
// Use the ThinLTO post-link pipeline with sample profiling
if (ThinLTO && PGOOpt && PGOOpt->Action == PGOOptions::SampleUse)
@@ -1923,8 +1920,7 @@ ModulePassManager PassBuilder::buildThinLTODefaultPipeline(
if (Level == OptimizationLevel::O0) {
// Run a second time to clean up any type tests left behind by WPD for use
// in ICP.
- MPM.addPass(LowerTypeTestsPass(nullptr, nullptr,
- lowertypetests::DropTestKind::Assume));
+ MPM.addPass(DropTypeTestsPass());
MPM.addPass(buildCoroWrapper(ThinOrFullLTOPhase::ThinLTOPostLink));
// AllocToken transforms heap allocation calls; this needs to run late after
@@ -1993,8 +1989,7 @@ PassBuilder::buildLTODefaultPipeline(OptimizationLevel Level,
MPM.addPass(LowerTypeTestsPass(ExportSummary, nullptr));
// Run a second time to clean up any type tests left behind by WPD for use
// in ICP.
- MPM.addPass(LowerTypeTestsPass(nullptr, nullptr,
- lowertypetests::DropTestKind::Assume));
+ MPM.addPass(DropTypeTestsPass());
MPM.addPass(buildCoroWrapper(ThinOrFullLTOPhase::FullLTOPostLink));
@@ -2082,8 +2077,7 @@ PassBuilder::buildLTODefaultPipeline(OptimizationLevel Level,
// Run a second time to clean up any type tests left behind by WPD for use
// in ICP (which is performed earlier than this in the regular LTO
// pipeline).
- MPM.addPass(LowerTypeTestsPass(nullptr, nullptr,
- lowertypetests::DropTestKind::Assume));
+ MPM.addPass(DropTypeTestsPass());
MPM.addPass(buildCoroWrapper(ThinOrFullLTOPhase::FullLTOPostLink));
@@ -2280,8 +2274,7 @@ PassBuilder::buildLTODefaultPipeline(OptimizationLevel Level,
MPM.addPass(LowerTypeTestsPass(ExportSummary, nullptr));
// Run a second time to clean up any type tests left behind by WPD for use
// in ICP (which is performed earlier than this in the regular LTO pipeline).
- MPM.addPass(LowerTypeTestsPass(nullptr, nullptr,
- lowertypetests::DropTestKind::Assume));
+ MPM.addPass(DropTypeTestsPass());
// Enable splitting late in the FullLTO post-link pipeline.
if (EnableHotColdSplit)
diff --git a/llvm/lib/Passes/PassRegistry.def b/llvm/lib/Passes/PassRegistry.def
index 2e9d9f3849d17..628fbeb876609 100644
--- a/llvm/lib/Passes/PassRegistry.def
+++ b/llvm/lib/Passes/PassRegistry.def
@@ -216,6 +216,11 @@ MODULE_PASS_WITH_PARAMS(
"hwasan", "HWAddressSanitizerPass",
[](HWAddressSanitizerOptions Opts) { return HWAddressSanitizerPass(Opts); },
parseHWASanPassOptions, "kernel;recover")
+MODULE_PASS_WITH_PARAMS(
+ "drop-type-tests", "DropTypeTestsPass",
+ [](lowertypetests::DropTestKind Kind) { return DropTypeTestsPass(Kind); },
+ parseDropTypeTestsPassOptions,
+ "assume;all")
MODULE_PASS_WITH_PARAMS(
"internalize", "InternalizePass",
[](SmallVector<std::string, 0> PreservedGVs) {
diff --git a/llvm/lib/Transforms/IPO/LowerTypeTests.cpp b/llvm/lib/Transforms/IPO/LowerTypeTests.cpp
index 643907543c8e2..323df2a6a0abf 100644
--- a/llvm/lib/Transforms/IPO/LowerTypeTests.cpp
+++ b/llvm/lib/Transforms/IPO/LowerTypeTests.cpp
@@ -20,6 +20,7 @@
#include "llvm/ADT/EquivalenceClasses.h"
#include "llvm/ADT/PointerUnion.h"
#include "llvm/ADT/STLExtras.h"
+#include "llvm/ADT/STLForwardCompat.h"
#include "llvm/ADT/SetVector.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/Statistic.h"
@@ -122,17 +123,6 @@ static cl::opt<std::string> ClWriteSummary(
cl::desc("Write summary to given YAML file after running pass"),
cl::Hidden);
-static cl::opt<DropTestKind>
- ClDropTypeTests("lowertypetests-drop-type-tests",
- cl::desc("Simply drop type test sequences"),
- cl::values(clEnumValN(DropTestKind::None, "none",
- "Do not drop any type tests"),
- clEnumValN(DropTestKind::Assume, "assume",
- "Drop type test assume sequences"),
- clEnumValN(DropTestKind::All, "all",
- "Drop all type test sequences")),
- cl::Hidden, cl::init(DropTestKind::None));
-
bool BitSetInfo::containsGlobalOffset(uint64_t Offset) const {
if (Offset < ByteOffset)
return false;
@@ -427,9 +417,6 @@ class LowerTypeTestsModule {
ModuleSummaryIndex *ExportSummary;
const ModuleSummaryIndex *ImportSummary;
- // Set when the client has invoked this to simply drop all type test assume
- // sequences.
- DropTestKind DropTypeTests;
Triple::ArchType Arch;
Triple::OSType OS;
@@ -563,8 +550,7 @@ class LowerTypeTestsModule {
public:
LowerTypeTestsModule(Module &M, ModuleAnalysisManager &AM,
ModuleSummaryIndex *ExportSummary,
- const ModuleSummaryIndex *ImportSummary,
- DropTestKind DropTypeTests);
+ const ModuleSummaryIndex *ImportSummary);
bool lower();
@@ -1874,10 +1860,8 @@ void LowerTypeTestsModule::buildBitSetsFromDisjointSet(
/// Lower all type tests in this module.
LowerTypeTestsModule::LowerTypeTestsModule(
Module &M, ModuleAnalysisManager &AM, ModuleSummaryIndex *ExportSummary,
- const ModuleSummaryIndex *ImportSummary, DropTestKind DropTypeTests)
- : M(M), ExportSummary(ExportSummary), ImportSummary(ImportSummary),
- DropTypeTests(ClDropTypeTests > DropTypeTests ? ClDropTypeTests
- : DropTypeTests) {
+ const ModuleSummaryIndex *ImportSummary)
+ : M(M), ExportSummary(ExportSummary), ImportSummary(ImportSummary) {
assert(!(ExportSummary && ImportSummary));
Triple TargetTriple(M.getTargetTriple());
Arch = TargetTriple.getArch();
@@ -1930,8 +1914,7 @@ bool LowerTypeTestsModule::runForTesting(Module &M, ModuleAnalysisManager &AM) {
LowerTypeTestsModule(
M, AM,
ClSummaryAction == PassSummaryAction::Export ? &Summary : nullptr,
- ClSummaryAction == PassSummaryAction::Import ? &Summary : nullptr,
- /*DropTypeTests=*/DropTestKind::None)
+ ClSummaryAction == PassSummaryAction::Import ? &Summary : nullptr)
.lower();
if (!ClWriteSummary.empty()) {
@@ -2017,31 +2000,32 @@ static void dropTypeTests(Module &M, Function &TypeTestFunc,
}
}
-bool LowerTypeTestsModule::lower() {
+static bool dropTypeTests(Module &M, bool ShouldDropAll) {
Function *TypeTestFunc =
Intrinsic::getDeclarationIfExists(&M, Intrinsic::type_test);
-
- if (DropTypeTests != DropTestKind::None) {
- bool ShouldDropAll = DropTypeTests == DropTestKind::All;
- if (TypeTestFunc)
- dropTypeTests(M, *TypeTestFunc, ShouldDropAll);
- // Normally we'd have already removed all @llvm.public.type.test calls,
- // except for in the case where we originally were performing ThinLTO but
- // decided not to in the backend.
- Function *PublicTypeTestFunc =
- Intrinsic::getDeclarationIfExists(&M, Intrinsic::public_type_test);
- if (PublicTypeTestFunc)
- dropTypeTests(M, *PublicTypeTestFunc, ShouldDropAll);
- if (TypeTestFunc || PublicTypeTestFunc) {
- // We have deleted the type intrinsics, so we no longer have enough
- // information to reason about the liveness of virtual function pointers
- // in GlobalDCE.
- for (GlobalVariable &GV : M.globals())
- GV.eraseMetadata(LLVMContext::MD_vcall_visibility);
- return true;
- }
- return false;
+ if (TypeTestFunc)
+ dropTypeTests(M, *TypeTestFunc, ShouldDropAll);
+ // Normally we'd have already removed all @llvm.public.type.test calls,
+ // except for in the case where we originally were performing ThinLTO but
+ // decided not to in the backend.
+ Function *PublicTypeTestFunc =
+ Intrinsic::getDeclarationIfExists(&M, Intrinsic::public_type_test);
+ if (PublicTypeTestFunc)
+ dropTypeTests(M, *PublicTypeTestFunc, ShouldDropAll);
+ if (TypeTestFunc || PublicTypeTestFunc) {
+ // We have deleted the type intrinsics, so we no longer have enough
+ // information to reason about the liveness of virtual function pointers
+ // in GlobalDCE.
+ for (GlobalVariable &GV : M.globals())
+ GV.eraseMetadata(LLVMContext::MD_vcall_visibility);
+ return true;
}
+ return false;
+}
+
+bool LowerTypeTestsModule::lower() {
+ Function *TypeTestFunc =
+ Intrinsic::getDeclarationIfExists(&M, Intrinsic::type_test);
// If only some of the modules were split, we cannot correctly perform
// this transformation. We already checked for the presense of type tests
@@ -2502,14 +2486,33 @@ PreservedAnalyses LowerTypeTestsPass::run(Module &M,
if (UseCommandLine)
Changed = LowerTypeTestsModule::runForTesting(M, AM);
else
- Changed =
- LowerTypeTestsModule(M, AM, ExportSummary, ImportSummary, DropTypeTests)
- .lower();
+ Changed = LowerTypeTestsModule(M, AM, ExportSummary, ImportSummary).lower();
if (!Changed)
return PreservedAnalyses::all();
return PreservedAnalyses::none();
}
+void DropTypeTestsPass::printPipeline(
+ raw_ostream &OS, function_ref<StringRef(StringRef)> MapClassName2PassName) {
+ static_cast<PassInfoMixin<DropTypeTestsPass> *>(this)->printPipeline(
+ OS, MapClassName2PassName);
+ OS << '<';
+ switch (Kind) {
+ case DropTestKind::Assume:
+ OS << "assume";
+ break;
+ case DropTestKind::All:
+ OS << "all";
+ break;
+ }
+ OS << '>';
+}
+
+PreservedAnalyses DropTypeTestsPass::run(Module &M, ModuleAnalysisManager &AM) {
+ return dropTypeTests(M, Kind == DropTestKind::All) ? PreservedAnalyses::none()
+ : PreservedAnalyses::all();
+}
+
PreservedAnalyses SimplifyTypeTestsPass::run(Module &M,
ModuleAnalysisManager &AM) {
bool Changed = false;
diff --git a/llvm/test/Other/fatlto.ll b/llvm/test/Other/fatlto.ll
index 2f7ce4bf817a8..483ad12e2e566 100644
--- a/llvm/test/Other/fatlto.ll
+++ b/llvm/test/Other/fatlto.ll
@@ -4,4 +4,4 @@
; CHECK: Running pass: EmbedBitcodePass on [module]
; THINLTO: Running analysis: ModuleSummaryIndexAnalysis on [module]
; CHECK: Running pass: FatLtoCleanup on [module]
-; CHECK-NEXT: Running pass: LowerTypeTestsPass on [module]
+; CHECK-NEXT: Running pass: DropTypeTestsPass on [module]
diff --git a/llvm/test/Other/new-pm-O0-defaults.ll b/llvm/test/Other/new-pm-O0-defaults.ll
index a7f43d1fc4591..bac4150caab58 100644
--- a/llvm/test/Other/new-pm-O0-defaults.ll
+++ b/llvm/test/Other/new-pm-O0-defaults.ll
@@ -44,7 +44,7 @@
; CHECK-ALLOCTOKEN-NEXT: Running pass: AllocTokenPass
; CHECK-PRE-LINK: Running pass: CanonicalizeAliasesPass
; CHECK-PRE-LINK-NEXT: Running pass: NameAnonGlobalPass
-; CHECK-THINLTO: Running pass: LowerTypeTestsPass
+; CHECK-THINLTO: Running pass: DropTypeTestsPass
; CHECK-THINLTO-NEXT: Running pass: CoroConditionalWrapper
; CHECK-THINLTO-NEXT: Running pass: AllocTokenPass
; CHECK-THINLTO-NEXT: Running analysis: InnerAnalysisManagerProxy
@@ -54,7 +54,7 @@
; CHECK-LTO-NEXT: Running pass: WholeProgramDevirtPass
; CHECK-LTO-NEXT: Running analysis: InnerAnalysisManagerProxy
; CHECK-LTO-NEXT: Running pass: LowerTypeTestsPass
-; CHECK-LTO-NEXT: Running pass: LowerTypeTestsPass
+; CHECK-LTO-NEXT: Running pass: DropTypeTestsPass
; CHECK-LTO-NEXT: CoroConditionalWrapper
; CHECK-LTO-NEXT: Running pass: AllocTokenPass
; CHECK-CORO-NEXT: Running pass: AnnotationRemarksPass
diff --git a/llvm/test/Other/new-pm-lto-defaults.ll b/llvm/test/Other/new-pm-lto-defaults.ll
index 11114f3b1e9a1..7e336c231d21e 100644
--- a/llvm/test/Other/new-pm-lto-defaults.ll
+++ b/llvm/test/Other/new-pm-lto-defaults.ll
@@ -152,7 +152,7 @@
; CHECK-EP-PEEPHOLE-NEXT: Running pass: NoOpFunctionPass on foo
; CHECK-O23SZ-NEXT: Running pass: JumpThreadingPass on foo
; CHECK-O23SZ-NEXT: Running pass: LowerTypeTestsPass
-; CHECK-O-NEXT: Running pass: LowerTypeTestsPass
+; CHECK-O-NEXT: Running pass: DropTypeTestsPass
; CHECK-O23SZ-NEXT: Running pass: LoopSink
; CHECK-O23SZ-NEXT: Running pass: DivRemPairs
; CHECK-O23SZ-NEXT: Running pass: SimplifyCFGPass
diff --git a/llvm/test/Other/new-pm-thinlto-postlink-defaults.ll b/llvm/test/Other/new-pm-thinlto-postlink-defaults.ll
index e55895b9d6c41..3a3dbac0a7f02 100644
--- a/llvm/test/Other/new-pm-thinlto-postlink-defaults.ll
+++ b/llvm/test/Other/new-pm-thinlto-postlink-defaults.ll
@@ -44,7 +44,7 @@
; CHECK-POSTLINK-O-NEXT: Running analysis: InnerAnalysisManagerProxy
; CHECK-POSTLINK-O-NEXT: Running analysis: OptimizationRemarkEmitterAnalysis
; CHECK-O-NEXT: Running pass: OpenMPOptPass
-; CHECK-POSTLINK-O-NEXT: Running pass: LowerTypeTestsPass
+; CHECK-POSTLINK-O-NEXT: Running pass: DropTypeTestsPass
; CHECK-O-NEXT: Running pass: IPSCCPPass
; CHECK-O-NEXT: Running analysis: DominatorTreeAnalysis
; CHECK-O-NEXT: Running analysis: AssumptionAnalysis
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 c90ec15c11122..6f32df6c423f0 100644
--- a/llvm/test/Other/new-pm-thinlto-postlink-pgo-defaults.ll
+++ b/llvm/test/Other/new-pm-thinlto-postlink-pgo-defaults.ll
@@ -29,7 +29,7 @@
; CHECK-O-NEXT: Running analysis: InnerAnalysisManagerProxy
; CHECK-O-NEXT: Running analysis: OptimizationRemarkEmitterAnalysis
; CHECK-O-NEXT: Running pass: OpenMPOptPass
-; CHECK-O-NEXT: Running pass: LowerTypeTestsPass
+; CHECK-O-NEXT: Running pass: DropTypeTestsPass
; CHECK-O-NEXT: Running pass: IPSCCPPass
; CHECK-O-NEXT: Running analysis: DominatorTreeAnalysis
; CHECK-O-NEXT: Running analysis: AssumptionAnalysis
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 88854669007c3..14a33c1ba1432 100644
--- a/llvm/test/Other/new-pm-thinlto-postlink-samplepgo-defaults.ll
+++ b/llvm/test/Other/new-pm-thinlto-postlink-samplepgo-defaults.ll
@@ -38,7 +38,7 @@
; CHECK-O-NEXT: Running pass: PGOIndirectCallPromotion
; CHECK-O-NEXT: Running analysis: OptimizationRemarkEmitterAnalysis
; CHECK-O-NEXT: Running pass: OpenMPOptPass
-; CHECK-O-NEXT: Running pass: LowerTypeTestsPass
+; CHECK-O-NEXT: Running pass: DropTypeTestsPass
; CHECK-O-NEXT: Running pass: IPSCCPPass
; CHECK-O-NEXT: Running analysis: DominatorTreeAnalysis
; CHECK-O-NEXT: Running analysis: AssumptionAnalysis
diff --git a/llvm/test/ThinLTO/X86/lower_type_test_phi.ll b/llvm/test/ThinLTO/X86/lower_type_test_phi.ll
index 81d85f64584fa..8f5bcd74e324d 100644
--- a/llvm/test/ThinLTO/X86/lower_type_test_phi.ll
+++ b/llvm/test/ThinLTO/X86/lower_type_test_phi.ll
@@ -20,7 +20,7 @@
; RUN: -r z.bc,_ZTV2D1,pl \
; RUN: -r z.bc,_ZTV1B,pl \
; RUN: -r z.bc,_ZTV2D2,pl \
-; RUN: -print-after=lowertypetests -filter-print-funcs=main 2>&1 | FileCheck %s
+; RUN: -print-after=lowertypetests -print-after=drop-type-tests -filter-print-funcs=main 2>&1 | FileCheck %s
; The first LTT should leave the type tests as is (instead of lowering
; them to false incorrectly).
@@ -35,7 +35,7 @@
; CHECK: %13 = phi i1 [ %11, %8 ], [ %7, %4 ]
; The second LTT should lower them to true.
-; CHECK: *** IR Dump After LowerTypeTestsPass on [module] ***
+; CHECK: *** IR Dump After DropTypeTestsPass on [module] ***
; CHECK-NOT: @llvm.type.test
; CHECK: 10:
; CHECK: %11 = phi i1 [ true, %7 ], [ true, %4 ]
diff --git a/llvm/test/Transforms/LowerTypeTests/drop_type_test.ll b/llvm/test/Transforms/LowerTypeTests/drop_type_test.ll
index e1d0573924a4e..8ac1f5c9ee54f 100644
--- a/llvm/test/Transforms/LowerTypeTests/drop_type_test.ll
+++ b/llvm/test/Transforms/LowerTypeTests/drop_type_test.ll
@@ -1,4 +1,4 @@
-; RUN: opt -S -passes=lowertypetests -lowertypetests-drop-type-tests=all < %s | FileCheck %s
+; RUN: opt -S -passes="drop-type-tests<all>" < %s | FileCheck %s
define void @func() {
entry:
diff --git a/llvm/test/Transforms/LowerTypeTests/drop_type_test_phi.ll b/llvm/test/Transforms/LowerTypeTests/drop_type_test_phi.ll
index 820865826dc7a..4c052723fd858 100644
--- a/llvm/test/Transforms/LowerTypeTests/drop_type_test_phi.ll
+++ b/llvm/test/Transforms/LowerTypeTests/drop_type_test_phi.ll
@@ -1,5 +1,5 @@
; Test to ensure dropping of type tests can handle a phi feeding the assume.
-; RUN: opt -S -passes=lowertypetests -lowertypetests-drop-type-tests=assume -mtriple=x86_64-unknown-linux-gnu %s | FileCheck %s
+; RUN: opt -S -passes=drop-type-tests -mtriple=x86_64-unknown-linux-gnu %s | 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"
target triple = "x86_64-grtev4-linux-gnu"
diff --git a/llvm/test/Transforms/LowerTypeTests/drop_type_test_select.ll b/llvm/test/Transforms/LowerTypeTests/drop_type_test_select.ll
index 2493d2cb12d10..1534469d7ff75 100644
--- a/llvm/test/Transforms/LowerTypeTests/drop_type_test_select.ll
+++ b/llvm/test/Transforms/LowerTypeTests/drop_type_test_select.ll
@@ -1,7 +1,7 @@
;; Test to ensure dropping of type tests can handle a select feeding the assume.
;; This pattern is created by SimplifyCFG when merging two type test + assume
;; sequences from
diff erent branches.
-; RUN: opt -S -passes=lowertypetests -lowertypetests-drop-type-tests=assume %s | FileCheck %s
+; RUN: opt -S -passes=drop-type-tests %s | FileCheck %s
; CHECK-LABEL: define void @test
define void @test(ptr %p, i1 %cond) {
More information about the cfe-commits
mailing list