One of the most common mistakes when working with the LLVM C API is to mix functions that work on the global context and those that work on an explicit context. This often results in seemingly nonsensical errors because types from different contexts are mixed. We have considered the APIs working on the global context to be obsolete for a long time already, and do not add any new APIs using the global context. However, the fact that these still exist (and have shorter names) continues to cause issues. This PR proposes to deprecate these APIs, with intent to remove them at some point in the future. RFC: https://discourse.llvm.org/t/rfc-deprecate-c-api-functions-using-the-global-context/88639
105 lines
4.8 KiB
C++
105 lines
4.8 KiB
C++
/*===-- llvm-c/BitReader.h - BitReader Library C Interface ------*- C++ -*-===*\
|
|
|* *|
|
|
|* 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 header declares the C interface to libLLVMBitReader.a, which *|
|
|
|* implements input of the LLVM bitcode format. *|
|
|
|* *|
|
|
|* Many exotic languages can interoperate with C code but have a harder time *|
|
|
|* with C++ due to name mangling. So in addition to C, this interface enables *|
|
|
|* tools written in such languages. *|
|
|
|* *|
|
|
\*===----------------------------------------------------------------------===*/
|
|
|
|
#ifndef LLVM_C_BITREADER_H
|
|
#define LLVM_C_BITREADER_H
|
|
|
|
#include "llvm-c/Deprecated.h"
|
|
#include "llvm-c/ExternC.h"
|
|
#include "llvm-c/Types.h"
|
|
#include "llvm-c/Visibility.h"
|
|
|
|
LLVM_C_EXTERN_C_BEGIN
|
|
|
|
/**
|
|
* @defgroup LLVMCBitReader Bit Reader
|
|
* @ingroup LLVMC
|
|
*
|
|
* @{
|
|
*/
|
|
|
|
/* Builds a module from the bitcode in the specified memory buffer, returning a
|
|
reference to the module via the OutModule parameter. Returns 0 on success.
|
|
Optionally returns a human-readable error message via OutMessage.
|
|
|
|
This is deprecated. Use LLVMParseBitcode2. */
|
|
LLVM_C_ABI LLVM_ATTRIBUTE_C_DEPRECATED(
|
|
LLVMBool LLVMParseBitcode(LLVMMemoryBufferRef MemBuf,
|
|
LLVMModuleRef *OutModule, char **OutMessage),
|
|
"Use of the global context is deprecated, use LLVMParseBitcodeInContext2 "
|
|
"instead");
|
|
|
|
/* Builds a module from the bitcode in the specified memory buffer, returning a
|
|
reference to the module via the OutModule parameter. Returns 0 on success. */
|
|
LLVM_C_ABI LLVM_ATTRIBUTE_C_DEPRECATED(
|
|
LLVMBool LLVMParseBitcode2(LLVMMemoryBufferRef MemBuf,
|
|
LLVMModuleRef *OutModule),
|
|
"Use of the global context is deprecated, use LLVMParseBitcodeInContext2 "
|
|
"instead");
|
|
|
|
/* This is deprecated. Use LLVMParseBitcodeInContext2. */
|
|
LLVM_C_ABI LLVMBool LLVMParseBitcodeInContext(LLVMContextRef ContextRef,
|
|
LLVMMemoryBufferRef MemBuf,
|
|
LLVMModuleRef *OutModule,
|
|
char **OutMessage);
|
|
|
|
LLVM_C_ABI LLVMBool LLVMParseBitcodeInContext2(LLVMContextRef ContextRef,
|
|
LLVMMemoryBufferRef MemBuf,
|
|
LLVMModuleRef *OutModule);
|
|
|
|
/** Reads a module from the specified path, returning via the OutMP parameter
|
|
a module provider which performs lazy deserialization. Returns 0 on success.
|
|
Optionally returns a human-readable error message via OutMessage.
|
|
This is deprecated. Use LLVMGetBitcodeModuleInContext2. */
|
|
LLVM_C_ABI LLVMBool LLVMGetBitcodeModuleInContext(LLVMContextRef ContextRef,
|
|
LLVMMemoryBufferRef MemBuf,
|
|
LLVMModuleRef *OutM,
|
|
char **OutMessage);
|
|
|
|
/** Reads a module from the given memory buffer, returning via the OutMP
|
|
* parameter a module provider which performs lazy deserialization.
|
|
*
|
|
* Returns 0 on success.
|
|
*
|
|
* Takes ownership of \p MemBuf if (and only if) the module was read
|
|
* successfully. */
|
|
LLVM_C_ABI LLVMBool LLVMGetBitcodeModuleInContext2(LLVMContextRef ContextRef,
|
|
LLVMMemoryBufferRef MemBuf,
|
|
LLVMModuleRef *OutM);
|
|
|
|
/* This is deprecated. Use LLVMGetBitcodeModule2. */
|
|
LLVM_C_ABI LLVM_ATTRIBUTE_C_DEPRECATED(
|
|
LLVMBool LLVMGetBitcodeModule(LLVMMemoryBufferRef MemBuf,
|
|
LLVMModuleRef *OutM, char **OutMessage),
|
|
"Use of the global context is deprecated, use "
|
|
"LLVMGetBitcodeModuleInContext2 instead");
|
|
|
|
LLVM_C_ABI LLVM_ATTRIBUTE_C_DEPRECATED(
|
|
LLVMBool LLVMGetBitcodeModule2(LLVMMemoryBufferRef MemBuf,
|
|
LLVMModuleRef *OutM),
|
|
"Use of the global context is deprecated, use "
|
|
"LLVMGetBitcodeModuleInContext2 instead");
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
LLVM_C_EXTERN_C_END
|
|
|
|
#endif
|