Skip to content

Commit 9fb49ed

Browse files
committed
Use inkwell-macros for cfg on LLVM version
1 parent a80d718 commit 9fb49ed

File tree

4 files changed

+22
-78
lines changed

4 files changed

+22
-78
lines changed

llvm-plugin/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ target-all = ["inkwell/target-all"]
5252

5353
[dependencies]
5454
inkwell = { package = "llvm-plugin-inkwell", version = "0.3" }
55+
inkwell-internals = { package = "llvm-plugin-inkwell-internals", version = "0.7" }
5556
llvm-plugin-macros = { path = "../llvm-plugin-macros", version = "0.2", optional = true }
5657

5758
[build-dependencies]

llvm-plugin/src/ffi.rs

Lines changed: 10 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,69 +1,52 @@
11
use std::ffi::c_void;
22

3+
use inkwell_internals::llvm_versions;
4+
35
pub type AnalysisKey = *const u8;
46

57
#[link(name = "llvm-plugin-cpp")]
68
extern "C" {
7-
#[cfg(any(feature = "llvm15-0", feature = "llvm16-0"))]
9+
#[llvm_versions(15.0..=latest)]
810
pub(crate) fn passBuilderAddFullLinkTimeOptimizationLastEPCallback(
911
builder: *mut c_void,
1012
cb: *const c_void,
1113
cb_deleter: extern "C" fn(*const c_void),
1214
cb_sys: extern "C" fn(*const c_void, *mut c_void, crate::OptimizationLevel),
1315
);
1416

15-
#[cfg(any(feature = "llvm15-0", feature = "llvm16-0"))]
17+
#[llvm_versions(15.0..=latest)]
1618
pub(crate) fn passBuilderAddFullLinkTimeOptimizationEarlyEPCallback(
1719
builder: *mut c_void,
1820
cb: *const c_void,
1921
cb_deleter: extern "C" fn(*const c_void),
2022
cb_sys: extern "C" fn(*const c_void, *mut c_void, crate::OptimizationLevel),
2123
);
2224

23-
#[cfg(any(feature = "llvm15-0", feature = "llvm16-0"))]
25+
#[llvm_versions(15.0..=latest)]
2426
pub(crate) fn passBuilderAddOptimizerEarlyEPCallback(
2527
builder: *mut c_void,
2628
cb: *const c_void,
2729
cb_deleter: extern "C" fn(*const c_void),
2830
cb_sys: extern "C" fn(*const c_void, *mut c_void, crate::OptimizationLevel),
2931
);
3032

31-
#[cfg(any(
32-
feature = "llvm11-0",
33-
feature = "llvm12-0",
34-
feature = "llvm13-0",
35-
feature = "llvm14-0",
36-
feature = "llvm15-0",
37-
feature = "llvm16-0",
38-
))]
33+
#[llvm_versions(11.0..=latest)]
3934
pub(crate) fn passBuilderAddOptimizerLastEPCallback(
4035
builder: *mut c_void,
4136
cb: *const c_void,
4237
cb_deleter: extern "C" fn(*const c_void),
4338
cb_sys: extern "C" fn(*const c_void, *mut c_void, crate::OptimizationLevel),
4439
);
4540

46-
#[cfg(any(
47-
feature = "llvm12-0",
48-
feature = "llvm13-0",
49-
feature = "llvm14-0",
50-
feature = "llvm15-0",
51-
feature = "llvm16-0",
52-
))]
41+
#[llvm_versions(12.0..=latest)]
5342
pub(crate) fn passBuilderAddPipelineEarlySimplificationEPCallback(
5443
builder: *mut c_void,
5544
cb: *const c_void,
5645
cb_deleter: extern "C" fn(*const c_void),
5746
cb_sys: extern "C" fn(*const c_void, *mut c_void, crate::OptimizationLevel),
5847
);
5948

60-
#[cfg(any(
61-
feature = "llvm12-0",
62-
feature = "llvm13-0",
63-
feature = "llvm14-0",
64-
feature = "llvm15-0",
65-
feature = "llvm16-0",
66-
))]
49+
#[llvm_versions(12.0..=latest)]
6750
pub(crate) fn passBuilderAddPipelineStartEPCallback(
6851
builder: *mut c_void,
6952
cb: *const c_void,
@@ -127,13 +110,7 @@ extern "C" {
127110
pass_sys: extern "C" fn(*mut c_void, *mut c_void, *mut c_void) -> crate::PreservedAnalyses,
128111
);
129112

130-
#[cfg(any(
131-
feature = "llvm12-0",
132-
feature = "llvm13-0",
133-
feature = "llvm14-0",
134-
feature = "llvm15-0",
135-
feature = "llvm16-0",
136-
))]
113+
#[llvm_versions(12.0..=latest)]
137114
pub(crate) fn modulePassManagerIsEmpty(manager: *mut c_void) -> bool;
138115

139116
pub(crate) fn functionPassManagerAddPass(
@@ -143,13 +120,7 @@ extern "C" {
143120
pass_sys: extern "C" fn(*mut c_void, *mut c_void, *mut c_void) -> crate::PreservedAnalyses,
144121
);
145122

146-
#[cfg(any(
147-
feature = "llvm12-0",
148-
feature = "llvm13-0",
149-
feature = "llvm14-0",
150-
feature = "llvm15-0",
151-
feature = "llvm16-0",
152-
))]
123+
#[llvm_versions(12.0..=latest)]
153124
pub(crate) fn functionPassManagerIsEmpty(manager: *mut c_void) -> bool;
154125

