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 LLVMAnyComdatSelectionKind
, ///< The linker may choose any COMDAT.
24 LLVMExactMatchComdatSelectionKind
, ///< The data referenced by the COMDAT must
26 LLVMLargestComdatSelectionKind
, ///< The linker will choose the largest
28 LLVMNoDeduplicateComdatSelectionKind
, ///< No deduplication is performed.
29 LLVMSameSizeComdatSelectionKind
///< The data referenced by the COMDAT must be
31 } LLVMComdatSelectionKind
;
34 * Return the Comdat in the module with the specified name. It is created
35 * if it didn't already exist.
37 * @see llvm::Module::getOrInsertComdat()
39 LLVMComdatRef
LLVMGetOrInsertComdat(LLVMModuleRef M
, const char *Name
);
42 * Get the Comdat assigned to the given global object.
44 * @see llvm::GlobalObject::getComdat()
46 LLVMComdatRef
LLVMGetComdat(LLVMValueRef V
);
49 * Assign the Comdat to the given global object.
51 * @see llvm::GlobalObject::setComdat()
53 void LLVMSetComdat(LLVMValueRef V
, LLVMComdatRef C
);
56 * Get the conflict resolution selection kind for the Comdat.
58 * @see llvm::Comdat::getSelectionKind()
60 LLVMComdatSelectionKind
LLVMGetComdatSelectionKind(LLVMComdatRef C
);
63 * Set the conflict resolution selection kind for the Comdat.
65 * @see llvm::Comdat::setSelectionKind()
67 void LLVMSetComdatSelectionKind(LLVMComdatRef C
, LLVMComdatSelectionKind Kind
);