[llvm] [Passes] Report error when pass requires target machine (PR #142550)
via llvm-commits
llvm-commits at lists.llvm.org
Tue Jun 3 00:25:35 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-backend-amdgpu
Author: None (paperchalice)
<details>
<summary>Changes</summary>
Fixes #<!-- -->142146
Do nullptr check when pass accept `const TargetMachine &` in constructor, but it is still not exhaustive.
---
Patch is 26.39 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/142550.diff
22 Files Affected:
- (modified) llvm/include/llvm/CodeGen/AtomicExpand.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/BasicBlockSectionsProfileReader.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/CodeGenPrepare.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/ComplexDeinterleavingPass.h (+2-2)
- (modified) llvm/include/llvm/CodeGen/DwarfEHPrepare.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/ExpandFp.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/ExpandLargeDivRem.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/ExpandMemCmp.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/GlobalMerge.h (+2-2)
- (modified) llvm/include/llvm/CodeGen/IndirectBrExpand.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/InterleavedAccess.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/InterleavedLoadCombine.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/MachineFunctionAnalysis.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/SafeStack.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/SelectOptimize.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/StackProtector.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/TypePromotion.h (+1-1)
- (modified) llvm/include/llvm/Passes/CodeGenPassBuilder.h (+9-9)
- (modified) llvm/lib/Passes/PassBuilder.cpp (+44-2)
- (modified) llvm/lib/Passes/PassRegistry.def (+17-17)
- (modified) llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp (+1-1)
- (added) llvm/test/tools/opt/no-target-machine.ll (+4)
``````````diff
diff --git a/llvm/include/llvm/CodeGen/AtomicExpand.h b/llvm/include/llvm/CodeGen/AtomicExpand.h
index 1b8a988ef4866..34f520f462e96 100644
--- a/llvm/include/llvm/CodeGen/AtomicExpand.h
+++ b/llvm/include/llvm/CodeGen/AtomicExpand.h
@@ -21,7 +21,7 @@ class AtomicExpandPass : public PassInfoMixin<AtomicExpandPass> {
const TargetMachine *TM;
public:
- AtomicExpandPass(const TargetMachine *TM) : TM(TM) {}
+ AtomicExpandPass(const TargetMachine &TM) : TM(&TM) {}
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
};
diff --git a/llvm/include/llvm/CodeGen/BasicBlockSectionsProfileReader.h b/llvm/include/llvm/CodeGen/BasicBlockSectionsProfileReader.h
index 08e6a0e3ef629..eb27a5723ecf5 100644
--- a/llvm/include/llvm/CodeGen/BasicBlockSectionsProfileReader.h
+++ b/llvm/include/llvm/CodeGen/BasicBlockSectionsProfileReader.h
@@ -167,7 +167,7 @@ class BasicBlockSectionsProfileReaderAnalysis
public:
static AnalysisKey Key;
typedef BasicBlockSectionsProfileReader Result;
- BasicBlockSectionsProfileReaderAnalysis(const TargetMachine *TM) : TM(TM) {}
+ BasicBlockSectionsProfileReaderAnalysis(const TargetMachine &TM) : TM(&TM) {}
Result run(Function &F, FunctionAnalysisManager &AM);
diff --git a/llvm/include/llvm/CodeGen/CodeGenPrepare.h b/llvm/include/llvm/CodeGen/CodeGenPrepare.h
index dee3a9ee53d76..e673d0f5831a0 100644
--- a/llvm/include/llvm/CodeGen/CodeGenPrepare.h
+++ b/llvm/include/llvm/CodeGen/CodeGenPrepare.h
@@ -26,7 +26,7 @@ class CodeGenPreparePass : public PassInfoMixin<CodeGenPreparePass> {
const TargetMachine *TM;
public:
- CodeGenPreparePass(const TargetMachine *TM) : TM(TM) {}
+ CodeGenPreparePass(const TargetMachine &TM) : TM(&TM) {}
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
};
diff --git a/llvm/include/llvm/CodeGen/ComplexDeinterleavingPass.h b/llvm/include/llvm/CodeGen/ComplexDeinterleavingPass.h
index 4383249658e60..7b74f2a8cadc0 100644
--- a/llvm/include/llvm/CodeGen/ComplexDeinterleavingPass.h
+++ b/llvm/include/llvm/CodeGen/ComplexDeinterleavingPass.h
@@ -24,10 +24,10 @@ class TargetMachine;
struct ComplexDeinterleavingPass
: public PassInfoMixin<ComplexDeinterleavingPass> {
private:
- TargetMachine *TM;
+ const TargetMachine *TM;
public:
- ComplexDeinterleavingPass(TargetMachine *TM) : TM(TM) {}
+ ComplexDeinterleavingPass(const TargetMachine &TM) : TM(&TM) {}
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
};
diff --git a/llvm/include/llvm/CodeGen/DwarfEHPrepare.h b/llvm/include/llvm/CodeGen/DwarfEHPrepare.h
index 3f625cd89808a..5b68b8cf83eb4 100644
--- a/llvm/include/llvm/CodeGen/DwarfEHPrepare.h
+++ b/llvm/include/llvm/CodeGen/DwarfEHPrepare.h
@@ -24,7 +24,7 @@ class DwarfEHPreparePass : public PassInfoMixin<DwarfEHPreparePass> {
const TargetMachine *TM;
public:
- explicit DwarfEHPreparePass(const TargetMachine *TM_) : TM(TM_) {}
+ explicit DwarfEHPreparePass(const TargetMachine &TM_) : TM(&TM_) {}
PreservedAnalyses run(Function &F, FunctionAnalysisManager &FAM);
};
diff --git a/llvm/include/llvm/CodeGen/ExpandFp.h b/llvm/include/llvm/CodeGen/ExpandFp.h
index c13119a4238ef..5c954834333e9 100644
--- a/llvm/include/llvm/CodeGen/ExpandFp.h
+++ b/llvm/include/llvm/CodeGen/ExpandFp.h
@@ -20,7 +20,7 @@ class ExpandFpPass : public PassInfoMixin<ExpandFpPass> {
const TargetMachine *TM;
public:
- explicit ExpandFpPass(const TargetMachine *TM_) : TM(TM_) {}
+ explicit ExpandFpPass(const TargetMachine &TM_) : TM(&TM_) {}
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
};
diff --git a/llvm/include/llvm/CodeGen/ExpandLargeDivRem.h b/llvm/include/llvm/CodeGen/ExpandLargeDivRem.h
index 6fc44094925dc..b73a382e93b5a 100644
--- a/llvm/include/llvm/CodeGen/ExpandLargeDivRem.h
+++ b/llvm/include/llvm/CodeGen/ExpandLargeDivRem.h
@@ -20,7 +20,7 @@ class ExpandLargeDivRemPass : public PassInfoMixin<ExpandLargeDivRemPass> {
const TargetMachine *TM;
public:
- explicit ExpandLargeDivRemPass(const TargetMachine *TM_) : TM(TM_) {}
+ explicit ExpandLargeDivRemPass(const TargetMachine &TM_) : TM(&TM_) {}
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
};
diff --git a/llvm/include/llvm/CodeGen/ExpandMemCmp.h b/llvm/include/llvm/CodeGen/ExpandMemCmp.h
index 94a877854f327..0b845e439fce4 100644
--- a/llvm/include/llvm/CodeGen/ExpandMemCmp.h
+++ b/llvm/include/llvm/CodeGen/ExpandMemCmp.h
@@ -19,7 +19,7 @@ class ExpandMemCmpPass : public PassInfoMixin<ExpandMemCmpPass> {
const TargetMachine *TM;
public:
- explicit ExpandMemCmpPass(const TargetMachine *TM_) : TM(TM_) {}
+ explicit ExpandMemCmpPass(const TargetMachine &TM_) : TM(&TM_) {}
PreservedAnalyses run(Function &F, FunctionAnalysisManager &FAM);
};
diff --git a/llvm/include/llvm/CodeGen/GlobalMerge.h b/llvm/include/llvm/CodeGen/GlobalMerge.h
index 2220e5cfff5fb..31acdc960c779 100644
--- a/llvm/include/llvm/CodeGen/GlobalMerge.h
+++ b/llvm/include/llvm/CodeGen/GlobalMerge.h
@@ -45,8 +45,8 @@ class GlobalMergePass : public PassInfoMixin<GlobalMergePass> {
GlobalMergeOptions Options;
public:
- GlobalMergePass(const TargetMachine *TM, GlobalMergeOptions Options)
- : TM(TM), Options(Options) {}
+ GlobalMergePass(const TargetMachine &TM, GlobalMergeOptions Options)
+ : TM(&TM), Options(Options) {}
PreservedAnalyses run(Module &M, ModuleAnalysisManager &MAM);
};
diff --git a/llvm/include/llvm/CodeGen/IndirectBrExpand.h b/llvm/include/llvm/CodeGen/IndirectBrExpand.h
index f7d9d5df6fe27..572a712fc28fe 100644
--- a/llvm/include/llvm/CodeGen/IndirectBrExpand.h
+++ b/llvm/include/llvm/CodeGen/IndirectBrExpand.h
@@ -19,7 +19,7 @@ class IndirectBrExpandPass : public PassInfoMixin<IndirectBrExpandPass> {
const TargetMachine *TM;
public:
- IndirectBrExpandPass(const TargetMachine *TM) : TM(TM) {}
+ IndirectBrExpandPass(const TargetMachine &TM) : TM(&TM) {}
PreservedAnalyses run(Function &F, FunctionAnalysisManager &FAM);
};
diff --git a/llvm/include/llvm/CodeGen/InterleavedAccess.h b/llvm/include/llvm/CodeGen/InterleavedAccess.h
index 31bd19a3191a2..42bfa84ddc26d 100644
--- a/llvm/include/llvm/CodeGen/InterleavedAccess.h
+++ b/llvm/include/llvm/CodeGen/InterleavedAccess.h
@@ -25,7 +25,7 @@ class InterleavedAccessPass : public PassInfoMixin<InterleavedAccessPass> {
const TargetMachine *TM;
public:
- explicit InterleavedAccessPass(const TargetMachine *TM) : TM(TM) {}
+ explicit InterleavedAccessPass(const TargetMachine &TM) : TM(&TM) {}
PreservedAnalyses run(Function &F, FunctionAnalysisManager &FAM);
};
diff --git a/llvm/include/llvm/CodeGen/InterleavedLoadCombine.h b/llvm/include/llvm/CodeGen/InterleavedLoadCombine.h
index fa99aa316c2a6..2750fd42bbfc8 100644
--- a/llvm/include/llvm/CodeGen/InterleavedLoadCombine.h
+++ b/llvm/include/llvm/CodeGen/InterleavedLoadCombine.h
@@ -20,7 +20,7 @@ class InterleavedLoadCombinePass
const TargetMachine *TM;
public:
- explicit InterleavedLoadCombinePass(const TargetMachine *TM) : TM(TM) {}
+ explicit InterleavedLoadCombinePass(const TargetMachine &TM) : TM(&TM) {}
PreservedAnalyses run(Function &F, FunctionAnalysisManager &FAM);
};
diff --git a/llvm/include/llvm/CodeGen/MachineFunctionAnalysis.h b/llvm/include/llvm/CodeGen/MachineFunctionAnalysis.h
index 98a60c987bbe3..2b30bc4305684 100644
--- a/llvm/include/llvm/CodeGen/MachineFunctionAnalysis.h
+++ b/llvm/include/llvm/CodeGen/MachineFunctionAnalysis.h
@@ -42,7 +42,7 @@ class MachineFunctionAnalysis
FunctionAnalysisManager::Invalidator &);
};
- MachineFunctionAnalysis(const TargetMachine *TM) : TM(TM) {};
+ MachineFunctionAnalysis(const TargetMachine &TM) : TM(&TM) {};
LLVM_ABI Result run(Function &F, FunctionAnalysisManager &FAM);
};
diff --git a/llvm/include/llvm/CodeGen/SafeStack.h b/llvm/include/llvm/CodeGen/SafeStack.h
index e8f0d141457ba..05ad40e6c68c5 100644
--- a/llvm/include/llvm/CodeGen/SafeStack.h
+++ b/llvm/include/llvm/CodeGen/SafeStack.h
@@ -19,7 +19,7 @@ class SafeStackPass : public PassInfoMixin<SafeStackPass> {
const TargetMachine *TM;
public:
- explicit SafeStackPass(const TargetMachine *TM_) : TM(TM_) {}
+ explicit SafeStackPass(const TargetMachine &TM_) : TM(&TM_) {}
PreservedAnalyses run(Function &F, FunctionAnalysisManager &FAM);
};
diff --git a/llvm/include/llvm/CodeGen/SelectOptimize.h b/llvm/include/llvm/CodeGen/SelectOptimize.h
index 37024a154145a..33f66bb16c4de 100644
--- a/llvm/include/llvm/CodeGen/SelectOptimize.h
+++ b/llvm/include/llvm/CodeGen/SelectOptimize.h
@@ -25,7 +25,7 @@ class SelectOptimizePass : public PassInfoMixin<SelectOptimizePass> {
const TargetMachine *TM;
public:
- explicit SelectOptimizePass(const TargetMachine *TM) : TM(TM) {}
+ explicit SelectOptimizePass(const TargetMachine &TM) : TM(&TM) {}
PreservedAnalyses run(Function &F, FunctionAnalysisManager &FAM);
};
diff --git a/llvm/include/llvm/CodeGen/StackProtector.h b/llvm/include/llvm/CodeGen/StackProtector.h
index dfafc781067d7..fbe79353b9c33 100644
--- a/llvm/include/llvm/CodeGen/StackProtector.h
+++ b/llvm/include/llvm/CodeGen/StackProtector.h
@@ -86,7 +86,7 @@ class StackProtectorPass : public PassInfoMixin<StackProtectorPass> {
const TargetMachine *TM;
public:
- explicit StackProtectorPass(const TargetMachine *TM) : TM(TM) {}
+ explicit StackProtectorPass(const TargetMachine &TM) : TM(&TM) {}
PreservedAnalyses run(Function &F, FunctionAnalysisManager &FAM);
};
diff --git a/llvm/include/llvm/CodeGen/TypePromotion.h b/llvm/include/llvm/CodeGen/TypePromotion.h
index efe58232cdcdd..ba32a21066257 100644
--- a/llvm/include/llvm/CodeGen/TypePromotion.h
+++ b/llvm/include/llvm/CodeGen/TypePromotion.h
@@ -26,7 +26,7 @@ class TypePromotionPass : public PassInfoMixin<TypePromotionPass> {
const TargetMachine *TM;
public:
- TypePromotionPass(const TargetMachine *TM): TM(TM) { }
+ TypePromotionPass(const TargetMachine &TM) : TM(&TM) {}
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
};
diff --git a/llvm/include/llvm/Passes/CodeGenPassBuilder.h b/llvm/include/llvm/Passes/CodeGenPassBuilder.h
index 6ed9ac47405d3..b4d18f2978739 100644
--- a/llvm/include/llvm/Passes/CodeGenPassBuilder.h
+++ b/llvm/include/llvm/Passes/CodeGenPassBuilder.h
@@ -672,8 +672,8 @@ void CodeGenPassBuilder<Derived, TargetMachineT>::addISelPasses(
addPass(LowerEmuTLSPass());
addPass(PreISelIntrinsicLoweringPass(&TM));
- addPass(ExpandLargeDivRemPass(&TM));
- addPass(ExpandFpPass(&TM));
+ addPass(ExpandLargeDivRemPass(TM));
+ addPass(ExpandFpPass(TM));
derived().addIRPasses(addPass);
derived().addCodeGenPrepare(addPass);
@@ -704,7 +704,7 @@ void CodeGenPassBuilder<Derived, TargetMachineT>::addIRPasses(
// target lowering hook.
if (!Opt.DisableMergeICmps)
addPass(MergeICmpsPass());
- addPass(ExpandMemCmpPass(&TM));
+ addPass(ExpandMemCmpPass(TM));
}
// Run GC lowering passes for builtin collectors
@@ -742,7 +742,7 @@ void CodeGenPassBuilder<Derived, TargetMachineT>::addIRPasses(
// Convert conditional moves to conditional jumps when profitable.
if (getOptLevel() != CodeGenOptLevel::None && !Opt.DisableSelectOptimize)
- addPass(SelectOptimizePass(&TM));
+ addPass(SelectOptimizePass(TM));
if (Opt.EnableGlobalMergeFunc)
addPass(GlobalMergeFuncPass());
@@ -769,14 +769,14 @@ void CodeGenPassBuilder<Derived, TargetMachineT>::addPassesToHandleExceptions(
case ExceptionHandling::ARM:
case ExceptionHandling::AIX:
case ExceptionHandling::ZOS:
- addPass(DwarfEHPreparePass(&TM));
+ addPass(DwarfEHPreparePass(TM));
break;
case ExceptionHandling::WinEH:
// We support using both GCC-style and MSVC-style exceptions on Windows, so
// add both preparation passes. Each pass will only actually run if it
// recognizes the personality function.
addPass(WinEHPreparePass());
- addPass(DwarfEHPreparePass(&TM));
+ addPass(DwarfEHPreparePass(TM));
break;
case ExceptionHandling::Wasm:
// Wasm EH uses Windows EH instructions, but it does not need to demote PHIs
@@ -801,7 +801,7 @@ template <typename Derived, typename TargetMachineT>
void CodeGenPassBuilder<Derived, TargetMachineT>::addCodeGenPrepare(
AddIRPass &addPass) const {
if (getOptLevel() != CodeGenOptLevel::None && !Opt.DisableCGP)
- addPass(CodeGenPreparePass(&TM));
+ addPass(CodeGenPreparePass(TM));
// TODO: Default ctor'd RewriteSymbolPass is no-op.
// addPass(RewriteSymbolPass());
}
@@ -816,8 +816,8 @@ void CodeGenPassBuilder<Derived, TargetMachineT>::addISelPrepare(
addPass(CallBrPreparePass());
// Add both the safe stack and the stack protection passes: each of them will
// only protect functions that have corresponding attributes.
- addPass(SafeStackPass(&TM));
- addPass(StackProtectorPass(&TM));
+ addPass(SafeStackPass(TM));
+ addPass(StackProtectorPass(TM));
if (Opt.PrintISelInput)
addPass(PrintFunctionPass(dbgs(),
diff --git a/llvm/lib/Passes/PassBuilder.cpp b/llvm/lib/Passes/PassBuilder.cpp
index 1e4299a0b9803..95dd2f357ac6e 100644
--- a/llvm/lib/Passes/PassBuilder.cpp
+++ b/llvm/lib/Passes/PassBuilder.cpp
@@ -1851,6 +1851,16 @@ Error PassBuilder::parseModulePass(ModulePassManager &MPM,
auto Params = parsePassParameters(PARSER, Name, NAME); \
if (!Params) \
return Params.takeError(); \
+ auto CreatePass = CREATE_PASS; \
+ if constexpr (std::is_constructible_v< \
+ std::remove_reference_t<decltype(CreatePass( \
+ Params.get()))>, \
+ const TargetMachine &, decltype(Params.get())>) { \
+ if (!TM) \
+ return make_error<StringError>( \
+ formatv("Pass '{0}' requires TargetMachine", Name).str(), \
+ inconvertibleErrorCode()); \
+ } \
MPM.addPass(CREATE_PASS(Params.get())); \
return Error::success(); \
}
@@ -1882,6 +1892,14 @@ Error PassBuilder::parseModulePass(ModulePassManager &MPM,
}
#define FUNCTION_PASS(NAME, CREATE_PASS) \
if (Name == NAME) { \
+ if constexpr (std::is_constructible_v< \
+ std::remove_reference_t<decltype(CREATE_PASS)>, \
+ const TargetMachine &>) { \
+ if (!TM) \
+ return make_error<StringError>( \
+ formatv("Pass '{0}' requires TargetMachine", Name).str(), \
+ inconvertibleErrorCode()); \
+ } \
MPM.addPass(createModuleToFunctionPassAdaptor(CREATE_PASS)); \
return Error::success(); \
}
@@ -1997,6 +2015,14 @@ Error PassBuilder::parseCGSCCPass(CGSCCPassManager &CGPM,
}
#define FUNCTION_PASS(NAME, CREATE_PASS) \
if (Name == NAME) { \
+ if constexpr (std::is_constructible_v< \
+ std::remove_reference_t<decltype(CREATE_PASS)>, \
+ const TargetMachine &>) { \
+ if (!TM) \
+ return make_error<StringError>( \
+ formatv("Pass '{0}' requires TargetMachine", Name).str(), \
+ inconvertibleErrorCode()); \
+ } \
CGPM.addPass(createCGSCCToFunctionPassAdaptor(CREATE_PASS)); \
return Error::success(); \
}
@@ -2091,6 +2117,14 @@ Error PassBuilder::parseFunctionPass(FunctionPassManager &FPM,
// Now expand the basic registered passes from the .inc file.
#define FUNCTION_PASS(NAME, CREATE_PASS) \
if (Name == NAME) { \
+ if constexpr (std::is_constructible_v< \
+ std::remove_reference_t<decltype(CREATE_PASS)>, \
+ const TargetMachine &>) { \
+ if (!TM) \
+ return make_error<StringError>( \
+ formatv("Pass '{0}' requires TargetMachine", Name).str(), \
+ inconvertibleErrorCode()); \
+ } \
FPM.addPass(CREATE_PASS); \
return Error::success(); \
}
@@ -2104,9 +2138,17 @@ Error PassBuilder::parseFunctionPass(FunctionPassManager &FPM,
}
#define FUNCTION_ANALYSIS(NAME, CREATE_PASS) \
if (Name == "require<" NAME ">") { \
+ if constexpr (std::is_constructible_v< \
+ std::remove_reference_t<decltype(CREATE_PASS)>, \
+ const TargetMachine &>) { \
+ if (!TM) \
+ return make_error<StringError>( \
+ formatv("Pass '{0}' requires TargetMachine", Name).str(), \
+ inconvertibleErrorCode()); \
+ } \
FPM.addPass( \
- RequireAnalysisPass< \
- std::remove_reference_t<decltype(CREATE_PASS)>, Function>()); \
+ RequireAnalysisPass<std::remove_reference_t<decltype(CREATE_PASS)>, \
+ Function>()); \
return Error::success(); \
} \
if (Name == "invalidate<" NAME ">") { \
diff --git a/llvm/lib/Passes/PassRegistry.def b/llvm/lib/Passes/PassRegistry.def
index e2824475ce8c3..d45ffda145a8b 100644
--- a/llvm/lib/Passes/PassRegistry.def
+++ b/llvm/lib/Passes/PassRegistry.def
@@ -181,7 +181,7 @@ MODULE_PASS_WITH_PARAMS(
parseCGProfilePassOptions, "in-lto-post-link")
MODULE_PASS_WITH_PARAMS(
"global-merge", "GlobalMergePass",
- [TM = TM](GlobalMergeOptions Opts) { return GlobalMergePass(TM, Opts); },
+ [TM = TM](GlobalMergeOptions Opts) { return GlobalMergePass(*TM, Opts); },
parseGlobalMergeOptions,
"group-by-use;ignore-single-use;max-offset=N;merge-const;"
"merge-const-aggressive;merge-external;no-group-by-use;"
@@ -286,7 +286,7 @@ CGSCC_PASS_WITH_PARAMS(
FUNCTION_ANALYSIS("aa", AAManager())
FUNCTION_ANALYSIS("access-info", LoopAccessAnalysis())
FUNCTION_ANALYSIS("assumptions", AssumptionAnalysis())
-FUNCTION_ANALYSIS("bb-sections-profile-reader", BasicBlockSectionsProfileReaderAnalysis(TM))
+FUNCTION_ANALYSIS("bb-sections-profile-reader", BasicBlockSectionsProfileReaderAnalysis(*TM))
FUNCTION_ANALYSIS("...
[truncated]
``````````
</details>
https://github.com/llvm/llvm-project/pull/142550
More information about the llvm-commits
mailing list