1 /*===-- llvm-c/Comdat.h - Module Comdat C Interface -------------*- C++ -*-===*\
3 |* Part of the LLVM Project, under the Apache License v2.0 with LLVM *|
5 |* See https://llvm.org/LICENSE.txt for license information. *|
6 |* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *|
8 |*===----------------------------------------------------------------------===*|
10 |* This file defines the C interface to COMDAT. *|
12 \*===----------------------------------------------------------------------===*/
14 #ifndef LLVM_C_COMDAT_H
15 #define LLVM_C_COMDAT_H
17 #include "llvm-c/ExternC.h"
18 #include "llvm-c/Types.h"
23 * @defgroup LLVMCCoreComdat Comdats
30 LLVMAnyComdatSelectionKind
, ///< The linker may choose any COMDAT.
31 LLVMExactMatchComdatSelectionKind
, ///< The data referenced by the COMDAT must
33 LLVMLargestComdatSelectionKind
, ///< The linker will choose the largest
35 LLVMNoDeduplicateComdatSelectionKind
, ///< No deduplication is performed.
36 LLVMSameSizeComdatSelectionKind
///< The data referenced by the COMDAT must be
38 } LLVMComdatSelectionKind
;
41 * Return the Comdat in the module with the specified name. It is created
42 * if it didn't already exist.
44 * @see llvm::Module::getOrInsertComdat()
46 LLVMComdatRef
LLVMGetOrInsertComdat(LLVMModuleRef M
, const char *Name
);
49 * Get the Comdat assigned to the given global object.
51 * @see llvm::GlobalObject::getComdat()
53 LLVMComdatRef
LLVMGetComdat(LLVMValueRef V
);
56 * Assign the Comdat to the given global object.
58 * @see llvm::GlobalObject::setComdat()
60 void LLVMSetComdat(LLVMValueRef V
, LLVMComdatRef C
);
63 * Get the conflict resolution selection kind for the Comdat.
65 * @see llvm::Comdat::getSelectionKind()
67 LLVMComdatSelectionKind
LLVMGetComdatSelectionKind(LLVMComdatRef C
);
70 * Set the conflict resolution selection kind for the Comdat.
72 * @see llvm::Comdat::setSelectionKind()
74 void LLVMSetComdatSelectionKind(LLVMComdatRef C
, LLVMComdatSelectionKind Kind
);