ruby-llvm 19.1.0 → 19.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/llvm/config.rb +1 -1
- data/lib/llvm/core/attribute.rb +3 -3
- data/lib/llvm/core/type.rb +25 -8
- data/lib/llvm/core/value.rb +15 -2
- data/lib/llvm/version.rb +2 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e79f189aca81c294be8c7e03f22bd723e546ebcf1abf2ec3d65247cf94a89601
|
4
|
+
data.tar.gz: dd35f61c2cb3764f3736ddb587f1df9079fecb23ff3e3dd6a0b62cd20ce6b764
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4d27cce47be66097018b3caa11afd3356e7be1305ece76e1511f214cb7a313b678d224951d74460a9ec7fb517b74b2d0f30aa759af949ca77115b6839e22d503
|
7
|
+
data.tar.gz: 3898e49f6284f524ce117eb830ce2be6d423f474439012d793d7690051c006d2183b0cbefcad242c31ee5765216633035a79d972e50da1977075565c78e44a31
|
data/lib/llvm/config.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# Generated by ruby-llvm. Please do not change this file by hand.
|
2
2
|
module LLVM
|
3
3
|
module CONFIG
|
4
|
-
VERSION = "19.1.
|
4
|
+
VERSION = "19.1.3"
|
5
5
|
COMPONENTS = ["aarch64", "aarch64asmparser", "aarch64codegen", "aarch64desc", "aarch64disassembler", "aarch64info", "aarch64utils", "aggressiveinstcombine", "all", "all-targets", "amdgpu", "amdgpuasmparser", "amdgpucodegen", "amdgpudesc", "amdgpudisassembler", "amdgpuinfo", "amdgputargetmca", "amdgpuutils", "analysis", "arm", "armasmparser", "armcodegen", "armdesc", "armdisassembler", "arminfo", "armutils", "asmparser", "asmprinter", "avr", "avrasmparser", "avrcodegen", "avrdesc", "avrdisassembler", "avrinfo", "binaryformat", "bitreader", "bitstreamreader", "bitwriter", "bpf", "bpfasmparser", "bpfcodegen", "bpfdesc", "bpfdisassembler", "bpfinfo", "cfguard", "codegen", "codegendata", "codegentypes", "core", "coroutines", "coverage", "debuginfobtf", "debuginfocodeview", "debuginfodwarf", "debuginfogsym", "debuginfologicalview", "debuginfomsf", "debuginfopdb", "demangle", "dlltooldriver", "dwarflinker", "dwarflinkerclassic", "dwarflinkerparallel", "dwp", "engine", "executionengine", "extensions", "filecheck", "frontenddriver", "frontendhlsl", "frontendoffloading", "frontendopenacc", "frontendopenmp", "fuzzercli", "fuzzmutate", "globalisel", "hexagon", "hexagonasmparser", "hexagoncodegen", "hexagondesc", "hexagondisassembler", "hexagoninfo", "hipstdpar", "instcombine", "instrumentation", "interfacestub", "interpreter", "ipo", "irprinter", "irreader", "jitlink", "lanai", "lanaiasmparser", "lanaicodegen", "lanaidesc", "lanaidisassembler", "lanaiinfo", "libdriver", "lineeditor", "linker", "loongarch", "loongarchasmparser", "loongarchcodegen", "loongarchdesc", "loongarchdisassembler", "loongarchinfo", "lto", "m68k", "m68kasmparser", "m68kcodegen", "m68kdesc", "m68kdisassembler", "m68kinfo", "mc", "mca", "mcdisassembler", "mcjit", "mcparser", "mips", "mipsasmparser", "mipscodegen", "mipsdesc", "mipsdisassembler", "mipsinfo", "mirparser", "msp430", "msp430asmparser", "msp430codegen", "msp430desc", "msp430disassembler", "msp430info", "native", "nativecodegen", "nvptx", "nvptxcodegen", "nvptxdesc", "nvptxinfo", "objcarcopts", "objcopy", "object", "objectyaml", "option", "orcdebugging", "orcjit", "orcshared", "orctargetprocess", "passes", "perfjitevents", "powerpc", "powerpcasmparser", "powerpccodegen", "powerpcdesc", "powerpcdisassembler", "powerpcinfo", "profiledata", "remarks", "riscv", "riscvasmparser", "riscvcodegen", "riscvdesc", "riscvdisassembler", "riscvinfo", "riscvtargetmca", "runtimedyld", "sandboxir", "scalaropts", "selectiondag", "sparc", "sparcasmparser", "sparccodegen", "sparcdesc", "sparcdisassembler", "sparcinfo", "support", "symbolize", "systemz", "systemzasmparser", "systemzcodegen", "systemzdesc", "systemzdisassembler", "systemzinfo", "tablegen", "target", "targetparser", "textapi", "textapibinaryreader", "transformutils", "ve", "veasmparser", "vecodegen", "vectorize", "vedesc", "vedisassembler", "veinfo", "webassembly", "webassemblyasmparser", "webassemblycodegen", "webassemblydesc", "webassemblydisassembler", "webassemblyinfo", "webassemblyutils", "windowsdriver", "windowsmanifest", "x86", "x86asmparser", "x86codegen", "x86desc", "x86disassembler", "x86info", "x86targetmca", "xcore", "xcorecodegen", "xcoredesc", "xcoredisassembler", "xcoreinfo", "xray", "xtensa", "xtensaasmparser", "xtensacodegen", "xtensadesc", "xtensadisassembler", "xtensainfo"]
|
6
6
|
TARGETS_BUILT = ["AArch64", "AMDGPU", "ARM", "AVR", "BPF", "Hexagon", "Lanai", "LoongArch", "Mips", "MSP430", "NVPTX", "PowerPC", "RISCV", "Sparc", "SystemZ", "VE", "WebAssembly", "X86", "XCore", "M68k", "Xtensa"]
|
7
7
|
HOST_TARGET = "x86_64-pc-linux-gnu"
|
data/lib/llvm/core/attribute.rb
CHANGED
@@ -149,15 +149,15 @@ module LLVM
|
|
149
149
|
private
|
150
150
|
|
151
151
|
def enum_value_mem_none?
|
152
|
-
(
|
152
|
+
enum_value.nobits?(63)
|
153
153
|
end
|
154
154
|
|
155
155
|
def enum_value_mem_read?
|
156
|
-
(
|
156
|
+
enum_value.anybits?(21)
|
157
157
|
end
|
158
158
|
|
159
159
|
def enum_value_mem_write?
|
160
|
-
(
|
160
|
+
enum_value.anybits?(42)
|
161
161
|
end
|
162
162
|
|
163
163
|
def enum_kind_id
|
data/lib/llvm/core/type.rb
CHANGED
@@ -228,8 +228,8 @@ module LLVM
|
|
228
228
|
C.get_int_type_width(self)
|
229
229
|
end
|
230
230
|
|
231
|
-
def
|
232
|
-
|
231
|
+
private def get_sign_option(options)
|
232
|
+
case options
|
233
233
|
when true, false
|
234
234
|
options
|
235
235
|
when Hash
|
@@ -237,11 +237,16 @@ module LLVM
|
|
237
237
|
else
|
238
238
|
raise ArgumentError
|
239
239
|
end
|
240
|
-
|
240
|
+
end
|
241
|
+
|
242
|
+
def from_i(int, options = {})
|
243
|
+
signed = get_sign_option(options)
|
241
244
|
|
242
|
-
|
243
|
-
|
244
|
-
val.
|
245
|
+
return parse(int.to_s, 0) if width > 64 || int.is_a?(String)
|
246
|
+
|
247
|
+
val = from_ptr(C.const_int(self, int, signed ? 1 : 0))
|
248
|
+
unpoisoned = val.to_i(signed) == int
|
249
|
+
unpoisoned ? val : poison
|
245
250
|
end
|
246
251
|
|
247
252
|
# unused
|
@@ -259,9 +264,21 @@ module LLVM
|
|
259
264
|
ConstantInt.from_ptr(ptr)
|
260
265
|
end
|
261
266
|
|
267
|
+
# parse string using const_int_of_string_and_size
|
268
|
+
# normalize the string to base 10 (used in llvm ir), and handle prefixes like 0x
|
269
|
+
private def const_int_of_string_and_size(str, radix)
|
270
|
+
normalized_string = radix == 10 ? str : str.to_i(radix).to_s
|
271
|
+
val = from_ptr(C.const_int_of_string_and_size(self, normalized_string, normalized_string.size, 10))
|
272
|
+
|
273
|
+
unpoisoned = normalized_string == val.to_s.split.last
|
274
|
+
unpoisoned ? val : poison
|
275
|
+
end
|
276
|
+
|
277
|
+
# parse string using const_int_of_string_and_size
|
278
|
+
# alternative implementation parsing with ruby:
|
279
|
+
# from_i(str.to_i(radix))
|
262
280
|
def parse(str, radix = 10)
|
263
|
-
|
264
|
-
from_i(str.to_i(radix))
|
281
|
+
const_int_of_string_and_size(str, radix)
|
265
282
|
end
|
266
283
|
|
267
284
|
def type
|
data/lib/llvm/core/value.rb
CHANGED
@@ -12,7 +12,7 @@ module LLVM
|
|
12
12
|
val
|
13
13
|
end
|
14
14
|
|
15
|
-
def self.from_ptr_kind(ptr)
|
15
|
+
def self.from_ptr_kind(ptr) # rubocop:disable Metrics/CyclomaticComplexity
|
16
16
|
return if ptr.null?
|
17
17
|
|
18
18
|
kind = C.get_value_kind(ptr)
|
@@ -27,6 +27,8 @@ module LLVM
|
|
27
27
|
Poison.from_ptr(ptr)
|
28
28
|
when :global_variable
|
29
29
|
GlobalVariable.from_ptr(ptr)
|
30
|
+
when :const_expr
|
31
|
+
ConstantExpr.from_ptr(ptr)
|
30
32
|
else
|
31
33
|
raise "from_ptr_kind cannot handle: #{kind}"
|
32
34
|
end
|
@@ -627,13 +629,24 @@ module LLVM
|
|
627
629
|
type.from_f(to_i.to_f)
|
628
630
|
end
|
629
631
|
|
630
|
-
def
|
632
|
+
private def to_i_i64(signed)
|
631
633
|
if signed
|
632
634
|
C.const_int_get_sext_value(self)
|
633
635
|
else
|
634
636
|
C.const_int_get_zext_value(self)
|
635
637
|
end
|
636
638
|
end
|
639
|
+
|
640
|
+
# const_int_get_sext_value const_int_get_zext_value only return long long, 64-bits
|
641
|
+
# beyond 64-bits parse the string value into a ruby integer
|
642
|
+
# TODO: overflow behavior is not the same on these arms, signed is ignored above 64-bits
|
643
|
+
def to_i(signed = true)
|
644
|
+
if type.width <= 64
|
645
|
+
to_i_i64(signed)
|
646
|
+
else
|
647
|
+
to_s.split.last.to_i
|
648
|
+
end
|
649
|
+
end
|
637
650
|
end
|
638
651
|
|
639
652
|
# creates LLVM::Int1, LLVM::Int64, etc
|
data/lib/llvm/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-llvm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 19.1.
|
4
|
+
version: 19.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jesse Johnson
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2024-
|
12
|
+
date: 2024-11-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: ffi
|