//===- irreader.go - Bindings for irreader --------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // This file defines bindings for the irreader component. // //===----------------------------------------------------------------------===// package llvm /* #include "llvm-c/Core.h" #include "llvm-c/IRReader.h" #include */ import "C" import ( "errors" ) // ParseIR parses the textual IR given in the memory buffer and returns a new // LLVM module in this context. func (c *Context) ParseIR(buf MemoryBuffer) (Module, error) { var m Module var errmsg *C.char if C.LLVMParseIRInContext(c.C, buf.C, &m.C, &errmsg) != 0 { err := errors.New(C.GoString(errmsg)) C.LLVMDisposeMessage(errmsg) return Module{}, err } return m, nil }