Skip to content

Commit 17d1cc8

Browse files
committed
add conditonally available passes
1 parent cfd7f24 commit 17d1cc8

File tree

1 file changed

+13
-11
lines changed

1 file changed

+13
-11
lines changed

src/transform.jl

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ populate!(mpm::ModulePassManager, pmb::PassManagerBuilder) =
5353

5454
## auxiliary
5555

56-
function define_transforms(transforms)
56+
function define_transforms(transforms, available=true)
5757
for transform in transforms
5858
api_fname = Symbol(:LLVM, :Add, transform, :Pass)
5959

@@ -78,9 +78,16 @@ function define_transforms(transforms)
7878
end
7979
jl_fname = Symbol(join(lowercase.(groups), '_'), '!')
8080

81-
@eval begin
82-
export $jl_fname
83-
$jl_fname(pm::PassManager) = API.$api_fname(pm)
81+
if available
82+
@eval begin
83+
export $jl_fname
84+
$jl_fname(pm::PassManager) = API.$api_fname(pm)
85+
end
86+
else
87+
@eval begin
88+
export $jl_fname
89+
$jl_fname(pm::PassManager) = nothing
90+
end
8491
end
8592
end
8693

@@ -101,20 +108,15 @@ define_transforms([
101108
:LowerExpectIntrinsic, :TypeBasedAliasAnalysis, :ScopedNoAliasAA, :BasicAliasAnalysis
102109
])
103110

104-
export scalar_repl_aggregates!, scalar_repl_aggregates_ssa!, dce!
111+
export scalar_repl_aggregates!, scalar_repl_aggregates_ssa!
105112

106113
scalar_repl_aggregates!(pm::PassManager, threshold::Integer) =
107114
API.LLVMAddScalarReplAggregatesPassWithThreshold(pm, Cint(threshold))
108115

109116
scalar_repl_aggregates_ssa!(pm::PassManager) =
110117
API.LLVMAddScalarReplAggregatesPassSSA(pm)
111118

112-
if version() >= v"10.0"
113-
dce!(pm::PassManager) =
114-
API.LLVMAddDCEPass(pm)
115-
else
116-
dce!(pm::PassManager) = nothing
117-
end
119+
define_transforms([:DCE], version() >= v"10.0")
118120

119121
## vectorization transformations
120122

0 commit comments

Comments
 (0)