• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*===-- llvm-c/Comdat.h - Module Comdat C Interface -------------*- C++ -*-===*\
2 |*                                                                            *|
3 |*                     The LLVM Compiler Infrastructure                       *|
4 |*                                                                            *|
5 |* This file is distributed under the University of Illinois Open Source      *|
6 |* License. See LICENSE.TXT for details.                                      *|
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/Types.h"
18 
19 #ifdef __cplusplus
20 extern "C" {
21 #endif
22 
23 typedef enum {
24   LLVMAnyComdatSelectionKind,        ///< The linker may choose any COMDAT.
25   LLVMExactMatchComdatSelectionKind, ///< The data referenced by the COMDAT must
26                                      ///< be the same.
27   LLVMLargestComdatSelectionKind,    ///< The linker will choose the largest
28                                      ///< COMDAT.
29   LLVMNoDuplicatesComdatSelectionKind, ///< No other Module may specify this
30                                        ///< COMDAT.
31   LLVMSameSizeComdatSelectionKind ///< The data referenced by the COMDAT must be
32                                   ///< the same size.
33 } LLVMComdatSelectionKind;
34 
35 /**
36  * Return the Comdat in the module with the specified name. It is created
37  * if it didn't already exist.
38  *
39  * @see llvm::Module::getOrInsertComdat()
40  */
41 LLVMComdatRef LLVMGetOrInsertComdat(LLVMModuleRef M, const char *Name);
42 
43 /**
44  * Get the Comdat assigned to the given global object.
45  *
46  * @see llvm::GlobalObject::getComdat()
47  */
48 LLVMComdatRef LLVMGetComdat(LLVMValueRef V);
49 
50 /**
51  * Assign the Comdat to the given global object.
52  *
53  * @see llvm::GlobalObject::setComdat()
54  */
55 void LLVMSetComdat(LLVMValueRef V, LLVMComdatRef C);
56 
57 /*
58  * Get the conflict resolution selection kind for the Comdat.
59  *
60  * @see llvm::Comdat::getSelectionKind()
61  */
62 LLVMComdatSelectionKind LLVMGetComdatSelectionKind(LLVMComdatRef C);
63 
64 /*
65  * Set the conflict resolution selection kind for the Comdat.
66  *
67  * @see llvm::Comdat::setSelectionKind()
68  */
69 void LLVMSetComdatSelectionKind(LLVMComdatRef C, LLVMComdatSelectionKind Kind);
70 
71 #ifdef __cplusplus
72 }
73 #endif
74 
75 #endif
76