1 //===- bitreader.go - Bindings for bitreader ------------------------------===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // This file defines bindings for the bitreader component.
12 //===----------------------------------------------------------------------===//
17 #include "llvm-c/BitReader.h"
27 // ParseBitcodeFile parses the LLVM IR (bitcode) in the file with the
28 // specified name, and returns a new LLVM module.
29 func ParseBitcodeFile(name string) (Module, error) {
30 var buf C.LLVMMemoryBufferRef
32 var cfilename *C.char = C.CString(name)
33 defer C.free(unsafe.Pointer(cfilename))
34 result := C.LLVMCreateMemoryBufferWithContentsOfFile(cfilename, &buf, &errmsg)
36 err := errors.New(C.GoString(errmsg))
37 C.free(unsafe.Pointer(errmsg))
40 defer C.LLVMDisposeMemoryBuffer(buf)
43 if C.LLVMParseBitcode(buf, &m.C, &errmsg) == 0 {
47 err := errors.New(C.GoString(errmsg))
48 C.free(unsafe.Pointer(errmsg))