| /*===-- llvm-c/Comdat.h - Module Comdat 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 file defines the C interface to COMDAT. *| | |
| |* *| | |
| \*===----------------------------------------------------------------------===*/ | |
| #ifndef LLVM_C_COMDAT_H | |
| #define LLVM_C_COMDAT_H | |
| #include "llvm-c/ExternC.h" | |
| #include "llvm-c/Types.h" | |
| LLVM_C_EXTERN_C_BEGIN | |
| /** | |
| * @defgroup LLVMCCoreComdat Comdats | |
| * @ingroup LLVMCCore | |
| * | |
| * @{ | |
| */ | |
| typedef enum { | |
| LLVMAnyComdatSelectionKind, ///< The linker may choose any COMDAT. | |
| LLVMExactMatchComdatSelectionKind, ///< The data referenced by the COMDAT must | |
| ///< be the same. | |
| LLVMLargestComdatSelectionKind, ///< The linker will choose the largest | |
| ///< COMDAT. | |
| LLVMNoDeduplicateComdatSelectionKind, ///< No deduplication is performed. | |
| LLVMSameSizeComdatSelectionKind ///< The data referenced by the COMDAT must be | |
| ///< the same size. | |
| } LLVMComdatSelectionKind; | |
| /** | |
| * Return the Comdat in the module with the specified name. It is created | |
| * if it didn't already exist. | |
| * | |
| * @see llvm::Module::getOrInsertComdat() | |
| */ | |
| LLVMComdatRef LLVMGetOrInsertComdat(LLVMModuleRef M, const char *Name); | |
| /** | |
| * Get the Comdat assigned to the given global object. | |
| * | |
| * @see llvm::GlobalObject::getComdat() | |
| */ | |
| LLVMComdatRef LLVMGetComdat(LLVMValueRef V); | |
| /** | |
| * Assign the Comdat to the given global object. | |
| * | |
| * @see llvm::GlobalObject::setComdat() | |
| */ | |
| void LLVMSetComdat(LLVMValueRef V, LLVMComdatRef C); | |
| /* | |
| * Get the conflict resolution selection kind for the Comdat. | |
| * | |
| * @see llvm::Comdat::getSelectionKind() | |
| */ | |
| LLVMComdatSelectionKind LLVMGetComdatSelectionKind(LLVMComdatRef C); | |
| /* | |
| * Set the conflict resolution selection kind for the Comdat. | |
| * | |
| * @see llvm::Comdat::setSelectionKind() | |
| */ | |
| void LLVMSetComdatSelectionKind(LLVMComdatRef C, LLVMComdatSelectionKind Kind); | |
| /** | |
| * @} | |
| */ | |
| LLVM_C_EXTERN_C_END | |
| #endif |