@@ -143,110 +143,116 @@ auto passBuilderAddFullLinkTimeOptimizationEarlyEPCallback(
143143}
144144#endif
145145
146- #ifndef LLVM_HAS_THIN_OR_FULL_LTO_PHASE
147146auto passBuilderAddOptimizerLastEPCallback (
148147 llvm::PassBuilder &Builder, const void *DataPtr,
149148 void (*Deleter)(const void *),
150149 void (*Callback)(const void *, llvm::ModulePassManager &,
150+ #if defined(LLVM_VERSION_MAJOR) && (LLVM_VERSION_MAJOR >= 20)
151+ OptimizationLevel,
152+ ThinOrFullLTOPhaseFFI)) -> void {
153+ #else
151154 OptimizationLevel)) -> void {
155+ #endif
152156 const auto Data = std::shared_ptr<const void >(DataPtr, Deleter);
153157
158+ #ifdef LLVM_HAS_THIN_OR_FULL_LTO_PHASE
154159 Builder.registerOptimizerLastEPCallback (
155160 [Data = std::move (Data), Callback](llvm::ModulePassManager &PassManager,
156- LlvmOptLevel Opt) {
161+ LlvmOptLevel Opt,
162+ llvm::ThinOrFullLTOPhase Phase) {
157163 const auto OptFFI = getFFIOptimizationLevel (Opt);
158- Callback (Data.get (), PassManager, OptFFI);
164+ const auto PhaseFFI = getFFIThinOrFullLTOPhase (Phase);
165+ Callback (Data.get (), PassManager, OptFFI, PhaseFFI);
159166 });
160- }
161167#else
162- auto passBuilderAddOptimizerLastEPCallback (
163- llvm::PassBuilder &Builder, const void *DataPtr,
164- void (*Deleter)(const void *),
165- void (*Callback)(const void *, llvm::ModulePassManager &, OptimizationLevel,
166- ThinOrFullLTOPhaseFFI)) -> void {
167- const auto Data = std::shared_ptr<const void >(DataPtr, Deleter);
168-
169168 Builder.registerOptimizerLastEPCallback (
170169 [Data = std::move (Data), Callback](llvm::ModulePassManager &PassManager,
171- LlvmOptLevel Opt,
172- llvm::ThinOrFullLTOPhase Phase) {
170+ LlvmOptLevel Opt) {
173171 const auto OptFFI = getFFIOptimizationLevel (Opt);
174- const auto PhaseFFI = getFFIThinOrFullLTOPhase (Phase);
172+ #if defined(LLVM_VERSION_MAJOR) && (LLVM_VERSION_MAJOR >= 20)
173+ const auto PhaseFFI = ThinOrFullLTOPhaseFFI::kNone ;
175174 Callback (Data.get (), PassManager, OptFFI, PhaseFFI);
175+ #else
176+ Callback (Data.get (), PassManager, OptFFI);
177+ #endif
176178 });
177- }
178179#endif
180+ }
179181
180182#if defined(LLVM_VERSION_MAJOR) && (LLVM_VERSION_MAJOR >= 15)
181- #ifndef LLVM_HAS_THIN_OR_FULL_LTO_PHASE
182183auto passBuilderAddOptimizerEarlyEPCallback (
183184 llvm::PassBuilder &Builder, const void *DataPtr,
184185 void (*Deleter)(const void *),
185186 void (*Callback)(const void *, llvm::ModulePassManager &,
187+ #if defined(LLVM_VERSION_MAJOR) && (LLVM_VERSION_MAJOR >= 20)
188+ OptimizationLevel,
189+ ThinOrFullLTOPhaseFFI)) -> void {
190+ #else
186191 OptimizationLevel)) -> void {
192+ #endif
187193 const auto Data = std::shared_ptr<const void >(DataPtr, Deleter);
188194
195+ #ifdef LLVM_HAS_THIN_OR_FULL_LTO_PHASE
189196 Builder.registerOptimizerEarlyEPCallback (
190197 [Data = std::move (Data), Callback](llvm::ModulePassManager &PassManager,
191- LlvmOptLevel Opt) {
198+ LlvmOptLevel Opt,
199+ llvm::ThinOrFullLTOPhase Phase) {
192200 const auto OptFFI = getFFIOptimizationLevel (Opt);
193- Callback (Data.get (), PassManager, OptFFI);
201+ const auto PhaseFFI = getFFIThinOrFullLTOPhase (Phase);
202+ Callback (Data.get (), PassManager, OptFFI, PhaseFFI);
194203 });
195- }
196204#else
197- auto passBuilderAddOptimizerEarlyEPCallback (
198- llvm::PassBuilder &Builder, const void *DataPtr,
199- void (*Deleter)(const void *),
200- void (*Callback)(const void *, llvm::ModulePassManager &, OptimizationLevel,
201- ThinOrFullLTOPhaseFFI)) -> void {
202- const auto Data = std::shared_ptr<const void >(DataPtr, Deleter);
203-
204205 Builder.registerOptimizerEarlyEPCallback (
205206 [Data = std::move (Data), Callback](llvm::ModulePassManager &PassManager,
206- LlvmOptLevel Opt,
207- llvm::ThinOrFullLTOPhase Phase) {
207+ LlvmOptLevel Opt) {
208208 const auto OptFFI = getFFIOptimizationLevel (Opt);
209- const auto PhaseFFI = getFFIThinOrFullLTOPhase (Phase);
209+ #if defined(LLVM_VERSION_MAJOR) && (LLVM_VERSION_MAJOR >= 20)
210+ const auto PhaseFFI = ThinOrFullLTOPhaseFFI::kNone ;
210211 Callback (Data.get (), PassManager, OptFFI, PhaseFFI);
212+ #else
213+ Callback (Data.get (), PassManager, OptFFI);
214+ #endif
211215 });
212- }
213216#endif
217+ }
214218#endif
215219
216220#if defined(LLVM_VERSION_MAJOR) && (LLVM_VERSION_MAJOR >= 12)
217- #ifndef LLVM_HAS_THIN_OR_FULL_LTO_PHASE
218221auto passBuilderAddPipelineEarlySimplificationEPCallback (
219222 llvm::PassBuilder &Builder, const void *DataPtr,
220223 void (*Deleter)(const void *),
221224 void (*Callback)(const void *, llvm::ModulePassManager &,
225+ #if defined(LLVM_VERSION_MAJOR) && (LLVM_VERSION_MAJOR >= 20)
226+ OptimizationLevel,
227+ ThinOrFullLTOPhaseFFI)) -> void {
228+ #else
222229 OptimizationLevel)) -> void {
230+ #endif
223231 const auto Data = std::shared_ptr<const void >(DataPtr, Deleter);
224232
233+ #ifdef LLVM_HAS_THIN_OR_FULL_LTO_PHASE
225234 Builder.registerPipelineEarlySimplificationEPCallback (
226235 [Data = std::move (Data), Callback](llvm::ModulePassManager &PassManager,
227- LlvmOptLevel Opt) {
236+ LlvmOptLevel Opt,
237+ llvm::ThinOrFullLTOPhase Phase) {
228238 const auto OptFFI = getFFIOptimizationLevel (Opt);
229- Callback (Data.get (), PassManager, OptFFI);
239+ const auto PhaseFFI = getFFIThinOrFullLTOPhase (Phase);
240+ Callback (Data.get (), PassManager, OptFFI, PhaseFFI);
230241 });
231- }
232242#else
233- auto passBuilderAddPipelineEarlySimplificationEPCallback (
234- llvm::PassBuilder &Builder, const void *DataPtr,
235- void (*Deleter)(const void *),
236- void (*Callback)(const void *, llvm::ModulePassManager &, OptimizationLevel,
237- ThinOrFullLTOPhaseFFI)) -> void {
238- const auto Data = std::shared_ptr<const void >(DataPtr, Deleter);
239-
240243 Builder.registerPipelineEarlySimplificationEPCallback (
241244 [Data = std::move (Data), Callback](llvm::ModulePassManager &PassManager,
242- LlvmOptLevel Opt,
243- llvm::ThinOrFullLTOPhase Phase) {
245+ LlvmOptLevel Opt) {
244246 const auto OptFFI = getFFIOptimizationLevel (Opt);
245- const auto PhaseFFI = getFFIThinOrFullLTOPhase (Phase);
247+ #if defined(LLVM_VERSION_MAJOR) && (LLVM_VERSION_MAJOR >= 20)
248+ const auto PhaseFFI = ThinOrFullLTOPhaseFFI::kNone ;
246249 Callback (Data.get (), PassManager, OptFFI, PhaseFFI);
250+ #else
251+ Callback (Data.get (), PassManager, OptFFI);
252+ #endif
247253 });
248- }
249254#endif
255+ }
250256#endif
251257
252258#if defined(LLVM_VERSION_MAJOR) && (LLVM_VERSION_MAJOR >= 12)
0 commit comments