155126
pub(crate) fn moduleAnalysisManagerRegisterPass(

llvm-plugin/src/pass_builder.rs

Lines changed: 8 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
use std::ffi::c_void;
22

3+
use inkwell_internals::llvm_versions;
4+
35
use super::{
46
FunctionAnalysisManager, FunctionPassManager, ModuleAnalysisManager, ModulePassManager,
57
};
@@ -316,13 +318,7 @@ impl PassBuilder {
316318
/// This extension point allows adding optimization once at the start
317319
/// of the pipeline. This does not apply to 'backend' compiles (LTO and
318320
/// ThinLTO link-time pipelines).
319-
#[cfg(any(
320-
feature = "llvm12-0",
321-
feature = "llvm13-0",
322-
feature = "llvm14-0",
323-
feature = "llvm15-0",
324-
feature = "llvm16-0",
325-
))]
321+
#[llvm_versions(12.0..=latest)]
326322
pub fn add_pipeline_start_ep_callback<T>(&mut self, cb: T)
327323
where
328324
T: Fn(&mut ModulePassManager, OptimizationLevel) + 'static,
@@ -365,13 +361,7 @@ impl PassBuilder {
365361
///
366362
/// This extension point allows adding optimization right after passes
367363
/// that do basic simplification of the input IR.
368-
#[cfg(any(
369-
feature = "llvm12-0",
370-
feature = "llvm13-0",
371-
feature = "llvm14-0",
372-
feature = "llvm15-0",
373-
feature = "llvm16-0",
374-
))]
364+
#[llvm_versions(12.0..=latest)]
375365
pub fn add_pipeline_early_simplification_ep_callback<T>(&mut self, cb: T)
376366
where
377367
T: Fn(&mut ModulePassManager, OptimizationLevel) + 'static,
@@ -414,14 +404,7 @@ impl PassBuilder {
414404
///
415405
/// This extension point allows adding passes that run after everything
416406
/// else.
417-
#[cfg(any(
418-
feature = "llvm11-0",
419-
feature = "llvm12-0",
420-
feature = "llvm13-0",
421-
feature = "llvm14-0",
422-
feature = "llvm15-0",
423-
feature = "llvm16-0",
424-
))]
407+
#[llvm_versions(11.0..=latest)]
425408
pub fn add_optimizer_last_ep_callback<T>(&mut self, cb: T)
426409
where
427410
T: Fn(&mut ModulePassManager, OptimizationLevel) + 'static,
@@ -464,7 +447,7 @@ impl PassBuilder {
464447
///
465448
/// This extension point allow adding passes that run at Link Time,
466449
/// before Full Link Time Optimization.
467-
#[cfg(any(feature = "llvm15-0", feature = "llvm16-0"))]
450+
#[llvm_versions(15.0..=latest)]
468451
pub fn add_full_lto_early_ep_callback<T>(&mut self, cb: T)
469452
where
470453
T: Fn(&mut ModulePassManager, OptimizationLevel) + 'static,
@@ -507,7 +490,7 @@ impl PassBuilder {
507490
///
508491
/// This extensions point allow adding passes that run at Link Time,
509492
/// after Full Link Time Optimization.
510-
#[cfg(any(feature = "llvm15-0", feature = "llvm16-0"))]
493+
#[llvm_versions(15.0..=latest)]
511494
pub fn add_full_lto_last_ep_callback<T>(&mut self, cb: T)
512495
where
513496
T: Fn(&mut ModulePassManager, OptimizationLevel) + 'static,
@@ -550,7 +533,7 @@ impl PassBuilder {
550533
///
551534
/// This extension point allows adding passes just before the main
552535
/// module-level optimization passes.
553-
#[cfg(any(feature = "llvm15-0", feature = "llvm16-0"))]
536+
#[llvm_versions(15.0..=latest)]
554537
pub fn add_optimizer_early_ep_callback<T>(&mut self, cb: T)
555538
where
556539
T: Fn(&mut ModulePassManager, OptimizationLevel) + 'static,

llvm-plugin/src/pass_manager.rs

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ use std::ffi::c_void;
22

33
use inkwell::module::Module;
44
use inkwell::values::FunctionValue;
5+
use inkwell_internals::llvm_versions;
56

67
use super::{
78
FunctionAnalysisManager, LlvmFunctionPass, LlvmModulePass, ModuleAnalysisManager,
@@ -64,13 +65,7 @@ impl ModulePassManager {
6465
}
6566

6667
/// Returns if the pass manager contains any passes.
67-
#[cfg(any(
68-
feature = "llvm12-0",
69-
feature = "llvm13-0",
70-
feature = "llvm14-0",
71-
feature = "llvm15-0",
72-
feature = "llvm16-0",
73-
))]
68+
#[llvm_versions(12.0..=latest)]
7469
pub fn is_empty(&self) -> bool {
7570
unsafe { super::modulePassManagerIsEmpty(self.inner) }
7671
}
@@ -133,13 +128,7 @@ impl FunctionPassManager {
133128
}
134129

135130
/// Returns if the pass manager contains any passes.
136-
#[cfg(any(
137-
feature = "llvm12-0",
138-
feature = "llvm13-0",
139-
feature = "llvm14-0",
140-
feature = "llvm15-0",
141-
feature = "llvm16-0",
142-
))]
131+
#[llvm_versions(12.0..=latest)]
143132
pub fn is_empty(&self) -> bool {
144133
unsafe { super::functionPassManagerIsEmpty(self.inner) }
145134
}

0 commit comments

Comments
 (0)