@@ -143,110 +143,113 @@ auto passBuilderAddFullLinkTimeOptimizationEarlyEPCallback(
143
143
}
144
144
#endif
145
145
146
- #ifndef LLVM_HAS_THIN_OR_FULL_LTO_PHASE
147
146
auto passBuilderAddOptimizerLastEPCallback (
148
147
llvm::PassBuilder &Builder, const void *DataPtr,
149
148
void (*Deleter)(const void *),
150
149
void (*Callback)(const void *, llvm::ModulePassManager &,
150
+ #if defined(LLVM_VERSION_MAJOR) && (LLVM_VERSION_MAJOR >= 20)
151
+ OptimizationLevel, ThinOrFullLTOPhaseFFI)) -> void {
152
+ #else
151
153
OptimizationLevel)) -> void {
154
+ #endif
152
155
const auto Data = std::shared_ptr<const void >(DataPtr, Deleter);
153
156
157
+ #ifdef LLVM_HAS_THIN_OR_FULL_LTO_PHASE
154
158
Builder.registerOptimizerLastEPCallback (
155
159
[Data = std::move (Data), Callback](llvm::ModulePassManager &PassManager,
156
- LlvmOptLevel Opt) {
160
+ LlvmOptLevel Opt,
161
+ llvm::ThinOrFullLTOPhase Phase) {
157
162
const auto OptFFI = getFFIOptimizationLevel (Opt);
158
- Callback (Data.get (), PassManager, OptFFI);
163
+ const auto PhaseFFI = getFFIThinOrFullLTOPhase (Phase);
164
+ Callback (Data.get (), PassManager, OptFFI, PhaseFFI);
159
165
});
160
- }
161
166
#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
-
169
167
Builder.registerOptimizerLastEPCallback (
170
168
[Data = std::move (Data), Callback](llvm::ModulePassManager &PassManager,
171
- LlvmOptLevel Opt,
172
- llvm::ThinOrFullLTOPhase Phase) {
169
+ LlvmOptLevel Opt) {
173
170
const auto OptFFI = getFFIOptimizationLevel (Opt);
174
- const auto PhaseFFI = getFFIThinOrFullLTOPhase (Phase);
171
+ #if defined(LLVM_VERSION_MAJOR) && (LLVM_VERSION_MAJOR >= 20)
172
+ const auto PhaseFFI = ThinOrFullLTOPhaseFFI::kNone ;
175
173
Callback (Data.get (), PassManager, OptFFI, PhaseFFI);
174
+ #else
175
+ Callback (Data.get (), PassManager, OptFFI);
176
+ #endif
176
177
});
177
- }
178
178
#endif
179
+ }
179
180
180
181
#if defined(LLVM_VERSION_MAJOR) && (LLVM_VERSION_MAJOR >= 15)
181
- #ifndef LLVM_HAS_THIN_OR_FULL_LTO_PHASE
182
182
auto passBuilderAddOptimizerEarlyEPCallback (
183
183
llvm::PassBuilder &Builder, const void *DataPtr,
184
184
void (*Deleter)(const void *),
185
185
void (*Callback)(const void *, llvm::ModulePassManager &,
186
+ #if defined(LLVM_VERSION_MAJOR) && (LLVM_VERSION_MAJOR >= 20)
187
+ OptimizationLevel, ThinOrFullLTOPhaseFFI)) -> void {
188
+ #else
186
189
OptimizationLevel)) -> void {
190
+ #endif
187
191
const auto Data = std::shared_ptr<const void >(DataPtr, Deleter);
188
192
193
+ #ifdef LLVM_HAS_THIN_OR_FULL_LTO_PHASE
189
194
Builder.registerOptimizerEarlyEPCallback (
190
195
[Data = std::move (Data), Callback](llvm::ModulePassManager &PassManager,
191
- LlvmOptLevel Opt) {
196
+ LlvmOptLevel Opt,
197
+ llvm::ThinOrFullLTOPhase Phase) {
192
198
const auto OptFFI = getFFIOptimizationLevel (Opt);
193
- Callback (Data.get (), PassManager, OptFFI);
199
+ const auto PhaseFFI = getFFIThinOrFullLTOPhase (Phase);
200
+ Callback (Data.get (), PassManager, OptFFI, PhaseFFI);
194
201
});
195
- }
196
202
#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
-
204
203
Builder.registerOptimizerEarlyEPCallback (
205
204
[Data = std::move (Data), Callback](llvm::ModulePassManager &PassManager,
206
- LlvmOptLevel Opt,
207
- llvm::ThinOrFullLTOPhase Phase) {
205
+ LlvmOptLevel Opt) {
208
206
const auto OptFFI = getFFIOptimizationLevel (Opt);
209
- const auto PhaseFFI = getFFIThinOrFullLTOPhase (Phase);
207
+ #if defined(LLVM_VERSION_MAJOR) && (LLVM_VERSION_MAJOR >= 20)
208
+ const auto PhaseFFI = ThinOrFullLTOPhaseFFI::kNone ;
210
209
Callback (Data.get (), PassManager, OptFFI, PhaseFFI);
210
+ #else
211
+ Callback (Data.get (), PassManager, OptFFI);
212
+ #endif
211
213
});
212
- }
213
214
#endif
215
+ }
214
216
#endif
215
217
216
218
#if defined(LLVM_VERSION_MAJOR) && (LLVM_VERSION_MAJOR >= 12)
217
- #ifndef LLVM_HAS_THIN_OR_FULL_LTO_PHASE
218
219
auto passBuilderAddPipelineEarlySimplificationEPCallback (
219
220
llvm::PassBuilder &Builder, const void *DataPtr,
220
221
void (*Deleter)(const void *),
221
222
void (*Callback)(const void *, llvm::ModulePassManager &,
223
+ #if defined(LLVM_VERSION_MAJOR) && (LLVM_VERSION_MAJOR >= 20)
224
+ OptimizationLevel, ThinOrFullLTOPhaseFFI)) -> void {
225
+ #else
222
226
OptimizationLevel)) -> void {
227
+ #endif
223
228
const auto Data = std::shared_ptr<const void >(DataPtr, Deleter);
224
229
230
+ #ifdef LLVM_HAS_THIN_OR_FULL_LTO_PHASE
225
231
Builder.registerPipelineEarlySimplificationEPCallback (
226
232
[Data = std::move (Data), Callback](llvm::ModulePassManager &PassManager,
227
- LlvmOptLevel Opt) {
233
+ LlvmOptLevel Opt,
234
+ llvm::ThinOrFullLTOPhase Phase) {
228
235
const auto OptFFI = getFFIOptimizationLevel (Opt);
229
- Callback (Data.get (), PassManager, OptFFI);
236
+ const auto PhaseFFI = getFFIThinOrFullLTOPhase (Phase);
237
+ Callback (Data.get (), PassManager, OptFFI, PhaseFFI);
230
238
});
231
- }
232
239
#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
-
240
240
Builder.registerPipelineEarlySimplificationEPCallback (
241
241
[Data = std::move (Data), Callback](llvm::ModulePassManager &PassManager,
242
- LlvmOptLevel Opt,
243
- llvm::ThinOrFullLTOPhase Phase) {
242
+ LlvmOptLevel Opt) {
244
243
const auto OptFFI = getFFIOptimizationLevel (Opt);
245
- const auto PhaseFFI = getFFIThinOrFullLTOPhase (Phase);
244
+ #if defined(LLVM_VERSION_MAJOR) && (LLVM_VERSION_MAJOR >= 20)
245
+ const auto PhaseFFI = ThinOrFullLTOPhaseFFI::kNone ;
246
246
Callback (Data.get (), PassManager, OptFFI, PhaseFFI);
247
+ #else
248
+ Callback (Data.get (), PassManager, OptFFI);
249
+ #endif
247
250
});
248
- }
249
251
#endif
252
+ }
250
253
#endif
251
254
252
255
#if defined(LLVM_VERSION_MAJOR) && (LLVM_VERSION_MAJOR >= 12)
0 commit comments