ruby-llvm 19.1.0 → 19.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e10c7862bad0824d39c4267e4f57a0938c692797152c367f19e89c45349cfdc1
4
- data.tar.gz: 9ff941e455b59e7f710213da4b0b0bd0cb074d47ee217b4aa5603f78b267acaa
3
+ metadata.gz: df367b2c98f260a385eaadca04206f2a7f71a9354b2e2584be63ac33fd28b122
4
+ data.tar.gz: 478b9eea54dd4686fba6d6643965be3aa21570906dcf6b95df4b8b6a5101ff0e
5
5
  SHA512:
6
- metadata.gz: a0cde4581200138358072feb19b55bfac4f53aa59b98c24c49d5a37a90dc973be394982397cc46045c7515403abe4ff3ec7f0115598310dc2c09af4a7b797453
7
- data.tar.gz: 11972368435dc06407593cbb500208a61a152c7d57a8bd7952023862fa8c78a766cd5bdffd18bf78c711e0afd2cb1ead03ff8a4c9fbd6423bbd229ae2f31baf2
6
+ metadata.gz: 71f91dd881e22562015aba5cd9d818f949f460f44a7e4d0dd12850d95aefdfd512db2c9fc9131db0515947a0a31e0afe806cc55b8d5bbc185cd16fb3fa282eea
7
+ data.tar.gz: 21a4ea3e227b4c127ac5212cd705fae433a571be7524fe3c4e14b48c3e0eec1e10c5642c4c47ff773432bceec862cf07199d148e407caa384dfe761dbc380b3d
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.0"
4
+ VERSION = "19.1.2"
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"
@@ -228,8 +228,8 @@ module LLVM
228
228
  C.get_int_type_width(self)
229
229
  end
230
230
 
231
- def from_i(int, options = {})
232
- signed = case options
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
- # return poison if !fits_width?(int, width, signed)
240
+ end
241
+
242
+ def from_i(int, options = {})
243
+ signed = get_sign_option(options)
241
244
 
242
- ptr = C.const_int(self, int, signed ? 1 : 0)
243
- val = from_ptr(ptr)
244
- val.to_i(signed) == int ? val : poison
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
- # from_ptr(C.const_int_of_string(self, str, radix))
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
@@ -627,13 +627,24 @@ module LLVM
627
627
  type.from_f(to_i.to_f)
628
628
  end
629
629
 
630
- def to_i(signed = true)
630
+ private def to_i_i64(signed)
631
631
  if signed
632
632
  C.const_int_get_sext_value(self)
633
633
  else
634
634
  C.const_int_get_zext_value(self)
635
635
  end
636
636
  end
637
+
638
+ # const_int_get_sext_value const_int_get_zext_value only return long long, 64-bits
639
+ # beyond 64-bits parse the string value into a ruby integer
640
+ # TODO: overflow behavior is not the same on these arms, signed is ignored above 64-bits
641
+ def to_i(signed = true)
642
+ if type.width <= 64
643
+ to_i_i64(signed)
644
+ else
645
+ to_s.split.last.to_i
646
+ end
647
+ end
637
648
  end
638
649
 
639
650
  # creates LLVM::Int1, LLVM::Int64, etc
data/lib/llvm/version.rb CHANGED
@@ -2,6 +2,6 @@
2
2
 
3
3
  module LLVM
4
4
  LLVM_VERSION = "19"
5
- LLVM_REQUIRED_VERSION = "19.1.0"
6
- RUBY_LLVM_VERSION = "19.1.0"
5
+ LLVM_REQUIRED_VERSION = "19.1.2"
6
+ RUBY_LLVM_VERSION = "19.1.2"
7
7
  end
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.0
4
+ version: 19.1.2
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-09-25 00:00:00.000000000 Z
12
+ date: 2024-10-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: ffi