Method: LLVM::Module.parse_bitcode

Defined in:
lib/llvm/core/bitcode.rb

.parse_bitcode(path_or_memory_buffer) ⇒ LLVM::Module

Parse a module from a memory buffer

Parameters:

Returns:



8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/llvm/core/bitcode.rb', line 8

def self.parse_bitcode(path_or_memory_buffer)
  memory_buffer = case path_or_memory_buffer
                  when MemoryBuffer then path_or_memory_buffer
                  else MemoryBuffer.from_file(path_or_memory_buffer)
                  end
  FFI::MemoryPointer.new(:pointer) do |mod_ref|
    FFI::MemoryPointer.new(:pointer) do |msg_ref|
      status = C.parse_bitcode(memory_buffer, mod_ref, msg_ref)
      raise msg_ref.get_pointer(0).get_string(0) if status != 0
      return from_ptr(mod_ref.get_pointer(0))
    end
  end
end