Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/llvm-project/llvm/include/llvm-c/Comdat.h
35233 views
1
/*===-- llvm-c/Comdat.h - Module Comdat C Interface -------------*- C++ -*-===*\
2
|* *|
3
|* Part of the LLVM Project, under the Apache License v2.0 with LLVM *|
4
|* Exceptions. *|
5
|* See https://llvm.org/LICENSE.txt for license information. *|
6
|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *|
7
|* *|
8
|*===----------------------------------------------------------------------===*|
9
|* *|
10
|* This file defines the C interface to COMDAT. *|
11
|* *|
12
\*===----------------------------------------------------------------------===*/
13
14
#ifndef LLVM_C_COMDAT_H
15
#define LLVM_C_COMDAT_H
16
17
#include "llvm-c/ExternC.h"
18
#include "llvm-c/Types.h"
19
20
LLVM_C_EXTERN_C_BEGIN
21
22
/**
23
* @defgroup LLVMCCoreComdat Comdats
24
* @ingroup LLVMCCore
25
*
26
* @{
27
*/
28
29
typedef enum {
30
LLVMAnyComdatSelectionKind, ///< The linker may choose any COMDAT.
31
LLVMExactMatchComdatSelectionKind, ///< The data referenced by the COMDAT must
32
///< be the same.
33
LLVMLargestComdatSelectionKind, ///< The linker will choose the largest
34
///< COMDAT.
35
LLVMNoDeduplicateComdatSelectionKind, ///< No deduplication is performed.
36
LLVMSameSizeComdatSelectionKind ///< The data referenced by the COMDAT must be
37
///< the same size.
38
} LLVMComdatSelectionKind;
39
40
/**
41
* Return the Comdat in the module with the specified name. It is created
42
* if it didn't already exist.
43
*
44
* @see llvm::Module::getOrInsertComdat()
45
*/
46
LLVMComdatRef LLVMGetOrInsertComdat(LLVMModuleRef M, const char *Name);
47
48
/**
49
* Get the Comdat assigned to the given global object.
50
*
51
* @see llvm::GlobalObject::getComdat()
52
*/
53
LLVMComdatRef LLVMGetComdat(LLVMValueRef V);
54
55
/**
56
* Assign the Comdat to the given global object.
57
*
58
* @see llvm::GlobalObject::setComdat()
59
*/
60
void LLVMSetComdat(LLVMValueRef V, LLVMComdatRef C);
61
62
/*
63
* Get the conflict resolution selection kind for the Comdat.
64
*
65
* @see llvm::Comdat::getSelectionKind()
66
*/
67
LLVMComdatSelectionKind LLVMGetComdatSelectionKind(LLVMComdatRef C);
68
69
/*
70
* Set the conflict resolution selection kind for the Comdat.
71
*
72
* @see llvm::Comdat::setSelectionKind()
73
*/
74
void LLVMSetComdatSelectionKind(LLVMComdatRef C, LLVMComdatSelectionKind Kind);
75
76
/**
77
* @}
78
*/
79
80
LLVM_C_EXTERN_C_END
81
82
#endif
83
84