ruby-llvm 3.5.0 → 13.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/README.md +21 -4
- data/ext/ruby-llvm-support/Rakefile +17 -6
- data/lib/llvm/analysis.rb +2 -0
- data/lib/llvm/analysis_ffi.rb +27 -28
- data/lib/llvm/config.rb +4 -4
- data/lib/llvm/core/bitcode.rb +12 -10
- data/lib/llvm/core/bitcode_ffi.rb +89 -65
- data/lib/llvm/core/builder.rb +4 -3
- data/lib/llvm/core/context.rb +3 -1
- data/lib/llvm/core/module.rb +2 -0
- data/lib/llvm/core/pass_manager.rb +6 -2
- data/lib/llvm/core/type.rb +9 -2
- data/lib/llvm/core/value.rb +154 -24
- data/lib/llvm/core.rb +47 -2
- data/lib/llvm/core_ffi.rb +3863 -3730
- data/lib/llvm/execution_engine.rb +39 -35
- data/lib/llvm/execution_engine_ffi.rb +238 -276
- data/lib/llvm/linker.rb +3 -14
- data/lib/llvm/linker_ffi.rb +22 -26
- data/lib/llvm/support.rb +2 -0
- data/lib/llvm/target.rb +11 -15
- data/lib/llvm/target_ffi.rb +301 -293
- data/lib/llvm/transforms/builder.rb +3 -1
- data/lib/llvm/transforms/builder_ffi.rb +57 -58
- data/lib/llvm/transforms/ipo.rb +3 -1
- data/lib/llvm/transforms/ipo_ffi.rb +59 -60
- data/lib/llvm/transforms/scalar.rb +12 -0
- data/lib/llvm/transforms/scalar_ffi.rb +199 -143
- data/lib/llvm/transforms/vectorize.rb +2 -0
- data/lib/llvm/transforms/vectorize_ffi.rb +15 -16
- data/lib/llvm/version.rb +5 -2
- data/lib/llvm.rb +2 -0
- data/test/array_test.rb +2 -0
- data/test/basic_block_test.rb +2 -1
- data/test/binary_operations_test.rb +2 -0
- data/test/bitcode_test.rb +3 -2
- data/test/branch_test.rb +2 -0
- data/test/call_test.rb +3 -1
- data/test/comparisons_test.rb +2 -0
- data/test/conversions_test.rb +2 -0
- data/test/double_test.rb +10 -7
- data/test/equality_test.rb +4 -4
- data/test/function_test.rb +29 -0
- data/test/generic_value_test.rb +3 -1
- data/test/instruction_test.rb +2 -2
- data/test/integer_test.rb +28 -0
- data/test/ipo_test.rb +3 -1
- data/test/linker_test.rb +2 -9
- data/test/mcjit_test.rb +11 -3
- data/test/memory_access_test.rb +2 -0
- data/test/module_test.rb +18 -1
- data/test/parameter_collection_test.rb +2 -0
- data/test/pass_manager_builder_test.rb +22 -2
- data/test/phi_test.rb +2 -0
- data/test/select_test.rb +2 -0
- data/test/struct_test.rb +2 -0
- data/test/target_test.rb +16 -20
- data/test/test_helper.rb +6 -1
- data/test/type_test.rb +47 -0
- data/test/vector_test.rb +2 -0
- metadata +105 -40
data/lib/llvm/target_ffi.rb
CHANGED
@@ -4,24 +4,24 @@ require 'ffi'
|
|
4
4
|
|
5
5
|
module LLVM::C
|
6
6
|
extend FFI::Library
|
7
|
-
ffi_lib ["libLLVM-
|
8
|
-
|
7
|
+
ffi_lib ["libLLVM-13.so.1", "libLLVM.so.13", "LLVM-13"]
|
8
|
+
|
9
9
|
def self.attach_function(name, *_)
|
10
10
|
begin; super; rescue FFI::NotFoundError => e
|
11
11
|
(class << self; self; end).class_eval { define_method(name) { |*_| raise e } }
|
12
12
|
end
|
13
13
|
end
|
14
|
-
|
14
|
+
|
15
15
|
# (Not documented)
|
16
|
-
#
|
16
|
+
#
|
17
17
|
# <em>This entry is only for documentation and no real method. The FFI::Enum can be accessed via #enum_type(:byte_ordering).</em>
|
18
|
-
#
|
18
|
+
#
|
19
19
|
# === Options:
|
20
20
|
# :big_endian ::
|
21
|
-
#
|
21
|
+
#
|
22
22
|
# :little_endian ::
|
23
|
-
#
|
24
|
-
#
|
23
|
+
#
|
24
|
+
#
|
25
25
|
# @method _enum_byte_ordering_
|
26
26
|
# @return [Symbol]
|
27
27
|
# @scope class
|
@@ -29,315 +29,323 @@ module LLVM::C
|
|
29
29
|
:big_endian, 0,
|
30
30
|
:little_endian, 1
|
31
31
|
]
|
32
|
-
|
32
|
+
|
33
33
|
# (Not documented)
|
34
34
|
class OpaqueTargetData < FFI::Struct
|
35
35
|
layout :dummy, :char
|
36
36
|
end
|
37
|
-
|
37
|
+
|
38
38
|
# (Not documented)
|
39
39
|
class OpaqueTargetLibraryInfotData < FFI::Struct
|
40
40
|
layout :dummy, :char
|
41
41
|
end
|
42
|
-
|
42
|
+
|
43
43
|
# (Not documented)
|
44
|
-
#
|
44
|
+
#
|
45
45
|
# @method initialize_all_target_infos()
|
46
|
-
# @return [nil]
|
46
|
+
# @return [nil]
|
47
47
|
# @scope class
|
48
48
|
attach_function :initialize_all_target_infos, :LLVMInitializeAllTargetInfos, [], :void
|
49
|
-
|
49
|
+
|
50
50
|
# (Not documented)
|
51
|
-
#
|
51
|
+
#
|
52
52
|
# @method initialize_all_targets()
|
53
|
-
# @return [nil]
|
53
|
+
# @return [nil]
|
54
54
|
# @scope class
|
55
55
|
attach_function :initialize_all_targets, :LLVMInitializeAllTargets, [], :void
|
56
|
-
|
56
|
+
|
57
57
|
# (Not documented)
|
58
|
-
#
|
58
|
+
#
|
59
59
|
# @method initialize_all_target_m_cs()
|
60
|
-
# @return [nil]
|
60
|
+
# @return [nil]
|
61
61
|
# @scope class
|
62
62
|
attach_function :initialize_all_target_m_cs, :LLVMInitializeAllTargetMCs, [], :void
|
63
|
-
|
63
|
+
|
64
64
|
# (Not documented)
|
65
|
-
#
|
65
|
+
#
|
66
66
|
# @method initialize_all_asm_printers()
|
67
|
-
# @return [nil]
|
67
|
+
# @return [nil]
|
68
68
|
# @scope class
|
69
69
|
attach_function :initialize_all_asm_printers, :LLVMInitializeAllAsmPrinters, [], :void
|
70
|
-
|
70
|
+
|
71
71
|
# (Not documented)
|
72
|
-
#
|
72
|
+
#
|
73
73
|
# @method initialize_all_asm_parsers()
|
74
|
-
# @return [nil]
|
74
|
+
# @return [nil]
|
75
75
|
# @scope class
|
76
76
|
attach_function :initialize_all_asm_parsers, :LLVMInitializeAllAsmParsers, [], :void
|
77
|
-
|
77
|
+
|
78
78
|
# (Not documented)
|
79
|
-
#
|
79
|
+
#
|
80
80
|
# @method initialize_all_disassemblers()
|
81
|
-
# @return [nil]
|
81
|
+
# @return [nil]
|
82
82
|
# @scope class
|
83
83
|
attach_function :initialize_all_disassemblers, :LLVMInitializeAllDisassemblers, [], :void
|
84
|
-
|
84
|
+
|
85
85
|
# (Not documented)
|
86
|
-
#
|
86
|
+
#
|
87
87
|
# @method initialize_native_target()
|
88
|
-
# @return [Integer]
|
88
|
+
# @return [Integer]
|
89
89
|
# @scope class
|
90
90
|
attach_function :initialize_native_target, :LLVMInitializeNativeTarget, [], :int
|
91
|
-
|
91
|
+
|
92
92
|
# (Not documented)
|
93
|
-
#
|
93
|
+
#
|
94
94
|
# @method initialize_native_asm_parser()
|
95
|
-
# @return [Integer]
|
95
|
+
# @return [Integer]
|
96
96
|
# @scope class
|
97
97
|
attach_function :initialize_native_asm_parser, :LLVMInitializeNativeAsmParser, [], :int
|
98
|
-
|
98
|
+
|
99
99
|
# (Not documented)
|
100
|
-
#
|
100
|
+
#
|
101
101
|
# @method initialize_native_asm_printer()
|
102
|
-
# @return [Integer]
|
102
|
+
# @return [Integer]
|
103
103
|
# @scope class
|
104
104
|
attach_function :initialize_native_asm_printer, :LLVMInitializeNativeAsmPrinter, [], :int
|
105
|
-
|
105
|
+
|
106
106
|
# (Not documented)
|
107
|
-
#
|
107
|
+
#
|
108
108
|
# @method initialize_native_disassembler()
|
109
|
-
# @return [Integer]
|
109
|
+
# @return [Integer]
|
110
110
|
# @scope class
|
111
111
|
attach_function :initialize_native_disassembler, :LLVMInitializeNativeDisassembler, [], :int
|
112
|
-
|
112
|
+
|
113
113
|
# (Not documented)
|
114
|
-
#
|
114
|
+
#
|
115
|
+
# @method get_module_data_layout(m)
|
116
|
+
# @param [FFI::Pointer(ModuleRef)] m
|
117
|
+
# @return [OpaqueTargetData]
|
118
|
+
# @scope class
|
119
|
+
attach_function :get_module_data_layout, :LLVMGetModuleDataLayout, [:pointer], OpaqueTargetData
|
120
|
+
|
121
|
+
# (Not documented)
|
122
|
+
#
|
123
|
+
# @method set_module_data_layout(m, dl)
|
124
|
+
# @param [FFI::Pointer(ModuleRef)] m
|
125
|
+
# @param [OpaqueTargetData] dl
|
126
|
+
# @return [nil]
|
127
|
+
# @scope class
|
128
|
+
attach_function :set_module_data_layout, :LLVMSetModuleDataLayout, [:pointer, OpaqueTargetData], :void
|
129
|
+
|
130
|
+
# (Not documented)
|
131
|
+
#
|
115
132
|
# @method create_target_data(string_rep)
|
116
|
-
# @param [String] string_rep
|
117
|
-
# @return [OpaqueTargetData]
|
133
|
+
# @param [String] string_rep
|
134
|
+
# @return [OpaqueTargetData]
|
118
135
|
# @scope class
|
119
136
|
attach_function :create_target_data, :LLVMCreateTargetData, [:string], OpaqueTargetData
|
120
|
-
|
137
|
+
|
121
138
|
# (Not documented)
|
122
|
-
#
|
123
|
-
# @method
|
124
|
-
# @param [OpaqueTargetData] td
|
125
|
-
# @
|
126
|
-
# @return [nil]
|
139
|
+
#
|
140
|
+
# @method dispose_target_data(td)
|
141
|
+
# @param [OpaqueTargetData] td
|
142
|
+
# @return [nil]
|
127
143
|
# @scope class
|
128
|
-
attach_function :
|
129
|
-
|
144
|
+
attach_function :dispose_target_data, :LLVMDisposeTargetData, [OpaqueTargetData], :void
|
145
|
+
|
130
146
|
# (Not documented)
|
131
|
-
#
|
147
|
+
#
|
132
148
|
# @method add_target_library_info(tli, pm)
|
133
|
-
# @param [OpaqueTargetLibraryInfotData] tli
|
134
|
-
# @param [FFI::Pointer(PassManagerRef)] pm
|
135
|
-
# @return [nil]
|
149
|
+
# @param [OpaqueTargetLibraryInfotData] tli
|
150
|
+
# @param [FFI::Pointer(PassManagerRef)] pm
|
151
|
+
# @return [nil]
|
136
152
|
# @scope class
|
137
153
|
attach_function :add_target_library_info, :LLVMAddTargetLibraryInfo, [OpaqueTargetLibraryInfotData, :pointer], :void
|
138
|
-
|
154
|
+
|
139
155
|
# (Not documented)
|
140
|
-
#
|
156
|
+
#
|
141
157
|
# @method copy_string_rep_of_target_data(td)
|
142
|
-
# @param [OpaqueTargetData] td
|
143
|
-
# @return [String]
|
158
|
+
# @param [OpaqueTargetData] td
|
159
|
+
# @return [String]
|
144
160
|
# @scope class
|
145
161
|
attach_function :copy_string_rep_of_target_data, :LLVMCopyStringRepOfTargetData, [OpaqueTargetData], :string
|
146
|
-
|
162
|
+
|
147
163
|
# (Not documented)
|
148
|
-
#
|
164
|
+
#
|
149
165
|
# @method byte_order(td)
|
150
|
-
# @param [OpaqueTargetData] td
|
151
|
-
# @return [Symbol from _enum_byte_ordering_]
|
166
|
+
# @param [OpaqueTargetData] td
|
167
|
+
# @return [Symbol from _enum_byte_ordering_]
|
152
168
|
# @scope class
|
153
169
|
attach_function :byte_order, :LLVMByteOrder, [OpaqueTargetData], :byte_ordering
|
154
|
-
|
170
|
+
|
155
171
|
# (Not documented)
|
156
|
-
#
|
172
|
+
#
|
157
173
|
# @method pointer_size(td)
|
158
|
-
# @param [OpaqueTargetData] td
|
159
|
-
# @return [Integer]
|
174
|
+
# @param [OpaqueTargetData] td
|
175
|
+
# @return [Integer]
|
160
176
|
# @scope class
|
161
177
|
attach_function :pointer_size, :LLVMPointerSize, [OpaqueTargetData], :uint
|
162
|
-
|
178
|
+
|
163
179
|
# (Not documented)
|
164
|
-
#
|
180
|
+
#
|
165
181
|
# @method pointer_size_for_as(td, as)
|
166
|
-
# @param [OpaqueTargetData] td
|
167
|
-
# @param [Integer] as
|
168
|
-
# @return [Integer]
|
182
|
+
# @param [OpaqueTargetData] td
|
183
|
+
# @param [Integer] as
|
184
|
+
# @return [Integer]
|
169
185
|
# @scope class
|
170
186
|
attach_function :pointer_size_for_as, :LLVMPointerSizeForAS, [OpaqueTargetData, :uint], :uint
|
171
|
-
|
187
|
+
|
172
188
|
# (Not documented)
|
173
|
-
#
|
189
|
+
#
|
174
190
|
# @method int_ptr_type(td)
|
175
|
-
# @param [OpaqueTargetData] td
|
176
|
-
# @return [FFI::Pointer(TypeRef)]
|
191
|
+
# @param [OpaqueTargetData] td
|
192
|
+
# @return [FFI::Pointer(TypeRef)]
|
177
193
|
# @scope class
|
178
194
|
attach_function :int_ptr_type, :LLVMIntPtrType, [OpaqueTargetData], :pointer
|
179
|
-
|
195
|
+
|
180
196
|
# (Not documented)
|
181
|
-
#
|
197
|
+
#
|
182
198
|
# @method int_ptr_type_for_as(td, as)
|
183
|
-
# @param [OpaqueTargetData] td
|
184
|
-
# @param [Integer] as
|
185
|
-
# @return [FFI::Pointer(TypeRef)]
|
199
|
+
# @param [OpaqueTargetData] td
|
200
|
+
# @param [Integer] as
|
201
|
+
# @return [FFI::Pointer(TypeRef)]
|
186
202
|
# @scope class
|
187
203
|
attach_function :int_ptr_type_for_as, :LLVMIntPtrTypeForAS, [OpaqueTargetData, :uint], :pointer
|
188
|
-
|
204
|
+
|
189
205
|
# (Not documented)
|
190
|
-
#
|
206
|
+
#
|
191
207
|
# @method int_ptr_type_in_context(c, td)
|
192
|
-
# @param [FFI::Pointer(ContextRef)] c
|
193
|
-
# @param [OpaqueTargetData] td
|
194
|
-
# @return [FFI::Pointer(TypeRef)]
|
208
|
+
# @param [FFI::Pointer(ContextRef)] c
|
209
|
+
# @param [OpaqueTargetData] td
|
210
|
+
# @return [FFI::Pointer(TypeRef)]
|
195
211
|
# @scope class
|
196
212
|
attach_function :int_ptr_type_in_context, :LLVMIntPtrTypeInContext, [:pointer, OpaqueTargetData], :pointer
|
197
|
-
|
213
|
+
|
198
214
|
# (Not documented)
|
199
|
-
#
|
215
|
+
#
|
200
216
|
# @method int_ptr_type_for_as_in_context(c, td, as)
|
201
|
-
# @param [FFI::Pointer(ContextRef)] c
|
202
|
-
# @param [OpaqueTargetData] td
|
203
|
-
# @param [Integer] as
|
204
|
-
# @return [FFI::Pointer(TypeRef)]
|
217
|
+
# @param [FFI::Pointer(ContextRef)] c
|
218
|
+
# @param [OpaqueTargetData] td
|
219
|
+
# @param [Integer] as
|
220
|
+
# @return [FFI::Pointer(TypeRef)]
|
205
221
|
# @scope class
|
206
222
|
attach_function :int_ptr_type_for_as_in_context, :LLVMIntPtrTypeForASInContext, [:pointer, OpaqueTargetData, :uint], :pointer
|
207
|
-
|
223
|
+
|
208
224
|
# (Not documented)
|
209
|
-
#
|
225
|
+
#
|
210
226
|
# @method size_of_type_in_bits(td, ty)
|
211
|
-
# @param [OpaqueTargetData] td
|
212
|
-
# @param [FFI::Pointer(TypeRef)] ty
|
213
|
-
# @return [Integer]
|
227
|
+
# @param [OpaqueTargetData] td
|
228
|
+
# @param [FFI::Pointer(TypeRef)] ty
|
229
|
+
# @return [Integer]
|
214
230
|
# @scope class
|
215
231
|
attach_function :size_of_type_in_bits, :LLVMSizeOfTypeInBits, [OpaqueTargetData, :pointer], :ulong_long
|
216
|
-
|
232
|
+
|
217
233
|
# (Not documented)
|
218
|
-
#
|
234
|
+
#
|
219
235
|
# @method store_size_of_type(td, ty)
|
220
|
-
# @param [OpaqueTargetData] td
|
221
|
-
# @param [FFI::Pointer(TypeRef)] ty
|
222
|
-
# @return [Integer]
|
236
|
+
# @param [OpaqueTargetData] td
|
237
|
+
# @param [FFI::Pointer(TypeRef)] ty
|
238
|
+
# @return [Integer]
|
223
239
|
# @scope class
|
224
240
|
attach_function :store_size_of_type, :LLVMStoreSizeOfType, [OpaqueTargetData, :pointer], :ulong_long
|
225
|
-
|
241
|
+
|
226
242
|
# (Not documented)
|
227
|
-
#
|
243
|
+
#
|
228
244
|
# @method abi_size_of_type(td, ty)
|
229
|
-
# @param [OpaqueTargetData] td
|
230
|
-
# @param [FFI::Pointer(TypeRef)] ty
|
231
|
-
# @return [Integer]
|
245
|
+
# @param [OpaqueTargetData] td
|
246
|
+
# @param [FFI::Pointer(TypeRef)] ty
|
247
|
+
# @return [Integer]
|
232
248
|
# @scope class
|
233
249
|
attach_function :abi_size_of_type, :LLVMABISizeOfType, [OpaqueTargetData, :pointer], :ulong_long
|
234
|
-
|
250
|
+
|
235
251
|
# (Not documented)
|
236
|
-
#
|
252
|
+
#
|
237
253
|
# @method abi_alignment_of_type(td, ty)
|
238
|
-
# @param [OpaqueTargetData] td
|
239
|
-
# @param [FFI::Pointer(TypeRef)] ty
|
240
|
-
# @return [Integer]
|
254
|
+
# @param [OpaqueTargetData] td
|
255
|
+
# @param [FFI::Pointer(TypeRef)] ty
|
256
|
+
# @return [Integer]
|
241
257
|
# @scope class
|
242
258
|
attach_function :abi_alignment_of_type, :LLVMABIAlignmentOfType, [OpaqueTargetData, :pointer], :uint
|
243
|
-
|
259
|
+
|
244
260
|
# (Not documented)
|
245
|
-
#
|
261
|
+
#
|
246
262
|
# @method call_frame_alignment_of_type(td, ty)
|
247
|
-
# @param [OpaqueTargetData] td
|
248
|
-
# @param [FFI::Pointer(TypeRef)] ty
|
249
|
-
# @return [Integer]
|
263
|
+
# @param [OpaqueTargetData] td
|
264
|
+
# @param [FFI::Pointer(TypeRef)] ty
|
265
|
+
# @return [Integer]
|
250
266
|
# @scope class
|
251
267
|
attach_function :call_frame_alignment_of_type, :LLVMCallFrameAlignmentOfType, [OpaqueTargetData, :pointer], :uint
|
252
|
-
|
268
|
+
|
253
269
|
# (Not documented)
|
254
|
-
#
|
270
|
+
#
|
255
271
|
# @method preferred_alignment_of_type(td, ty)
|
256
|
-
# @param [OpaqueTargetData] td
|
257
|
-
# @param [FFI::Pointer(TypeRef)] ty
|
258
|
-
# @return [Integer]
|
272
|
+
# @param [OpaqueTargetData] td
|
273
|
+
# @param [FFI::Pointer(TypeRef)] ty
|
274
|
+
# @return [Integer]
|
259
275
|
# @scope class
|
260
276
|
attach_function :preferred_alignment_of_type, :LLVMPreferredAlignmentOfType, [OpaqueTargetData, :pointer], :uint
|
261
|
-
|
277
|
+
|
262
278
|
# (Not documented)
|
263
|
-
#
|
279
|
+
#
|
264
280
|
# @method preferred_alignment_of_global(td, global_var)
|
265
|
-
# @param [OpaqueTargetData] td
|
266
|
-
# @param [FFI::Pointer(ValueRef)] global_var
|
267
|
-
# @return [Integer]
|
281
|
+
# @param [OpaqueTargetData] td
|
282
|
+
# @param [FFI::Pointer(ValueRef)] global_var
|
283
|
+
# @return [Integer]
|
268
284
|
# @scope class
|
269
285
|
attach_function :preferred_alignment_of_global, :LLVMPreferredAlignmentOfGlobal, [OpaqueTargetData, :pointer], :uint
|
270
|
-
|
286
|
+
|
271
287
|
# (Not documented)
|
272
|
-
#
|
288
|
+
#
|
273
289
|
# @method element_at_offset(td, struct_ty, offset)
|
274
|
-
# @param [OpaqueTargetData] td
|
275
|
-
# @param [FFI::Pointer(TypeRef)] struct_ty
|
276
|
-
# @param [Integer] offset
|
277
|
-
# @return [Integer]
|
290
|
+
# @param [OpaqueTargetData] td
|
291
|
+
# @param [FFI::Pointer(TypeRef)] struct_ty
|
292
|
+
# @param [Integer] offset
|
293
|
+
# @return [Integer]
|
278
294
|
# @scope class
|
279
295
|
attach_function :element_at_offset, :LLVMElementAtOffset, [OpaqueTargetData, :pointer, :ulong_long], :uint
|
280
|
-
|
296
|
+
|
281
297
|
# (Not documented)
|
282
|
-
#
|
298
|
+
#
|
283
299
|
# @method offset_of_element(td, struct_ty, element)
|
284
|
-
# @param [OpaqueTargetData] td
|
285
|
-
# @param [FFI::Pointer(TypeRef)] struct_ty
|
286
|
-
# @param [Integer] element
|
287
|
-
# @return [Integer]
|
300
|
+
# @param [OpaqueTargetData] td
|
301
|
+
# @param [FFI::Pointer(TypeRef)] struct_ty
|
302
|
+
# @param [Integer] element
|
303
|
+
# @return [Integer]
|
288
304
|
# @scope class
|
289
305
|
attach_function :offset_of_element, :LLVMOffsetOfElement, [OpaqueTargetData, :pointer, :uint], :ulong_long
|
290
|
-
|
291
|
-
# (Not documented)
|
292
|
-
#
|
293
|
-
# @method dispose_target_data(td)
|
294
|
-
# @param [OpaqueTargetData] td
|
295
|
-
# @return [nil]
|
296
|
-
# @scope class
|
297
|
-
attach_function :dispose_target_data, :LLVMDisposeTargetData, [OpaqueTargetData], :void
|
298
|
-
|
306
|
+
|
299
307
|
# (Not documented)
|
300
308
|
class OpaqueTargetMachine < FFI::Struct
|
301
309
|
layout :dummy, :char
|
302
310
|
end
|
303
|
-
|
311
|
+
|
304
312
|
# (Not documented)
|
305
313
|
module TargetWrappers
|
306
|
-
# @return [Integer]
|
314
|
+
# @return [Integer]
|
307
315
|
def has_jit()
|
308
316
|
LLVM::C.target_has_jit(self)
|
309
317
|
end
|
310
|
-
|
311
|
-
# @return [Integer]
|
318
|
+
|
319
|
+
# @return [Integer]
|
312
320
|
def has_target_machine()
|
313
321
|
LLVM::C.target_has_target_machine(self)
|
314
322
|
end
|
315
|
-
|
316
|
-
# @return [Integer]
|
323
|
+
|
324
|
+
# @return [Integer]
|
317
325
|
def has_asm_backend()
|
318
326
|
LLVM::C.target_has_asm_backend(self)
|
319
327
|
end
|
320
328
|
end
|
321
|
-
|
329
|
+
|
322
330
|
class Target < FFI::Struct
|
323
331
|
include TargetWrappers
|
324
332
|
layout :dummy, :char
|
325
333
|
end
|
326
|
-
|
334
|
+
|
327
335
|
# (Not documented)
|
328
|
-
#
|
336
|
+
#
|
329
337
|
# <em>This entry is only for documentation and no real method. The FFI::Enum can be accessed via #enum_type(:code_gen_opt_level).</em>
|
330
|
-
#
|
338
|
+
#
|
331
339
|
# === Options:
|
332
340
|
# :none ::
|
333
|
-
#
|
341
|
+
#
|
334
342
|
# :less ::
|
335
|
-
#
|
343
|
+
#
|
336
344
|
# :default ::
|
337
|
-
#
|
345
|
+
#
|
338
346
|
# :aggressive ::
|
339
|
-
#
|
340
|
-
#
|
347
|
+
#
|
348
|
+
#
|
341
349
|
# @method _enum_code_gen_opt_level_
|
342
350
|
# @return [Symbol]
|
343
351
|
# @scope class
|
@@ -347,21 +355,21 @@ module LLVM::C
|
|
347
355
|
:default, 2,
|
348
356
|
:aggressive, 3
|
349
357
|
]
|
350
|
-
|
358
|
+
|
351
359
|
# (Not documented)
|
352
|
-
#
|
360
|
+
#
|
353
361
|
# <em>This entry is only for documentation and no real method. The FFI::Enum can be accessed via #enum_type(:reloc_mode).</em>
|
354
|
-
#
|
362
|
+
#
|
355
363
|
# === Options:
|
356
364
|
# :default ::
|
357
|
-
#
|
365
|
+
#
|
358
366
|
# :static ::
|
359
|
-
#
|
367
|
+
#
|
360
368
|
# :pic ::
|
361
|
-
#
|
369
|
+
#
|
362
370
|
# :dynamic_no_pic ::
|
363
|
-
#
|
364
|
-
#
|
371
|
+
#
|
372
|
+
#
|
365
373
|
# @method _enum_reloc_mode_
|
366
374
|
# @return [Symbol]
|
367
375
|
# @scope class
|
@@ -371,25 +379,25 @@ module LLVM::C
|
|
371
379
|
:pic, 2,
|
372
380
|
:dynamic_no_pic, 3
|
373
381
|
]
|
374
|
-
|
382
|
+
|
375
383
|
# (Not documented)
|
376
|
-
#
|
384
|
+
#
|
377
385
|
# <em>This entry is only for documentation and no real method. The FFI::Enum can be accessed via #enum_type(:code_model).</em>
|
378
|
-
#
|
386
|
+
#
|
379
387
|
# === Options:
|
380
388
|
# :default ::
|
381
|
-
#
|
389
|
+
#
|
382
390
|
# :jit_default ::
|
383
|
-
#
|
391
|
+
#
|
384
392
|
# :small ::
|
385
|
-
#
|
393
|
+
#
|
386
394
|
# :kernel ::
|
387
|
-
#
|
395
|
+
#
|
388
396
|
# :medium ::
|
389
|
-
#
|
397
|
+
#
|
390
398
|
# :large ::
|
391
|
-
#
|
392
|
-
#
|
399
|
+
#
|
400
|
+
#
|
393
401
|
# @method _enum_code_model_
|
394
402
|
# @return [Symbol]
|
395
403
|
# @scope class
|
@@ -401,17 +409,17 @@ module LLVM::C
|
|
401
409
|
:medium, 4,
|
402
410
|
:large, 5
|
403
411
|
]
|
404
|
-
|
412
|
+
|
405
413
|
# (Not documented)
|
406
|
-
#
|
414
|
+
#
|
407
415
|
# <em>This entry is only for documentation and no real method. The FFI::Enum can be accessed via #enum_type(:code_gen_file_type).</em>
|
408
|
-
#
|
416
|
+
#
|
409
417
|
# === Options:
|
410
418
|
# :assembly ::
|
411
|
-
#
|
419
|
+
#
|
412
420
|
# :object ::
|
413
|
-
#
|
414
|
-
#
|
421
|
+
#
|
422
|
+
#
|
415
423
|
# @method _enum_code_gen_file_type_
|
416
424
|
# @return [Symbol]
|
417
425
|
# @scope class
|
@@ -419,202 +427,202 @@ module LLVM::C
|
|
419
427
|
:assembly, 0,
|
420
428
|
:object, 1
|
421
429
|
]
|
422
|
-
|
430
|
+
|
423
431
|
# Returns the first llvm::Target in the registered targets list.
|
424
|
-
#
|
432
|
+
#
|
425
433
|
# @method get_first_target()
|
426
|
-
# @return [Target]
|
434
|
+
# @return [Target]
|
427
435
|
# @scope class
|
428
436
|
attach_function :get_first_target, :LLVMGetFirstTarget, [], Target
|
429
|
-
|
437
|
+
|
430
438
|
# Returns the next llvm::Target given a previous one (or null if there's none)
|
431
|
-
#
|
439
|
+
#
|
432
440
|
# @method get_next_target(t)
|
433
|
-
# @param [Target] t
|
434
|
-
# @return [Target]
|
441
|
+
# @param [Target] t
|
442
|
+
# @return [Target]
|
435
443
|
# @scope class
|
436
444
|
attach_function :get_next_target, :LLVMGetNextTarget, [Target], Target
|
437
|
-
|
445
|
+
|
438
446
|
# Finds the target corresponding to the given name and stores it in \p T.
|
439
447
|
# Returns 0 on success.
|
440
|
-
#
|
448
|
+
#
|
441
449
|
# @method get_target_from_name(name)
|
442
|
-
# @param [String] name
|
443
|
-
# @return [Target]
|
450
|
+
# @param [String] name
|
451
|
+
# @return [Target]
|
444
452
|
# @scope class
|
445
453
|
attach_function :get_target_from_name, :LLVMGetTargetFromName, [:string], Target
|
446
|
-
|
454
|
+
|
447
455
|
# Finds the target corresponding to the given triple and stores it in \p T.
|
448
456
|
# Returns 0 on success. Optionally returns any error in ErrorMessage.
|
449
457
|
# Use LLVMDisposeMessage to dispose the message.
|
450
|
-
#
|
458
|
+
#
|
451
459
|
# @method get_target_from_triple(triple, t, error_message)
|
452
|
-
# @param [String] triple
|
453
|
-
# @param [FFI::Pointer(*TargetRef)] t
|
454
|
-
# @param [FFI::Pointer(**CharS)] error_message
|
455
|
-
# @return [Integer]
|
460
|
+
# @param [String] triple
|
461
|
+
# @param [FFI::Pointer(*TargetRef)] t
|
462
|
+
# @param [FFI::Pointer(**CharS)] error_message
|
463
|
+
# @return [Integer]
|
456
464
|
# @scope class
|
457
465
|
attach_function :get_target_from_triple, :LLVMGetTargetFromTriple, [:string, :pointer, :pointer], :int
|
458
|
-
|
466
|
+
|
459
467
|
# Returns the name of a target. See llvm::Target::getName
|
460
|
-
#
|
468
|
+
#
|
461
469
|
# @method get_target_name(t)
|
462
|
-
# @param [Target] t
|
463
|
-
# @return [String]
|
470
|
+
# @param [Target] t
|
471
|
+
# @return [String]
|
464
472
|
# @scope class
|
465
473
|
attach_function :get_target_name, :LLVMGetTargetName, [Target], :string
|
466
|
-
|
474
|
+
|
467
475
|
# Returns the description of a target. See llvm::Target::getDescription
|
468
|
-
#
|
476
|
+
#
|
469
477
|
# @method get_target_description(t)
|
470
|
-
# @param [Target] t
|
471
|
-
# @return [String]
|
478
|
+
# @param [Target] t
|
479
|
+
# @return [String]
|
472
480
|
# @scope class
|
473
481
|
attach_function :get_target_description, :LLVMGetTargetDescription, [Target], :string
|
474
|
-
|
482
|
+
|
475
483
|
# Returns if the target has a JIT
|
476
|
-
#
|
484
|
+
#
|
477
485
|
# @method target_has_jit(t)
|
478
|
-
# @param [Target] t
|
479
|
-
# @return [Integer]
|
486
|
+
# @param [Target] t
|
487
|
+
# @return [Integer]
|
480
488
|
# @scope class
|
481
489
|
attach_function :target_has_jit, :LLVMTargetHasJIT, [Target], :int
|
482
|
-
|
490
|
+
|
483
491
|
# Returns if the target has a TargetMachine associated
|
484
|
-
#
|
492
|
+
#
|
485
493
|
# @method target_has_target_machine(t)
|
486
|
-
# @param [Target] t
|
487
|
-
# @return [Integer]
|
494
|
+
# @param [Target] t
|
495
|
+
# @return [Integer]
|
488
496
|
# @scope class
|
489
497
|
attach_function :target_has_target_machine, :LLVMTargetHasTargetMachine, [Target], :int
|
490
|
-
|
498
|
+
|
491
499
|
# Returns if the target as an ASM backend (required for emitting output)
|
492
|
-
#
|
500
|
+
#
|
493
501
|
# @method target_has_asm_backend(t)
|
494
|
-
# @param [Target] t
|
495
|
-
# @return [Integer]
|
502
|
+
# @param [Target] t
|
503
|
+
# @return [Integer]
|
496
504
|
# @scope class
|
497
505
|
attach_function :target_has_asm_backend, :LLVMTargetHasAsmBackend, [Target], :int
|
498
|
-
|
506
|
+
|
499
507
|
# Creates a new llvm::TargetMachine. See llvm::Target::createTargetMachine
|
500
|
-
#
|
508
|
+
#
|
501
509
|
# @method create_target_machine(t, triple, cpu, features, level, reloc, code_model)
|
502
|
-
# @param [Target] t
|
503
|
-
# @param [String] triple
|
504
|
-
# @param [String] cpu
|
505
|
-
# @param [String] features
|
506
|
-
# @param [Symbol from _enum_code_gen_opt_level_] level
|
507
|
-
# @param [Symbol from _enum_reloc_mode_] reloc
|
508
|
-
# @param [Symbol from _enum_code_model_] code_model
|
509
|
-
# @return [OpaqueTargetMachine]
|
510
|
+
# @param [Target] t
|
511
|
+
# @param [String] triple
|
512
|
+
# @param [String] cpu
|
513
|
+
# @param [String] features
|
514
|
+
# @param [Symbol from _enum_code_gen_opt_level_] level
|
515
|
+
# @param [Symbol from _enum_reloc_mode_] reloc
|
516
|
+
# @param [Symbol from _enum_code_model_] code_model
|
517
|
+
# @return [OpaqueTargetMachine]
|
510
518
|
# @scope class
|
511
519
|
attach_function :create_target_machine, :LLVMCreateTargetMachine, [Target, :string, :string, :string, :code_gen_opt_level, :reloc_mode, :code_model], OpaqueTargetMachine
|
512
|
-
|
520
|
+
|
513
521
|
# Dispose the LLVMTargetMachineRef instance generated by
|
514
522
|
# LLVMCreateTargetMachine.
|
515
|
-
#
|
523
|
+
#
|
516
524
|
# @method dispose_target_machine(t)
|
517
|
-
# @param [OpaqueTargetMachine] t
|
518
|
-
# @return [nil]
|
525
|
+
# @param [OpaqueTargetMachine] t
|
526
|
+
# @return [nil]
|
519
527
|
# @scope class
|
520
528
|
attach_function :dispose_target_machine, :LLVMDisposeTargetMachine, [OpaqueTargetMachine], :void
|
521
|
-
|
529
|
+
|
522
530
|
# Returns the Target used in a TargetMachine
|
523
|
-
#
|
531
|
+
#
|
524
532
|
# @method get_target_machine_target(t)
|
525
|
-
# @param [OpaqueTargetMachine] t
|
526
|
-
# @return [Target]
|
533
|
+
# @param [OpaqueTargetMachine] t
|
534
|
+
# @return [Target]
|
527
535
|
# @scope class
|
528
536
|
attach_function :get_target_machine_target, :LLVMGetTargetMachineTarget, [OpaqueTargetMachine], Target
|
529
|
-
|
537
|
+
|
530
538
|
# Returns the triple used creating this target machine. See
|
531
539
|
# llvm::TargetMachine::getTriple. The result needs to be disposed with
|
532
540
|
# LLVMDisposeMessage.
|
533
|
-
#
|
541
|
+
#
|
534
542
|
# @method get_target_machine_triple(t)
|
535
|
-
# @param [OpaqueTargetMachine] t
|
536
|
-
# @return [String]
|
543
|
+
# @param [OpaqueTargetMachine] t
|
544
|
+
# @return [String]
|
537
545
|
# @scope class
|
538
546
|
attach_function :get_target_machine_triple, :LLVMGetTargetMachineTriple, [OpaqueTargetMachine], :string
|
539
|
-
|
547
|
+
|
540
548
|
# Returns the cpu used creating this target machine. See
|
541
549
|
# llvm::TargetMachine::getCPU. The result needs to be disposed with
|
542
550
|
# LLVMDisposeMessage.
|
543
|
-
#
|
551
|
+
#
|
544
552
|
# @method get_target_machine_cpu(t)
|
545
|
-
# @param [OpaqueTargetMachine] t
|
546
|
-
# @return [String]
|
553
|
+
# @param [OpaqueTargetMachine] t
|
554
|
+
# @return [String]
|
547
555
|
# @scope class
|
548
556
|
attach_function :get_target_machine_cpu, :LLVMGetTargetMachineCPU, [OpaqueTargetMachine], :string
|
549
|
-
|
557
|
+
|
550
558
|
# Returns the feature string used creating this target machine. See
|
551
559
|
# llvm::TargetMachine::getFeatureString. The result needs to be disposed with
|
552
560
|
# LLVMDisposeMessage.
|
553
|
-
#
|
561
|
+
#
|
554
562
|
# @method get_target_machine_feature_string(t)
|
555
|
-
# @param [OpaqueTargetMachine] t
|
556
|
-
# @return [String]
|
563
|
+
# @param [OpaqueTargetMachine] t
|
564
|
+
# @return [String]
|
557
565
|
# @scope class
|
558
566
|
attach_function :get_target_machine_feature_string, :LLVMGetTargetMachineFeatureString, [OpaqueTargetMachine], :string
|
559
|
-
|
560
|
-
#
|
561
|
-
#
|
562
|
-
# @method
|
563
|
-
# @param [OpaqueTargetMachine] t
|
564
|
-
# @return [OpaqueTargetData]
|
565
|
-
# @scope class
|
566
|
-
attach_function :
|
567
|
-
|
567
|
+
|
568
|
+
# Create a DataLayout based on the targetMachine.
|
569
|
+
#
|
570
|
+
# @method create_target_data_layout(t)
|
571
|
+
# @param [OpaqueTargetMachine] t
|
572
|
+
# @return [OpaqueTargetData]
|
573
|
+
# @scope class
|
574
|
+
attach_function :create_target_data_layout, :LLVMCreateTargetDataLayout, [OpaqueTargetMachine], OpaqueTargetData
|
575
|
+
|
568
576
|
# Set the target machine's ASM verbosity.
|
569
|
-
#
|
577
|
+
#
|
570
578
|
# @method set_target_machine_asm_verbosity(t, verbose_asm)
|
571
|
-
# @param [OpaqueTargetMachine] t
|
572
|
-
# @param [Integer] verbose_asm
|
573
|
-
# @return [nil]
|
579
|
+
# @param [OpaqueTargetMachine] t
|
580
|
+
# @param [Integer] verbose_asm
|
581
|
+
# @return [nil]
|
574
582
|
# @scope class
|
575
583
|
attach_function :set_target_machine_asm_verbosity, :LLVMSetTargetMachineAsmVerbosity, [OpaqueTargetMachine, :int], :void
|
576
|
-
|
584
|
+
|
577
585
|
# Emits an asm or object file for the given module to the filename. This
|
578
586
|
# wraps several c++ only classes (among them a file stream). Returns any
|
579
587
|
# error in ErrorMessage. Use LLVMDisposeMessage to dispose the message.
|
580
|
-
#
|
588
|
+
#
|
581
589
|
# @method target_machine_emit_to_file(t, m, filename, codegen, error_message)
|
582
|
-
# @param [OpaqueTargetMachine] t
|
583
|
-
# @param [FFI::Pointer(ModuleRef)] m
|
584
|
-
# @param [String] filename
|
585
|
-
# @param [Symbol from _enum_code_gen_file_type_] codegen
|
586
|
-
# @param [FFI::Pointer(**CharS)] error_message
|
587
|
-
# @return [Integer]
|
590
|
+
# @param [OpaqueTargetMachine] t
|
591
|
+
# @param [FFI::Pointer(ModuleRef)] m
|
592
|
+
# @param [String] filename
|
593
|
+
# @param [Symbol from _enum_code_gen_file_type_] codegen
|
594
|
+
# @param [FFI::Pointer(**CharS)] error_message
|
595
|
+
# @return [Integer]
|
588
596
|
# @scope class
|
589
597
|
attach_function :target_machine_emit_to_file, :LLVMTargetMachineEmitToFile, [OpaqueTargetMachine, :pointer, :string, :code_gen_file_type, :pointer], :int
|
590
|
-
|
598
|
+
|
591
599
|
# Compile the LLVM IR stored in \p M and store the result in \p OutMemBuf.
|
592
|
-
#
|
600
|
+
#
|
593
601
|
# @method target_machine_emit_to_memory_buffer(t, m, codegen, error_message, out_mem_buf)
|
594
|
-
# @param [OpaqueTargetMachine] t
|
595
|
-
# @param [FFI::Pointer(ModuleRef)] m
|
596
|
-
# @param [Symbol from _enum_code_gen_file_type_] codegen
|
597
|
-
# @param [FFI::Pointer(**CharS)] error_message
|
598
|
-
# @param [FFI::Pointer(*MemoryBufferRef)] out_mem_buf
|
599
|
-
# @return [Integer]
|
602
|
+
# @param [OpaqueTargetMachine] t
|
603
|
+
# @param [FFI::Pointer(ModuleRef)] m
|
604
|
+
# @param [Symbol from _enum_code_gen_file_type_] codegen
|
605
|
+
# @param [FFI::Pointer(**CharS)] error_message
|
606
|
+
# @param [FFI::Pointer(*MemoryBufferRef)] out_mem_buf
|
607
|
+
# @return [Integer]
|
600
608
|
# @scope class
|
601
609
|
attach_function :target_machine_emit_to_memory_buffer, :LLVMTargetMachineEmitToMemoryBuffer, [OpaqueTargetMachine, :pointer, :code_gen_file_type, :pointer, :pointer], :int
|
602
|
-
|
610
|
+
|
603
611
|
# Get a triple for the host machine as a string. The result needs to be
|
604
612
|
# disposed with LLVMDisposeMessage.
|
605
|
-
#
|
613
|
+
#
|
606
614
|
# @method get_default_target_triple()
|
607
|
-
# @return [String]
|
615
|
+
# @return [String]
|
608
616
|
# @scope class
|
609
617
|
attach_function :get_default_target_triple, :LLVMGetDefaultTargetTriple, [], :string
|
610
|
-
|
618
|
+
|
611
619
|
# Adds the target-specific analysis passes to the pass manager.
|
612
|
-
#
|
620
|
+
#
|
613
621
|
# @method add_analysis_passes(t, pm)
|
614
|
-
# @param [OpaqueTargetMachine] t
|
615
|
-
# @param [FFI::Pointer(PassManagerRef)] pm
|
616
|
-
# @return [nil]
|
622
|
+
# @param [OpaqueTargetMachine] t
|
623
|
+
# @param [FFI::Pointer(PassManagerRef)] pm
|
624
|
+
# @return [nil]
|
617
625
|
# @scope class
|
618
626
|
attach_function :add_analysis_passes, :LLVMAddAnalysisPasses, [OpaqueTargetMachine, :pointer], :void
|
619
|
-
|
627
|
+
|
620
628
|
end
|