Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-05-10 08:43:00

0001 /*===-- llvm-c/Comdat.h - Module Comdat C Interface -------------*- C++ -*-===*\
0002 |*                                                                            *|
0003 |* Part of the LLVM Project, under the Apache License v2.0 with LLVM          *|
0004 |* Exceptions.                                                                *|
0005 |* See https://llvm.org/LICENSE.txt for license information.                  *|
0006 |* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception                    *|
0007 |*                                                                            *|
0008 |*===----------------------------------------------------------------------===*|
0009 |*                                                                            *|
0010 |* This file defines the C interface to COMDAT.                               *|
0011 |*                                                                            *|
0012 \*===----------------------------------------------------------------------===*/
0013 
0014 #ifndef LLVM_C_COMDAT_H
0015 #define LLVM_C_COMDAT_H
0016 
0017 #include "llvm-c/ExternC.h"
0018 #include "llvm-c/Types.h"
0019 
0020 LLVM_C_EXTERN_C_BEGIN
0021 
0022 /**
0023  * @defgroup LLVMCCoreComdat Comdats
0024  * @ingroup LLVMCCore
0025  *
0026  * @{
0027  */
0028 
0029 typedef enum {
0030   LLVMAnyComdatSelectionKind,        ///< The linker may choose any COMDAT.
0031   LLVMExactMatchComdatSelectionKind, ///< The data referenced by the COMDAT must
0032                                      ///< be the same.
0033   LLVMLargestComdatSelectionKind,    ///< The linker will choose the largest
0034                                      ///< COMDAT.
0035   LLVMNoDeduplicateComdatSelectionKind, ///< No deduplication is performed.
0036   LLVMSameSizeComdatSelectionKind ///< The data referenced by the COMDAT must be
0037                                   ///< the same size.
0038 } LLVMComdatSelectionKind;
0039 
0040 /**
0041  * Return the Comdat in the module with the specified name. It is created
0042  * if it didn't already exist.
0043  *
0044  * @see llvm::Module::getOrInsertComdat()
0045  */
0046 LLVMComdatRef LLVMGetOrInsertComdat(LLVMModuleRef M, const char *Name);
0047 
0048 /**
0049  * Get the Comdat assigned to the given global object.
0050  *
0051  * @see llvm::GlobalObject::getComdat()
0052  */
0053 LLVMComdatRef LLVMGetComdat(LLVMValueRef V);
0054 
0055 /**
0056  * Assign the Comdat to the given global object.
0057  *
0058  * @see llvm::GlobalObject::setComdat()
0059  */
0060 void LLVMSetComdat(LLVMValueRef V, LLVMComdatRef C);
0061 
0062 /*
0063  * Get the conflict resolution selection kind for the Comdat.
0064  *
0065  * @see llvm::Comdat::getSelectionKind()
0066  */
0067 LLVMComdatSelectionKind LLVMGetComdatSelectionKind(LLVMComdatRef C);
0068 
0069 /*
0070  * Set the conflict resolution selection kind for the Comdat.
0071  *
0072  * @see llvm::Comdat::setSelectionKind()
0073  */
0074 void LLVMSetComdatSelectionKind(LLVMComdatRef C, LLVMComdatSelectionKind Kind);
0075 
0076 /**
0077  * @}
0078  */
0079 
0080 LLVM_C_EXTERN_C_END
0081 
0082 #endif