@@ -53,7 +53,7 @@ populate!(mpm::ModulePassManager, pmb::PassManagerBuilder) =
53
53
54
54
# # auxiliary
55
55
56
- function define_transforms (transforms)
56
+ function define_transforms (transforms, available = true )
57
57
for transform in transforms
58
58
api_fname = Symbol (:LLVM , :Add , transform, :Pass )
59
59
@@ -78,9 +78,16 @@ function define_transforms(transforms)
78
78
end
79
79
jl_fname = Symbol (join (lowercase .(groups), ' _' ), ' !' )
80
80
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
84
91
end
85
92
end
86
93
@@ -101,20 +108,15 @@ define_transforms([
101
108
:LowerExpectIntrinsic , :TypeBasedAliasAnalysis , :ScopedNoAliasAA , :BasicAliasAnalysis
102
109
])
103
110
104
- export scalar_repl_aggregates!, scalar_repl_aggregates_ssa!, dce!
111
+ export scalar_repl_aggregates!, scalar_repl_aggregates_ssa!
105
112
106
113
scalar_repl_aggregates! (pm:: PassManager , threshold:: Integer ) =
107
114
API. LLVMAddScalarReplAggregatesPassWithThreshold (pm, Cint (threshold))
108
115
109
116
scalar_repl_aggregates_ssa! (pm:: PassManager ) =
110
117
API. LLVMAddScalarReplAggregatesPassSSA (pm)
111
118
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" )
118
120
119
121
# # vectorization transformations
120
122
0 commit comments