76 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			C++
		
	
	
	
| /*===-- llvm-c/Comdat.h - Module Comdat C Interface -------------*- C++ -*-===*\
 | |
| |*                                                                            *|
 | |
| |*                     The LLVM Compiler Infrastructure                       *|
 | |
| |*                                                                            *|
 | |
| |* This file is distributed under the University of Illinois Open Source      *|
 | |
| |* License. See LICENSE.TXT for details.                                      *|
 | |
| |*                                                                            *|
 | |
| |*===----------------------------------------------------------------------===*|
 | |
| |*                                                                            *|
 | |
| |* This file defines the C interface to COMDAT.                               *|
 | |
| |*                                                                            *|
 | |
| \*===----------------------------------------------------------------------===*/
 | |
| 
 | |
| #ifndef LLVM_C_COMDAT_H
 | |
| #define LLVM_C_COMDAT_H
 | |
| 
 | |
| #include "llvm-c/Types.h"
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| extern "C" {
 | |
| #endif
 | |
| 
 | |
| typedef enum {
 | |
|   LLVMAnyComdatSelectionKind,        ///< The linker may choose any COMDAT.
 | |
|   LLVMExactMatchComdatSelectionKind, ///< The data referenced by the COMDAT must
 | |
|                                      ///< be the same.
 | |
|   LLVMLargestComdatSelectionKind,    ///< The linker will choose the largest
 | |
|                                      ///< COMDAT.
 | |
|   LLVMNoDuplicatesComdatSelectionKind, ///< No other Module may specify this
 | |
|                                        ///< COMDAT.
 | |
|   LLVMSameSizeComdatSelectionKind ///< The data referenced by the COMDAT must be
 | |
|                                   ///< the same size.
 | |
| } LLVMComdatSelectionKind;
 | |
| 
 | |
| /**
 | |
|  * Return the Comdat in the module with the specified name. It is created
 | |
|  * if it didn't already exist.
 | |
|  *
 | |
|  * @see llvm::Module::getOrInsertComdat()
 | |
|  */
 | |
| LLVMComdatRef LLVMGetOrInsertComdat(LLVMModuleRef M, const char *Name);
 | |
| 
 | |
| /**
 | |
|  * Get the Comdat assigned to the given global object.
 | |
|  *
 | |
|  * @see llvm::GlobalObject::getComdat()
 | |
|  */
 | |
| LLVMComdatRef LLVMGetComdat(LLVMValueRef V);
 | |
| 
 | |
| /**
 | |
|  * Assign the Comdat to the given global object.
 | |
|  *
 | |
|  * @see llvm::GlobalObject::setComdat()
 | |
|  */
 | |
| void LLVMSetComdat(LLVMValueRef V, LLVMComdatRef C);
 | |
| 
 | |
| /*
 | |
|  * Get the conflict resolution selection kind for the Comdat.
 | |
|  *
 | |
|  * @see llvm::Comdat::getSelectionKind()
 | |
|  */
 | |
| LLVMComdatSelectionKind LLVMGetComdatSelectionKind(LLVMComdatRef C);
 | |
| 
 | |
| /*
 | |
|  * Set the conflict resolution selection kind for the Comdat.
 | |
|  *
 | |
|  * @see llvm::Comdat::setSelectionKind()
 | |
|  */
 | |
| void LLVMSetComdatSelectionKind(LLVMComdatRef C, LLVMComdatSelectionKind Kind);
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #endif
 |