ruby-llvm 3.4.2 → 3.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ext/ruby-llvm-support/support.cpp +0 -12
- data/lib/llvm.rb +0 -6
- data/lib/llvm/analysis_ffi.rb +5 -2
- data/lib/llvm/config.rb +3 -3
- data/lib/llvm/core/bitcode_ffi.rb +5 -7
- data/lib/llvm/core/value.rb +10 -2
- data/lib/llvm/core_ffi.rb +297 -108
- data/lib/llvm/execution_engine.rb +9 -2
- data/lib/llvm/execution_engine_ffi.rb +13 -2
- data/lib/llvm/linker.rb +3 -7
- data/lib/llvm/linker_ffi.rb +6 -3
- data/lib/llvm/support.rb +0 -8
- data/lib/llvm/target_ffi.rb +44 -78
- data/lib/llvm/transforms/builder_ffi.rb +1 -1
- data/lib/llvm/transforms/ipo_ffi.rb +2 -2
- data/lib/llvm/transforms/scalar_ffi.rb +18 -2
- data/lib/llvm/transforms/vectorize_ffi.rb +2 -2
- data/lib/llvm/version.rb +2 -2
- data/test/mcjit_test.rb +7 -0
- data/test/module_test.rb +4 -0
- data/test/target_test.rb +10 -10
- metadata +1 -2
- data/lib/llvm/support_ffi.rb +0 -23
@@ -49,6 +49,13 @@ module LLVM
|
|
49
49
|
TargetDataLayout.from_ptr(C.get_execution_engine_target_data(self))
|
50
50
|
end
|
51
51
|
|
52
|
+
# Get the associated target machine.
|
53
|
+
#
|
54
|
+
# @return [TargetMachine]
|
55
|
+
def target_machine
|
56
|
+
TargetMachine.from_ptr(C.get_execution_engine_target_machine(self))
|
57
|
+
end
|
58
|
+
|
52
59
|
# Execute the given LLVM::Function with the supplied args (as
|
53
60
|
# GenericValues).
|
54
61
|
# Important: Call #dispose on the returned GenericValue to
|
@@ -166,7 +173,7 @@ module LLVM
|
|
166
173
|
#
|
167
174
|
# @param [LLVM::Module] mod module
|
168
175
|
# @param [Hash{Symbol => Object}] options options
|
169
|
-
# @option options [Integer] :opt_level (3) Optimization level
|
176
|
+
# @option options [Integer] :opt_level (3) Optimization level
|
170
177
|
# @return [ExecutionEngine] Execution engine
|
171
178
|
def initialize(mod, options = {})
|
172
179
|
# Prior to ruby-llvm 3.4.0, signature is initialize(mod, opt_level = 3)
|
@@ -196,7 +203,7 @@ module LLVM
|
|
196
203
|
#
|
197
204
|
# @param [LLVM::Module] mod module
|
198
205
|
# @param [Hash{Symbol => Object}] options options
|
199
|
-
# @option options [Integer] :opt_level (2) Optimization level
|
206
|
+
# @option options [Integer] :opt_level (2) Optimization level
|
200
207
|
# @option options [Integer] :code_model (0) Code model types
|
201
208
|
# @option options [Boolean] :no_frame_pointer_elim (false) Disable frame pointer elimination optimization
|
202
209
|
# @option options [Boolean] :enable_fast_i_sel (false) Enables fast-path instruction selection
|
@@ -4,7 +4,7 @@ require 'ffi'
|
|
4
4
|
|
5
5
|
module LLVM::C
|
6
6
|
extend FFI::Library
|
7
|
-
ffi_lib
|
7
|
+
ffi_lib ["libLLVM-3.5.so.1", "LLVM-3.5"]
|
8
8
|
|
9
9
|
def self.attach_function(name, *_)
|
10
10
|
begin; super; rescue FFI::NotFoundError => e
|
@@ -12,7 +12,10 @@ module LLVM::C
|
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
|
-
#
|
15
|
+
# @defgroup LLVMCExecutionEngine Execution Engine
|
16
|
+
# @ingroup LLVMC
|
17
|
+
#
|
18
|
+
# @{
|
16
19
|
#
|
17
20
|
# @method link_in_jit()
|
18
21
|
# @return [nil]
|
@@ -358,6 +361,14 @@ module LLVM::C
|
|
358
361
|
# @scope class
|
359
362
|
attach_function :get_execution_engine_target_data, :LLVMGetExecutionEngineTargetData, [OpaqueExecutionEngine], :pointer
|
360
363
|
|
364
|
+
# (Not documented)
|
365
|
+
#
|
366
|
+
# @method get_execution_engine_target_machine(ee)
|
367
|
+
# @param [OpaqueExecutionEngine] ee
|
368
|
+
# @return [FFI::Pointer(TargetMachineRef)]
|
369
|
+
# @scope class
|
370
|
+
attach_function :get_execution_engine_target_machine, :LLVMGetExecutionEngineTargetMachine, [OpaqueExecutionEngine], :pointer
|
371
|
+
|
361
372
|
# (Not documented)
|
362
373
|
#
|
363
374
|
# @method add_global_mapping(ee, global, addr)
|
data/lib/llvm/linker.rb
CHANGED
@@ -9,11 +9,7 @@ module LLVM
|
|
9
9
|
# @return [nil, String] human-readable error if linking has failed
|
10
10
|
def link_into(other)
|
11
11
|
LLVM.with_message_output do |msg|
|
12
|
-
|
13
|
-
# some reason. It is inlined as a constant here.
|
14
|
-
|
15
|
-
# C.link_modules(mod, self, :linker_preserve_source, msg)
|
16
|
-
C.link_modules(other, self, 1, msg)
|
12
|
+
C.link_modules(other, self, :preserve_source, msg)
|
17
13
|
end
|
18
14
|
end
|
19
15
|
|
@@ -22,7 +18,7 @@ module LLVM
|
|
22
18
|
# @return [nil, String] human-readable error if linking has failed
|
23
19
|
def link_into_and_destroy(other)
|
24
20
|
result = LLVM.with_message_output do |msg|
|
25
|
-
C.link_modules(other, self, :
|
21
|
+
C.link_modules(other, self, :destroy_source, msg)
|
26
22
|
end
|
27
23
|
|
28
24
|
@ptr = nil
|
@@ -30,4 +26,4 @@ module LLVM
|
|
30
26
|
result
|
31
27
|
end
|
32
28
|
end
|
33
|
-
end
|
29
|
+
end
|
data/lib/llvm/linker_ffi.rb
CHANGED
@@ -4,7 +4,7 @@ require 'ffi'
|
|
4
4
|
|
5
5
|
module LLVM::C
|
6
6
|
extend FFI::Library
|
7
|
-
ffi_lib
|
7
|
+
ffi_lib ["libLLVM-3.5.so.1", "LLVM-3.5"]
|
8
8
|
|
9
9
|
def self.attach_function(name, *_)
|
10
10
|
begin; super; rescue FFI::NotFoundError => e
|
@@ -17,14 +17,17 @@ module LLVM::C
|
|
17
17
|
# <em>This entry is only for documentation and no real method. The FFI::Enum can be accessed via #enum_type(:linker_mode).</em>
|
18
18
|
#
|
19
19
|
# === Options:
|
20
|
-
# :
|
20
|
+
# :destroy_source ::
|
21
21
|
#
|
22
|
+
# :preserve_source ::
|
23
|
+
# Allow source module to be destroyed.
|
22
24
|
#
|
23
25
|
# @method _enum_linker_mode_
|
24
26
|
# @return [Symbol]
|
25
27
|
# @scope class
|
26
28
|
enum :linker_mode, [
|
27
|
-
:
|
29
|
+
:destroy_source, 0,
|
30
|
+
:preserve_source, 1
|
28
31
|
]
|
29
32
|
|
30
33
|
# Links the source module into the destination module, taking ownership
|
data/lib/llvm/support.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'llvm/core_ffi'
|
2
|
-
require 'llvm/support_ffi'
|
3
2
|
|
4
3
|
module LLVM
|
5
4
|
|
@@ -9,17 +8,10 @@ module LLVM
|
|
9
8
|
module C
|
10
9
|
extend FFI::Library
|
11
10
|
|
12
|
-
OpaqueValue = LLVM::C::OpaqueValue
|
13
|
-
OpaqueType = LLVM::C::OpaqueType
|
14
|
-
OpaqueModule = LLVM::C::OpaqueModule
|
15
|
-
|
16
11
|
lib_name = FFI.map_library_name("RubyLLVMSupport-#{LLVM_VERSION}")
|
17
12
|
lib_path = File.expand_path("../../ext/ruby-llvm-support/#{lib_name}", File.dirname(__FILE__))
|
18
13
|
ffi_lib [lib_path]
|
19
14
|
|
20
|
-
attach_function :has_unnamed_addr, :LLVMHasUnnamedAddr, [OpaqueValue], :int
|
21
|
-
attach_function :set_unnamed_addr, :LLVMSetUnnamedAddr, [OpaqueValue, :int], :void
|
22
|
-
|
23
15
|
attach_function :initialize_all_target_infos,
|
24
16
|
:LLVMInitializeAllTargetInfos, [], :void
|
25
17
|
attach_function :initialize_all_targets,
|
data/lib/llvm/target_ffi.rb
CHANGED
@@ -4,7 +4,7 @@ require 'ffi'
|
|
4
4
|
|
5
5
|
module LLVM::C
|
6
6
|
extend FFI::Library
|
7
|
-
ffi_lib
|
7
|
+
ffi_lib ["libLLVM-3.5.so.1", "LLVM-3.5"]
|
8
8
|
|
9
9
|
def self.attach_function(name, *_)
|
10
10
|
begin; super; rescue FFI::NotFoundError => e
|
@@ -47,89 +47,70 @@ module LLVM::C
|
|
47
47
|
# @scope class
|
48
48
|
attach_function :initialize_all_target_infos, :LLVMInitializeAllTargetInfos, [], :void
|
49
49
|
|
50
|
-
#
|
51
|
-
# wants to link in all available targets that LLVM is configured to
|
52
|
-
# support.
|
50
|
+
# (Not documented)
|
53
51
|
#
|
54
52
|
# @method initialize_all_targets()
|
55
53
|
# @return [nil]
|
56
54
|
# @scope class
|
57
55
|
attach_function :initialize_all_targets, :LLVMInitializeAllTargets, [], :void
|
58
56
|
|
59
|
-
#
|
60
|
-
# it wants access to all available target MC that LLVM is configured to
|
61
|
-
# support.
|
57
|
+
# (Not documented)
|
62
58
|
#
|
63
59
|
# @method initialize_all_target_m_cs()
|
64
60
|
# @return [nil]
|
65
61
|
# @scope class
|
66
62
|
attach_function :initialize_all_target_m_cs, :LLVMInitializeAllTargetMCs, [], :void
|
67
63
|
|
68
|
-
#
|
69
|
-
# it wants all asm printers that LLVM is configured to support, to make them
|
70
|
-
# available via the TargetRegistry.
|
64
|
+
# (Not documented)
|
71
65
|
#
|
72
66
|
# @method initialize_all_asm_printers()
|
73
67
|
# @return [nil]
|
74
68
|
# @scope class
|
75
69
|
attach_function :initialize_all_asm_printers, :LLVMInitializeAllAsmPrinters, [], :void
|
76
70
|
|
77
|
-
#
|
78
|
-
# it wants all asm parsers that LLVM is configured to support, to make them
|
79
|
-
# available via the TargetRegistry.
|
71
|
+
# (Not documented)
|
80
72
|
#
|
81
73
|
# @method initialize_all_asm_parsers()
|
82
74
|
# @return [nil]
|
83
75
|
# @scope class
|
84
76
|
attach_function :initialize_all_asm_parsers, :LLVMInitializeAllAsmParsers, [], :void
|
85
77
|
|
86
|
-
#
|
87
|
-
# if it wants all disassemblers that LLVM is configured to support, to make
|
88
|
-
# them available via the TargetRegistry.
|
78
|
+
# (Not documented)
|
89
79
|
#
|
90
80
|
# @method initialize_all_disassemblers()
|
91
81
|
# @return [nil]
|
92
82
|
# @scope class
|
93
83
|
attach_function :initialize_all_disassemblers, :LLVMInitializeAllDisassemblers, [], :void
|
94
84
|
|
95
|
-
#
|
96
|
-
# initialize the native target corresponding to the host. This is useful
|
97
|
-
# for JIT applications to ensure that the target gets linked in correctly.
|
85
|
+
# (Not documented)
|
98
86
|
#
|
99
87
|
# @method initialize_native_target()
|
100
88
|
# @return [Integer]
|
101
89
|
# @scope class
|
102
90
|
attach_function :initialize_native_target, :LLVMInitializeNativeTarget, [], :int
|
103
91
|
|
104
|
-
#
|
105
|
-
# function to initialize the parser for the native target corresponding to the
|
106
|
-
# host.
|
92
|
+
# (Not documented)
|
107
93
|
#
|
108
94
|
# @method initialize_native_asm_parser()
|
109
95
|
# @return [Integer]
|
110
96
|
# @scope class
|
111
97
|
attach_function :initialize_native_asm_parser, :LLVMInitializeNativeAsmParser, [], :int
|
112
98
|
|
113
|
-
#
|
114
|
-
# function to initialize the printer for the native target corresponding to
|
115
|
-
# the host.
|
99
|
+
# (Not documented)
|
116
100
|
#
|
117
101
|
# @method initialize_native_asm_printer()
|
118
102
|
# @return [Integer]
|
119
103
|
# @scope class
|
120
104
|
attach_function :initialize_native_asm_printer, :LLVMInitializeNativeAsmPrinter, [], :int
|
121
105
|
|
122
|
-
#
|
123
|
-
# function to initialize the disassembler for the native target corresponding
|
124
|
-
# to the host.
|
106
|
+
# (Not documented)
|
125
107
|
#
|
126
108
|
# @method initialize_native_disassembler()
|
127
109
|
# @return [Integer]
|
128
110
|
# @scope class
|
129
111
|
attach_function :initialize_native_disassembler, :LLVMInitializeNativeDisassembler, [], :int
|
130
112
|
|
131
|
-
#
|
132
|
-
# See the constructor llvm::DataLayout::DataLayout.
|
113
|
+
# (Not documented)
|
133
114
|
#
|
134
115
|
# @method create_target_data(string_rep)
|
135
116
|
# @param [String] string_rep
|
@@ -137,9 +118,7 @@ module LLVM::C
|
|
137
118
|
# @scope class
|
138
119
|
attach_function :create_target_data, :LLVMCreateTargetData, [:string], OpaqueTargetData
|
139
120
|
|
140
|
-
#
|
141
|
-
# of the target data.
|
142
|
-
# See the method llvm::PassManagerBase::add.
|
121
|
+
# (Not documented)
|
143
122
|
#
|
144
123
|
# @method add_target_data(td, pm)
|
145
124
|
# @param [OpaqueTargetData] td
|
@@ -148,9 +127,7 @@ module LLVM::C
|
|
148
127
|
# @scope class
|
149
128
|
attach_function :add_target_data, :LLVMAddTargetData, [OpaqueTargetData, :pointer], :void
|
150
129
|
|
151
|
-
#
|
152
|
-
# ownership of the target library info.
|
153
|
-
# See the method llvm::PassManagerBase::add.
|
130
|
+
# (Not documented)
|
154
131
|
#
|
155
132
|
# @method add_target_library_info(tli, pm)
|
156
133
|
# @param [OpaqueTargetLibraryInfotData] tli
|
@@ -159,9 +136,7 @@ module LLVM::C
|
|
159
136
|
# @scope class
|
160
137
|
attach_function :add_target_library_info, :LLVMAddTargetLibraryInfo, [OpaqueTargetLibraryInfotData, :pointer], :void
|
161
138
|
|
162
|
-
#
|
163
|
-
# with LLVMDisposeMessage.
|
164
|
-
# See the constructor llvm::DataLayout::DataLayout.
|
139
|
+
# (Not documented)
|
165
140
|
#
|
166
141
|
# @method copy_string_rep_of_target_data(td)
|
167
142
|
# @param [OpaqueTargetData] td
|
@@ -169,9 +144,7 @@ module LLVM::C
|
|
169
144
|
# @scope class
|
170
145
|
attach_function :copy_string_rep_of_target_data, :LLVMCopyStringRepOfTargetData, [OpaqueTargetData], :string
|
171
146
|
|
172
|
-
#
|
173
|
-
# LLVMLittleEndian.
|
174
|
-
# See the method llvm::DataLayout::isLittleEndian.
|
147
|
+
# (Not documented)
|
175
148
|
#
|
176
149
|
# @method byte_order(td)
|
177
150
|
# @param [OpaqueTargetData] td
|
@@ -179,8 +152,7 @@ module LLVM::C
|
|
179
152
|
# @scope class
|
180
153
|
attach_function :byte_order, :LLVMByteOrder, [OpaqueTargetData], :byte_ordering
|
181
154
|
|
182
|
-
#
|
183
|
-
# See the method llvm::DataLayout::getPointerSize.
|
155
|
+
# (Not documented)
|
184
156
|
#
|
185
157
|
# @method pointer_size(td)
|
186
158
|
# @param [OpaqueTargetData] td
|
@@ -188,9 +160,7 @@ module LLVM::C
|
|
188
160
|
# @scope class
|
189
161
|
attach_function :pointer_size, :LLVMPointerSize, [OpaqueTargetData], :uint
|
190
162
|
|
191
|
-
#
|
192
|
-
# address space.
|
193
|
-
# See the method llvm::DataLayout::getPointerSize.
|
163
|
+
# (Not documented)
|
194
164
|
#
|
195
165
|
# @method pointer_size_for_as(td, as)
|
196
166
|
# @param [OpaqueTargetData] td
|
@@ -199,8 +169,7 @@ module LLVM::C
|
|
199
169
|
# @scope class
|
200
170
|
attach_function :pointer_size_for_as, :LLVMPointerSizeForAS, [OpaqueTargetData, :uint], :uint
|
201
171
|
|
202
|
-
#
|
203
|
-
# See the method llvm::DataLayout::getIntPtrType.
|
172
|
+
# (Not documented)
|
204
173
|
#
|
205
174
|
# @method int_ptr_type(td)
|
206
175
|
# @param [OpaqueTargetData] td
|
@@ -208,9 +177,7 @@ module LLVM::C
|
|
208
177
|
# @scope class
|
209
178
|
attach_function :int_ptr_type, :LLVMIntPtrType, [OpaqueTargetData], :pointer
|
210
179
|
|
211
|
-
#
|
212
|
-
# This version allows the address space to be specified.
|
213
|
-
# See the method llvm::DataLayout::getIntPtrType.
|
180
|
+
# (Not documented)
|
214
181
|
#
|
215
182
|
# @method int_ptr_type_for_as(td, as)
|
216
183
|
# @param [OpaqueTargetData] td
|
@@ -219,8 +186,7 @@ module LLVM::C
|
|
219
186
|
# @scope class
|
220
187
|
attach_function :int_ptr_type_for_as, :LLVMIntPtrTypeForAS, [OpaqueTargetData, :uint], :pointer
|
221
188
|
|
222
|
-
#
|
223
|
-
# See the method llvm::DataLayout::getIntPtrType.
|
189
|
+
# (Not documented)
|
224
190
|
#
|
225
191
|
# @method int_ptr_type_in_context(c, td)
|
226
192
|
# @param [FFI::Pointer(ContextRef)] c
|
@@ -229,9 +195,7 @@ module LLVM::C
|
|
229
195
|
# @scope class
|
230
196
|
attach_function :int_ptr_type_in_context, :LLVMIntPtrTypeInContext, [:pointer, OpaqueTargetData], :pointer
|
231
197
|
|
232
|
-
#
|
233
|
-
# This version allows the address space to be specified.
|
234
|
-
# See the method llvm::DataLayout::getIntPtrType.
|
198
|
+
# (Not documented)
|
235
199
|
#
|
236
200
|
# @method int_ptr_type_for_as_in_context(c, td, as)
|
237
201
|
# @param [FFI::Pointer(ContextRef)] c
|
@@ -241,8 +205,7 @@ module LLVM::C
|
|
241
205
|
# @scope class
|
242
206
|
attach_function :int_ptr_type_for_as_in_context, :LLVMIntPtrTypeForASInContext, [:pointer, OpaqueTargetData, :uint], :pointer
|
243
207
|
|
244
|
-
#
|
245
|
-
# See the method llvm::DataLayout::getTypeSizeInBits.
|
208
|
+
# (Not documented)
|
246
209
|
#
|
247
210
|
# @method size_of_type_in_bits(td, ty)
|
248
211
|
# @param [OpaqueTargetData] td
|
@@ -251,8 +214,7 @@ module LLVM::C
|
|
251
214
|
# @scope class
|
252
215
|
attach_function :size_of_type_in_bits, :LLVMSizeOfTypeInBits, [OpaqueTargetData, :pointer], :ulong_long
|
253
216
|
|
254
|
-
#
|
255
|
-
# See the method llvm::DataLayout::getTypeStoreSize.
|
217
|
+
# (Not documented)
|
256
218
|
#
|
257
219
|
# @method store_size_of_type(td, ty)
|
258
220
|
# @param [OpaqueTargetData] td
|
@@ -261,8 +223,7 @@ module LLVM::C
|
|
261
223
|
# @scope class
|
262
224
|
attach_function :store_size_of_type, :LLVMStoreSizeOfType, [OpaqueTargetData, :pointer], :ulong_long
|
263
225
|
|
264
|
-
#
|
265
|
-
# See the method llvm::DataLayout::getTypeAllocSize.
|
226
|
+
# (Not documented)
|
266
227
|
#
|
267
228
|
# @method abi_size_of_type(td, ty)
|
268
229
|
# @param [OpaqueTargetData] td
|
@@ -271,8 +232,7 @@ module LLVM::C
|
|
271
232
|
# @scope class
|
272
233
|
attach_function :abi_size_of_type, :LLVMABISizeOfType, [OpaqueTargetData, :pointer], :ulong_long
|
273
234
|
|
274
|
-
#
|
275
|
-
# See the method llvm::DataLayout::getTypeABISize.
|
235
|
+
# (Not documented)
|
276
236
|
#
|
277
237
|
# @method abi_alignment_of_type(td, ty)
|
278
238
|
# @param [OpaqueTargetData] td
|
@@ -281,8 +241,7 @@ module LLVM::C
|
|
281
241
|
# @scope class
|
282
242
|
attach_function :abi_alignment_of_type, :LLVMABIAlignmentOfType, [OpaqueTargetData, :pointer], :uint
|
283
243
|
|
284
|
-
#
|
285
|
-
# See the method llvm::DataLayout::getTypeABISize.
|
244
|
+
# (Not documented)
|
286
245
|
#
|
287
246
|
# @method call_frame_alignment_of_type(td, ty)
|
288
247
|
# @param [OpaqueTargetData] td
|
@@ -291,8 +250,7 @@ module LLVM::C
|
|
291
250
|
# @scope class
|
292
251
|
attach_function :call_frame_alignment_of_type, :LLVMCallFrameAlignmentOfType, [OpaqueTargetData, :pointer], :uint
|
293
252
|
|
294
|
-
#
|
295
|
-
# See the method llvm::DataLayout::getTypeABISize.
|
253
|
+
# (Not documented)
|
296
254
|
#
|
297
255
|
# @method preferred_alignment_of_type(td, ty)
|
298
256
|
# @param [OpaqueTargetData] td
|
@@ -301,8 +259,7 @@ module LLVM::C
|
|
301
259
|
# @scope class
|
302
260
|
attach_function :preferred_alignment_of_type, :LLVMPreferredAlignmentOfType, [OpaqueTargetData, :pointer], :uint
|
303
261
|
|
304
|
-
#
|
305
|
-
# See the method llvm::DataLayout::getPreferredAlignment.
|
262
|
+
# (Not documented)
|
306
263
|
#
|
307
264
|
# @method preferred_alignment_of_global(td, global_var)
|
308
265
|
# @param [OpaqueTargetData] td
|
@@ -311,8 +268,7 @@ module LLVM::C
|
|
311
268
|
# @scope class
|
312
269
|
attach_function :preferred_alignment_of_global, :LLVMPreferredAlignmentOfGlobal, [OpaqueTargetData, :pointer], :uint
|
313
270
|
|
314
|
-
#
|
315
|
-
# See the method llvm::StructLayout::getElementContainingOffset.
|
271
|
+
# (Not documented)
|
316
272
|
#
|
317
273
|
# @method element_at_offset(td, struct_ty, offset)
|
318
274
|
# @param [OpaqueTargetData] td
|
@@ -322,8 +278,7 @@ module LLVM::C
|
|
322
278
|
# @scope class
|
323
279
|
attach_function :element_at_offset, :LLVMElementAtOffset, [OpaqueTargetData, :pointer, :ulong_long], :uint
|
324
280
|
|
325
|
-
#
|
326
|
-
# See the method llvm::StructLayout::getElementContainingOffset.
|
281
|
+
# (Not documented)
|
327
282
|
#
|
328
283
|
# @method offset_of_element(td, struct_ty, element)
|
329
284
|
# @param [OpaqueTargetData] td
|
@@ -333,8 +288,7 @@ module LLVM::C
|
|
333
288
|
# @scope class
|
334
289
|
attach_function :offset_of_element, :LLVMOffsetOfElement, [OpaqueTargetData, :pointer, :uint], :ulong_long
|
335
290
|
|
336
|
-
#
|
337
|
-
# See the destructor llvm::DataLayout::~DataLayout.
|
291
|
+
# (Not documented)
|
338
292
|
#
|
339
293
|
# @method dispose_target_data(td)
|
340
294
|
# @param [OpaqueTargetData] td
|
@@ -349,14 +303,17 @@ module LLVM::C
|
|
349
303
|
|
350
304
|
# (Not documented)
|
351
305
|
module TargetWrappers
|
306
|
+
# @return [Integer]
|
352
307
|
def has_jit()
|
353
308
|
LLVM::C.target_has_jit(self)
|
354
309
|
end
|
355
310
|
|
311
|
+
# @return [Integer]
|
356
312
|
def has_target_machine()
|
357
313
|
LLVM::C.target_has_target_machine(self)
|
358
314
|
end
|
359
315
|
|
316
|
+
# @return [Integer]
|
360
317
|
def has_asm_backend()
|
361
318
|
LLVM::C.target_has_asm_backend(self)
|
362
319
|
end
|
@@ -478,7 +435,7 @@ module LLVM::C
|
|
478
435
|
# @scope class
|
479
436
|
attach_function :get_next_target, :LLVMGetNextTarget, [Target], Target
|
480
437
|
|
481
|
-
# Finds the target corresponding to the given name and stores it in \p T.
|
438
|
+
# Finds the target corresponding to the given name and stores it in \p T.
|
482
439
|
# Returns 0 on success.
|
483
440
|
#
|
484
441
|
# @method get_target_from_name(name)
|
@@ -651,4 +608,13 @@ module LLVM::C
|
|
651
608
|
# @scope class
|
652
609
|
attach_function :get_default_target_triple, :LLVMGetDefaultTargetTriple, [], :string
|
653
610
|
|
611
|
+
# Adds the target-specific analysis passes to the pass manager.
|
612
|
+
#
|
613
|
+
# @method add_analysis_passes(t, pm)
|
614
|
+
# @param [OpaqueTargetMachine] t
|
615
|
+
# @param [FFI::Pointer(PassManagerRef)] pm
|
616
|
+
# @return [nil]
|
617
|
+
# @scope class
|
618
|
+
attach_function :add_analysis_passes, :LLVMAddAnalysisPasses, [OpaqueTargetMachine, :pointer], :void
|
619
|
+
|
654
620
|
end
|