ruby-llvm 19.1.0 → 19.1.3
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 +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
|