ruby-llvm 16.0.1 → 18.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/ext/ruby-llvm-support/support.cpp +10 -0
- data/lib/llvm/analysis_ffi.rb +1 -1
- data/lib/llvm/config.rb +5 -5
- data/lib/llvm/core/attribute.rb +41 -6
- data/lib/llvm/core/bitcode_ffi.rb +1 -1
- data/lib/llvm/core/builder.rb +8 -8
- data/lib/llvm/core/module.rb +4 -0
- data/lib/llvm/core/pass_manager.rb +2 -3
- data/lib/llvm/core/type.rb +4 -0
- data/lib/llvm/core/value.rb +110 -25
- data/lib/llvm/core.rb +7 -0
- data/lib/llvm/core_ffi.rb +1 -146
- data/lib/llvm/execution_engine_ffi.rb +1 -1
- data/lib/llvm/linker_ffi.rb +1 -1
- data/lib/llvm/lljit.rb +106 -0
- data/lib/llvm/support.rb +1 -0
- data/lib/llvm/target.rb +1 -1
- data/lib/llvm/target_ffi.rb +1 -1
- data/lib/llvm/transforms/ipo.rb +17 -23
- data/lib/llvm/transforms/pass_builder.rb +712 -0
- data/lib/llvm/transforms/{builder.rb → pass_manager_builder.rb} +10 -29
- data/lib/llvm/transforms/scalar.rb +45 -55
- data/lib/llvm/transforms/utils.rb +3 -7
- data/lib/llvm/transforms/vectorize.rb +3 -5
- data/lib/llvm/version.rb +3 -3
- data/lib/llvm.rb +2 -0
- metadata +5 -7
- data/lib/llvm/transforms/builder_ffi.rb +0 -106
- data/lib/llvm/transforms/ipo_ffi.rb +0 -111
- data/lib/llvm/transforms/scalar_ffi.rb +0 -320
- data/lib/llvm/transforms/vectorize_ffi.rb +0 -38
data/lib/llvm/core_ffi.rb
CHANGED
@@ -4,7 +4,7 @@ require 'ffi'
|
|
4
4
|
|
5
5
|
module LLVM::C
|
6
6
|
extend FFI::Library
|
7
|
-
ffi_lib ["libLLVM-
|
7
|
+
ffi_lib ["libLLVM-18.so.1", "libLLVM.so.18", "LLVM-18"]
|
8
8
|
|
9
9
|
def self.attach_function(name, *_)
|
10
10
|
begin; super; rescue FFI::NotFoundError => e
|
@@ -3049,24 +3049,6 @@ module LLVM::C
|
|
3049
3049
|
# @scope class
|
3050
3050
|
attach_function :const_nuw_mul, :LLVMConstNUWMul, [:pointer, :pointer], :pointer
|
3051
3051
|
|
3052
|
-
# (Not documented)
|
3053
|
-
#
|
3054
|
-
# @method const_and(lhs_constant, rhs_constant)
|
3055
|
-
# @param [FFI::Pointer(ValueRef)] lhs_constant
|
3056
|
-
# @param [FFI::Pointer(ValueRef)] rhs_constant
|
3057
|
-
# @return [FFI::Pointer(ValueRef)]
|
3058
|
-
# @scope class
|
3059
|
-
attach_function :const_and, :LLVMConstAnd, [:pointer, :pointer], :pointer
|
3060
|
-
|
3061
|
-
# (Not documented)
|
3062
|
-
#
|
3063
|
-
# @method const_or(lhs_constant, rhs_constant)
|
3064
|
-
# @param [FFI::Pointer(ValueRef)] lhs_constant
|
3065
|
-
# @param [FFI::Pointer(ValueRef)] rhs_constant
|
3066
|
-
# @return [FFI::Pointer(ValueRef)]
|
3067
|
-
# @scope class
|
3068
|
-
attach_function :const_or, :LLVMConstOr, [:pointer, :pointer], :pointer
|
3069
|
-
|
3070
3052
|
# (Not documented)
|
3071
3053
|
#
|
3072
3054
|
# @method const_xor(lhs_constant, rhs_constant)
|
@@ -3105,24 +3087,6 @@ module LLVM::C
|
|
3105
3087
|
# @scope class
|
3106
3088
|
attach_function :const_shl, :LLVMConstShl, [:pointer, :pointer], :pointer
|
3107
3089
|
|
3108
|
-
# (Not documented)
|
3109
|
-
#
|
3110
|
-
# @method const_l_shr(lhs_constant, rhs_constant)
|
3111
|
-
# @param [FFI::Pointer(ValueRef)] lhs_constant
|
3112
|
-
# @param [FFI::Pointer(ValueRef)] rhs_constant
|
3113
|
-
# @return [FFI::Pointer(ValueRef)]
|
3114
|
-
# @scope class
|
3115
|
-
attach_function :const_l_shr, :LLVMConstLShr, [:pointer, :pointer], :pointer
|
3116
|
-
|
3117
|
-
# (Not documented)
|
3118
|
-
#
|
3119
|
-
# @method const_a_shr(lhs_constant, rhs_constant)
|
3120
|
-
# @param [FFI::Pointer(ValueRef)] lhs_constant
|
3121
|
-
# @param [FFI::Pointer(ValueRef)] rhs_constant
|
3122
|
-
# @return [FFI::Pointer(ValueRef)]
|
3123
|
-
# @scope class
|
3124
|
-
attach_function :const_a_shr, :LLVMConstAShr, [:pointer, :pointer], :pointer
|
3125
|
-
|
3126
3090
|
# (Not documented)
|
3127
3091
|
#
|
3128
3092
|
# @method const_gep(constant_val, constant_indices, num_indices)
|
@@ -3152,78 +3116,6 @@ module LLVM::C
|
|
3152
3116
|
# @scope class
|
3153
3117
|
attach_function :const_trunc, :LLVMConstTrunc, [:pointer, :pointer], :pointer
|
3154
3118
|
|
3155
|
-
# (Not documented)
|
3156
|
-
#
|
3157
|
-
# @method const_s_ext(constant_val, to_type)
|
3158
|
-
# @param [FFI::Pointer(ValueRef)] constant_val
|
3159
|
-
# @param [FFI::Pointer(TypeRef)] to_type
|
3160
|
-
# @return [FFI::Pointer(ValueRef)]
|
3161
|
-
# @scope class
|
3162
|
-
attach_function :const_s_ext, :LLVMConstSExt, [:pointer, :pointer], :pointer
|
3163
|
-
|
3164
|
-
# (Not documented)
|
3165
|
-
#
|
3166
|
-
# @method const_z_ext(constant_val, to_type)
|
3167
|
-
# @param [FFI::Pointer(ValueRef)] constant_val
|
3168
|
-
# @param [FFI::Pointer(TypeRef)] to_type
|
3169
|
-
# @return [FFI::Pointer(ValueRef)]
|
3170
|
-
# @scope class
|
3171
|
-
attach_function :const_z_ext, :LLVMConstZExt, [:pointer, :pointer], :pointer
|
3172
|
-
|
3173
|
-
# (Not documented)
|
3174
|
-
#
|
3175
|
-
# @method const_fp_trunc(constant_val, to_type)
|
3176
|
-
# @param [FFI::Pointer(ValueRef)] constant_val
|
3177
|
-
# @param [FFI::Pointer(TypeRef)] to_type
|
3178
|
-
# @return [FFI::Pointer(ValueRef)]
|
3179
|
-
# @scope class
|
3180
|
-
attach_function :const_fp_trunc, :LLVMConstFPTrunc, [:pointer, :pointer], :pointer
|
3181
|
-
|
3182
|
-
# (Not documented)
|
3183
|
-
#
|
3184
|
-
# @method const_fp_ext(constant_val, to_type)
|
3185
|
-
# @param [FFI::Pointer(ValueRef)] constant_val
|
3186
|
-
# @param [FFI::Pointer(TypeRef)] to_type
|
3187
|
-
# @return [FFI::Pointer(ValueRef)]
|
3188
|
-
# @scope class
|
3189
|
-
attach_function :const_fp_ext, :LLVMConstFPExt, [:pointer, :pointer], :pointer
|
3190
|
-
|
3191
|
-
# (Not documented)
|
3192
|
-
#
|
3193
|
-
# @method const_ui_to_fp(constant_val, to_type)
|
3194
|
-
# @param [FFI::Pointer(ValueRef)] constant_val
|
3195
|
-
# @param [FFI::Pointer(TypeRef)] to_type
|
3196
|
-
# @return [FFI::Pointer(ValueRef)]
|
3197
|
-
# @scope class
|
3198
|
-
attach_function :const_ui_to_fp, :LLVMConstUIToFP, [:pointer, :pointer], :pointer
|
3199
|
-
|
3200
|
-
# (Not documented)
|
3201
|
-
#
|
3202
|
-
# @method const_si_to_fp(constant_val, to_type)
|
3203
|
-
# @param [FFI::Pointer(ValueRef)] constant_val
|
3204
|
-
# @param [FFI::Pointer(TypeRef)] to_type
|
3205
|
-
# @return [FFI::Pointer(ValueRef)]
|
3206
|
-
# @scope class
|
3207
|
-
attach_function :const_si_to_fp, :LLVMConstSIToFP, [:pointer, :pointer], :pointer
|
3208
|
-
|
3209
|
-
# (Not documented)
|
3210
|
-
#
|
3211
|
-
# @method const_fp_to_ui(constant_val, to_type)
|
3212
|
-
# @param [FFI::Pointer(ValueRef)] constant_val
|
3213
|
-
# @param [FFI::Pointer(TypeRef)] to_type
|
3214
|
-
# @return [FFI::Pointer(ValueRef)]
|
3215
|
-
# @scope class
|
3216
|
-
attach_function :const_fp_to_ui, :LLVMConstFPToUI, [:pointer, :pointer], :pointer
|
3217
|
-
|
3218
|
-
# (Not documented)
|
3219
|
-
#
|
3220
|
-
# @method const_fp_to_si(constant_val, to_type)
|
3221
|
-
# @param [FFI::Pointer(ValueRef)] constant_val
|
3222
|
-
# @param [FFI::Pointer(TypeRef)] to_type
|
3223
|
-
# @return [FFI::Pointer(ValueRef)]
|
3224
|
-
# @scope class
|
3225
|
-
attach_function :const_fp_to_si, :LLVMConstFPToSI, [:pointer, :pointer], :pointer
|
3226
|
-
|
3227
3119
|
# (Not documented)
|
3228
3120
|
#
|
3229
3121
|
# @method const_ptr_to_int(constant_val, to_type)
|
@@ -3260,24 +3152,6 @@ module LLVM::C
|
|
3260
3152
|
# @scope class
|
3261
3153
|
attach_function :const_addr_space_cast, :LLVMConstAddrSpaceCast, [:pointer, :pointer], :pointer
|
3262
3154
|
|
3263
|
-
# (Not documented)
|
3264
|
-
#
|
3265
|
-
# @method const_z_ext_or_bit_cast(constant_val, to_type)
|
3266
|
-
# @param [FFI::Pointer(ValueRef)] constant_val
|
3267
|
-
# @param [FFI::Pointer(TypeRef)] to_type
|
3268
|
-
# @return [FFI::Pointer(ValueRef)]
|
3269
|
-
# @scope class
|
3270
|
-
attach_function :const_z_ext_or_bit_cast, :LLVMConstZExtOrBitCast, [:pointer, :pointer], :pointer
|
3271
|
-
|
3272
|
-
# (Not documented)
|
3273
|
-
#
|
3274
|
-
# @method const_s_ext_or_bit_cast(constant_val, to_type)
|
3275
|
-
# @param [FFI::Pointer(ValueRef)] constant_val
|
3276
|
-
# @param [FFI::Pointer(TypeRef)] to_type
|
3277
|
-
# @return [FFI::Pointer(ValueRef)]
|
3278
|
-
# @scope class
|
3279
|
-
attach_function :const_s_ext_or_bit_cast, :LLVMConstSExtOrBitCast, [:pointer, :pointer], :pointer
|
3280
|
-
|
3281
3155
|
# (Not documented)
|
3282
3156
|
#
|
3283
3157
|
# @method const_trunc_or_bit_cast(constant_val, to_type)
|
@@ -3296,25 +3170,6 @@ module LLVM::C
|
|
3296
3170
|
# @scope class
|
3297
3171
|
attach_function :const_pointer_cast, :LLVMConstPointerCast, [:pointer, :pointer], :pointer
|
3298
3172
|
|
3299
|
-
# (Not documented)
|
3300
|
-
#
|
3301
|
-
# @method const_int_cast(constant_val, to_type, is_signed)
|
3302
|
-
# @param [FFI::Pointer(ValueRef)] constant_val
|
3303
|
-
# @param [FFI::Pointer(TypeRef)] to_type
|
3304
|
-
# @param [Integer] is_signed
|
3305
|
-
# @return [FFI::Pointer(ValueRef)]
|
3306
|
-
# @scope class
|
3307
|
-
attach_function :const_int_cast, :LLVMConstIntCast, [:pointer, :pointer, :int], :pointer
|
3308
|
-
|
3309
|
-
# (Not documented)
|
3310
|
-
#
|
3311
|
-
# @method const_fp_cast(constant_val, to_type)
|
3312
|
-
# @param [FFI::Pointer(ValueRef)] constant_val
|
3313
|
-
# @param [FFI::Pointer(TypeRef)] to_type
|
3314
|
-
# @return [FFI::Pointer(ValueRef)]
|
3315
|
-
# @scope class
|
3316
|
-
attach_function :const_fp_cast, :LLVMConstFPCast, [:pointer, :pointer], :pointer
|
3317
|
-
|
3318
3173
|
# (Not documented)
|
3319
3174
|
#
|
3320
3175
|
# @method const_select(constant_condition, constant_if_true, constant_if_false)
|
data/lib/llvm/linker_ffi.rb
CHANGED
data/lib/llvm/lljit.rb
ADDED
@@ -0,0 +1,106 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'llvm/core'
|
4
|
+
|
5
|
+
module LLVM
|
6
|
+
# wrapper around LLVMOrcLLJITRef
|
7
|
+
class LLJit
|
8
|
+
|
9
|
+
# create lljit
|
10
|
+
# does not automatically dispose of lljit
|
11
|
+
# if lljit was disposed, that would dispose of builder
|
12
|
+
def initialize
|
13
|
+
builder = C.create_lljit_builder
|
14
|
+
FFI::MemoryPointer.new(FFI.type_size(:pointer)) do |ptr|
|
15
|
+
error = C.create_lljit(ptr, builder)
|
16
|
+
if error.null?
|
17
|
+
@ptr = ptr.read_pointer
|
18
|
+
else
|
19
|
+
message = C.get_error_message(error)
|
20
|
+
raise message
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def triple_string
|
26
|
+
C.get_triple_string(ptr)
|
27
|
+
end
|
28
|
+
|
29
|
+
def data_layout
|
30
|
+
C.get_data_layout_str(ptr)
|
31
|
+
end
|
32
|
+
|
33
|
+
def global_prefix
|
34
|
+
gp = C.get_global_prefix(ptr)
|
35
|
+
gp.zero? ? "" : gp.chr
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
attr_reader :ptr
|
41
|
+
|
42
|
+
# currently returners pointer
|
43
|
+
def main_jit_dylib
|
44
|
+
C.main_jit_dylib(ptr)
|
45
|
+
end
|
46
|
+
|
47
|
+
module C
|
48
|
+
extend FFI::Library
|
49
|
+
ffi_lib_flags(:lazy, :global)
|
50
|
+
ffi_lib ["libLLVM-18.so.1", "libLLVM.so.18", "LLVM-18"]
|
51
|
+
|
52
|
+
attach_function :create_lljit_builder, :LLVMOrcCreateLLJITBuilder, [], :pointer
|
53
|
+
attach_function :dispose_lljit_builder, :LLVMOrcDisposeLLJITBuilder, [:pointer], :void
|
54
|
+
|
55
|
+
# LLVMErrorRef LLVMOrcCreateLLJIT(LLVMOrcLLJITRef *Result, LLVMOrcLLJITBuilderRef Builder);
|
56
|
+
attach_function :create_lljit, :LLVMOrcCreateLLJIT, [:pointer, :pointer], :pointer
|
57
|
+
|
58
|
+
# LLVMErrorRef LLVMOrcDisposeLLJIT(LLVMOrcLLJITRef J);
|
59
|
+
attach_function :dispose_lljit, :LLVMOrcDisposeLLJIT, [:pointer], :pointer
|
60
|
+
|
61
|
+
# const char *LLVMOrcLLJITGetTripleString(LLVMOrcLLJITRef J);
|
62
|
+
attach_function :get_triple_string, :LLVMOrcLLJITGetTripleString, [:pointer], :string
|
63
|
+
|
64
|
+
# const char *LLVMOrcLLJITGetDataLayoutStr(LLVMOrcLLJITRef J);
|
65
|
+
attach_function :get_data_layout_str, :LLVMOrcLLJITGetDataLayoutStr, [:pointer], :string
|
66
|
+
|
67
|
+
# char LLVMOrcLLJITGetGlobalPrefix(LLVMOrcLLJITRef J);
|
68
|
+
attach_function :get_global_prefix, :LLVMOrcLLJITGetGlobalPrefix, [:pointer], :char
|
69
|
+
|
70
|
+
# LLVMOrcJITDylibRef LLVMOrcLLJITGetMainJITDylib(LLVMOrcLLJITRef J);
|
71
|
+
attach_function :get_main_jit_dylib, :LLVMOrcLLJITGetMainJITDylib, [:pointer], :pointer
|
72
|
+
|
73
|
+
# LLVMOrcResourceTrackerRef
|
74
|
+
# LLVMOrcJITDylibCreateResourceTracker(LLVMOrcJITDylibRef JD);
|
75
|
+
attach_function :dylib_create_resource_tracker, :LLVMOrcJITDylibCreateResourceTracker,
|
76
|
+
[:pointer], :pointer
|
77
|
+
|
78
|
+
# LLVMOrcThreadSafeContextRef LLVMOrcCreateNewThreadSafeContext(void);
|
79
|
+
attach_function :create_new_thread_safe_context, :LLVMOrcCreateNewThreadSafeContext,
|
80
|
+
[], :pointer
|
81
|
+
|
82
|
+
# LLVMOrcThreadSafeModuleRef
|
83
|
+
# LLVMOrcCreateNewThreadSafeModule(LLVMModuleRef M,
|
84
|
+
# LLVMOrcThreadSafeContextRef TSCtx);
|
85
|
+
attach_function :create_new_thread_safe_module, :LLVMOrcCreateNewThreadSafeContext,
|
86
|
+
[:pointer, :pointer], :pointer
|
87
|
+
|
88
|
+
# LLVMErrorRef LLVMOrcLLJITAddLLVMIRModule(LLVMOrcLLJITRef J,
|
89
|
+
# LLVMOrcJITDylibRef JD,
|
90
|
+
# LLVMOrcThreadSafeModuleRef TSM);
|
91
|
+
attach_function :add_llvm_ir_module, :LLVMOrcLLJITAddLLVMIRModule,
|
92
|
+
[:pointer, :pointer, :pointer], :pointer
|
93
|
+
|
94
|
+
# LLVMErrorRef LLVMOrcLLJITAddLLVMIRModuleWithRT(LLVMOrcLLJITRef J,
|
95
|
+
# LLVMOrcResourceTrackerRef JD,
|
96
|
+
# LLVMOrcThreadSafeModuleRef TSM);
|
97
|
+
attach_function :add_llvm_ir_module_with_rt, :LLVMOrcLLJITAddLLVMIRModuleWithRT,
|
98
|
+
[:pointer, :pointer, :pointer], :pointer
|
99
|
+
|
100
|
+
# TODO: extract and combine with PassBuilder
|
101
|
+
attach_function(:get_error_message, :LLVMGetErrorMessage, [:pointer], :string)
|
102
|
+
|
103
|
+
attach_function(:dispose_error_message, :LLVMDisposeErrorMessage, [:string], :void)
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
data/lib/llvm/support.rb
CHANGED
@@ -29,6 +29,7 @@ module LLVM
|
|
29
29
|
:LLVMInitializeNativeAsmPrinter, [], :void
|
30
30
|
|
31
31
|
attach_function :get_enum_attribute_name_for_kind, :LLVMGetEnumAttributeNameForKind, [:uint], :string
|
32
|
+
attach_function :get_attribute_as_string, :LLVMGetAttributeAsString, [:pointer], :string
|
32
33
|
end
|
33
34
|
end
|
34
35
|
|
data/lib/llvm/target.rb
CHANGED
data/lib/llvm/target_ffi.rb
CHANGED
data/lib/llvm/transforms/ipo.rb
CHANGED
@@ -3,122 +3,116 @@
|
|
3
3
|
# Interprocedural optimization (IPO)
|
4
4
|
require 'llvm'
|
5
5
|
require 'llvm/core'
|
6
|
-
require 'llvm/transforms/ipo_ffi'
|
7
6
|
|
8
7
|
module LLVM
|
9
8
|
class PassManager
|
10
9
|
# @LLVMpass arg_promotion
|
11
10
|
def arg_promote!
|
12
|
-
|
11
|
+
raise DeprecationError
|
13
12
|
end
|
14
13
|
|
15
14
|
# @LLVMpass const_merge
|
16
15
|
# /** See llvm::createConstantMergePass function. */
|
17
16
|
# void LLVMAddConstantMergePass(LLVMPassManagerRef PM);
|
18
17
|
def const_merge!
|
19
|
-
|
18
|
+
raise DeprecationError
|
20
19
|
end
|
21
20
|
|
22
21
|
# @LLVMpass mergefunc
|
23
22
|
# /** See llvm::createMergeFunctionsPass function. */
|
24
23
|
# void LLVMAddMergeFunctionsPass(LLVMPassManagerRef PM);
|
25
24
|
def mergefunc!
|
26
|
-
|
25
|
+
raise DeprecationError
|
27
26
|
end
|
28
27
|
|
29
28
|
# @LLVMpass called-value-propagation
|
30
29
|
# /** See llvm::createCalledValuePropagationPass function. */
|
31
30
|
# void LLVMAddCalledValuePropagationPass(LLVMPassManagerRef PM);
|
32
31
|
def called_value_propagation!
|
33
|
-
|
32
|
+
raise DeprecationError
|
34
33
|
end
|
35
34
|
|
36
35
|
# @LLVMpass dae
|
37
36
|
# /** See llvm::createDeadArgEliminationPass function. */
|
38
37
|
# void LLVMAddDeadArgEliminationPass(LLVMPassManagerRef PM);
|
39
38
|
def dae!
|
40
|
-
|
39
|
+
raise DeprecationError
|
41
40
|
end
|
42
41
|
|
43
42
|
# @LLVMpass function_attrs
|
44
43
|
# /** See llvm::createFunctionAttrsPass function. */
|
45
44
|
# void LLVMAddFunctionAttrsPass(LLVMPassManagerRef PM);
|
46
45
|
def fun_attrs!
|
47
|
-
|
46
|
+
raise DeprecationError
|
48
47
|
end
|
49
48
|
|
50
49
|
# @LLVMpass inline
|
51
50
|
# /** See llvm::createFunctionInliningPass function. */
|
52
51
|
# void LLVMAddFunctionInliningPass(LLVMPassManagerRef PM);
|
53
52
|
def inline!
|
54
|
-
|
53
|
+
raise DeprecationError
|
55
54
|
end
|
56
55
|
|
57
56
|
# @LLVMpass always_inline
|
58
57
|
# /** See llvm::createAlwaysInlinerPass function. */
|
59
58
|
# void LLVMAddAlwaysInlinerPass(LLVMPassManagerRef PM);
|
60
59
|
def always_inline!
|
61
|
-
|
60
|
+
raise DeprecationError
|
62
61
|
end
|
63
62
|
|
64
63
|
# @LLVMpass gdce
|
65
64
|
# /** See llvm::createGlobalDCEPass function. */
|
66
65
|
# void LLVMAddGlobalDCEPass(LLVMPassManagerRef PM);
|
67
66
|
def gdce!
|
68
|
-
|
67
|
+
raise DeprecationError
|
69
68
|
end
|
70
69
|
|
71
70
|
# @LLVMpass global_opt
|
72
71
|
# /** See llvm::createGlobalOptimizerPass function. */
|
73
72
|
# void LLVMAddGlobalOptimizerPass(LLVMPassManagerRef PM);
|
74
73
|
def global_opt!
|
75
|
-
|
74
|
+
raise DeprecationError
|
76
75
|
end
|
77
76
|
|
78
77
|
# @LLVMpass ipcp
|
79
78
|
def ipcp!
|
80
|
-
|
79
|
+
raise DeprecationError
|
81
80
|
end
|
82
81
|
|
83
82
|
# @LLVMpass prune_eh
|
84
83
|
# /** See llvm::createPruneEHPass function. */
|
85
84
|
# void LLVMAddPruneEHPass(LLVMPassManagerRef PM);
|
86
85
|
def prune_eh!
|
87
|
-
|
86
|
+
raise DeprecationError
|
88
87
|
end
|
89
88
|
|
90
89
|
# @LLVMpass ipsccp
|
91
90
|
# /** See llvm::createIPSCCPPass function. */
|
92
91
|
# void LLVMAddIPSCCPPass(LLVMPassManagerRef PM);
|
93
92
|
def ipsccp!
|
94
|
-
|
93
|
+
raise DeprecationError
|
95
94
|
end
|
96
95
|
|
97
96
|
# @LLVMpass internalize
|
98
97
|
# /** See llvm::createInternalizePass function. */
|
99
98
|
# void LLVMAddInternalizePass(LLVMPassManagerRef, unsigned AllButMain);
|
100
|
-
def internalize!(
|
101
|
-
|
99
|
+
def internalize!(_all_but_main = true)
|
100
|
+
raise DeprecationError
|
102
101
|
end
|
103
102
|
|
104
103
|
# @LLVMpass sdp
|
105
104
|
# /** See llvm::createStripDeadPrototypesPass function. */
|
106
105
|
# void LLVMAddStripDeadPrototypesPass(LLVMPassManagerRef PM);
|
107
106
|
def sdp!
|
108
|
-
|
107
|
+
raise DeprecationError
|
109
108
|
end
|
110
109
|
|
111
110
|
# @LLVMpass strip
|
112
111
|
# /** See llvm::createStripSymbolsPass function. */
|
113
112
|
# void LLVMAddStripSymbolsPass(LLVMPassManagerRef PM);
|
114
113
|
def strip!
|
115
|
-
|
114
|
+
raise DeprecationError
|
116
115
|
end
|
117
116
|
|
118
117
|
end
|
119
|
-
|
120
|
-
module C
|
121
|
-
attach_function :add_merge_functions_pass, :LLVMAddMergeFunctionsPass, [:pointer], :void
|
122
|
-
attach_function :add_called_value_propagation_pass, :LLVMAddCalledValuePropagationPass, [:pointer], :void
|
123
|
-
end
|
124
118
|
end
|