Index: llvm/branches/release_80/bindings/go/llvm/irreader.go =================================================================== --- llvm/branches/release_80/bindings/go/llvm/irreader.go +++ llvm/branches/release_80/bindings/go/llvm/irreader.go @@ -0,0 +1,37 @@ +//===- 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/IRReader.h" +#include +*/ +import "C" + +import ( + "errors" + "unsafe" +) + +// 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.free(unsafe.Pointer(errmsg)) + return Module{}, err + } + return m, nil +}