Module: LLVM
- Defined in:
- lib/llvm/config.rb,
lib/llvm.rb,
lib/llvm/core.rb,
lib/llvm/linker.rb,
lib/llvm/target.rb,
lib/llvm/support.rb,
lib/llvm/version.rb,
lib/llvm/analysis.rb,
lib/llvm/core/type.rb,
lib/llvm/core/value.rb,
lib/llvm/core/module.rb,
lib/llvm/core/bitcode.rb,
lib/llvm/core/builder.rb,
lib/llvm/core/context.rb,
lib/llvm/transforms/ipo.rb,
lib/llvm/execution_engine.rb,
lib/llvm/core/pass_manager.rb,
lib/llvm/transforms/scalar.rb,
lib/llvm/transforms/builder.rb,
lib/llvm/transforms/vectorize.rb
Overview
Generated by ruby-llvm. Please do not change this file by hand.
Defined Under Namespace
Modules: C, CONFIG, PointerIdentity, Support Classes: Argument, BasicBlock, Builder, CallInst, Constant, ConstantArray, ConstantExpr, ConstantInt, ConstantReal, ConstantStruct, ConstantVector, Context, Double, ExecutionEngine, Float, Function, FunctionPassManager, FunctionType, GenericValue, GlobalAlias, GlobalValue, GlobalVariable, IndirectBr, Instruction, IntType, MCJITCompiler, MemoryBuffer, Module, PassManager, PassManagerBuilder, Phi, StructType, SwitchInst, Target, TargetDataLayout, TargetMachine, Type, User, Value
Constant Summary collapse
- LLVM_VERSION =
"13".freeze
- LLVM_REQUIRED_VERSION =
"13.0".freeze
- RUBY_LLVM_VERSION =
"13.0.0".freeze
- Int =
const_get("Int#{bits}")
- TRUE =
Boolean values
::LLVM::Int1.from_i(-1)
- FALSE =
::LLVM::Int1.from_i(0)
- JITCompiler =
MCJITCompiler
Class Method Summary collapse
-
.Array(ty, sz = 0) ⇒ Object
Shortcut to Type.array.
- .const_missing(const) ⇒ Object
- .Double(val) ⇒ Object
-
.Float(val) ⇒ Object
Create a LLVM::Float from a Ruby Float (val).
-
.Function(argtypes, rettype, options = {}) ⇒ Object
Shortcut to Type.function.
-
.init_jit(*args) ⇒ Object
A shorthand for Target.init_native.
-
.init_x86 ⇒ Object
deprecated
Deprecated.
Use LLVM.init_jit or LLVM::Target.init(‘X86’).
-
.Int(val) ⇒ Object
Creates a LLVM Int (subclass of ConstantInt) at the NATIVE_INT_SIZE from a integer (val).
- .load_library(libname) ⇒ Object
- .make_generic_value(ty, val) ⇒ Object
-
.Pointer(ty) ⇒ Object
Shortcut to Type.pointer.
-
.Struct(*elt_types) ⇒ Object
Shortcut to Type.struct.
-
.Type(ty) ⇒ Object
Creates a Type from the given object.
-
.Vector(ty, sz) ⇒ Object
Shortcut to Type.vector.
-
.Void ⇒ Object
Shortcut to Type.void.
-
.with_error_output {|FFI::MemoryPointer| ... } ⇒ nil
Same as #with_message_output, but raises a RuntimeError with the resulting message.
-
.with_message_output {|FFI::MemoryPointer| ... } ⇒ String?
Yields a pointer suitable for storing an LLVM output message.
Class Method Details
.Array(ty, sz = 0) ⇒ Object
Shortcut to Type.array.
176 177 178 |
# File 'lib/llvm/core/type.rb', line 176 def Array(ty, sz = 0) LLVM::Type.array(ty, sz) end |
.const_missing(const) ⇒ Object
488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 |
# File 'lib/llvm/core/value.rb', line 488 def self.const_missing(const) case const.to_s when /Int(\d+)/ width = Regexp.last_match(1).to_i name = "Int#{width}" eval <<-KLASS class #{name} < ConstantInt def self.type Type.from_ptr(C.int_type(#{width}), :integer) end end KLASS const_get(name) else super end end |
.Double(val) ⇒ Object
602 603 604 |
# File 'lib/llvm/core/value.rb', line 602 def self.Double(val) Double.from_f(val) end |
.Float(val) ⇒ Object
Create a LLVM::Float from a Ruby Float (val).
592 593 594 |
# File 'lib/llvm/core/value.rb', line 592 def self.Float(val) Float.from_f(val) end |
.Function(argtypes, rettype, options = {}) ⇒ Object
Shortcut to Type.function.
191 192 193 |
# File 'lib/llvm/core/type.rb', line 191 def Function(argtypes, rettype, = {}) LLVM::Type.function(argtypes, rettype, ) end |
.init_jit(*args) ⇒ Object
A shorthand for LLVM::Target.init_native
7 8 9 |
# File 'lib/llvm/target.rb', line 7 def self.init_jit(*args) LLVM::Target.init_native(*args) end |
.init_x86 ⇒ Object
Use LLVM.init_jit or LLVM::Target.init(‘X86’).
12 13 14 15 |
# File 'lib/llvm/target.rb', line 12 def self.init_x86 warn "LLVM.init_x86 is deprecated. Use LLVM.init_jit or LLVM::Target.init('X86')." LLVM::Target.init('X86') end |
.Int(val) ⇒ Object
Creates a LLVM Int (subclass of ConstantInt) at the NATIVE_INT_SIZE from a integer (val).
511 512 513 514 515 516 517 518 519 520 |
# File 'lib/llvm/core/value.rb', line 511 def self.Int(val) case val when LLVM::ConstantInt then val when Integer then Int.from_i(val) when Value return val if val.type.kind == :integer raise "value not of integer type: #{val.type.kind}" else raise "can't make an LLVM::ConstantInt from #{val.class.name}" end end |
.load_library(libname) ⇒ Object
31 32 33 34 35 36 37 |
# File 'lib/llvm/support.rb', line 31 def self.load_library(libname) if C.load_library_permanently(libname) != 0 raise "LLVM::Support.load_library failed" end nil end |
.make_generic_value(ty, val) ⇒ Object
312 313 314 315 316 317 318 319 320 321 |
# File 'lib/llvm/execution_engine.rb', line 312 def make_generic_value(ty, val) case ty.kind when :double then GenericValue.from_d(val) when :float then GenericValue.from_f(val) when :pointer then GenericValue.from_value_ptr(val) when :integer then GenericValue.from_i(val, :type => ty) else raise "Unsupported type #{ty.kind}." end end |
.Pointer(ty) ⇒ Object
Shortcut to Type.pointer.
181 182 183 |
# File 'lib/llvm/core/type.rb', line 181 def Pointer(ty) LLVM::Type.pointer(ty) end |
.Struct(*elt_types) ⇒ Object
Shortcut to Type.struct.
196 197 198 199 200 201 202 203 |
# File 'lib/llvm/core/type.rb', line 196 def Struct(*elt_types) name = if elt_types.last.is_a? String elt_types.pop else nil end LLVM::Type.struct(elt_types, false, name) end |
.Type(ty) ⇒ Object
Creates a Type from the given object.
168 169 170 171 172 173 |
# File 'lib/llvm/core/type.rb', line 168 def Type(ty) case ty when LLVM::Type then ty else ty.type end end |
.Vector(ty, sz) ⇒ Object
Shortcut to Type.vector.
186 187 188 |
# File 'lib/llvm/core/type.rb', line 186 def Vector(ty, sz) LLVM::Type.vector(ty, sz) end |
.Void ⇒ Object
Shortcut to Type.void.
206 207 208 |
# File 'lib/llvm/core/type.rb', line 206 def Void LLVM::Type.void end |
.with_error_output {|FFI::MemoryPointer| ... } ⇒ nil
Same as #with_message_output, but raises a RuntimeError with the resulting message.
84 85 86 87 88 |
# File 'lib/llvm/core.rb', line 84 def self.with_error_output(&block) error = (&block) raise error unless error.nil? end |
.with_message_output {|FFI::MemoryPointer| ... } ⇒ String?
Yields a pointer suitable for storing an LLVM output message. If the message pointer is non-NULL (an error has happened), converts the result to a string and returns it. Otherwise, returns nil
.
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/llvm/core.rb', line 60 def self. = nil FFI::MemoryPointer.new(FFI.type_size(:pointer)) do |str| result = yield str msg_ptr = str.read_pointer if result != 0 raise "Error is signalled, but msg_ptr is null" if msg_ptr.null? = msg_ptr.read_string C. msg_ptr end end end |