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/Types.h"
24 LLVMAnyComdatSelectionKind
, ///< The linker may choose any COMDAT.
25 LLVMExactMatchComdatSelectionKind
, ///< The data referenced by the COMDAT must
27 LLVMLargestComdatSelectionKind
, ///< The linker will choose the largest
29 LLVMNoDuplicatesComdatSelectionKind
, ///< No other Module may specify this
31 LLVMSameSizeComdatSelectionKind
///< The data referenced by the COMDAT must be
33 } LLVMComdatSelectionKind
;
36 * Return the Comdat in the module with the specified name. It is created
37 * if it didn't already exist.
39 * @see llvm::Module::getOrInsertComdat()
41 LLVMComdatRef
LLVMGetOrInsertComdat(LLVMModuleRef M
, const char *Name
);
44 * Get the Comdat assigned to the given global object.
46 * @see llvm::GlobalObject::getComdat()
48 LLVMComdatRef
LLVMGetComdat(LLVMValueRef V
);
51 * Assign the Comdat to the given global object.
53 * @see llvm::GlobalObject::setComdat()
55 void LLVMSetComdat(LLVMValueRef V
, LLVMComdatRef C
);
58 * Get the conflict resolution selection kind for the Comdat.
60 * @see llvm::Comdat::getSelectionKind()
62 LLVMComdatSelectionKind
LLVMGetComdatSelectionKind(LLVMComdatRef C
);
65 * Set the conflict resolution selection kind for the Comdat.
67 * @see llvm::Comdat::setSelectionKind()
69 void LLVMSetComdatSelectionKind(LLVMComdatRef C
, LLVMComdatSelectionKind Kind
);