xref: /freebsd/contrib/llvm-project/llvm/include/llvm-c/IRReader.h (revision 0b57cec536236d46e3dba9bd041533462f33dbb7)
1*0b57cec5SDimitry Andric /*===-- llvm-c/IRReader.h - IR Reader C Interface -----------------*- C -*-===*\
2*0b57cec5SDimitry Andric |*                                                                            *|
3*0b57cec5SDimitry Andric |* Part of the LLVM Project, under the Apache License v2.0 with LLVM          *|
4*0b57cec5SDimitry Andric |* Exceptions.                                                                *|
5*0b57cec5SDimitry Andric |* See https://llvm.org/LICENSE.txt for license information.                  *|
6*0b57cec5SDimitry Andric |* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception                    *|
7*0b57cec5SDimitry Andric |*                                                                            *|
8*0b57cec5SDimitry Andric |*===----------------------------------------------------------------------===*|
9*0b57cec5SDimitry Andric |*                                                                            *|
10*0b57cec5SDimitry Andric |* This file defines the C interface to the IR Reader.                        *|
11*0b57cec5SDimitry Andric |*                                                                            *|
12*0b57cec5SDimitry Andric \*===----------------------------------------------------------------------===*/
13*0b57cec5SDimitry Andric 
14*0b57cec5SDimitry Andric #ifndef LLVM_C_IRREADER_H
15*0b57cec5SDimitry Andric #define LLVM_C_IRREADER_H
16*0b57cec5SDimitry Andric 
17*0b57cec5SDimitry Andric #include "llvm-c/Types.h"
18*0b57cec5SDimitry Andric 
19*0b57cec5SDimitry Andric #ifdef __cplusplus
20*0b57cec5SDimitry Andric extern "C" {
21*0b57cec5SDimitry Andric #endif
22*0b57cec5SDimitry Andric 
23*0b57cec5SDimitry Andric /**
24*0b57cec5SDimitry Andric  * Read LLVM IR from a memory buffer and convert it into an in-memory Module
25*0b57cec5SDimitry Andric  * object. Returns 0 on success.
26*0b57cec5SDimitry Andric  * Optionally returns a human-readable description of any errors that
27*0b57cec5SDimitry Andric  * occurred during parsing IR. OutMessage must be disposed with
28*0b57cec5SDimitry Andric  * LLVMDisposeMessage.
29*0b57cec5SDimitry Andric  *
30*0b57cec5SDimitry Andric  * @see llvm::ParseIR()
31*0b57cec5SDimitry Andric  */
32*0b57cec5SDimitry Andric LLVMBool LLVMParseIRInContext(LLVMContextRef ContextRef,
33*0b57cec5SDimitry Andric                               LLVMMemoryBufferRef MemBuf, LLVMModuleRef *OutM,
34*0b57cec5SDimitry Andric                               char **OutMessage);
35*0b57cec5SDimitry Andric 
36*0b57cec5SDimitry Andric #ifdef __cplusplus
37*0b57cec5SDimitry Andric }
38*0b57cec5SDimitry Andric #endif
39*0b57cec5SDimitry Andric 
40*0b57cec5SDimitry Andric #endif
41