summaryrefslogtreecommitdiffstats
path: root/gnu/llvm/include/llvm-c
diff options
context:
space:
mode:
authorpatrick <patrick@openbsd.org>2020-08-03 15:06:44 +0000
committerpatrick <patrick@openbsd.org>2020-08-03 15:06:44 +0000
commitb64793999546ed8adebaeebd9d8345d18db8927d (patch)
tree4357c27b561d73b0e089727c6ed659f2ceff5f47 /gnu/llvm/include/llvm-c
parentAdd support for UTF-8 DISPLAY-HINTs with octet length. For now only (diff)
downloadwireguard-openbsd-b64793999546ed8adebaeebd9d8345d18db8927d.tar.xz
wireguard-openbsd-b64793999546ed8adebaeebd9d8345d18db8927d.zip
Remove LLVM 8.0.1 files.
Diffstat (limited to 'gnu/llvm/include/llvm-c')
-rw-r--r--gnu/llvm/include/llvm-c/Analysis.h65
-rw-r--r--gnu/llvm/include/llvm-c/BitReader.h85
-rw-r--r--gnu/llvm/include/llvm-c/BitWriter.h59
-rw-r--r--gnu/llvm/include/llvm-c/Comdat.h75
-rw-r--r--gnu/llvm/include/llvm-c/Core.h3906
-rw-r--r--gnu/llvm/include/llvm-c/DataTypes.h90
-rw-r--r--gnu/llvm/include/llvm-c/DebugInfo.h1194
-rw-r--r--gnu/llvm/include/llvm-c/Disassembler.h113
-rw-r--r--gnu/llvm/include/llvm-c/DisassemblerTypes.h160
-rw-r--r--gnu/llvm/include/llvm-c/Error.h69
-rw-r--r--gnu/llvm/include/llvm-c/ErrorHandling.h49
-rw-r--r--gnu/llvm/include/llvm-c/ExecutionEngine.h200
-rw-r--r--gnu/llvm/include/llvm-c/IRReader.h40
-rw-r--r--gnu/llvm/include/llvm-c/Initialization.h56
-rw-r--r--gnu/llvm/include/llvm-c/LinkTimeOptimizer.h69
-rw-r--r--gnu/llvm/include/llvm-c/Linker.h41
-rw-r--r--gnu/llvm/include/llvm-c/Object.h100
-rw-r--r--gnu/llvm/include/llvm-c/OptRemarks.h204
-rw-r--r--gnu/llvm/include/llvm-c/OrcBindings.h172
-rw-r--r--gnu/llvm/include/llvm-c/Support.h65
-rw-r--r--gnu/llvm/include/llvm-c/Target.h299
-rw-r--r--gnu/llvm/include/llvm-c/TargetMachine.h163
-rw-r--r--gnu/llvm/include/llvm-c/Transforms/AggressiveInstCombine.h43
-rw-r--r--gnu/llvm/include/llvm-c/Transforms/Coroutines.h55
-rw-r--r--gnu/llvm/include/llvm-c/Transforms/IPO.h84
-rw-r--r--gnu/llvm/include/llvm-c/Transforms/InstCombine.h43
-rw-r--r--gnu/llvm/include/llvm-c/Transforms/PassManagerBuilder.h90
-rw-r--r--gnu/llvm/include/llvm-c/Transforms/Scalar.h167
-rw-r--r--gnu/llvm/include/llvm-c/Transforms/Utils.h50
-rw-r--r--gnu/llvm/include/llvm-c/Transforms/Vectorize.h50
-rw-r--r--gnu/llvm/include/llvm-c/Types.h174
-rw-r--r--gnu/llvm/include/llvm-c/lto.h859
-rw-r--r--gnu/llvm/include/llvm-c/module.modulemap4
33 files changed, 0 insertions, 8893 deletions
diff --git a/gnu/llvm/include/llvm-c/Analysis.h b/gnu/llvm/include/llvm-c/Analysis.h
deleted file mode 100644
index 36dcb89e0e0..00000000000
--- a/gnu/llvm/include/llvm-c/Analysis.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*===-- llvm-c/Analysis.h - Analysis Library 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 header declares the C interface to libLLVMAnalysis.a, which *|
-|* implements various analyses of the LLVM IR. *|
-|* *|
-|* Many exotic languages can interoperate with C code but have a harder time *|
-|* with C++ due to name mangling. So in addition to C, this interface enables *|
-|* tools written in such languages. *|
-|* *|
-\*===----------------------------------------------------------------------===*/
-
-#ifndef LLVM_C_ANALYSIS_H
-#define LLVM_C_ANALYSIS_H
-
-#include "llvm-c/Types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup LLVMCAnalysis Analysis
- * @ingroup LLVMC
- *
- * @{
- */
-
-typedef enum {
- LLVMAbortProcessAction, /* verifier will print to stderr and abort() */
- LLVMPrintMessageAction, /* verifier will print to stderr and return 1 */
- LLVMReturnStatusAction /* verifier will just return 1 */
-} LLVMVerifierFailureAction;
-
-
-/* Verifies that a module is valid, taking the specified action if not.
- Optionally returns a human-readable description of any invalid constructs.
- OutMessage must be disposed with LLVMDisposeMessage. */
-LLVMBool LLVMVerifyModule(LLVMModuleRef M, LLVMVerifierFailureAction Action,
- char **OutMessage);
-
-/* Verifies that a single function is valid, taking the specified action. Useful
- for debugging. */
-LLVMBool LLVMVerifyFunction(LLVMValueRef Fn, LLVMVerifierFailureAction Action);
-
-/* Open up a ghostview window that displays the CFG of the current function.
- Useful for debugging. */
-void LLVMViewFunctionCFG(LLVMValueRef Fn);
-void LLVMViewFunctionCFGOnly(LLVMValueRef Fn);
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/gnu/llvm/include/llvm-c/BitReader.h b/gnu/llvm/include/llvm-c/BitReader.h
deleted file mode 100644
index d1fc302767b..00000000000
--- a/gnu/llvm/include/llvm-c/BitReader.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/*===-- llvm-c/BitReader.h - BitReader Library 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 header declares the C interface to libLLVMBitReader.a, which *|
-|* implements input of the LLVM bitcode format. *|
-|* *|
-|* Many exotic languages can interoperate with C code but have a harder time *|
-|* with C++ due to name mangling. So in addition to C, this interface enables *|
-|* tools written in such languages. *|
-|* *|
-\*===----------------------------------------------------------------------===*/
-
-#ifndef LLVM_C_BITREADER_H
-#define LLVM_C_BITREADER_H
-
-#include "llvm-c/Types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup LLVMCBitReader Bit Reader
- * @ingroup LLVMC
- *
- * @{
- */
-
-/* Builds a module from the bitcode in the specified memory buffer, returning a
- reference to the module via the OutModule parameter. Returns 0 on success.
- Optionally returns a human-readable error message via OutMessage.
-
- This is deprecated. Use LLVMParseBitcode2. */
-LLVMBool LLVMParseBitcode(LLVMMemoryBufferRef MemBuf, LLVMModuleRef *OutModule,
- char **OutMessage);
-
-/* Builds a module from the bitcode in the specified memory buffer, returning a
- reference to the module via the OutModule parameter. Returns 0 on success. */
-LLVMBool LLVMParseBitcode2(LLVMMemoryBufferRef MemBuf,
- LLVMModuleRef *OutModule);
-
-/* This is deprecated. Use LLVMParseBitcodeInContext2. */
-LLVMBool LLVMParseBitcodeInContext(LLVMContextRef ContextRef,
- LLVMMemoryBufferRef MemBuf,
- LLVMModuleRef *OutModule, char **OutMessage);
-
-LLVMBool LLVMParseBitcodeInContext2(LLVMContextRef ContextRef,
- LLVMMemoryBufferRef MemBuf,
- LLVMModuleRef *OutModule);
-
-/** Reads a module from the specified path, returning via the OutMP parameter
- a module provider which performs lazy deserialization. Returns 0 on success.
- Optionally returns a human-readable error message via OutMessage.
- This is deprecated. Use LLVMGetBitcodeModuleInContext2. */
-LLVMBool LLVMGetBitcodeModuleInContext(LLVMContextRef ContextRef,
- LLVMMemoryBufferRef MemBuf,
- LLVMModuleRef *OutM, char **OutMessage);
-
-/** Reads a module from the specified path, returning via the OutMP parameter a
- * module provider which performs lazy deserialization. Returns 0 on success. */
-LLVMBool LLVMGetBitcodeModuleInContext2(LLVMContextRef ContextRef,
- LLVMMemoryBufferRef MemBuf,
- LLVMModuleRef *OutM);
-
-/* This is deprecated. Use LLVMGetBitcodeModule2. */
-LLVMBool LLVMGetBitcodeModule(LLVMMemoryBufferRef MemBuf, LLVMModuleRef *OutM,
- char **OutMessage);
-
-LLVMBool LLVMGetBitcodeModule2(LLVMMemoryBufferRef MemBuf, LLVMModuleRef *OutM);
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/gnu/llvm/include/llvm-c/BitWriter.h b/gnu/llvm/include/llvm-c/BitWriter.h
deleted file mode 100644
index 797d03179ab..00000000000
--- a/gnu/llvm/include/llvm-c/BitWriter.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*===-- llvm-c/BitWriter.h - BitWriter Library 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 header declares the C interface to libLLVMBitWriter.a, which *|
-|* implements output of the LLVM bitcode format. *|
-|* *|
-|* Many exotic languages can interoperate with C code but have a harder time *|
-|* with C++ due to name mangling. So in addition to C, this interface enables *|
-|* tools written in such languages. *|
-|* *|
-\*===----------------------------------------------------------------------===*/
-
-#ifndef LLVM_C_BITWRITER_H
-#define LLVM_C_BITWRITER_H
-
-#include "llvm-c/Types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup LLVMCBitWriter Bit Writer
- * @ingroup LLVMC
- *
- * @{
- */
-
-/*===-- Operations on modules ---------------------------------------------===*/
-
-/** Writes a module to the specified path. Returns 0 on success. */
-int LLVMWriteBitcodeToFile(LLVMModuleRef M, const char *Path);
-
-/** Writes a module to an open file descriptor. Returns 0 on success. */
-int LLVMWriteBitcodeToFD(LLVMModuleRef M, int FD, int ShouldClose,
- int Unbuffered);
-
-/** Deprecated for LLVMWriteBitcodeToFD. Writes a module to an open file
- descriptor. Returns 0 on success. Closes the Handle. */
-int LLVMWriteBitcodeToFileHandle(LLVMModuleRef M, int Handle);
-
-/** Writes a module to a new memory buffer and returns it. */
-LLVMMemoryBufferRef LLVMWriteBitcodeToMemoryBuffer(LLVMModuleRef M);
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/gnu/llvm/include/llvm-c/Comdat.h b/gnu/llvm/include/llvm-c/Comdat.h
deleted file mode 100644
index 499996d68a5..00000000000
--- a/gnu/llvm/include/llvm-c/Comdat.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/*===-- 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
diff --git a/gnu/llvm/include/llvm-c/Core.h b/gnu/llvm/include/llvm-c/Core.h
deleted file mode 100644
index 06de058bdc5..00000000000
--- a/gnu/llvm/include/llvm-c/Core.h
+++ /dev/null
@@ -1,3906 +0,0 @@
-/*===-- llvm-c/Core.h - Core Library 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 header declares the C interface to libLLVMCore.a, which implements *|
-|* the LLVM intermediate representation. *|
-|* *|
-\*===----------------------------------------------------------------------===*/
-
-#ifndef LLVM_C_CORE_H
-#define LLVM_C_CORE_H
-
-#include "llvm-c/ErrorHandling.h"
-#include "llvm-c/Types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup LLVMC LLVM-C: C interface to LLVM
- *
- * This module exposes parts of the LLVM library as a C API.
- *
- * @{
- */
-
-/**
- * @defgroup LLVMCTransforms Transforms
- */
-
-/**
- * @defgroup LLVMCCore Core
- *
- * This modules provide an interface to libLLVMCore, which implements
- * the LLVM intermediate representation as well as other related types
- * and utilities.
- *
- * Many exotic languages can interoperate with C code but have a harder time
- * with C++ due to name mangling. So in addition to C, this interface enables
- * tools written in such languages.
- *
- * @{
- */
-
-/**
- * @defgroup LLVMCCoreTypes Types and Enumerations
- *
- * @{
- */
-
-/// External users depend on the following values being stable. It is not safe
-/// to reorder them.
-typedef enum {
- /* Terminator Instructions */
- LLVMRet = 1,
- LLVMBr = 2,
- LLVMSwitch = 3,
- LLVMIndirectBr = 4,
- LLVMInvoke = 5,
- /* removed 6 due to API changes */
- LLVMUnreachable = 7,
-
- /* Standard Unary Operators */
- LLVMFNeg = 66,
-
- /* Standard Binary Operators */
- LLVMAdd = 8,
- LLVMFAdd = 9,
- LLVMSub = 10,
- LLVMFSub = 11,
- LLVMMul = 12,
- LLVMFMul = 13,
- LLVMUDiv = 14,
- LLVMSDiv = 15,
- LLVMFDiv = 16,
- LLVMURem = 17,
- LLVMSRem = 18,
- LLVMFRem = 19,
-
- /* Logical Operators */
- LLVMShl = 20,
- LLVMLShr = 21,
- LLVMAShr = 22,
- LLVMAnd = 23,
- LLVMOr = 24,
- LLVMXor = 25,
-
- /* Memory Operators */
- LLVMAlloca = 26,
- LLVMLoad = 27,
- LLVMStore = 28,
- LLVMGetElementPtr = 29,
-
- /* Cast Operators */
- LLVMTrunc = 30,
- LLVMZExt = 31,
- LLVMSExt = 32,
- LLVMFPToUI = 33,
- LLVMFPToSI = 34,
- LLVMUIToFP = 35,
- LLVMSIToFP = 36,
- LLVMFPTrunc = 37,
- LLVMFPExt = 38,
- LLVMPtrToInt = 39,
- LLVMIntToPtr = 40,
- LLVMBitCast = 41,
- LLVMAddrSpaceCast = 60,
-
- /* Other Operators */
- LLVMICmp = 42,
- LLVMFCmp = 43,
- LLVMPHI = 44,
- LLVMCall = 45,
- LLVMSelect = 46,
- LLVMUserOp1 = 47,
- LLVMUserOp2 = 48,
- LLVMVAArg = 49,
- LLVMExtractElement = 50,
- LLVMInsertElement = 51,
- LLVMShuffleVector = 52,
- LLVMExtractValue = 53,
- LLVMInsertValue = 54,
-
- /* Atomic operators */
- LLVMFence = 55,
- LLVMAtomicCmpXchg = 56,
- LLVMAtomicRMW = 57,
-
- /* Exception Handling Operators */
- LLVMResume = 58,
- LLVMLandingPad = 59,
- LLVMCleanupRet = 61,
- LLVMCatchRet = 62,
- LLVMCatchPad = 63,
- LLVMCleanupPad = 64,
- LLVMCatchSwitch = 65
-} LLVMOpcode;
-
-typedef enum {
- LLVMVoidTypeKind, /**< type with no size */
- LLVMHalfTypeKind, /**< 16 bit floating point type */
- LLVMFloatTypeKind, /**< 32 bit floating point type */
- LLVMDoubleTypeKind, /**< 64 bit floating point type */
- LLVMX86_FP80TypeKind, /**< 80 bit floating point type (X87) */
- LLVMFP128TypeKind, /**< 128 bit floating point type (112-bit mantissa)*/
- LLVMPPC_FP128TypeKind, /**< 128 bit floating point type (two 64-bits) */
- LLVMLabelTypeKind, /**< Labels */
- LLVMIntegerTypeKind, /**< Arbitrary bit width integers */
- LLVMFunctionTypeKind, /**< Functions */
- LLVMStructTypeKind, /**< Structures */
- LLVMArrayTypeKind, /**< Arrays */
- LLVMPointerTypeKind, /**< Pointers */
- LLVMVectorTypeKind, /**< SIMD 'packed' format, or other vector type */
- LLVMMetadataTypeKind, /**< Metadata */
- LLVMX86_MMXTypeKind, /**< X86 MMX */
- LLVMTokenTypeKind /**< Tokens */
-} LLVMTypeKind;
-
-typedef enum {
- LLVMExternalLinkage, /**< Externally visible function */
- LLVMAvailableExternallyLinkage,
- LLVMLinkOnceAnyLinkage, /**< Keep one copy of function when linking (inline)*/
- LLVMLinkOnceODRLinkage, /**< Same, but only replaced by something
- equivalent. */
- LLVMLinkOnceODRAutoHideLinkage, /**< Obsolete */
- LLVMWeakAnyLinkage, /**< Keep one copy of function when linking (weak) */
- LLVMWeakODRLinkage, /**< Same, but only replaced by something
- equivalent. */
- LLVMAppendingLinkage, /**< Special purpose, only applies to global arrays */
- LLVMInternalLinkage, /**< Rename collisions when linking (static
- functions) */
- LLVMPrivateLinkage, /**< Like Internal, but omit from symbol table */
- LLVMDLLImportLinkage, /**< Obsolete */
- LLVMDLLExportLinkage, /**< Obsolete */
- LLVMExternalWeakLinkage,/**< ExternalWeak linkage description */
- LLVMGhostLinkage, /**< Obsolete */
- LLVMCommonLinkage, /**< Tentative definitions */
- LLVMLinkerPrivateLinkage, /**< Like Private, but linker removes. */
- LLVMLinkerPrivateWeakLinkage /**< Like LinkerPrivate, but is weak. */
-} LLVMLinkage;
-
-typedef enum {
- LLVMDefaultVisibility, /**< The GV is visible */
- LLVMHiddenVisibility, /**< The GV is hidden */
- LLVMProtectedVisibility /**< The GV is protected */
-} LLVMVisibility;
-
-typedef enum {
- LLVMNoUnnamedAddr, /**< Address of the GV is significant. */
- LLVMLocalUnnamedAddr, /**< Address of the GV is locally insignificant. */
- LLVMGlobalUnnamedAddr /**< Address of the GV is globally insignificant. */
-} LLVMUnnamedAddr;
-
-typedef enum {
- LLVMDefaultStorageClass = 0,
- LLVMDLLImportStorageClass = 1, /**< Function to be imported from DLL. */
- LLVMDLLExportStorageClass = 2 /**< Function to be accessible from DLL. */
-} LLVMDLLStorageClass;
-
-typedef enum {
- LLVMCCallConv = 0,
- LLVMFastCallConv = 8,
- LLVMColdCallConv = 9,
- LLVMGHCCallConv = 10,
- LLVMHiPECallConv = 11,
- LLVMWebKitJSCallConv = 12,
- LLVMAnyRegCallConv = 13,
- LLVMPreserveMostCallConv = 14,
- LLVMPreserveAllCallConv = 15,
- LLVMSwiftCallConv = 16,
- LLVMCXXFASTTLSCallConv = 17,
- LLVMX86StdcallCallConv = 64,
- LLVMX86FastcallCallConv = 65,
- LLVMARMAPCSCallConv = 66,
- LLVMARMAAPCSCallConv = 67,
- LLVMARMAAPCSVFPCallConv = 68,
- LLVMMSP430INTRCallConv = 69,
- LLVMX86ThisCallCallConv = 70,
- LLVMPTXKernelCallConv = 71,
- LLVMPTXDeviceCallConv = 72,
- LLVMSPIRFUNCCallConv = 75,
- LLVMSPIRKERNELCallConv = 76,
- LLVMIntelOCLBICallConv = 77,
- LLVMX8664SysVCallConv = 78,
- LLVMWin64CallConv = 79,
- LLVMX86VectorCallCallConv = 80,
- LLVMHHVMCallConv = 81,
- LLVMHHVMCCallConv = 82,
- LLVMX86INTRCallConv = 83,
- LLVMAVRINTRCallConv = 84,
- LLVMAVRSIGNALCallConv = 85,
- LLVMAVRBUILTINCallConv = 86,
- LLVMAMDGPUVSCallConv = 87,
- LLVMAMDGPUGSCallConv = 88,
- LLVMAMDGPUPSCallConv = 89,
- LLVMAMDGPUCSCallConv = 90,
- LLVMAMDGPUKERNELCallConv = 91,
- LLVMX86RegCallCallConv = 92,
- LLVMAMDGPUHSCallConv = 93,
- LLVMMSP430BUILTINCallConv = 94,
- LLVMAMDGPULSCallConv = 95,
- LLVMAMDGPUESCallConv = 96
-} LLVMCallConv;
-
-typedef enum {
- LLVMArgumentValueKind,
- LLVMBasicBlockValueKind,
- LLVMMemoryUseValueKind,
- LLVMMemoryDefValueKind,
- LLVMMemoryPhiValueKind,
-
- LLVMFunctionValueKind,
- LLVMGlobalAliasValueKind,
- LLVMGlobalIFuncValueKind,
- LLVMGlobalVariableValueKind,
- LLVMBlockAddressValueKind,
- LLVMConstantExprValueKind,
- LLVMConstantArrayValueKind,
- LLVMConstantStructValueKind,
- LLVMConstantVectorValueKind,
-
- LLVMUndefValueValueKind,
- LLVMConstantAggregateZeroValueKind,
- LLVMConstantDataArrayValueKind,
- LLVMConstantDataVectorValueKind,
- LLVMConstantIntValueKind,
- LLVMConstantFPValueKind,
- LLVMConstantPointerNullValueKind,
- LLVMConstantTokenNoneValueKind,
-
- LLVMMetadataAsValueValueKind,
- LLVMInlineAsmValueKind,
-
- LLVMInstructionValueKind,
-} LLVMValueKind;
-
-typedef enum {
- LLVMIntEQ = 32, /**< equal */
- LLVMIntNE, /**< not equal */
- LLVMIntUGT, /**< unsigned greater than */
- LLVMIntUGE, /**< unsigned greater or equal */
- LLVMIntULT, /**< unsigned less than */
- LLVMIntULE, /**< unsigned less or equal */
- LLVMIntSGT, /**< signed greater than */
- LLVMIntSGE, /**< signed greater or equal */
- LLVMIntSLT, /**< signed less than */
- LLVMIntSLE /**< signed less or equal */
-} LLVMIntPredicate;
-
-typedef enum {
- LLVMRealPredicateFalse, /**< Always false (always folded) */
- LLVMRealOEQ, /**< True if ordered and equal */
- LLVMRealOGT, /**< True if ordered and greater than */
- LLVMRealOGE, /**< True if ordered and greater than or equal */
- LLVMRealOLT, /**< True if ordered and less than */
- LLVMRealOLE, /**< True if ordered and less than or equal */
- LLVMRealONE, /**< True if ordered and operands are unequal */
- LLVMRealORD, /**< True if ordered (no nans) */
- LLVMRealUNO, /**< True if unordered: isnan(X) | isnan(Y) */
- LLVMRealUEQ, /**< True if unordered or equal */
- LLVMRealUGT, /**< True if unordered or greater than */
- LLVMRealUGE, /**< True if unordered, greater than, or equal */
- LLVMRealULT, /**< True if unordered or less than */
- LLVMRealULE, /**< True if unordered, less than, or equal */
- LLVMRealUNE, /**< True if unordered or not equal */
- LLVMRealPredicateTrue /**< Always true (always folded) */
-} LLVMRealPredicate;
-
-typedef enum {
- LLVMLandingPadCatch, /**< A catch clause */
- LLVMLandingPadFilter /**< A filter clause */
-} LLVMLandingPadClauseTy;
-
-typedef enum {
- LLVMNotThreadLocal = 0,
- LLVMGeneralDynamicTLSModel,
- LLVMLocalDynamicTLSModel,
- LLVMInitialExecTLSModel,
- LLVMLocalExecTLSModel
-} LLVMThreadLocalMode;
-
-typedef enum {
- LLVMAtomicOrderingNotAtomic = 0, /**< A load or store which is not atomic */
- LLVMAtomicOrderingUnordered = 1, /**< Lowest level of atomicity, guarantees
- somewhat sane results, lock free. */
- LLVMAtomicOrderingMonotonic = 2, /**< guarantees that if you take all the
- operations affecting a specific address,
- a consistent ordering exists */
- LLVMAtomicOrderingAcquire = 4, /**< Acquire provides a barrier of the sort
- necessary to acquire a lock to access other
- memory with normal loads and stores. */
- LLVMAtomicOrderingRelease = 5, /**< Release is similar to Acquire, but with
- a barrier of the sort necessary to release
- a lock. */
- LLVMAtomicOrderingAcquireRelease = 6, /**< provides both an Acquire and a
- Release barrier (for fences and
- operations which both read and write
- memory). */
- LLVMAtomicOrderingSequentiallyConsistent = 7 /**< provides Acquire semantics
- for loads and Release
- semantics for stores.
- Additionally, it guarantees
- that a total ordering exists
- between all
- SequentiallyConsistent
- operations. */
-} LLVMAtomicOrdering;
-
-typedef enum {
- LLVMAtomicRMWBinOpXchg, /**< Set the new value and return the one old */
- LLVMAtomicRMWBinOpAdd, /**< Add a value and return the old one */
- LLVMAtomicRMWBinOpSub, /**< Subtract a value and return the old one */
- LLVMAtomicRMWBinOpAnd, /**< And a value and return the old one */
- LLVMAtomicRMWBinOpNand, /**< Not-And a value and return the old one */
- LLVMAtomicRMWBinOpOr, /**< OR a value and return the old one */
- LLVMAtomicRMWBinOpXor, /**< Xor a value and return the old one */
- LLVMAtomicRMWBinOpMax, /**< Sets the value if it's greater than the
- original using a signed comparison and return
- the old one */
- LLVMAtomicRMWBinOpMin, /**< Sets the value if it's Smaller than the
- original using a signed comparison and return
- the old one */
- LLVMAtomicRMWBinOpUMax, /**< Sets the value if it's greater than the
- original using an unsigned comparison and return
- the old one */
- LLVMAtomicRMWBinOpUMin /**< Sets the value if it's greater than the
- original using an unsigned comparison and return
- the old one */
-} LLVMAtomicRMWBinOp;
-
-typedef enum {
- LLVMDSError,
- LLVMDSWarning,
- LLVMDSRemark,
- LLVMDSNote
-} LLVMDiagnosticSeverity;
-
-typedef enum {
- LLVMInlineAsmDialectATT,
- LLVMInlineAsmDialectIntel
-} LLVMInlineAsmDialect;
-
-typedef enum {
- /**
- * Emits an error if two values disagree, otherwise the resulting value is
- * that of the operands.
- *
- * @see Module::ModFlagBehavior::Error
- */
- LLVMModuleFlagBehaviorError,
- /**
- * Emits a warning if two values disagree. The result value will be the
- * operand for the flag from the first module being linked.
- *
- * @see Module::ModFlagBehavior::Warning
- */
- LLVMModuleFlagBehaviorWarning,
- /**
- * Adds a requirement that another module flag be present and have a
- * specified value after linking is performed. The value must be a metadata
- * pair, where the first element of the pair is the ID of the module flag
- * to be restricted, and the second element of the pair is the value the
- * module flag should be restricted to. This behavior can be used to
- * restrict the allowable results (via triggering of an error) of linking
- * IDs with the **Override** behavior.
- *
- * @see Module::ModFlagBehavior::Require
- */
- LLVMModuleFlagBehaviorRequire,
- /**
- * Uses the specified value, regardless of the behavior or value of the
- * other module. If both modules specify **Override**, but the values
- * differ, an error will be emitted.
- *
- * @see Module::ModFlagBehavior::Override
- */
- LLVMModuleFlagBehaviorOverride,
- /**
- * Appends the two values, which are required to be metadata nodes.
- *
- * @see Module::ModFlagBehavior::Append
- */
- LLVMModuleFlagBehaviorAppend,
- /**
- * Appends the two values, which are required to be metadata
- * nodes. However, duplicate entries in the second list are dropped
- * during the append operation.
- *
- * @see Module::ModFlagBehavior::AppendUnique
- */
- LLVMModuleFlagBehaviorAppendUnique,
-} LLVMModuleFlagBehavior;
-
-/**
- * Attribute index are either LLVMAttributeReturnIndex,
- * LLVMAttributeFunctionIndex or a parameter number from 1 to N.
- */
-enum {
- LLVMAttributeReturnIndex = 0U,
- // ISO C restricts enumerator values to range of 'int'
- // (4294967295 is too large)
- // LLVMAttributeFunctionIndex = ~0U,
- LLVMAttributeFunctionIndex = -1,
-};
-
-typedef unsigned LLVMAttributeIndex;
-
-/**
- * @}
- */
-
-void LLVMInitializeCore(LLVMPassRegistryRef R);
-
-/** Deallocate and destroy all ManagedStatic variables.
- @see llvm::llvm_shutdown
- @see ManagedStatic */
-void LLVMShutdown(void);
-
-/*===-- Error handling ----------------------------------------------------===*/
-
-char *LLVMCreateMessage(const char *Message);
-void LLVMDisposeMessage(char *Message);
-
-/**
- * @defgroup LLVMCCoreContext Contexts
- *
- * Contexts are execution states for the core LLVM IR system.
- *
- * Most types are tied to a context instance. Multiple contexts can
- * exist simultaneously. A single context is not thread safe. However,
- * different contexts can execute on different threads simultaneously.
- *
- * @{
- */
-
-typedef void (*LLVMDiagnosticHandler)(LLVMDiagnosticInfoRef, void *);
-typedef void (*LLVMYieldCallback)(LLVMContextRef, void *);
-
-/**
- * Create a new context.
- *
- * Every call to this function should be paired with a call to
- * LLVMContextDispose() or the context will leak memory.
- */
-LLVMContextRef LLVMContextCreate(void);
-
-/**
- * Obtain the global context instance.
- */
-LLVMContextRef LLVMGetGlobalContext(void);
-
-/**
- * Set the diagnostic handler for this context.
- */
-void LLVMContextSetDiagnosticHandler(LLVMContextRef C,
- LLVMDiagnosticHandler Handler,
- void *DiagnosticContext);
-
-/**
- * Get the diagnostic handler of this context.
- */
-LLVMDiagnosticHandler LLVMContextGetDiagnosticHandler(LLVMContextRef C);
-
-/**
- * Get the diagnostic context of this context.
- */
-void *LLVMContextGetDiagnosticContext(LLVMContextRef C);
-
-/**
- * Set the yield callback function for this context.
- *
- * @see LLVMContext::setYieldCallback()
- */
-void LLVMContextSetYieldCallback(LLVMContextRef C, LLVMYieldCallback Callback,
- void *OpaqueHandle);
-
-/**
- * Retrieve whether the given context is set to discard all value names.
- *
- * @see LLVMContext::shouldDiscardValueNames()
- */
-LLVMBool LLVMContextShouldDiscardValueNames(LLVMContextRef C);
-
-/**
- * Set whether the given context discards all value names.
- *
- * If true, only the names of GlobalValue objects will be available in the IR.
- * This can be used to save memory and runtime, especially in release mode.
- *
- * @see LLVMContext::setDiscardValueNames()
- */
-void LLVMContextSetDiscardValueNames(LLVMContextRef C, LLVMBool Discard);
-
-/**
- * Destroy a context instance.
- *
- * This should be called for every call to LLVMContextCreate() or memory
- * will be leaked.
- */
-void LLVMContextDispose(LLVMContextRef C);
-
-/**
- * Return a string representation of the DiagnosticInfo. Use
- * LLVMDisposeMessage to free the string.
- *
- * @see DiagnosticInfo::print()
- */
-char *LLVMGetDiagInfoDescription(LLVMDiagnosticInfoRef DI);
-
-/**
- * Return an enum LLVMDiagnosticSeverity.
- *
- * @see DiagnosticInfo::getSeverity()
- */
-LLVMDiagnosticSeverity LLVMGetDiagInfoSeverity(LLVMDiagnosticInfoRef DI);
-
-unsigned LLVMGetMDKindIDInContext(LLVMContextRef C, const char *Name,
- unsigned SLen);
-unsigned LLVMGetMDKindID(const char *Name, unsigned SLen);
-
-/**
- * Return an unique id given the name of a enum attribute,
- * or 0 if no attribute by that name exists.
- *
- * See http://llvm.org/docs/LangRef.html#parameter-attributes
- * and http://llvm.org/docs/LangRef.html#function-attributes
- * for the list of available attributes.
- *
- * NB: Attribute names and/or id are subject to change without
- * going through the C API deprecation cycle.
- */
-unsigned LLVMGetEnumAttributeKindForName(const char *Name, size_t SLen);
-unsigned LLVMGetLastEnumAttributeKind(void);
-
-/**
- * Create an enum attribute.
- */
-LLVMAttributeRef LLVMCreateEnumAttribute(LLVMContextRef C, unsigned KindID,
- uint64_t Val);
-
-/**
- * Get the unique id corresponding to the enum attribute
- * passed as argument.
- */
-unsigned LLVMGetEnumAttributeKind(LLVMAttributeRef A);
-
-/**
- * Get the enum attribute's value. 0 is returned if none exists.
- */
-uint64_t LLVMGetEnumAttributeValue(LLVMAttributeRef A);
-
-/**
- * Create a string attribute.
- */
-LLVMAttributeRef LLVMCreateStringAttribute(LLVMContextRef C,
- const char *K, unsigned KLength,
- const char *V, unsigned VLength);
-
-/**
- * Get the string attribute's kind.
- */
-const char *LLVMGetStringAttributeKind(LLVMAttributeRef A, unsigned *Length);
-
-/**
- * Get the string attribute's value.
- */
-const char *LLVMGetStringAttributeValue(LLVMAttributeRef A, unsigned *Length);
-
-/**
- * Check for the different types of attributes.
- */
-LLVMBool LLVMIsEnumAttribute(LLVMAttributeRef A);
-LLVMBool LLVMIsStringAttribute(LLVMAttributeRef A);
-
-/**
- * @}
- */
-
-/**
- * @defgroup LLVMCCoreModule Modules
- *
- * Modules represent the top-level structure in an LLVM program. An LLVM
- * module is effectively a translation unit or a collection of
- * translation units merged together.
- *
- * @{
- */
-
-/**
- * Create a new, empty module in the global context.
- *
- * This is equivalent to calling LLVMModuleCreateWithNameInContext with
- * LLVMGetGlobalContext() as the context parameter.
- *
- * Every invocation should be paired with LLVMDisposeModule() or memory
- * will be leaked.
- */
-LLVMModuleRef LLVMModuleCreateWithName(const char *ModuleID);
-
-/**
- * Create a new, empty module in a specific context.
- *
- * Every invocation should be paired with LLVMDisposeModule() or memory
- * will be leaked.
- */
-LLVMModuleRef LLVMModuleCreateWithNameInContext(const char *ModuleID,
- LLVMContextRef C);
-/**
- * Return an exact copy of the specified module.
- */
-LLVMModuleRef LLVMCloneModule(LLVMModuleRef M);
-
-/**
- * Destroy a module instance.
- *
- * This must be called for every created module or memory will be
- * leaked.
- */
-void LLVMDisposeModule(LLVMModuleRef M);
-
-/**
- * Obtain the identifier of a module.
- *
- * @param M Module to obtain identifier of
- * @param Len Out parameter which holds the length of the returned string.
- * @return The identifier of M.
- * @see Module::getModuleIdentifier()
- */
-const char *LLVMGetModuleIdentifier(LLVMModuleRef M, size_t *Len);
-
-/**
- * Set the identifier of a module to a string Ident with length Len.
- *
- * @param M The module to set identifier
- * @param Ident The string to set M's identifier to
- * @param Len Length of Ident
- * @see Module::setModuleIdentifier()
- */
-void LLVMSetModuleIdentifier(LLVMModuleRef M, const char *Ident, size_t Len);
-
-/**
- * Obtain the module's original source file name.
- *
- * @param M Module to obtain the name of
- * @param Len Out parameter which holds the length of the returned string
- * @return The original source file name of M
- * @see Module::getSourceFileName()
- */
-const char *LLVMGetSourceFileName(LLVMModuleRef M, size_t *Len);
-
-/**
- * Set the original source file name of a module to a string Name with length
- * Len.
- *
- * @param M The module to set the source file name of
- * @param Name The string to set M's source file name to
- * @param Len Length of Name
- * @see Module::setSourceFileName()
- */
-void LLVMSetSourceFileName(LLVMModuleRef M, const char *Name, size_t Len);
-
-/**
- * Obtain the data layout for a module.
- *
- * @see Module::getDataLayoutStr()
- *
- * LLVMGetDataLayout is DEPRECATED, as the name is not only incorrect,
- * but match the name of another method on the module. Prefer the use
- * of LLVMGetDataLayoutStr, which is not ambiguous.
- */
-const char *LLVMGetDataLayoutStr(LLVMModuleRef M);
-const char *LLVMGetDataLayout(LLVMModuleRef M);
-
-/**
- * Set the data layout for a module.
- *
- * @see Module::setDataLayout()
- */
-void LLVMSetDataLayout(LLVMModuleRef M, const char *DataLayoutStr);
-
-/**
- * Obtain the target triple for a module.
- *
- * @see Module::getTargetTriple()
- */
-const char *LLVMGetTarget(LLVMModuleRef M);
-
-/**
- * Set the target triple for a module.
- *
- * @see Module::setTargetTriple()
- */
-void LLVMSetTarget(LLVMModuleRef M, const char *Triple);
-
-/**
- * Returns the module flags as an array of flag-key-value triples. The caller
- * is responsible for freeing this array by calling
- * \c LLVMDisposeModuleFlagsMetadata.
- *
- * @see Module::getModuleFlagsMetadata()
- */
-LLVMModuleFlagEntry *LLVMCopyModuleFlagsMetadata(LLVMModuleRef M, size_t *Len);
-
-/**
- * Destroys module flags metadata entries.
- */
-void LLVMDisposeModuleFlagsMetadata(LLVMModuleFlagEntry *Entries);
-
-/**
- * Returns the flag behavior for a module flag entry at a specific index.
- *
- * @see Module::ModuleFlagEntry::Behavior
- */
-LLVMModuleFlagBehavior
-LLVMModuleFlagEntriesGetFlagBehavior(LLVMModuleFlagEntry *Entries,
- unsigned Index);
-
-/**
- * Returns the key for a module flag entry at a specific index.
- *
- * @see Module::ModuleFlagEntry::Key
- */
-const char *LLVMModuleFlagEntriesGetKey(LLVMModuleFlagEntry *Entries,
- unsigned Index, size_t *Len);
-
-/**
- * Returns the metadata for a module flag entry at a specific index.
- *
- * @see Module::ModuleFlagEntry::Val
- */
-LLVMMetadataRef LLVMModuleFlagEntriesGetMetadata(LLVMModuleFlagEntry *Entries,
- unsigned Index);
-
-/**
- * Add a module-level flag to the module-level flags metadata if it doesn't
- * already exist.
- *
- * @see Module::getModuleFlag()
- */
-LLVMMetadataRef LLVMGetModuleFlag(LLVMModuleRef M,
- const char *Key, size_t KeyLen);
-
-/**
- * Add a module-level flag to the module-level flags metadata if it doesn't
- * already exist.
- *
- * @see Module::addModuleFlag()
- */
-void LLVMAddModuleFlag(LLVMModuleRef M, LLVMModuleFlagBehavior Behavior,
- const char *Key, size_t KeyLen,
- LLVMMetadataRef Val);
-
-/**
- * Dump a representation of a module to stderr.
- *
- * @see Module::dump()
- */
-void LLVMDumpModule(LLVMModuleRef M);
-
-/**
- * Print a representation of a module to a file. The ErrorMessage needs to be
- * disposed with LLVMDisposeMessage. Returns 0 on success, 1 otherwise.
- *
- * @see Module::print()
- */
-LLVMBool LLVMPrintModuleToFile(LLVMModuleRef M, const char *Filename,
- char **ErrorMessage);
-
-/**
- * Return a string representation of the module. Use
- * LLVMDisposeMessage to free the string.
- *
- * @see Module::print()
- */
-char *LLVMPrintModuleToString(LLVMModuleRef M);
-
-/**
- * Get inline assembly for a module.
- *
- * @see Module::getModuleInlineAsm()
- */
-const char *LLVMGetModuleInlineAsm(LLVMModuleRef M, size_t *Len);
-
-/**
- * Set inline assembly for a module.
- *
- * @see Module::setModuleInlineAsm()
- */
-void LLVMSetModuleInlineAsm2(LLVMModuleRef M, const char *Asm, size_t Len);
-
-/**
- * Append inline assembly to a module.
- *
- * @see Module::appendModuleInlineAsm()
- */
-void LLVMAppendModuleInlineAsm(LLVMModuleRef M, const char *Asm, size_t Len);
-
-/**
- * Create the specified uniqued inline asm string.
- *
- * @see InlineAsm::get()
- */
-LLVMValueRef LLVMGetInlineAsm(LLVMTypeRef Ty,
- char *AsmString, size_t AsmStringSize,
- char *Constraints, size_t ConstraintsSize,
- LLVMBool HasSideEffects, LLVMBool IsAlignStack,
- LLVMInlineAsmDialect Dialect);
-
-/**
- * Obtain the context to which this module is associated.
- *
- * @see Module::getContext()
- */
-LLVMContextRef LLVMGetModuleContext(LLVMModuleRef M);
-
-/**
- * Obtain a Type from a module by its registered name.
- */
-LLVMTypeRef LLVMGetTypeByName(LLVMModuleRef M, const char *Name);
-
-/**
- * Obtain an iterator to the first NamedMDNode in a Module.
- *
- * @see llvm::Module::named_metadata_begin()
- */
-LLVMNamedMDNodeRef LLVMGetFirstNamedMetadata(LLVMModuleRef M);
-
-/**
- * Obtain an iterator to the last NamedMDNode in a Module.
- *
- * @see llvm::Module::named_metadata_end()
- */
-LLVMNamedMDNodeRef LLVMGetLastNamedMetadata(LLVMModuleRef M);
-
-/**
- * Advance a NamedMDNode iterator to the next NamedMDNode.
- *
- * Returns NULL if the iterator was already at the end and there are no more
- * named metadata nodes.
- */
-LLVMNamedMDNodeRef LLVMGetNextNamedMetadata(LLVMNamedMDNodeRef NamedMDNode);
-
-/**
- * Decrement a NamedMDNode iterator to the previous NamedMDNode.
- *
- * Returns NULL if the iterator was already at the beginning and there are
- * no previous named metadata nodes.
- */
-LLVMNamedMDNodeRef LLVMGetPreviousNamedMetadata(LLVMNamedMDNodeRef NamedMDNode);
-
-/**
- * Retrieve a NamedMDNode with the given name, returning NULL if no such
- * node exists.
- *
- * @see llvm::Module::getNamedMetadata()
- */
-LLVMNamedMDNodeRef LLVMGetNamedMetadata(LLVMModuleRef M,
- const char *Name, size_t NameLen);
-
-/**
- * Retrieve a NamedMDNode with the given name, creating a new node if no such
- * node exists.
- *
- * @see llvm::Module::getOrInsertNamedMetadata()
- */
-LLVMNamedMDNodeRef LLVMGetOrInsertNamedMetadata(LLVMModuleRef M,
- const char *Name,
- size_t NameLen);
-
-/**
- * Retrieve the name of a NamedMDNode.
- *
- * @see llvm::NamedMDNode::getName()
- */
-const char *LLVMGetNamedMetadataName(LLVMNamedMDNodeRef NamedMD,
- size_t *NameLen);
-
-/**
- * Obtain the number of operands for named metadata in a module.
- *
- * @see llvm::Module::getNamedMetadata()
- */
-unsigned LLVMGetNamedMetadataNumOperands(LLVMModuleRef M, const char *Name);
-
-/**
- * Obtain the named metadata operands for a module.
- *
- * The passed LLVMValueRef pointer should refer to an array of
- * LLVMValueRef at least LLVMGetNamedMetadataNumOperands long. This
- * array will be populated with the LLVMValueRef instances. Each
- * instance corresponds to a llvm::MDNode.
- *
- * @see llvm::Module::getNamedMetadata()
- * @see llvm::MDNode::getOperand()
- */
-void LLVMGetNamedMetadataOperands(LLVMModuleRef M, const char *Name,
- LLVMValueRef *Dest);
-
-/**
- * Add an operand to named metadata.
- *
- * @see llvm::Module::getNamedMetadata()
- * @see llvm::MDNode::addOperand()
- */
-void LLVMAddNamedMetadataOperand(LLVMModuleRef M, const char *Name,
- LLVMValueRef Val);
-
-/**
- * Return the directory of the debug location for this value, which must be
- * an llvm::Instruction, llvm::GlobalVariable, or llvm::Function.
- *
- * @see llvm::Instruction::getDebugLoc()
- * @see llvm::GlobalVariable::getDebugInfo()
- * @see llvm::Function::getSubprogram()
- */
-const char *LLVMGetDebugLocDirectory(LLVMValueRef Val, unsigned *Length);
-
-/**
- * Return the filename of the debug location for this value, which must be
- * an llvm::Instruction, llvm::GlobalVariable, or llvm::Function.
- *
- * @see llvm::Instruction::getDebugLoc()
- * @see llvm::GlobalVariable::getDebugInfo()
- * @see llvm::Function::getSubprogram()
- */
-const char *LLVMGetDebugLocFilename(LLVMValueRef Val, unsigned *Length);
-
-/**
- * Return the line number of the debug location for this value, which must be
- * an llvm::Instruction, llvm::GlobalVariable, or llvm::Function.
- *
- * @see llvm::Instruction::getDebugLoc()
- * @see llvm::GlobalVariable::getDebugInfo()
- * @see llvm::Function::getSubprogram()
- */
-unsigned LLVMGetDebugLocLine(LLVMValueRef Val);
-
-/**
- * Return the column number of the debug location for this value, which must be
- * an llvm::Instruction.
- *
- * @see llvm::Instruction::getDebugLoc()
- */
-unsigned LLVMGetDebugLocColumn(LLVMValueRef Val);
-
-/**
- * Add a function to a module under a specified name.
- *
- * @see llvm::Function::Create()
- */
-LLVMValueRef LLVMAddFunction(LLVMModuleRef M, const char *Name,
- LLVMTypeRef FunctionTy);
-
-/**
- * Obtain a Function value from a Module by its name.
- *
- * The returned value corresponds to a llvm::Function value.
- *
- * @see llvm::Module::getFunction()
- */
-LLVMValueRef LLVMGetNamedFunction(LLVMModuleRef M, const char *Name);
-
-/**
- * Obtain an iterator to the first Function in a Module.
- *
- * @see llvm::Module::begin()
- */
-LLVMValueRef LLVMGetFirstFunction(LLVMModuleRef M);
-
-/**
- * Obtain an iterator to the last Function in a Module.
- *
- * @see llvm::Module::end()
- */
-LLVMValueRef LLVMGetLastFunction(LLVMModuleRef M);
-
-/**
- * Advance a Function iterator to the next Function.
- *
- * Returns NULL if the iterator was already at the end and there are no more
- * functions.
- */
-LLVMValueRef LLVMGetNextFunction(LLVMValueRef Fn);
-
-/**
- * Decrement a Function iterator to the previous Function.
- *
- * Returns NULL if the iterator was already at the beginning and there are
- * no previous functions.
- */
-LLVMValueRef LLVMGetPreviousFunction(LLVMValueRef Fn);
-
-/** Deprecated: Use LLVMSetModuleInlineAsm2 instead. */
-void LLVMSetModuleInlineAsm(LLVMModuleRef M, const char *Asm);
-
-/**
- * @}
- */
-
-/**
- * @defgroup LLVMCCoreType Types
- *
- * Types represent the type of a value.
- *
- * Types are associated with a context instance. The context internally
- * deduplicates types so there is only 1 instance of a specific type
- * alive at a time. In other words, a unique type is shared among all
- * consumers within a context.
- *
- * A Type in the C API corresponds to llvm::Type.
- *
- * Types have the following hierarchy:
- *
- * types:
- * integer type
- * real type
- * function type
- * sequence types:
- * array type
- * pointer type
- * vector type
- * void type
- * label type
- * opaque type
- *
- * @{
- */
-
-/**
- * Obtain the enumerated type of a Type instance.
- *
- * @see llvm::Type:getTypeID()
- */
-LLVMTypeKind LLVMGetTypeKind(LLVMTypeRef Ty);
-
-/**
- * Whether the type has a known size.
- *
- * Things that don't have a size are abstract types, labels, and void.a
- *
- * @see llvm::Type::isSized()
- */
-LLVMBool LLVMTypeIsSized(LLVMTypeRef Ty);
-
-/**
- * Obtain the context to which this type instance is associated.
- *
- * @see llvm::Type::getContext()
- */
-LLVMContextRef LLVMGetTypeContext(LLVMTypeRef Ty);
-
-/**
- * Dump a representation of a type to stderr.
- *
- * @see llvm::Type::dump()
- */
-void LLVMDumpType(LLVMTypeRef Val);
-
-/**
- * Return a string representation of the type. Use
- * LLVMDisposeMessage to free the string.
- *
- * @see llvm::Type::print()
- */
-char *LLVMPrintTypeToString(LLVMTypeRef Val);
-
-/**
- * @defgroup LLVMCCoreTypeInt Integer Types
- *
- * Functions in this section operate on integer types.
- *
- * @{
- */
-
-/**
- * Obtain an integer type from a context with specified bit width.
- */
-LLVMTypeRef LLVMInt1TypeInContext(LLVMContextRef C);
-LLVMTypeRef LLVMInt8TypeInContext(LLVMContextRef C);
-LLVMTypeRef LLVMInt16TypeInContext(LLVMContextRef C);
-LLVMTypeRef LLVMInt32TypeInContext(LLVMContextRef C);
-LLVMTypeRef LLVMInt64TypeInContext(LLVMContextRef C);
-LLVMTypeRef LLVMInt128TypeInContext(LLVMContextRef C);
-LLVMTypeRef LLVMIntTypeInContext(LLVMContextRef C, unsigned NumBits);
-
-/**
- * Obtain an integer type from the global context with a specified bit
- * width.
- */
-LLVMTypeRef LLVMInt1Type(void);
-LLVMTypeRef LLVMInt8Type(void);
-LLVMTypeRef LLVMInt16Type(void);
-LLVMTypeRef LLVMInt32Type(void);
-LLVMTypeRef LLVMInt64Type(void);
-LLVMTypeRef LLVMInt128Type(void);
-LLVMTypeRef LLVMIntType(unsigned NumBits);
-unsigned LLVMGetIntTypeWidth(LLVMTypeRef IntegerTy);
-
-/**
- * @}
- */
-
-/**
- * @defgroup LLVMCCoreTypeFloat Floating Point Types
- *
- * @{
- */
-
-/**
- * Obtain a 16-bit floating point type from a context.
- */
-LLVMTypeRef LLVMHalfTypeInContext(LLVMContextRef C);
-
-/**
- * Obtain a 32-bit floating point type from a context.
- */
-LLVMTypeRef LLVMFloatTypeInContext(LLVMContextRef C);
-
-/**
- * Obtain a 64-bit floating point type from a context.
- */
-LLVMTypeRef LLVMDoubleTypeInContext(LLVMContextRef C);
-
-/**
- * Obtain a 80-bit floating point type (X87) from a context.
- */
-LLVMTypeRef LLVMX86FP80TypeInContext(LLVMContextRef C);
-
-/**
- * Obtain a 128-bit floating point type (112-bit mantissa) from a
- * context.
- */
-LLVMTypeRef LLVMFP128TypeInContext(LLVMContextRef C);
-
-/**
- * Obtain a 128-bit floating point type (two 64-bits) from a context.
- */
-LLVMTypeRef LLVMPPCFP128TypeInContext(LLVMContextRef C);
-
-/**
- * Obtain a floating point type from the global context.
- *
- * These map to the functions in this group of the same name.
- */
-LLVMTypeRef LLVMHalfType(void);
-LLVMTypeRef LLVMFloatType(void);
-LLVMTypeRef LLVMDoubleType(void);
-LLVMTypeRef LLVMX86FP80Type(void);
-LLVMTypeRef LLVMFP128Type(void);
-LLVMTypeRef LLVMPPCFP128Type(void);
-
-/**
- * @}
- */
-
-/**
- * @defgroup LLVMCCoreTypeFunction Function Types
- *
- * @{
- */
-
-/**
- * Obtain a function type consisting of a specified signature.
- *
- * The function is defined as a tuple of a return Type, a list of
- * parameter types, and whether the function is variadic.
- */
-LLVMTypeRef LLVMFunctionType(LLVMTypeRef ReturnType,
- LLVMTypeRef *ParamTypes, unsigned ParamCount,
- LLVMBool IsVarArg);
-
-/**
- * Returns whether a function type is variadic.
- */
-LLVMBool LLVMIsFunctionVarArg(LLVMTypeRef FunctionTy);
-
-/**
- * Obtain the Type this function Type returns.
- */
-LLVMTypeRef LLVMGetReturnType(LLVMTypeRef FunctionTy);
-
-/**
- * Obtain the number of parameters this function accepts.
- */
-unsigned LLVMCountParamTypes(LLVMTypeRef FunctionTy);
-
-/**
- * Obtain the types of a function's parameters.
- *
- * The Dest parameter should point to a pre-allocated array of
- * LLVMTypeRef at least LLVMCountParamTypes() large. On return, the
- * first LLVMCountParamTypes() entries in the array will be populated
- * with LLVMTypeRef instances.
- *
- * @param FunctionTy The function type to operate on.
- * @param Dest Memory address of an array to be filled with result.
- */
-void LLVMGetParamTypes(LLVMTypeRef FunctionTy, LLVMTypeRef *Dest);
-
-/**
- * @}
- */
-
-/**
- * @defgroup LLVMCCoreTypeStruct Structure Types
- *
- * These functions relate to LLVMTypeRef instances.
- *
- * @see llvm::StructType
- *
- * @{
- */
-
-/**
- * Create a new structure type in a context.
- *
- * A structure is specified by a list of inner elements/types and
- * whether these can be packed together.
- *
- * @see llvm::StructType::create()
- */
-LLVMTypeRef LLVMStructTypeInContext(LLVMContextRef C, LLVMTypeRef *ElementTypes,
- unsigned ElementCount, LLVMBool Packed);
-
-/**
- * Create a new structure type in the global context.
- *
- * @see llvm::StructType::create()
- */
-LLVMTypeRef LLVMStructType(LLVMTypeRef *ElementTypes, unsigned ElementCount,
- LLVMBool Packed);
-
-/**
- * Create an empty structure in a context having a specified name.
- *
- * @see llvm::StructType::create()
- */
-LLVMTypeRef LLVMStructCreateNamed(LLVMContextRef C, const char *Name);
-
-/**
- * Obtain the name of a structure.
- *
- * @see llvm::StructType::getName()
- */
-const char *LLVMGetStructName(LLVMTypeRef Ty);
-
-/**
- * Set the contents of a structure type.
- *
- * @see llvm::StructType::setBody()
- */
-void LLVMStructSetBody(LLVMTypeRef StructTy, LLVMTypeRef *ElementTypes,
- unsigned ElementCount, LLVMBool Packed);
-
-/**
- * Get the number of elements defined inside the structure.
- *
- * @see llvm::StructType::getNumElements()
- */
-unsigned LLVMCountStructElementTypes(LLVMTypeRef StructTy);
-
-/**
- * Get the elements within a structure.
- *
- * The function is passed the address of a pre-allocated array of
- * LLVMTypeRef at least LLVMCountStructElementTypes() long. After
- * invocation, this array will be populated with the structure's
- * elements. The objects in the destination array will have a lifetime
- * of the structure type itself, which is the lifetime of the context it
- * is contained in.
- */
-void LLVMGetStructElementTypes(LLVMTypeRef StructTy, LLVMTypeRef *Dest);
-
-/**
- * Get the type of the element at a given index in the structure.
- *
- * @see llvm::StructType::getTypeAtIndex()
- */
-LLVMTypeRef LLVMStructGetTypeAtIndex(LLVMTypeRef StructTy, unsigned i);
-
-/**
- * Determine whether a structure is packed.
- *
- * @see llvm::StructType::isPacked()
- */
-LLVMBool LLVMIsPackedStruct(LLVMTypeRef StructTy);
-
-/**
- * Determine whether a structure is opaque.
- *
- * @see llvm::StructType::isOpaque()
- */
-LLVMBool LLVMIsOpaqueStruct(LLVMTypeRef StructTy);
-
-/**
- * Determine whether a structure is literal.
- *
- * @see llvm::StructType::isLiteral()
- */
-LLVMBool LLVMIsLiteralStruct(LLVMTypeRef StructTy);
-
-/**
- * @}
- */
-
-/**
- * @defgroup LLVMCCoreTypeSequential Sequential Types
- *
- * Sequential types represents "arrays" of types. This is a super class
- * for array, vector, and pointer types.
- *
- * @{
- */
-
-/**
- * Obtain the type of elements within a sequential type.
- *
- * This works on array, vector, and pointer types.
- *
- * @see llvm::SequentialType::getElementType()
- */
-LLVMTypeRef LLVMGetElementType(LLVMTypeRef Ty);
-
-/**
- * Returns type's subtypes
- *
- * @see llvm::Type::subtypes()
- */
-void LLVMGetSubtypes(LLVMTypeRef Tp, LLVMTypeRef *Arr);
-
-/**
- * Return the number of types in the derived type.
- *
- * @see llvm::Type::getNumContainedTypes()
- */
-unsigned LLVMGetNumContainedTypes(LLVMTypeRef Tp);
-
-/**
- * Create a fixed size array type that refers to a specific type.
- *
- * The created type will exist in the context that its element type
- * exists in.
- *
- * @see llvm::ArrayType::get()
- */
-LLVMTypeRef LLVMArrayType(LLVMTypeRef ElementType, unsigned ElementCount);
-
-/**
- * Obtain the length of an array type.
- *
- * This only works on types that represent arrays.
- *
- * @see llvm::ArrayType::getNumElements()
- */
-unsigned LLVMGetArrayLength(LLVMTypeRef ArrayTy);
-
-/**
- * Create a pointer type that points to a defined type.
- *
- * The created type will exist in the context that its pointee type
- * exists in.
- *
- * @see llvm::PointerType::get()
- */
-LLVMTypeRef LLVMPointerType(LLVMTypeRef ElementType, unsigned AddressSpace);
-
-/**
- * Obtain the address space of a pointer type.
- *
- * This only works on types that represent pointers.
- *
- * @see llvm::PointerType::getAddressSpace()
- */
-unsigned LLVMGetPointerAddressSpace(LLVMTypeRef PointerTy);
-
-/**
- * Create a vector type that contains a defined type and has a specific
- * number of elements.
- *
- * The created type will exist in the context thats its element type
- * exists in.
- *
- * @see llvm::VectorType::get()
- */
-LLVMTypeRef LLVMVectorType(LLVMTypeRef ElementType, unsigned ElementCount);
-
-/**
- * Obtain the number of elements in a vector type.
- *
- * This only works on types that represent vectors.
- *
- * @see llvm::VectorType::getNumElements()
- */
-unsigned LLVMGetVectorSize(LLVMTypeRef VectorTy);
-
-/**
- * @}
- */
-
-/**
- * @defgroup LLVMCCoreTypeOther Other Types
- *
- * @{
- */
-
-/**
- * Create a void type in a context.
- */
-LLVMTypeRef LLVMVoidTypeInContext(LLVMContextRef C);
-
-/**
- * Create a label type in a context.
- */
-LLVMTypeRef LLVMLabelTypeInContext(LLVMContextRef C);
-
-/**
- * Create a X86 MMX type in a context.
- */
-LLVMTypeRef LLVMX86MMXTypeInContext(LLVMContextRef C);
-
-/**
- * Create a token type in a context.
- */
-LLVMTypeRef LLVMTokenTypeInContext(LLVMContextRef C);
-
-/**
- * Create a metadata type in a context.
- */
-LLVMTypeRef LLVMMetadataTypeInContext(LLVMContextRef C);
-
-/**
- * These are similar to the above functions except they operate on the
- * global context.
- */
-LLVMTypeRef LLVMVoidType(void);
-LLVMTypeRef LLVMLabelType(void);
-LLVMTypeRef LLVMX86MMXType(void);
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @defgroup LLVMCCoreValues Values
- *
- * The bulk of LLVM's object model consists of values, which comprise a very
- * rich type hierarchy.
- *
- * LLVMValueRef essentially represents llvm::Value. There is a rich
- * hierarchy of classes within this type. Depending on the instance
- * obtained, not all APIs are available.
- *
- * Callers can determine the type of an LLVMValueRef by calling the
- * LLVMIsA* family of functions (e.g. LLVMIsAArgument()). These
- * functions are defined by a macro, so it isn't obvious which are
- * available by looking at the Doxygen source code. Instead, look at the
- * source definition of LLVM_FOR_EACH_VALUE_SUBCLASS and note the list
- * of value names given. These value names also correspond to classes in
- * the llvm::Value hierarchy.
- *
- * @{
- */
-
-#define LLVM_FOR_EACH_VALUE_SUBCLASS(macro) \
- macro(Argument) \
- macro(BasicBlock) \
- macro(InlineAsm) \
- macro(User) \
- macro(Constant) \
- macro(BlockAddress) \
- macro(ConstantAggregateZero) \
- macro(ConstantArray) \
- macro(ConstantDataSequential) \
- macro(ConstantDataArray) \
- macro(ConstantDataVector) \
- macro(ConstantExpr) \
- macro(ConstantFP) \
- macro(ConstantInt) \
- macro(ConstantPointerNull) \
- macro(ConstantStruct) \
- macro(ConstantTokenNone) \
- macro(ConstantVector) \
- macro(GlobalValue) \
- macro(GlobalAlias) \
- macro(GlobalIFunc) \
- macro(GlobalObject) \
- macro(Function) \
- macro(GlobalVariable) \
- macro(UndefValue) \
- macro(Instruction) \
- macro(BinaryOperator) \
- macro(CallInst) \
- macro(IntrinsicInst) \
- macro(DbgInfoIntrinsic) \
- macro(DbgVariableIntrinsic) \
- macro(DbgDeclareInst) \
- macro(DbgLabelInst) \
- macro(MemIntrinsic) \
- macro(MemCpyInst) \
- macro(MemMoveInst) \
- macro(MemSetInst) \
- macro(CmpInst) \
- macro(FCmpInst) \
- macro(ICmpInst) \
- macro(ExtractElementInst) \
- macro(GetElementPtrInst) \
- macro(InsertElementInst) \
- macro(InsertValueInst) \
- macro(LandingPadInst) \
- macro(PHINode) \
- macro(SelectInst) \
- macro(ShuffleVectorInst) \
- macro(StoreInst) \
- macro(BranchInst) \
- macro(IndirectBrInst) \
- macro(InvokeInst) \
- macro(ReturnInst) \
- macro(SwitchInst) \
- macro(UnreachableInst) \
- macro(ResumeInst) \
- macro(CleanupReturnInst) \
- macro(CatchReturnInst) \
- macro(FuncletPadInst) \
- macro(CatchPadInst) \
- macro(CleanupPadInst) \
- macro(UnaryInstruction) \
- macro(AllocaInst) \
- macro(CastInst) \
- macro(AddrSpaceCastInst) \
- macro(BitCastInst) \
- macro(FPExtInst) \
- macro(FPToSIInst) \
- macro(FPToUIInst) \
- macro(FPTruncInst) \
- macro(IntToPtrInst) \
- macro(PtrToIntInst) \
- macro(SExtInst) \
- macro(SIToFPInst) \
- macro(TruncInst) \
- macro(UIToFPInst) \
- macro(ZExtInst) \
- macro(ExtractValueInst) \
- macro(LoadInst) \
- macro(VAArgInst)
-
-/**
- * @defgroup LLVMCCoreValueGeneral General APIs
- *
- * Functions in this section work on all LLVMValueRef instances,
- * regardless of their sub-type. They correspond to functions available
- * on llvm::Value.
- *
- * @{
- */
-
-/**
- * Obtain the type of a value.
- *
- * @see llvm::Value::getType()
- */
-LLVMTypeRef LLVMTypeOf(LLVMValueRef Val);
-
-/**
- * Obtain the enumerated type of a Value instance.
- *
- * @see llvm::Value::getValueID()
- */
-LLVMValueKind LLVMGetValueKind(LLVMValueRef Val);
-
-/**
- * Obtain the string name of a value.
- *
- * @see llvm::Value::getName()
- */
-const char *LLVMGetValueName2(LLVMValueRef Val, size_t *Length);
-
-/**
- * Set the string name of a value.
- *
- * @see llvm::Value::setName()
- */
-void LLVMSetValueName2(LLVMValueRef Val, const char *Name, size_t NameLen);
-
-/**
- * Dump a representation of a value to stderr.
- *
- * @see llvm::Value::dump()
- */
-void LLVMDumpValue(LLVMValueRef Val);
-
-/**
- * Return a string representation of the value. Use
- * LLVMDisposeMessage to free the string.
- *
- * @see llvm::Value::print()
- */
-char *LLVMPrintValueToString(LLVMValueRef Val);
-
-/**
- * Replace all uses of a value with another one.
- *
- * @see llvm::Value::replaceAllUsesWith()
- */
-void LLVMReplaceAllUsesWith(LLVMValueRef OldVal, LLVMValueRef NewVal);
-
-/**
- * Determine whether the specified value instance is constant.
- */
-LLVMBool LLVMIsConstant(LLVMValueRef Val);
-
-/**
- * Determine whether a value instance is undefined.
- */
-LLVMBool LLVMIsUndef(LLVMValueRef Val);
-
-/**
- * Convert value instances between types.
- *
- * Internally, an LLVMValueRef is "pinned" to a specific type. This
- * series of functions allows you to cast an instance to a specific
- * type.
- *
- * If the cast is not valid for the specified type, NULL is returned.
- *
- * @see llvm::dyn_cast_or_null<>
- */
-#define LLVM_DECLARE_VALUE_CAST(name) \
- LLVMValueRef LLVMIsA##name(LLVMValueRef Val);
-LLVM_FOR_EACH_VALUE_SUBCLASS(LLVM_DECLARE_VALUE_CAST)
-
-LLVMValueRef LLVMIsAMDNode(LLVMValueRef Val);
-LLVMValueRef LLVMIsAMDString(LLVMValueRef Val);
-
-/** Deprecated: Use LLVMGetValueName2 instead. */
-const char *LLVMGetValueName(LLVMValueRef Val);
-/** Deprecated: Use LLVMSetValueName2 instead. */
-void LLVMSetValueName(LLVMValueRef Val, const char *Name);
-
-/**
- * @}
- */
-
-/**
- * @defgroup LLVMCCoreValueUses Usage
- *
- * This module defines functions that allow you to inspect the uses of a
- * LLVMValueRef.
- *
- * It is possible to obtain an LLVMUseRef for any LLVMValueRef instance.
- * Each LLVMUseRef (which corresponds to a llvm::Use instance) holds a
- * llvm::User and llvm::Value.
- *
- * @{
- */
-
-/**
- * Obtain the first use of a value.
- *
- * Uses are obtained in an iterator fashion. First, call this function
- * to obtain a reference to the first use. Then, call LLVMGetNextUse()
- * on that instance and all subsequently obtained instances until
- * LLVMGetNextUse() returns NULL.
- *
- * @see llvm::Value::use_begin()
- */
-LLVMUseRef LLVMGetFirstUse(LLVMValueRef Val);
-
-/**
- * Obtain the next use of a value.
- *
- * This effectively advances the iterator. It returns NULL if you are on
- * the final use and no more are available.
- */
-LLVMUseRef LLVMGetNextUse(LLVMUseRef U);
-
-/**
- * Obtain the user value for a user.
- *
- * The returned value corresponds to a llvm::User type.
- *
- * @see llvm::Use::getUser()
- */
-LLVMValueRef LLVMGetUser(LLVMUseRef U);
-
-/**
- * Obtain the value this use corresponds to.
- *
- * @see llvm::Use::get().
- */
-LLVMValueRef LLVMGetUsedValue(LLVMUseRef U);
-
-/**
- * @}
- */
-
-/**
- * @defgroup LLVMCCoreValueUser User value
- *
- * Function in this group pertain to LLVMValueRef instances that descent
- * from llvm::User. This includes constants, instructions, and
- * operators.
- *
- * @{
- */
-
-/**
- * Obtain an operand at a specific index in a llvm::User value.
- *
- * @see llvm::User::getOperand()
- */
-LLVMValueRef LLVMGetOperand(LLVMValueRef Val, unsigned Index);
-
-/**
- * Obtain the use of an operand at a specific index in a llvm::User value.
- *
- * @see llvm::User::getOperandUse()
- */
-LLVMUseRef LLVMGetOperandUse(LLVMValueRef Val, unsigned Index);
-
-/**
- * Set an operand at a specific index in a llvm::User value.
- *
- * @see llvm::User::setOperand()
- */
-void LLVMSetOperand(LLVMValueRef User, unsigned Index, LLVMValueRef Val);
-
-/**
- * Obtain the number of operands in a llvm::User value.
- *
- * @see llvm::User::getNumOperands()
- */
-int LLVMGetNumOperands(LLVMValueRef Val);
-
-/**
- * @}
- */
-
-/**
- * @defgroup LLVMCCoreValueConstant Constants
- *
- * This section contains APIs for interacting with LLVMValueRef that
- * correspond to llvm::Constant instances.
- *
- * These functions will work for any LLVMValueRef in the llvm::Constant
- * class hierarchy.
- *
- * @{
- */
-
-/**
- * Obtain a constant value referring to the null instance of a type.
- *
- * @see llvm::Constant::getNullValue()
- */
-LLVMValueRef LLVMConstNull(LLVMTypeRef Ty); /* all zeroes */
-
-/**
- * Obtain a constant value referring to the instance of a type
- * consisting of all ones.
- *
- * This is only valid for integer types.
- *
- * @see llvm::Constant::getAllOnesValue()
- */
-LLVMValueRef LLVMConstAllOnes(LLVMTypeRef Ty);
-
-/**
- * Obtain a constant value referring to an undefined value of a type.
- *
- * @see llvm::UndefValue::get()
- */
-LLVMValueRef LLVMGetUndef(LLVMTypeRef Ty);
-
-/**
- * Determine whether a value instance is null.
- *
- * @see llvm::Constant::isNullValue()
- */
-LLVMBool LLVMIsNull(LLVMValueRef Val);
-
-/**
- * Obtain a constant that is a constant pointer pointing to NULL for a
- * specified type.
- */
-LLVMValueRef LLVMConstPointerNull(LLVMTypeRef Ty);
-
-/**
- * @defgroup LLVMCCoreValueConstantScalar Scalar constants
- *
- * Functions in this group model LLVMValueRef instances that correspond
- * to constants referring to scalar types.
- *
- * For integer types, the LLVMTypeRef parameter should correspond to a
- * llvm::IntegerType instance and the returned LLVMValueRef will
- * correspond to a llvm::ConstantInt.
- *
- * For floating point types, the LLVMTypeRef returned corresponds to a
- * llvm::ConstantFP.
- *
- * @{
- */
-
-/**
- * Obtain a constant value for an integer type.
- *
- * The returned value corresponds to a llvm::ConstantInt.
- *
- * @see llvm::ConstantInt::get()
- *
- * @param IntTy Integer type to obtain value of.
- * @param N The value the returned instance should refer to.
- * @param SignExtend Whether to sign extend the produced value.
- */
-LLVMValueRef LLVMConstInt(LLVMTypeRef IntTy, unsigned long long N,
- LLVMBool SignExtend);
-
-/**
- * Obtain a constant value for an integer of arbitrary precision.
- *
- * @see llvm::ConstantInt::get()
- */
-LLVMValueRef LLVMConstIntOfArbitraryPrecision(LLVMTypeRef IntTy,
- unsigned NumWords,
- const uint64_t Words[]);
-
-/**
- * Obtain a constant value for an integer parsed from a string.
- *
- * A similar API, LLVMConstIntOfStringAndSize is also available. If the
- * string's length is available, it is preferred to call that function
- * instead.
- *
- * @see llvm::ConstantInt::get()
- */
-LLVMValueRef LLVMConstIntOfString(LLVMTypeRef IntTy, const char *Text,
- uint8_t Radix);
-
-/**
- * Obtain a constant value for an integer parsed from a string with
- * specified length.
- *
- * @see llvm::ConstantInt::get()
- */
-LLVMValueRef LLVMConstIntOfStringAndSize(LLVMTypeRef IntTy, const char *Text,
- unsigned SLen, uint8_t Radix);
-
-/**
- * Obtain a constant value referring to a double floating point value.
- */
-LLVMValueRef LLVMConstReal(LLVMTypeRef RealTy, double N);
-
-/**
- * Obtain a constant for a floating point value parsed from a string.
- *
- * A similar API, LLVMConstRealOfStringAndSize is also available. It
- * should be used if the input string's length is known.
- */
-LLVMValueRef LLVMConstRealOfString(LLVMTypeRef RealTy, const char *Text);
-
-/**
- * Obtain a constant for a floating point value parsed from a string.
- */
-LLVMValueRef LLVMConstRealOfStringAndSize(LLVMTypeRef RealTy, const char *Text,
- unsigned SLen);
-
-/**
- * Obtain the zero extended value for an integer constant value.
- *
- * @see llvm::ConstantInt::getZExtValue()
- */
-unsigned long long LLVMConstIntGetZExtValue(LLVMValueRef ConstantVal);
-
-/**
- * Obtain the sign extended value for an integer constant value.
- *
- * @see llvm::ConstantInt::getSExtValue()
- */
-long long LLVMConstIntGetSExtValue(LLVMValueRef ConstantVal);
-
-/**
- * Obtain the double value for an floating point constant value.
- * losesInfo indicates if some precision was lost in the conversion.
- *
- * @see llvm::ConstantFP::getDoubleValue
- */
-double LLVMConstRealGetDouble(LLVMValueRef ConstantVal, LLVMBool *losesInfo);
-
-/**
- * @}
- */
-
-/**
- * @defgroup LLVMCCoreValueConstantComposite Composite Constants
- *
- * Functions in this group operate on composite constants.
- *
- * @{
- */
-
-/**
- * Create a ConstantDataSequential and initialize it with a string.
- *
- * @see llvm::ConstantDataArray::getString()
- */
-LLVMValueRef LLVMConstStringInContext(LLVMContextRef C, const char *Str,
- unsigned Length, LLVMBool DontNullTerminate);
-
-/**
- * Create a ConstantDataSequential with string content in the global context.
- *
- * This is the same as LLVMConstStringInContext except it operates on the
- * global context.
- *
- * @see LLVMConstStringInContext()
- * @see llvm::ConstantDataArray::getString()
- */
-LLVMValueRef LLVMConstString(const char *Str, unsigned Length,
- LLVMBool DontNullTerminate);
-
-/**
- * Returns true if the specified constant is an array of i8.
- *
- * @see ConstantDataSequential::getAsString()
- */
-LLVMBool LLVMIsConstantString(LLVMValueRef c);
-
-/**
- * Get the given constant data sequential as a string.
- *
- * @see ConstantDataSequential::getAsString()
- */
-const char *LLVMGetAsString(LLVMValueRef c, size_t *Length);
-
-/**
- * Create an anonymous ConstantStruct with the specified values.
- *
- * @see llvm::ConstantStruct::getAnon()
- */
-LLVMValueRef LLVMConstStructInContext(LLVMContextRef C,
- LLVMValueRef *ConstantVals,
- unsigned Count, LLVMBool Packed);
-
-/**
- * Create a ConstantStruct in the global Context.
- *
- * This is the same as LLVMConstStructInContext except it operates on the
- * global Context.
- *
- * @see LLVMConstStructInContext()
- */
-LLVMValueRef LLVMConstStruct(LLVMValueRef *ConstantVals, unsigned Count,
- LLVMBool Packed);
-
-/**
- * Create a ConstantArray from values.
- *
- * @see llvm::ConstantArray::get()
- */
-LLVMValueRef LLVMConstArray(LLVMTypeRef ElementTy,
- LLVMValueRef *ConstantVals, unsigned Length);
-
-/**
- * Create a non-anonymous ConstantStruct from values.
- *
- * @see llvm::ConstantStruct::get()
- */
-LLVMValueRef LLVMConstNamedStruct(LLVMTypeRef StructTy,
- LLVMValueRef *ConstantVals,
- unsigned Count);
-
-/**
- * Get an element at specified index as a constant.
- *
- * @see ConstantDataSequential::getElementAsConstant()
- */
-LLVMValueRef LLVMGetElementAsConstant(LLVMValueRef C, unsigned idx);
-
-/**
- * Create a ConstantVector from values.
- *
- * @see llvm::ConstantVector::get()
- */
-LLVMValueRef LLVMConstVector(LLVMValueRef *ScalarConstantVals, unsigned Size);
-
-/**
- * @}
- */
-
-/**
- * @defgroup LLVMCCoreValueConstantExpressions Constant Expressions
- *
- * Functions in this group correspond to APIs on llvm::ConstantExpr.
- *
- * @see llvm::ConstantExpr.
- *
- * @{
- */
-LLVMOpcode LLVMGetConstOpcode(LLVMValueRef ConstantVal);
-LLVMValueRef LLVMAlignOf(LLVMTypeRef Ty);
-LLVMValueRef LLVMSizeOf(LLVMTypeRef Ty);
-LLVMValueRef LLVMConstNeg(LLVMValueRef ConstantVal);
-LLVMValueRef LLVMConstNSWNeg(LLVMValueRef ConstantVal);
-LLVMValueRef LLVMConstNUWNeg(LLVMValueRef ConstantVal);
-LLVMValueRef LLVMConstFNeg(LLVMValueRef ConstantVal);
-LLVMValueRef LLVMConstNot(LLVMValueRef ConstantVal);
-LLVMValueRef LLVMConstAdd(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant);
-LLVMValueRef LLVMConstNSWAdd(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant);
-LLVMValueRef LLVMConstNUWAdd(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant);
-LLVMValueRef LLVMConstFAdd(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant);
-LLVMValueRef LLVMConstSub(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant);
-LLVMValueRef LLVMConstNSWSub(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant);
-LLVMValueRef LLVMConstNUWSub(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant);
-LLVMValueRef LLVMConstFSub(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant);
-LLVMValueRef LLVMConstMul(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant);
-LLVMValueRef LLVMConstNSWMul(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant);
-LLVMValueRef LLVMConstNUWMul(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant);
-LLVMValueRef LLVMConstFMul(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant);
-LLVMValueRef LLVMConstUDiv(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant);
-LLVMValueRef LLVMConstExactUDiv(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant);
-LLVMValueRef LLVMConstSDiv(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant);
-LLVMValueRef LLVMConstExactSDiv(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant);
-LLVMValueRef LLVMConstFDiv(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant);
-LLVMValueRef LLVMConstURem(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant);
-LLVMValueRef LLVMConstSRem(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant);
-LLVMValueRef LLVMConstFRem(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant);
-LLVMValueRef LLVMConstAnd(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant);
-LLVMValueRef LLVMConstOr(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant);
-LLVMValueRef LLVMConstXor(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant);
-LLVMValueRef LLVMConstICmp(LLVMIntPredicate Predicate,
- LLVMValueRef LHSConstant, LLVMValueRef RHSConstant);
-LLVMValueRef LLVMConstFCmp(LLVMRealPredicate Predicate,
- LLVMValueRef LHSConstant, LLVMValueRef RHSConstant);
-LLVMValueRef LLVMConstShl(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant);
-LLVMValueRef LLVMConstLShr(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant);
-LLVMValueRef LLVMConstAShr(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant);
-LLVMValueRef LLVMConstGEP(LLVMValueRef ConstantVal,
- LLVMValueRef *ConstantIndices, unsigned NumIndices);
-LLVMValueRef LLVMConstGEP2(LLVMTypeRef Ty, LLVMValueRef ConstantVal,
- LLVMValueRef *ConstantIndices, unsigned NumIndices);
-LLVMValueRef LLVMConstInBoundsGEP(LLVMValueRef ConstantVal,
- LLVMValueRef *ConstantIndices,
- unsigned NumIndices);
-LLVMValueRef LLVMConstInBoundsGEP2(LLVMTypeRef Ty, LLVMValueRef ConstantVal,
- LLVMValueRef *ConstantIndices,
- unsigned NumIndices);
-LLVMValueRef LLVMConstTrunc(LLVMValueRef ConstantVal, LLVMTypeRef ToType);
-LLVMValueRef LLVMConstSExt(LLVMValueRef ConstantVal, LLVMTypeRef ToType);
-LLVMValueRef LLVMConstZExt(LLVMValueRef ConstantVal, LLVMTypeRef ToType);
-LLVMValueRef LLVMConstFPTrunc(LLVMValueRef ConstantVal, LLVMTypeRef ToType);
-LLVMValueRef LLVMConstFPExt(LLVMValueRef ConstantVal, LLVMTypeRef ToType);
-LLVMValueRef LLVMConstUIToFP(LLVMValueRef ConstantVal, LLVMTypeRef ToType);
-LLVMValueRef LLVMConstSIToFP(LLVMValueRef ConstantVal, LLVMTypeRef ToType);
-LLVMValueRef LLVMConstFPToUI(LLVMValueRef ConstantVal, LLVMTypeRef ToType);
-LLVMValueRef LLVMConstFPToSI(LLVMValueRef ConstantVal, LLVMTypeRef ToType);
-LLVMValueRef LLVMConstPtrToInt(LLVMValueRef ConstantVal, LLVMTypeRef ToType);
-LLVMValueRef LLVMConstIntToPtr(LLVMValueRef ConstantVal, LLVMTypeRef ToType);
-LLVMValueRef LLVMConstBitCast(LLVMValueRef ConstantVal, LLVMTypeRef ToType);
-LLVMValueRef LLVMConstAddrSpaceCast(LLVMValueRef ConstantVal, LLVMTypeRef ToType);
-LLVMValueRef LLVMConstZExtOrBitCast(LLVMValueRef ConstantVal,
- LLVMTypeRef ToType);
-LLVMValueRef LLVMConstSExtOrBitCast(LLVMValueRef ConstantVal,
- LLVMTypeRef ToType);
-LLVMValueRef LLVMConstTruncOrBitCast(LLVMValueRef ConstantVal,
- LLVMTypeRef ToType);
-LLVMValueRef LLVMConstPointerCast(LLVMValueRef ConstantVal,
- LLVMTypeRef ToType);
-LLVMValueRef LLVMConstIntCast(LLVMValueRef ConstantVal, LLVMTypeRef ToType,
- LLVMBool isSigned);
-LLVMValueRef LLVMConstFPCast(LLVMValueRef ConstantVal, LLVMTypeRef ToType);
-LLVMValueRef LLVMConstSelect(LLVMValueRef ConstantCondition,
- LLVMValueRef ConstantIfTrue,
- LLVMValueRef ConstantIfFalse);
-LLVMValueRef LLVMConstExtractElement(LLVMValueRef VectorConstant,
- LLVMValueRef IndexConstant);
-LLVMValueRef LLVMConstInsertElement(LLVMValueRef VectorConstant,
- LLVMValueRef ElementValueConstant,
- LLVMValueRef IndexConstant);
-LLVMValueRef LLVMConstShuffleVector(LLVMValueRef VectorAConstant,
- LLVMValueRef VectorBConstant,
- LLVMValueRef MaskConstant);
-LLVMValueRef LLVMConstExtractValue(LLVMValueRef AggConstant, unsigned *IdxList,
- unsigned NumIdx);
-LLVMValueRef LLVMConstInsertValue(LLVMValueRef AggConstant,
- LLVMValueRef ElementValueConstant,
- unsigned *IdxList, unsigned NumIdx);
-LLVMValueRef LLVMBlockAddress(LLVMValueRef F, LLVMBasicBlockRef BB);
-
-/** Deprecated: Use LLVMGetInlineAsm instead. */
-LLVMValueRef LLVMConstInlineAsm(LLVMTypeRef Ty,
- const char *AsmString, const char *Constraints,
- LLVMBool HasSideEffects, LLVMBool IsAlignStack);
-
-/**
- * @}
- */
-
-/**
- * @defgroup LLVMCCoreValueConstantGlobals Global Values
- *
- * This group contains functions that operate on global values. Functions in
- * this group relate to functions in the llvm::GlobalValue class tree.
- *
- * @see llvm::GlobalValue
- *
- * @{
- */
-
-LLVMModuleRef LLVMGetGlobalParent(LLVMValueRef Global);
-LLVMBool LLVMIsDeclaration(LLVMValueRef Global);
-LLVMLinkage LLVMGetLinkage(LLVMValueRef Global);
-void LLVMSetLinkage(LLVMValueRef Global, LLVMLinkage Linkage);
-const char *LLVMGetSection(LLVMValueRef Global);
-void LLVMSetSection(LLVMValueRef Global, const char *Section);
-LLVMVisibility LLVMGetVisibility(LLVMValueRef Global);
-void LLVMSetVisibility(LLVMValueRef Global, LLVMVisibility Viz);
-LLVMDLLStorageClass LLVMGetDLLStorageClass(LLVMValueRef Global);
-void LLVMSetDLLStorageClass(LLVMValueRef Global, LLVMDLLStorageClass Class);
-LLVMUnnamedAddr LLVMGetUnnamedAddress(LLVMValueRef Global);
-void LLVMSetUnnamedAddress(LLVMValueRef Global, LLVMUnnamedAddr UnnamedAddr);
-
-/**
- * Returns the "value type" of a global value. This differs from the formal
- * type of a global value which is always a pointer type.
- *
- * @see llvm::GlobalValue::getValueType()
- */
-LLVMTypeRef LLVMGlobalGetValueType(LLVMValueRef Global);
-
-/** Deprecated: Use LLVMGetUnnamedAddress instead. */
-LLVMBool LLVMHasUnnamedAddr(LLVMValueRef Global);
-/** Deprecated: Use LLVMSetUnnamedAddress instead. */
-void LLVMSetUnnamedAddr(LLVMValueRef Global, LLVMBool HasUnnamedAddr);
-
-/**
- * @defgroup LLVMCCoreValueWithAlignment Values with alignment
- *
- * Functions in this group only apply to values with alignment, i.e.
- * global variables, load and store instructions.
- */
-
-/**
- * Obtain the preferred alignment of the value.
- * @see llvm::AllocaInst::getAlignment()
- * @see llvm::LoadInst::getAlignment()
- * @see llvm::StoreInst::getAlignment()
- * @see llvm::GlobalValue::getAlignment()
- */
-unsigned LLVMGetAlignment(LLVMValueRef V);
-
-/**
- * Set the preferred alignment of the value.
- * @see llvm::AllocaInst::setAlignment()
- * @see llvm::LoadInst::setAlignment()
- * @see llvm::StoreInst::setAlignment()
- * @see llvm::GlobalValue::setAlignment()
- */
-void LLVMSetAlignment(LLVMValueRef V, unsigned Bytes);
-
-/**
- * Sets a metadata attachment, erasing the existing metadata attachment if
- * it already exists for the given kind.
- *
- * @see llvm::GlobalObject::setMetadata()
- */
-void LLVMGlobalSetMetadata(LLVMValueRef Global, unsigned Kind,
- LLVMMetadataRef MD);
-
-/**
- * Erases a metadata attachment of the given kind if it exists.
- *
- * @see llvm::GlobalObject::eraseMetadata()
- */
-void LLVMGlobalEraseMetadata(LLVMValueRef Global, unsigned Kind);
-
-/**
- * Removes all metadata attachments from this value.
- *
- * @see llvm::GlobalObject::clearMetadata()
- */
-void LLVMGlobalClearMetadata(LLVMValueRef Global);
-
-/**
- * Retrieves an array of metadata entries representing the metadata attached to
- * this value. The caller is responsible for freeing this array by calling
- * \c LLVMDisposeValueMetadataEntries.
- *
- * @see llvm::GlobalObject::getAllMetadata()
- */
-LLVMValueMetadataEntry *LLVMGlobalCopyAllMetadata(LLVMValueRef Value,
- size_t *NumEntries);
-
-/**
- * Destroys value metadata entries.
- */
-void LLVMDisposeValueMetadataEntries(LLVMValueMetadataEntry *Entries);
-
-/**
- * Returns the kind of a value metadata entry at a specific index.
- */
-unsigned LLVMValueMetadataEntriesGetKind(LLVMValueMetadataEntry *Entries,
- unsigned Index);
-
-/**
- * Returns the underlying metadata node of a value metadata entry at a
- * specific index.
- */
-LLVMMetadataRef
-LLVMValueMetadataEntriesGetMetadata(LLVMValueMetadataEntry *Entries,
- unsigned Index);
-
-/**
- * @}
- */
-
-/**
- * @defgroup LLVMCoreValueConstantGlobalVariable Global Variables
- *
- * This group contains functions that operate on global variable values.
- *
- * @see llvm::GlobalVariable
- *
- * @{
- */
-LLVMValueRef LLVMAddGlobal(LLVMModuleRef M, LLVMTypeRef Ty, const char *Name);
-LLVMValueRef LLVMAddGlobalInAddressSpace(LLVMModuleRef M, LLVMTypeRef Ty,
- const char *Name,
- unsigned AddressSpace);
-LLVMValueRef LLVMGetNamedGlobal(LLVMModuleRef M, const char *Name);
-LLVMValueRef LLVMGetFirstGlobal(LLVMModuleRef M);
-LLVMValueRef LLVMGetLastGlobal(LLVMModuleRef M);
-LLVMValueRef LLVMGetNextGlobal(LLVMValueRef GlobalVar);
-LLVMValueRef LLVMGetPreviousGlobal(LLVMValueRef GlobalVar);
-void LLVMDeleteGlobal(LLVMValueRef GlobalVar);
-LLVMValueRef LLVMGetInitializer(LLVMValueRef GlobalVar);
-void LLVMSetInitializer(LLVMValueRef GlobalVar, LLVMValueRef ConstantVal);
-LLVMBool LLVMIsThreadLocal(LLVMValueRef GlobalVar);
-void LLVMSetThreadLocal(LLVMValueRef GlobalVar, LLVMBool IsThreadLocal);
-LLVMBool LLVMIsGlobalConstant(LLVMValueRef GlobalVar);
-void LLVMSetGlobalConstant(LLVMValueRef GlobalVar, LLVMBool IsConstant);
-LLVMThreadLocalMode LLVMGetThreadLocalMode(LLVMValueRef GlobalVar);
-void LLVMSetThreadLocalMode(LLVMValueRef GlobalVar, LLVMThreadLocalMode Mode);
-LLVMBool LLVMIsExternallyInitialized(LLVMValueRef GlobalVar);
-void LLVMSetExternallyInitialized(LLVMValueRef GlobalVar, LLVMBool IsExtInit);
-
-/**
- * @}
- */
-
-/**
- * @defgroup LLVMCoreValueConstantGlobalAlias Global Aliases
- *
- * This group contains function that operate on global alias values.
- *
- * @see llvm::GlobalAlias
- *
- * @{
- */
-LLVMValueRef LLVMAddAlias(LLVMModuleRef M, LLVMTypeRef Ty, LLVMValueRef Aliasee,
- const char *Name);
-
-/**
- * Obtain a GlobalAlias value from a Module by its name.
- *
- * The returned value corresponds to a llvm::GlobalAlias value.
- *
- * @see llvm::Module::getNamedAlias()
- */
-LLVMValueRef LLVMGetNamedGlobalAlias(LLVMModuleRef M,
- const char *Name, size_t NameLen);
-
-/**
- * Obtain an iterator to the first GlobalAlias in a Module.
- *
- * @see llvm::Module::alias_begin()
- */
-LLVMValueRef LLVMGetFirstGlobalAlias(LLVMModuleRef M);
-
-/**
- * Obtain an iterator to the last GlobalAlias in a Module.
- *
- * @see llvm::Module::alias_end()
- */
-LLVMValueRef LLVMGetLastGlobalAlias(LLVMModuleRef M);
-
-/**
- * Advance a GlobalAlias iterator to the next GlobalAlias.
- *
- * Returns NULL if the iterator was already at the end and there are no more
- * global aliases.
- */
-LLVMValueRef LLVMGetNextGlobalAlias(LLVMValueRef GA);
-
-/**
- * Decrement a GlobalAlias iterator to the previous GlobalAlias.
- *
- * Returns NULL if the iterator was already at the beginning and there are
- * no previous global aliases.
- */
-LLVMValueRef LLVMGetPreviousGlobalAlias(LLVMValueRef GA);
-
-/**
- * Retrieve the target value of an alias.
- */
-LLVMValueRef LLVMAliasGetAliasee(LLVMValueRef Alias);
-
-/**
- * Set the target value of an alias.
- */
-void LLVMAliasSetAliasee(LLVMValueRef Alias, LLVMValueRef Aliasee);
-
-/**
- * @}
- */
-
-/**
- * @defgroup LLVMCCoreValueFunction Function values
- *
- * Functions in this group operate on LLVMValueRef instances that
- * correspond to llvm::Function instances.
- *
- * @see llvm::Function
- *
- * @{
- */
-
-/**
- * Remove a function from its containing module and deletes it.
- *
- * @see llvm::Function::eraseFromParent()
- */
-void LLVMDeleteFunction(LLVMValueRef Fn);
-
-/**
- * Check whether the given function has a personality function.
- *
- * @see llvm::Function::hasPersonalityFn()
- */
-LLVMBool LLVMHasPersonalityFn(LLVMValueRef Fn);
-
-/**
- * Obtain the personality function attached to the function.
- *
- * @see llvm::Function::getPersonalityFn()
- */
-LLVMValueRef LLVMGetPersonalityFn(LLVMValueRef Fn);
-
-/**
- * Set the personality function attached to the function.
- *
- * @see llvm::Function::setPersonalityFn()
- */
-void LLVMSetPersonalityFn(LLVMValueRef Fn, LLVMValueRef PersonalityFn);
-
-/**
- * Obtain the ID number from a function instance.
- *
- * @see llvm::Function::getIntrinsicID()
- */
-unsigned LLVMGetIntrinsicID(LLVMValueRef Fn);
-
-/**
- * Create or insert the declaration of an intrinsic. For overloaded intrinsics,
- * parameter types must be provided to uniquely identify an overload.
- *
- * @see llvm::Intrinsic::getDeclaration()
- */
-LLVMValueRef LLVMGetIntrinsicDeclaration(LLVMModuleRef Mod,
- unsigned ID,
- LLVMTypeRef *ParamTypes,
- size_t ParamCount);
-
-/**
- * Retrieves the type of an intrinsic. For overloaded intrinsics, parameter
- * types must be provided to uniquely identify an overload.
- *
- * @see llvm::Intrinsic::getType()
- */
-LLVMTypeRef LLVMIntrinsicGetType(LLVMContextRef Ctx, unsigned ID,
- LLVMTypeRef *ParamTypes, size_t ParamCount);
-
-/**
- * Retrieves the name of an intrinsic.
- *
- * @see llvm::Intrinsic::getName()
- */
-const char *LLVMIntrinsicGetName(unsigned ID, size_t *NameLength);
-
-/**
- * Copies the name of an overloaded intrinsic identified by a given list of
- * parameter types.
- *
- * Unlike LLVMIntrinsicGetName, the caller is responsible for freeing the
- * returned string.
- *
- * @see llvm::Intrinsic::getName()
- */
-const char *LLVMIntrinsicCopyOverloadedName(unsigned ID,
- LLVMTypeRef *ParamTypes,
- size_t ParamCount,
- size_t *NameLength);
-
-/**
- * Obtain if the intrinsic identified by the given ID is overloaded.
- *
- * @see llvm::Intrinsic::isOverloaded()
- */
-LLVMBool LLVMIntrinsicIsOverloaded(unsigned ID);
-
-/**
- * Obtain the calling function of a function.
- *
- * The returned value corresponds to the LLVMCallConv enumeration.
- *
- * @see llvm::Function::getCallingConv()
- */
-unsigned LLVMGetFunctionCallConv(LLVMValueRef Fn);
-
-/**
- * Set the calling convention of a function.
- *
- * @see llvm::Function::setCallingConv()
- *
- * @param Fn Function to operate on
- * @param CC LLVMCallConv to set calling convention to
- */
-void LLVMSetFunctionCallConv(LLVMValueRef Fn, unsigned CC);
-
-/**
- * Obtain the name of the garbage collector to use during code
- * generation.
- *
- * @see llvm::Function::getGC()
- */
-const char *LLVMGetGC(LLVMValueRef Fn);
-
-/**
- * Define the garbage collector to use during code generation.
- *
- * @see llvm::Function::setGC()
- */
-void LLVMSetGC(LLVMValueRef Fn, const char *Name);
-
-/**
- * Add an attribute to a function.
- *
- * @see llvm::Function::addAttribute()
- */
-void LLVMAddAttributeAtIndex(LLVMValueRef F, LLVMAttributeIndex Idx,
- LLVMAttributeRef A);
-unsigned LLVMGetAttributeCountAtIndex(LLVMValueRef F, LLVMAttributeIndex Idx);
-void LLVMGetAttributesAtIndex(LLVMValueRef F, LLVMAttributeIndex Idx,
- LLVMAttributeRef *Attrs);
-LLVMAttributeRef LLVMGetEnumAttributeAtIndex(LLVMValueRef F,
- LLVMAttributeIndex Idx,
- unsigned KindID);
-LLVMAttributeRef LLVMGetStringAttributeAtIndex(LLVMValueRef F,
- LLVMAttributeIndex Idx,
- const char *K, unsigned KLen);
-void LLVMRemoveEnumAttributeAtIndex(LLVMValueRef F, LLVMAttributeIndex Idx,
- unsigned KindID);
-void LLVMRemoveStringAttributeAtIndex(LLVMValueRef F, LLVMAttributeIndex Idx,
- const char *K, unsigned KLen);
-
-/**
- * Add a target-dependent attribute to a function
- * @see llvm::AttrBuilder::addAttribute()
- */
-void LLVMAddTargetDependentFunctionAttr(LLVMValueRef Fn, const char *A,
- const char *V);
-
-/**
- * @defgroup LLVMCCoreValueFunctionParameters Function Parameters
- *
- * Functions in this group relate to arguments/parameters on functions.
- *
- * Functions in this group expect LLVMValueRef instances that correspond
- * to llvm::Function instances.
- *
- * @{
- */
-
-/**
- * Obtain the number of parameters in a function.
- *
- * @see llvm::Function::arg_size()
- */
-unsigned LLVMCountParams(LLVMValueRef Fn);
-
-/**
- * Obtain the parameters in a function.
- *
- * The takes a pointer to a pre-allocated array of LLVMValueRef that is
- * at least LLVMCountParams() long. This array will be filled with
- * LLVMValueRef instances which correspond to the parameters the
- * function receives. Each LLVMValueRef corresponds to a llvm::Argument
- * instance.
- *
- * @see llvm::Function::arg_begin()
- */
-void LLVMGetParams(LLVMValueRef Fn, LLVMValueRef *Params);
-
-/**
- * Obtain the parameter at the specified index.
- *
- * Parameters are indexed from 0.
- *
- * @see llvm::Function::arg_begin()
- */
-LLVMValueRef LLVMGetParam(LLVMValueRef Fn, unsigned Index);
-
-/**
- * Obtain the function to which this argument belongs.
- *
- * Unlike other functions in this group, this one takes an LLVMValueRef
- * that corresponds to a llvm::Attribute.
- *
- * The returned LLVMValueRef is the llvm::Function to which this
- * argument belongs.
- */
-LLVMValueRef LLVMGetParamParent(LLVMValueRef Inst);
-
-/**
- * Obtain the first parameter to a function.
- *
- * @see llvm::Function::arg_begin()
- */
-LLVMValueRef LLVMGetFirstParam(LLVMValueRef Fn);
-
-/**
- * Obtain the last parameter to a function.
- *
- * @see llvm::Function::arg_end()
- */
-LLVMValueRef LLVMGetLastParam(LLVMValueRef Fn);
-
-/**
- * Obtain the next parameter to a function.
- *
- * This takes an LLVMValueRef obtained from LLVMGetFirstParam() (which is
- * actually a wrapped iterator) and obtains the next parameter from the
- * underlying iterator.
- */
-LLVMValueRef LLVMGetNextParam(LLVMValueRef Arg);
-
-/**
- * Obtain the previous parameter to a function.
- *
- * This is the opposite of LLVMGetNextParam().
- */
-LLVMValueRef LLVMGetPreviousParam(LLVMValueRef Arg);
-
-/**
- * Set the alignment for a function parameter.
- *
- * @see llvm::Argument::addAttr()
- * @see llvm::AttrBuilder::addAlignmentAttr()
- */
-void LLVMSetParamAlignment(LLVMValueRef Arg, unsigned Align);
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @defgroup LLVMCCoreValueMetadata Metadata
- *
- * @{
- */
-
-/**
- * Obtain a MDString value from a context.
- *
- * The returned instance corresponds to the llvm::MDString class.
- *
- * The instance is specified by string data of a specified length. The
- * string content is copied, so the backing memory can be freed after
- * this function returns.
- */
-LLVMValueRef LLVMMDStringInContext(LLVMContextRef C, const char *Str,
- unsigned SLen);
-
-/**
- * Obtain a MDString value from the global context.
- */
-LLVMValueRef LLVMMDString(const char *Str, unsigned SLen);
-
-/**
- * Obtain a MDNode value from a context.
- *
- * The returned value corresponds to the llvm::MDNode class.
- */
-LLVMValueRef LLVMMDNodeInContext(LLVMContextRef C, LLVMValueRef *Vals,
- unsigned Count);
-
-/**
- * Obtain a MDNode value from the global context.
- */
-LLVMValueRef LLVMMDNode(LLVMValueRef *Vals, unsigned Count);
-
-/**
- * Obtain a Metadata as a Value.
- */
-LLVMValueRef LLVMMetadataAsValue(LLVMContextRef C, LLVMMetadataRef MD);
-
-/**
- * Obtain a Value as a Metadata.
- */
-LLVMMetadataRef LLVMValueAsMetadata(LLVMValueRef Val);
-
-/**
- * Obtain the underlying string from a MDString value.
- *
- * @param V Instance to obtain string from.
- * @param Length Memory address which will hold length of returned string.
- * @return String data in MDString.
- */
-const char *LLVMGetMDString(LLVMValueRef V, unsigned *Length);
-
-/**
- * Obtain the number of operands from an MDNode value.
- *
- * @param V MDNode to get number of operands from.
- * @return Number of operands of the MDNode.
- */
-unsigned LLVMGetMDNodeNumOperands(LLVMValueRef V);
-
-/**
- * Obtain the given MDNode's operands.
- *
- * The passed LLVMValueRef pointer should point to enough memory to hold all of
- * the operands of the given MDNode (see LLVMGetMDNodeNumOperands) as
- * LLVMValueRefs. This memory will be populated with the LLVMValueRefs of the
- * MDNode's operands.
- *
- * @param V MDNode to get the operands from.
- * @param Dest Destination array for operands.
- */
-void LLVMGetMDNodeOperands(LLVMValueRef V, LLVMValueRef *Dest);
-
-/**
- * @}
- */
-
-/**
- * @defgroup LLVMCCoreValueBasicBlock Basic Block
- *
- * A basic block represents a single entry single exit section of code.
- * Basic blocks contain a list of instructions which form the body of
- * the block.
- *
- * Basic blocks belong to functions. They have the type of label.
- *
- * Basic blocks are themselves values. However, the C API models them as
- * LLVMBasicBlockRef.
- *
- * @see llvm::BasicBlock
- *
- * @{
- */
-
-/**
- * Convert a basic block instance to a value type.
- */
-LLVMValueRef LLVMBasicBlockAsValue(LLVMBasicBlockRef BB);
-
-/**
- * Determine whether an LLVMValueRef is itself a basic block.
- */
-LLVMBool LLVMValueIsBasicBlock(LLVMValueRef Val);
-
-/**
- * Convert an LLVMValueRef to an LLVMBasicBlockRef instance.
- */
-LLVMBasicBlockRef LLVMValueAsBasicBlock(LLVMValueRef Val);
-
-/**
- * Obtain the string name of a basic block.
- */
-const char *LLVMGetBasicBlockName(LLVMBasicBlockRef BB);
-
-/**
- * Obtain the function to which a basic block belongs.
- *
- * @see llvm::BasicBlock::getParent()
- */
-LLVMValueRef LLVMGetBasicBlockParent(LLVMBasicBlockRef BB);
-
-/**
- * Obtain the terminator instruction for a basic block.
- *
- * If the basic block does not have a terminator (it is not well-formed
- * if it doesn't), then NULL is returned.
- *
- * The returned LLVMValueRef corresponds to an llvm::Instruction.
- *
- * @see llvm::BasicBlock::getTerminator()
- */
-LLVMValueRef LLVMGetBasicBlockTerminator(LLVMBasicBlockRef BB);
-
-/**
- * Obtain the number of basic blocks in a function.
- *
- * @param Fn Function value to operate on.
- */
-unsigned LLVMCountBasicBlocks(LLVMValueRef Fn);
-
-/**
- * Obtain all of the basic blocks in a function.
- *
- * This operates on a function value. The BasicBlocks parameter is a
- * pointer to a pre-allocated array of LLVMBasicBlockRef of at least
- * LLVMCountBasicBlocks() in length. This array is populated with
- * LLVMBasicBlockRef instances.
- */
-void LLVMGetBasicBlocks(LLVMValueRef Fn, LLVMBasicBlockRef *BasicBlocks);
-
-/**
- * Obtain the first basic block in a function.
- *
- * The returned basic block can be used as an iterator. You will likely
- * eventually call into LLVMGetNextBasicBlock() with it.
- *
- * @see llvm::Function::begin()
- */
-LLVMBasicBlockRef LLVMGetFirstBasicBlock(LLVMValueRef Fn);
-
-/**
- * Obtain the last basic block in a function.
- *
- * @see llvm::Function::end()
- */
-LLVMBasicBlockRef LLVMGetLastBasicBlock(LLVMValueRef Fn);
-
-/**
- * Advance a basic block iterator.
- */
-LLVMBasicBlockRef LLVMGetNextBasicBlock(LLVMBasicBlockRef BB);
-
-/**
- * Go backwards in a basic block iterator.
- */
-LLVMBasicBlockRef LLVMGetPreviousBasicBlock(LLVMBasicBlockRef BB);
-
-/**
- * Obtain the basic block that corresponds to the entry point of a
- * function.
- *
- * @see llvm::Function::getEntryBlock()
- */
-LLVMBasicBlockRef LLVMGetEntryBasicBlock(LLVMValueRef Fn);
-
-/**
- * Create a new basic block without inserting it into a function.
- *
- * @see llvm::BasicBlock::Create()
- */
-LLVMBasicBlockRef LLVMCreateBasicBlockInContext(LLVMContextRef C,
- const char *Name);
-
-/**
- * Append a basic block to the end of a function.
- *
- * @see llvm::BasicBlock::Create()
- */
-LLVMBasicBlockRef LLVMAppendBasicBlockInContext(LLVMContextRef C,
- LLVMValueRef Fn,
- const char *Name);
-
-/**
- * Append a basic block to the end of a function using the global
- * context.
- *
- * @see llvm::BasicBlock::Create()
- */
-LLVMBasicBlockRef LLVMAppendBasicBlock(LLVMValueRef Fn, const char *Name);
-
-/**
- * Insert a basic block in a function before another basic block.
- *
- * The function to add to is determined by the function of the
- * passed basic block.
- *
- * @see llvm::BasicBlock::Create()
- */
-LLVMBasicBlockRef LLVMInsertBasicBlockInContext(LLVMContextRef C,
- LLVMBasicBlockRef BB,
- const char *Name);
-
-/**
- * Insert a basic block in a function using the global context.
- *
- * @see llvm::BasicBlock::Create()
- */
-LLVMBasicBlockRef LLVMInsertBasicBlock(LLVMBasicBlockRef InsertBeforeBB,
- const char *Name);
-
-/**
- * Remove a basic block from a function and delete it.
- *
- * This deletes the basic block from its containing function and deletes
- * the basic block itself.
- *
- * @see llvm::BasicBlock::eraseFromParent()
- */
-void LLVMDeleteBasicBlock(LLVMBasicBlockRef BB);
-
-/**
- * Remove a basic block from a function.
- *
- * This deletes the basic block from its containing function but keep
- * the basic block alive.
- *
- * @see llvm::BasicBlock::removeFromParent()
- */
-void LLVMRemoveBasicBlockFromParent(LLVMBasicBlockRef BB);
-
-/**
- * Move a basic block to before another one.
- *
- * @see llvm::BasicBlock::moveBefore()
- */
-void LLVMMoveBasicBlockBefore(LLVMBasicBlockRef BB, LLVMBasicBlockRef MovePos);
-
-/**
- * Move a basic block to after another one.
- *
- * @see llvm::BasicBlock::moveAfter()
- */
-void LLVMMoveBasicBlockAfter(LLVMBasicBlockRef BB, LLVMBasicBlockRef MovePos);
-
-/**
- * Obtain the first instruction in a basic block.
- *
- * The returned LLVMValueRef corresponds to a llvm::Instruction
- * instance.
- */
-LLVMValueRef LLVMGetFirstInstruction(LLVMBasicBlockRef BB);
-
-/**
- * Obtain the last instruction in a basic block.
- *
- * The returned LLVMValueRef corresponds to an LLVM:Instruction.
- */
-LLVMValueRef LLVMGetLastInstruction(LLVMBasicBlockRef BB);
-
-/**
- * @}
- */
-
-/**
- * @defgroup LLVMCCoreValueInstruction Instructions
- *
- * Functions in this group relate to the inspection and manipulation of
- * individual instructions.
- *
- * In the C++ API, an instruction is modeled by llvm::Instruction. This
- * class has a large number of descendents. llvm::Instruction is a
- * llvm::Value and in the C API, instructions are modeled by
- * LLVMValueRef.
- *
- * This group also contains sub-groups which operate on specific
- * llvm::Instruction types, e.g. llvm::CallInst.
- *
- * @{
- */
-
-/**
- * Determine whether an instruction has any metadata attached.
- */
-int LLVMHasMetadata(LLVMValueRef Val);
-
-/**
- * Return metadata associated with an instruction value.
- */
-LLVMValueRef LLVMGetMetadata(LLVMValueRef Val, unsigned KindID);
-
-/**
- * Set metadata associated with an instruction value.
- */
-void LLVMSetMetadata(LLVMValueRef Val, unsigned KindID, LLVMValueRef Node);
-
-/**
- * Returns the metadata associated with an instruction value, but filters out
- * all the debug locations.
- *
- * @see llvm::Instruction::getAllMetadataOtherThanDebugLoc()
- */
-LLVMValueMetadataEntry *
-LLVMInstructionGetAllMetadataOtherThanDebugLoc(LLVMValueRef Instr,
- size_t *NumEntries);
-
-/**
- * Obtain the basic block to which an instruction belongs.
- *
- * @see llvm::Instruction::getParent()
- */
-LLVMBasicBlockRef LLVMGetInstructionParent(LLVMValueRef Inst);
-
-/**
- * Obtain the instruction that occurs after the one specified.
- *
- * The next instruction will be from the same basic block.
- *
- * If this is the last instruction in a basic block, NULL will be
- * returned.
- */
-LLVMValueRef LLVMGetNextInstruction(LLVMValueRef Inst);
-
-/**
- * Obtain the instruction that occurred before this one.
- *
- * If the instruction is the first instruction in a basic block, NULL
- * will be returned.
- */
-LLVMValueRef LLVMGetPreviousInstruction(LLVMValueRef Inst);
-
-/**
- * Remove and delete an instruction.
- *
- * The instruction specified is removed from its containing building
- * block but is kept alive.
- *
- * @see llvm::Instruction::removeFromParent()
- */
-void LLVMInstructionRemoveFromParent(LLVMValueRef Inst);
-
-/**
- * Remove and delete an instruction.
- *
- * The instruction specified is removed from its containing building
- * block and then deleted.
- *
- * @see llvm::Instruction::eraseFromParent()
- */
-void LLVMInstructionEraseFromParent(LLVMValueRef Inst);
-
-/**
- * Obtain the code opcode for an individual instruction.
- *
- * @see llvm::Instruction::getOpCode()
- */
-LLVMOpcode LLVMGetInstructionOpcode(LLVMValueRef Inst);
-
-/**
- * Obtain the predicate of an instruction.
- *
- * This is only valid for instructions that correspond to llvm::ICmpInst
- * or llvm::ConstantExpr whose opcode is llvm::Instruction::ICmp.
- *
- * @see llvm::ICmpInst::getPredicate()
- */
-LLVMIntPredicate LLVMGetICmpPredicate(LLVMValueRef Inst);
-
-/**
- * Obtain the float predicate of an instruction.
- *
- * This is only valid for instructions that correspond to llvm::FCmpInst
- * or llvm::ConstantExpr whose opcode is llvm::Instruction::FCmp.
- *
- * @see llvm::FCmpInst::getPredicate()
- */
-LLVMRealPredicate LLVMGetFCmpPredicate(LLVMValueRef Inst);
-
-/**
- * Create a copy of 'this' instruction that is identical in all ways
- * except the following:
- * * The instruction has no parent
- * * The instruction has no name
- *
- * @see llvm::Instruction::clone()
- */
-LLVMValueRef LLVMInstructionClone(LLVMValueRef Inst);
-
-/**
- * Determine whether an instruction is a terminator. This routine is named to
- * be compatible with historical functions that did this by querying the
- * underlying C++ type.
- *
- * @see llvm::Instruction::isTerminator()
- */
-LLVMValueRef LLVMIsATerminatorInst(LLVMValueRef Inst);
-
-/**
- * @defgroup LLVMCCoreValueInstructionCall Call Sites and Invocations
- *
- * Functions in this group apply to instructions that refer to call
- * sites and invocations. These correspond to C++ types in the
- * llvm::CallInst class tree.
- *
- * @{
- */
-
-/**
- * Obtain the argument count for a call instruction.
- *
- * This expects an LLVMValueRef that corresponds to a llvm::CallInst,
- * llvm::InvokeInst, or llvm:FuncletPadInst.
- *
- * @see llvm::CallInst::getNumArgOperands()
- * @see llvm::InvokeInst::getNumArgOperands()
- * @see llvm::FuncletPadInst::getNumArgOperands()
- */
-unsigned LLVMGetNumArgOperands(LLVMValueRef Instr);
-
-/**
- * Set the calling convention for a call instruction.
- *
- * This expects an LLVMValueRef that corresponds to a llvm::CallInst or
- * llvm::InvokeInst.
- *
- * @see llvm::CallInst::setCallingConv()
- * @see llvm::InvokeInst::setCallingConv()
- */
-void LLVMSetInstructionCallConv(LLVMValueRef Instr, unsigned CC);
-
-/**
- * Obtain the calling convention for a call instruction.
- *
- * This is the opposite of LLVMSetInstructionCallConv(). Reads its
- * usage.
- *
- * @see LLVMSetInstructionCallConv()
- */
-unsigned LLVMGetInstructionCallConv(LLVMValueRef Instr);
-
-void LLVMSetInstrParamAlignment(LLVMValueRef Instr, unsigned index,
- unsigned Align);
-
-void LLVMAddCallSiteAttribute(LLVMValueRef C, LLVMAttributeIndex Idx,
- LLVMAttributeRef A);
-unsigned LLVMGetCallSiteAttributeCount(LLVMValueRef C, LLVMAttributeIndex Idx);
-void LLVMGetCallSiteAttributes(LLVMValueRef C, LLVMAttributeIndex Idx,
- LLVMAttributeRef *Attrs);
-LLVMAttributeRef LLVMGetCallSiteEnumAttribute(LLVMValueRef C,
- LLVMAttributeIndex Idx,
- unsigned KindID);
-LLVMAttributeRef LLVMGetCallSiteStringAttribute(LLVMValueRef C,
- LLVMAttributeIndex Idx,
- const char *K, unsigned KLen);
-void LLVMRemoveCallSiteEnumAttribute(LLVMValueRef C, LLVMAttributeIndex Idx,
- unsigned KindID);
-void LLVMRemoveCallSiteStringAttribute(LLVMValueRef C, LLVMAttributeIndex Idx,
- const char *K, unsigned KLen);
-
-/**
- * Obtain the function type called by this instruction.
- *
- * @see llvm::CallBase::getFunctionType()
- */
-LLVMTypeRef LLVMGetCalledFunctionType(LLVMValueRef C);
-
-/**
- * Obtain the pointer to the function invoked by this instruction.
- *
- * This expects an LLVMValueRef that corresponds to a llvm::CallInst or
- * llvm::InvokeInst.
- *
- * @see llvm::CallInst::getCalledValue()
- * @see llvm::InvokeInst::getCalledValue()
- */
-LLVMValueRef LLVMGetCalledValue(LLVMValueRef Instr);
-
-/**
- * Obtain whether a call instruction is a tail call.
- *
- * This only works on llvm::CallInst instructions.
- *
- * @see llvm::CallInst::isTailCall()
- */
-LLVMBool LLVMIsTailCall(LLVMValueRef CallInst);
-
-/**
- * Set whether a call instruction is a tail call.
- *
- * This only works on llvm::CallInst instructions.
- *
- * @see llvm::CallInst::setTailCall()
- */
-void LLVMSetTailCall(LLVMValueRef CallInst, LLVMBool IsTailCall);
-
-/**
- * Return the normal destination basic block.
- *
- * This only works on llvm::InvokeInst instructions.
- *
- * @see llvm::InvokeInst::getNormalDest()
- */
-LLVMBasicBlockRef LLVMGetNormalDest(LLVMValueRef InvokeInst);
-
-/**
- * Return the unwind destination basic block.
- *
- * Works on llvm::InvokeInst, llvm::CleanupReturnInst, and
- * llvm::CatchSwitchInst instructions.
- *
- * @see llvm::InvokeInst::getUnwindDest()
- * @see llvm::CleanupReturnInst::getUnwindDest()
- * @see llvm::CatchSwitchInst::getUnwindDest()
- */
-LLVMBasicBlockRef LLVMGetUnwindDest(LLVMValueRef InvokeInst);
-
-/**
- * Set the normal destination basic block.
- *
- * This only works on llvm::InvokeInst instructions.
- *
- * @see llvm::InvokeInst::setNormalDest()
- */
-void LLVMSetNormalDest(LLVMValueRef InvokeInst, LLVMBasicBlockRef B);
-
-/**
- * Set the unwind destination basic block.
- *
- * Works on llvm::InvokeInst, llvm::CleanupReturnInst, and
- * llvm::CatchSwitchInst instructions.
- *
- * @see llvm::InvokeInst::setUnwindDest()
- * @see llvm::CleanupReturnInst::setUnwindDest()
- * @see llvm::CatchSwitchInst::setUnwindDest()
- */
-void LLVMSetUnwindDest(LLVMValueRef InvokeInst, LLVMBasicBlockRef B);
-
-/**
- * @}
- */
-
-/**
- * @defgroup LLVMCCoreValueInstructionTerminator Terminators
- *
- * Functions in this group only apply to instructions for which
- * LLVMIsATerminatorInst returns true.
- *
- * @{
- */
-
-/**
- * Return the number of successors that this terminator has.
- *
- * @see llvm::Instruction::getNumSuccessors
- */
-unsigned LLVMGetNumSuccessors(LLVMValueRef Term);
-
-/**
- * Return the specified successor.
- *
- * @see llvm::Instruction::getSuccessor
- */
-LLVMBasicBlockRef LLVMGetSuccessor(LLVMValueRef Term, unsigned i);
-
-/**
- * Update the specified successor to point at the provided block.
- *
- * @see llvm::Instruction::setSuccessor
- */
-void LLVMSetSuccessor(LLVMValueRef Term, unsigned i, LLVMBasicBlockRef block);
-
-/**
- * Return if a branch is conditional.
- *
- * This only works on llvm::BranchInst instructions.
- *
- * @see llvm::BranchInst::isConditional
- */
-LLVMBool LLVMIsConditional(LLVMValueRef Branch);
-
-/**
- * Return the condition of a branch instruction.
- *
- * This only works on llvm::BranchInst instructions.
- *
- * @see llvm::BranchInst::getCondition
- */
-LLVMValueRef LLVMGetCondition(LLVMValueRef Branch);
-
-/**
- * Set the condition of a branch instruction.
- *
- * This only works on llvm::BranchInst instructions.
- *
- * @see llvm::BranchInst::setCondition
- */
-void LLVMSetCondition(LLVMValueRef Branch, LLVMValueRef Cond);
-
-/**
- * Obtain the default destination basic block of a switch instruction.
- *
- * This only works on llvm::SwitchInst instructions.
- *
- * @see llvm::SwitchInst::getDefaultDest()
- */
-LLVMBasicBlockRef LLVMGetSwitchDefaultDest(LLVMValueRef SwitchInstr);
-
-/**
- * @}
- */
-
-/**
- * @defgroup LLVMCCoreValueInstructionAlloca Allocas
- *
- * Functions in this group only apply to instructions that map to
- * llvm::AllocaInst instances.
- *
- * @{
- */
-
-/**
- * Obtain the type that is being allocated by the alloca instruction.
- */
-LLVMTypeRef LLVMGetAllocatedType(LLVMValueRef Alloca);
-
-/**
- * @}
- */
-
-/**
- * @defgroup LLVMCCoreValueInstructionGetElementPointer GEPs
- *
- * Functions in this group only apply to instructions that map to
- * llvm::GetElementPtrInst instances.
- *
- * @{
- */
-
-/**
- * Check whether the given GEP instruction is inbounds.
- */
-LLVMBool LLVMIsInBounds(LLVMValueRef GEP);
-
-/**
- * Set the given GEP instruction to be inbounds or not.
- */
-void LLVMSetIsInBounds(LLVMValueRef GEP, LLVMBool InBounds);
-
-/**
- * @}
- */
-
-/**
- * @defgroup LLVMCCoreValueInstructionPHINode PHI Nodes
- *
- * Functions in this group only apply to instructions that map to
- * llvm::PHINode instances.
- *
- * @{
- */
-
-/**
- * Add an incoming value to the end of a PHI list.
- */
-void LLVMAddIncoming(LLVMValueRef PhiNode, LLVMValueRef *IncomingValues,
- LLVMBasicBlockRef *IncomingBlocks, unsigned Count);
-
-/**
- * Obtain the number of incoming basic blocks to a PHI node.
- */
-unsigned LLVMCountIncoming(LLVMValueRef PhiNode);
-
-/**
- * Obtain an incoming value to a PHI node as an LLVMValueRef.
- */
-LLVMValueRef LLVMGetIncomingValue(LLVMValueRef PhiNode, unsigned Index);
-
-/**
- * Obtain an incoming value to a PHI node as an LLVMBasicBlockRef.
- */
-LLVMBasicBlockRef LLVMGetIncomingBlock(LLVMValueRef PhiNode, unsigned Index);
-
-/**
- * @}
- */
-
-/**
- * @defgroup LLVMCCoreValueInstructionExtractValue ExtractValue
- * @defgroup LLVMCCoreValueInstructionInsertValue InsertValue
- *
- * Functions in this group only apply to instructions that map to
- * llvm::ExtractValue and llvm::InsertValue instances.
- *
- * @{
- */
-
-/**
- * Obtain the number of indices.
- * NB: This also works on GEP.
- */
-unsigned LLVMGetNumIndices(LLVMValueRef Inst);
-
-/**
- * Obtain the indices as an array.
- */
-const unsigned *LLVMGetIndices(LLVMValueRef Inst);
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @defgroup LLVMCCoreInstructionBuilder Instruction Builders
- *
- * An instruction builder represents a point within a basic block and is
- * the exclusive means of building instructions using the C interface.
- *
- * @{
- */
-
-LLVMBuilderRef LLVMCreateBuilderInContext(LLVMContextRef C);
-LLVMBuilderRef LLVMCreateBuilder(void);
-void LLVMPositionBuilder(LLVMBuilderRef Builder, LLVMBasicBlockRef Block,
- LLVMValueRef Instr);
-void LLVMPositionBuilderBefore(LLVMBuilderRef Builder, LLVMValueRef Instr);
-void LLVMPositionBuilderAtEnd(LLVMBuilderRef Builder, LLVMBasicBlockRef Block);
-LLVMBasicBlockRef LLVMGetInsertBlock(LLVMBuilderRef Builder);
-void LLVMClearInsertionPosition(LLVMBuilderRef Builder);
-void LLVMInsertIntoBuilder(LLVMBuilderRef Builder, LLVMValueRef Instr);
-void LLVMInsertIntoBuilderWithName(LLVMBuilderRef Builder, LLVMValueRef Instr,
- const char *Name);
-void LLVMDisposeBuilder(LLVMBuilderRef Builder);
-
-/* Metadata */
-void LLVMSetCurrentDebugLocation(LLVMBuilderRef Builder, LLVMValueRef L);
-LLVMValueRef LLVMGetCurrentDebugLocation(LLVMBuilderRef Builder);
-void LLVMSetInstDebugLocation(LLVMBuilderRef Builder, LLVMValueRef Inst);
-
-/* Terminators */
-LLVMValueRef LLVMBuildRetVoid(LLVMBuilderRef);
-LLVMValueRef LLVMBuildRet(LLVMBuilderRef, LLVMValueRef V);
-LLVMValueRef LLVMBuildAggregateRet(LLVMBuilderRef, LLVMValueRef *RetVals,
- unsigned N);
-LLVMValueRef LLVMBuildBr(LLVMBuilderRef, LLVMBasicBlockRef Dest);
-LLVMValueRef LLVMBuildCondBr(LLVMBuilderRef, LLVMValueRef If,
- LLVMBasicBlockRef Then, LLVMBasicBlockRef Else);
-LLVMValueRef LLVMBuildSwitch(LLVMBuilderRef, LLVMValueRef V,
- LLVMBasicBlockRef Else, unsigned NumCases);
-LLVMValueRef LLVMBuildIndirectBr(LLVMBuilderRef B, LLVMValueRef Addr,
- unsigned NumDests);
-// LLVMBuildInvoke is deprecated in favor of LLVMBuildInvoke2, in preparation
-// for opaque pointer types.
-LLVMValueRef LLVMBuildInvoke(LLVMBuilderRef, LLVMValueRef Fn,
- LLVMValueRef *Args, unsigned NumArgs,
- LLVMBasicBlockRef Then, LLVMBasicBlockRef Catch,
- const char *Name);
-LLVMValueRef LLVMBuildInvoke2(LLVMBuilderRef, LLVMTypeRef Ty, LLVMValueRef Fn,
- LLVMValueRef *Args, unsigned NumArgs,
- LLVMBasicBlockRef Then, LLVMBasicBlockRef Catch,
- const char *Name);
-LLVMValueRef LLVMBuildUnreachable(LLVMBuilderRef);
-
-/* Exception Handling */
-LLVMValueRef LLVMBuildResume(LLVMBuilderRef B, LLVMValueRef Exn);
-LLVMValueRef LLVMBuildLandingPad(LLVMBuilderRef B, LLVMTypeRef Ty,
- LLVMValueRef PersFn, unsigned NumClauses,
- const char *Name);
-LLVMValueRef LLVMBuildCleanupRet(LLVMBuilderRef B, LLVMValueRef CatchPad,
- LLVMBasicBlockRef BB);
-LLVMValueRef LLVMBuildCatchRet(LLVMBuilderRef B, LLVMValueRef CatchPad,
- LLVMBasicBlockRef BB);
-LLVMValueRef LLVMBuildCatchPad(LLVMBuilderRef B, LLVMValueRef ParentPad,
- LLVMValueRef *Args, unsigned NumArgs,
- const char *Name);
-LLVMValueRef LLVMBuildCleanupPad(LLVMBuilderRef B, LLVMValueRef ParentPad,
- LLVMValueRef *Args, unsigned NumArgs,
- const char *Name);
-LLVMValueRef LLVMBuildCatchSwitch(LLVMBuilderRef B, LLVMValueRef ParentPad,
- LLVMBasicBlockRef UnwindBB,
- unsigned NumHandlers, const char *Name);
-
-/* Add a case to the switch instruction */
-void LLVMAddCase(LLVMValueRef Switch, LLVMValueRef OnVal,
- LLVMBasicBlockRef Dest);
-
-/* Add a destination to the indirectbr instruction */
-void LLVMAddDestination(LLVMValueRef IndirectBr, LLVMBasicBlockRef Dest);
-
-/* Get the number of clauses on the landingpad instruction */
-unsigned LLVMGetNumClauses(LLVMValueRef LandingPad);
-
-/* Get the value of the clause at idnex Idx on the landingpad instruction */
-LLVMValueRef LLVMGetClause(LLVMValueRef LandingPad, unsigned Idx);
-
-/* Add a catch or filter clause to the landingpad instruction */
-void LLVMAddClause(LLVMValueRef LandingPad, LLVMValueRef ClauseVal);
-
-/* Get the 'cleanup' flag in the landingpad instruction */
-LLVMBool LLVMIsCleanup(LLVMValueRef LandingPad);
-
-/* Set the 'cleanup' flag in the landingpad instruction */
-void LLVMSetCleanup(LLVMValueRef LandingPad, LLVMBool Val);
-
-/* Add a destination to the catchswitch instruction */
-void LLVMAddHandler(LLVMValueRef CatchSwitch, LLVMBasicBlockRef Dest);
-
-/* Get the number of handlers on the catchswitch instruction */
-unsigned LLVMGetNumHandlers(LLVMValueRef CatchSwitch);
-
-/**
- * Obtain the basic blocks acting as handlers for a catchswitch instruction.
- *
- * The Handlers parameter should point to a pre-allocated array of
- * LLVMBasicBlockRefs at least LLVMGetNumHandlers() large. On return, the
- * first LLVMGetNumHandlers() entries in the array will be populated
- * with LLVMBasicBlockRef instances.
- *
- * @param CatchSwitch The catchswitch instruction to operate on.
- * @param Handlers Memory address of an array to be filled with basic blocks.
- */
-void LLVMGetHandlers(LLVMValueRef CatchSwitch, LLVMBasicBlockRef *Handlers);
-
-/* Funclets */
-
-/* Get the number of funcletpad arguments. */
-LLVMValueRef LLVMGetArgOperand(LLVMValueRef Funclet, unsigned i);
-
-/* Set a funcletpad argument at the given index. */
-void LLVMSetArgOperand(LLVMValueRef Funclet, unsigned i, LLVMValueRef value);
-
-/**
- * Get the parent catchswitch instruction of a catchpad instruction.
- *
- * This only works on llvm::CatchPadInst instructions.
- *
- * @see llvm::CatchPadInst::getCatchSwitch()
- */
-LLVMValueRef LLVMGetParentCatchSwitch(LLVMValueRef CatchPad);
-
-/**
- * Set the parent catchswitch instruction of a catchpad instruction.
- *
- * This only works on llvm::CatchPadInst instructions.
- *
- * @see llvm::CatchPadInst::setCatchSwitch()
- */
-void LLVMSetParentCatchSwitch(LLVMValueRef CatchPad, LLVMValueRef CatchSwitch);
-
-/* Arithmetic */
-LLVMValueRef LLVMBuildAdd(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS,
- const char *Name);
-LLVMValueRef LLVMBuildNSWAdd(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS,
- const char *Name);
-LLVMValueRef LLVMBuildNUWAdd(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS,
- const char *Name);
-LLVMValueRef LLVMBuildFAdd(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS,
- const char *Name);
-LLVMValueRef LLVMBuildSub(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS,
- const char *Name);
-LLVMValueRef LLVMBuildNSWSub(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS,
- const char *Name);
-LLVMValueRef LLVMBuildNUWSub(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS,
- const char *Name);
-LLVMValueRef LLVMBuildFSub(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS,
- const char *Name);
-LLVMValueRef LLVMBuildMul(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS,
- const char *Name);
-LLVMValueRef LLVMBuildNSWMul(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS,
- const char *Name);
-LLVMValueRef LLVMBuildNUWMul(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS,
- const char *Name);
-LLVMValueRef LLVMBuildFMul(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS,
- const char *Name);
-LLVMValueRef LLVMBuildUDiv(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS,
- const char *Name);
-LLVMValueRef LLVMBuildExactUDiv(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS,
- const char *Name);
-LLVMValueRef LLVMBuildSDiv(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS,
- const char *Name);
-LLVMValueRef LLVMBuildExactSDiv(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS,
- const char *Name);
-LLVMValueRef LLVMBuildFDiv(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS,
- const char *Name);
-LLVMValueRef LLVMBuildURem(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS,
- const char *Name);
-LLVMValueRef LLVMBuildSRem(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS,
- const char *Name);
-LLVMValueRef LLVMBuildFRem(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS,
- const char *Name);
-LLVMValueRef LLVMBuildShl(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS,
- const char *Name);
-LLVMValueRef LLVMBuildLShr(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS,
- const char *Name);
-LLVMValueRef LLVMBuildAShr(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS,
- const char *Name);
-LLVMValueRef LLVMBuildAnd(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS,
- const char *Name);
-LLVMValueRef LLVMBuildOr(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS,
- const char *Name);
-LLVMValueRef LLVMBuildXor(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS,
- const char *Name);
-LLVMValueRef LLVMBuildBinOp(LLVMBuilderRef B, LLVMOpcode Op,
- LLVMValueRef LHS, LLVMValueRef RHS,
- const char *Name);
-LLVMValueRef LLVMBuildNeg(LLVMBuilderRef, LLVMValueRef V, const char *Name);
-LLVMValueRef LLVMBuildNSWNeg(LLVMBuilderRef B, LLVMValueRef V,
- const char *Name);
-LLVMValueRef LLVMBuildNUWNeg(LLVMBuilderRef B, LLVMValueRef V,
- const char *Name);
-LLVMValueRef LLVMBuildFNeg(LLVMBuilderRef, LLVMValueRef V, const char *Name);
-LLVMValueRef LLVMBuildNot(LLVMBuilderRef, LLVMValueRef V, const char *Name);
-
-/* Memory */
-LLVMValueRef LLVMBuildMalloc(LLVMBuilderRef, LLVMTypeRef Ty, const char *Name);
-LLVMValueRef LLVMBuildArrayMalloc(LLVMBuilderRef, LLVMTypeRef Ty,
- LLVMValueRef Val, const char *Name);
-
-/**
- * Creates and inserts a memset to the specified pointer and the
- * specified value.
- *
- * @see llvm::IRRBuilder::CreateMemSet()
- */
-LLVMValueRef LLVMBuildMemSet(LLVMBuilderRef B, LLVMValueRef Ptr,
- LLVMValueRef Val, LLVMValueRef Len,
- unsigned Align);
-/**
- * Creates and inserts a memcpy between the specified pointers.
- *
- * @see llvm::IRRBuilder::CreateMemCpy()
- */
-LLVMValueRef LLVMBuildMemCpy(LLVMBuilderRef B,
- LLVMValueRef Dst, unsigned DstAlign,
- LLVMValueRef Src, unsigned SrcAlign,
- LLVMValueRef Size);
-/**
- * Creates and inserts a memmove between the specified pointers.
- *
- * @see llvm::IRRBuilder::CreateMemMove()
- */
-LLVMValueRef LLVMBuildMemMove(LLVMBuilderRef B,
- LLVMValueRef Dst, unsigned DstAlign,
- LLVMValueRef Src, unsigned SrcAlign,
- LLVMValueRef Size);
-
-LLVMValueRef LLVMBuildAlloca(LLVMBuilderRef, LLVMTypeRef Ty, const char *Name);
-LLVMValueRef LLVMBuildArrayAlloca(LLVMBuilderRef, LLVMTypeRef Ty,
- LLVMValueRef Val, const char *Name);
-LLVMValueRef LLVMBuildFree(LLVMBuilderRef, LLVMValueRef PointerVal);
-// LLVMBuildLoad is deprecated in favor of LLVMBuildLoad2, in preparation for
-// opaque pointer types.
-LLVMValueRef LLVMBuildLoad(LLVMBuilderRef, LLVMValueRef PointerVal,
- const char *Name);
-LLVMValueRef LLVMBuildLoad2(LLVMBuilderRef, LLVMTypeRef Ty,
- LLVMValueRef PointerVal, const char *Name);
-LLVMValueRef LLVMBuildStore(LLVMBuilderRef, LLVMValueRef Val, LLVMValueRef Ptr);
-// LLVMBuildGEP, LLVMBuildInBoundsGEP, and LLVMBuildStructGEP are deprecated in
-// favor of LLVMBuild*GEP2, in preparation for opaque pointer types.
-LLVMValueRef LLVMBuildGEP(LLVMBuilderRef B, LLVMValueRef Pointer,
- LLVMValueRef *Indices, unsigned NumIndices,
- const char *Name);
-LLVMValueRef LLVMBuildInBoundsGEP(LLVMBuilderRef B, LLVMValueRef Pointer,
- LLVMValueRef *Indices, unsigned NumIndices,
- const char *Name);
-LLVMValueRef LLVMBuildStructGEP(LLVMBuilderRef B, LLVMValueRef Pointer,
- unsigned Idx, const char *Name);
-LLVMValueRef LLVMBuildGEP2(LLVMBuilderRef B, LLVMTypeRef Ty,
- LLVMValueRef Pointer, LLVMValueRef *Indices,
- unsigned NumIndices, const char *Name);
-LLVMValueRef LLVMBuildInBoundsGEP2(LLVMBuilderRef B, LLVMTypeRef Ty,
- LLVMValueRef Pointer, LLVMValueRef *Indices,
- unsigned NumIndices, const char *Name);
-LLVMValueRef LLVMBuildStructGEP2(LLVMBuilderRef B, LLVMTypeRef Ty,
- LLVMValueRef Pointer, unsigned Idx,
- const char *Name);
-LLVMValueRef LLVMBuildGlobalString(LLVMBuilderRef B, const char *Str,
- const char *Name);
-LLVMValueRef LLVMBuildGlobalStringPtr(LLVMBuilderRef B, const char *Str,
- const char *Name);
-LLVMBool LLVMGetVolatile(LLVMValueRef MemoryAccessInst);
-void LLVMSetVolatile(LLVMValueRef MemoryAccessInst, LLVMBool IsVolatile);
-LLVMAtomicOrdering LLVMGetOrdering(LLVMValueRef MemoryAccessInst);
-void LLVMSetOrdering(LLVMValueRef MemoryAccessInst, LLVMAtomicOrdering Ordering);
-
-/* Casts */
-LLVMValueRef LLVMBuildTrunc(LLVMBuilderRef, LLVMValueRef Val,
- LLVMTypeRef DestTy, const char *Name);
-LLVMValueRef LLVMBuildZExt(LLVMBuilderRef, LLVMValueRef Val,
- LLVMTypeRef DestTy, const char *Name);
-LLVMValueRef LLVMBuildSExt(LLVMBuilderRef, LLVMValueRef Val,
- LLVMTypeRef DestTy, const char *Name);
-LLVMValueRef LLVMBuildFPToUI(LLVMBuilderRef, LLVMValueRef Val,
- LLVMTypeRef DestTy, const char *Name);
-LLVMValueRef LLVMBuildFPToSI(LLVMBuilderRef, LLVMValueRef Val,
- LLVMTypeRef DestTy, const char *Name);
-LLVMValueRef LLVMBuildUIToFP(LLVMBuilderRef, LLVMValueRef Val,
- LLVMTypeRef DestTy, const char *Name);
-LLVMValueRef LLVMBuildSIToFP(LLVMBuilderRef, LLVMValueRef Val,
- LLVMTypeRef DestTy, const char *Name);
-LLVMValueRef LLVMBuildFPTrunc(LLVMBuilderRef, LLVMValueRef Val,
- LLVMTypeRef DestTy, const char *Name);
-LLVMValueRef LLVMBuildFPExt(LLVMBuilderRef, LLVMValueRef Val,
- LLVMTypeRef DestTy, const char *Name);
-LLVMValueRef LLVMBuildPtrToInt(LLVMBuilderRef, LLVMValueRef Val,
- LLVMTypeRef DestTy, const char *Name);
-LLVMValueRef LLVMBuildIntToPtr(LLVMBuilderRef, LLVMValueRef Val,
- LLVMTypeRef DestTy, const char *Name);
-LLVMValueRef LLVMBuildBitCast(LLVMBuilderRef, LLVMValueRef Val,
- LLVMTypeRef DestTy, const char *Name);
-LLVMValueRef LLVMBuildAddrSpaceCast(LLVMBuilderRef, LLVMValueRef Val,
- LLVMTypeRef DestTy, const char *Name);
-LLVMValueRef LLVMBuildZExtOrBitCast(LLVMBuilderRef, LLVMValueRef Val,
- LLVMTypeRef DestTy, const char *Name);
-LLVMValueRef LLVMBuildSExtOrBitCast(LLVMBuilderRef, LLVMValueRef Val,
- LLVMTypeRef DestTy, const char *Name);
-LLVMValueRef LLVMBuildTruncOrBitCast(LLVMBuilderRef, LLVMValueRef Val,
- LLVMTypeRef DestTy, const char *Name);
-LLVMValueRef LLVMBuildCast(LLVMBuilderRef B, LLVMOpcode Op, LLVMValueRef Val,
- LLVMTypeRef DestTy, const char *Name);
-LLVMValueRef LLVMBuildPointerCast(LLVMBuilderRef, LLVMValueRef Val,
- LLVMTypeRef DestTy, const char *Name);
-LLVMValueRef LLVMBuildIntCast2(LLVMBuilderRef, LLVMValueRef Val,
- LLVMTypeRef DestTy, LLVMBool IsSigned,
- const char *Name);
-LLVMValueRef LLVMBuildFPCast(LLVMBuilderRef, LLVMValueRef Val,
- LLVMTypeRef DestTy, const char *Name);
-
-/** Deprecated: This cast is always signed. Use LLVMBuildIntCast2 instead. */
-LLVMValueRef LLVMBuildIntCast(LLVMBuilderRef, LLVMValueRef Val, /*Signed cast!*/
- LLVMTypeRef DestTy, const char *Name);
-
-/* Comparisons */
-LLVMValueRef LLVMBuildICmp(LLVMBuilderRef, LLVMIntPredicate Op,
- LLVMValueRef LHS, LLVMValueRef RHS,
- const char *Name);
-LLVMValueRef LLVMBuildFCmp(LLVMBuilderRef, LLVMRealPredicate Op,
- LLVMValueRef LHS, LLVMValueRef RHS,
- const char *Name);
-
-/* Miscellaneous instructions */
-LLVMValueRef LLVMBuildPhi(LLVMBuilderRef, LLVMTypeRef Ty, const char *Name);
-// LLVMBuildCall is deprecated in favor of LLVMBuildCall2, in preparation for
-// opaque pointer types.
-LLVMValueRef LLVMBuildCall(LLVMBuilderRef, LLVMValueRef Fn,
- LLVMValueRef *Args, unsigned NumArgs,
- const char *Name);
-LLVMValueRef LLVMBuildCall2(LLVMBuilderRef, LLVMTypeRef, LLVMValueRef Fn,
- LLVMValueRef *Args, unsigned NumArgs,
- const char *Name);
-LLVMValueRef LLVMBuildSelect(LLVMBuilderRef, LLVMValueRef If,
- LLVMValueRef Then, LLVMValueRef Else,
- const char *Name);
-LLVMValueRef LLVMBuildVAArg(LLVMBuilderRef, LLVMValueRef List, LLVMTypeRef Ty,
- const char *Name);
-LLVMValueRef LLVMBuildExtractElement(LLVMBuilderRef, LLVMValueRef VecVal,
- LLVMValueRef Index, const char *Name);
-LLVMValueRef LLVMBuildInsertElement(LLVMBuilderRef, LLVMValueRef VecVal,
- LLVMValueRef EltVal, LLVMValueRef Index,
- const char *Name);
-LLVMValueRef LLVMBuildShuffleVector(LLVMBuilderRef, LLVMValueRef V1,
- LLVMValueRef V2, LLVMValueRef Mask,
- const char *Name);
-LLVMValueRef LLVMBuildExtractValue(LLVMBuilderRef, LLVMValueRef AggVal,
- unsigned Index, const char *Name);
-LLVMValueRef LLVMBuildInsertValue(LLVMBuilderRef, LLVMValueRef AggVal,
- LLVMValueRef EltVal, unsigned Index,
- const char *Name);
-
-LLVMValueRef LLVMBuildIsNull(LLVMBuilderRef, LLVMValueRef Val,
- const char *Name);
-LLVMValueRef LLVMBuildIsNotNull(LLVMBuilderRef, LLVMValueRef Val,
- const char *Name);
-LLVMValueRef LLVMBuildPtrDiff(LLVMBuilderRef, LLVMValueRef LHS,
- LLVMValueRef RHS, const char *Name);
-LLVMValueRef LLVMBuildFence(LLVMBuilderRef B, LLVMAtomicOrdering ordering,
- LLVMBool singleThread, const char *Name);
-LLVMValueRef LLVMBuildAtomicRMW(LLVMBuilderRef B, LLVMAtomicRMWBinOp op,
- LLVMValueRef PTR, LLVMValueRef Val,
- LLVMAtomicOrdering ordering,
- LLVMBool singleThread);
-LLVMValueRef LLVMBuildAtomicCmpXchg(LLVMBuilderRef B, LLVMValueRef Ptr,
- LLVMValueRef Cmp, LLVMValueRef New,
- LLVMAtomicOrdering SuccessOrdering,
- LLVMAtomicOrdering FailureOrdering,
- LLVMBool SingleThread);
-
-LLVMBool LLVMIsAtomicSingleThread(LLVMValueRef AtomicInst);
-void LLVMSetAtomicSingleThread(LLVMValueRef AtomicInst, LLVMBool SingleThread);
-
-LLVMAtomicOrdering LLVMGetCmpXchgSuccessOrdering(LLVMValueRef CmpXchgInst);
-void LLVMSetCmpXchgSuccessOrdering(LLVMValueRef CmpXchgInst,
- LLVMAtomicOrdering Ordering);
-LLVMAtomicOrdering LLVMGetCmpXchgFailureOrdering(LLVMValueRef CmpXchgInst);
-void LLVMSetCmpXchgFailureOrdering(LLVMValueRef CmpXchgInst,
- LLVMAtomicOrdering Ordering);
-
-/**
- * @}
- */
-
-/**
- * @defgroup LLVMCCoreModuleProvider Module Providers
- *
- * @{
- */
-
-/**
- * Changes the type of M so it can be passed to FunctionPassManagers and the
- * JIT. They take ModuleProviders for historical reasons.
- */
-LLVMModuleProviderRef
-LLVMCreateModuleProviderForExistingModule(LLVMModuleRef M);
-
-/**
- * Destroys the module M.
- */
-void LLVMDisposeModuleProvider(LLVMModuleProviderRef M);
-
-/**
- * @}
- */
-
-/**
- * @defgroup LLVMCCoreMemoryBuffers Memory Buffers
- *
- * @{
- */
-
-LLVMBool LLVMCreateMemoryBufferWithContentsOfFile(const char *Path,
- LLVMMemoryBufferRef *OutMemBuf,
- char **OutMessage);
-LLVMBool LLVMCreateMemoryBufferWithSTDIN(LLVMMemoryBufferRef *OutMemBuf,
- char **OutMessage);
-LLVMMemoryBufferRef LLVMCreateMemoryBufferWithMemoryRange(const char *InputData,
- size_t InputDataLength,
- const char *BufferName,
- LLVMBool RequiresNullTerminator);
-LLVMMemoryBufferRef LLVMCreateMemoryBufferWithMemoryRangeCopy(const char *InputData,
- size_t InputDataLength,
- const char *BufferName);
-const char *LLVMGetBufferStart(LLVMMemoryBufferRef MemBuf);
-size_t LLVMGetBufferSize(LLVMMemoryBufferRef MemBuf);
-void LLVMDisposeMemoryBuffer(LLVMMemoryBufferRef MemBuf);
-
-/**
- * @}
- */
-
-/**
- * @defgroup LLVMCCorePassRegistry Pass Registry
- *
- * @{
- */
-
-/** Return the global pass registry, for use with initialization functions.
- @see llvm::PassRegistry::getPassRegistry */
-LLVMPassRegistryRef LLVMGetGlobalPassRegistry(void);
-
-/**
- * @}
- */
-
-/**
- * @defgroup LLVMCCorePassManagers Pass Managers
- *
- * @{
- */
-
-/** Constructs a new whole-module pass pipeline. This type of pipeline is
- suitable for link-time optimization and whole-module transformations.
- @see llvm::PassManager::PassManager */
-LLVMPassManagerRef LLVMCreatePassManager(void);
-
-/** Constructs a new function-by-function pass pipeline over the module
- provider. It does not take ownership of the module provider. This type of
- pipeline is suitable for code generation and JIT compilation tasks.
- @see llvm::FunctionPassManager::FunctionPassManager */
-LLVMPassManagerRef LLVMCreateFunctionPassManagerForModule(LLVMModuleRef M);
-
-/** Deprecated: Use LLVMCreateFunctionPassManagerForModule instead. */
-LLVMPassManagerRef LLVMCreateFunctionPassManager(LLVMModuleProviderRef MP);
-
-/** Initializes, executes on the provided module, and finalizes all of the
- passes scheduled in the pass manager. Returns 1 if any of the passes
- modified the module, 0 otherwise.
- @see llvm::PassManager::run(Module&) */
-LLVMBool LLVMRunPassManager(LLVMPassManagerRef PM, LLVMModuleRef M);
-
-/** Initializes all of the function passes scheduled in the function pass
- manager. Returns 1 if any of the passes modified the module, 0 otherwise.
- @see llvm::FunctionPassManager::doInitialization */
-LLVMBool LLVMInitializeFunctionPassManager(LLVMPassManagerRef FPM);
-
-/** Executes all of the function passes scheduled in the function pass manager
- on the provided function. Returns 1 if any of the passes modified the
- function, false otherwise.
- @see llvm::FunctionPassManager::run(Function&) */
-LLVMBool LLVMRunFunctionPassManager(LLVMPassManagerRef FPM, LLVMValueRef F);
-
-/** Finalizes all of the function passes scheduled in the function pass
- manager. Returns 1 if any of the passes modified the module, 0 otherwise.
- @see llvm::FunctionPassManager::doFinalization */
-LLVMBool LLVMFinalizeFunctionPassManager(LLVMPassManagerRef FPM);
-
-/** Frees the memory of a pass pipeline. For function pipelines, does not free
- the module provider.
- @see llvm::PassManagerBase::~PassManagerBase. */
-void LLVMDisposePassManager(LLVMPassManagerRef PM);
-
-/**
- * @}
- */
-
-/**
- * @defgroup LLVMCCoreThreading Threading
- *
- * Handle the structures needed to make LLVM safe for multithreading.
- *
- * @{
- */
-
-/** Deprecated: Multi-threading can only be enabled/disabled with the compile
- time define LLVM_ENABLE_THREADS. This function always returns
- LLVMIsMultithreaded(). */
-LLVMBool LLVMStartMultithreaded(void);
-
-/** Deprecated: Multi-threading can only be enabled/disabled with the compile
- time define LLVM_ENABLE_THREADS. */
-void LLVMStopMultithreaded(void);
-
-/** Check whether LLVM is executing in thread-safe mode or not.
- @see llvm::llvm_is_multithreaded */
-LLVMBool LLVMIsMultithreaded(void);
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* LLVM_C_CORE_H */
diff --git a/gnu/llvm/include/llvm-c/DataTypes.h b/gnu/llvm/include/llvm-c/DataTypes.h
deleted file mode 100644
index 7081c83ffc2..00000000000
--- a/gnu/llvm/include/llvm-c/DataTypes.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/*===-- include/llvm-c/DataTypes.h - Define fixed size types ------*- C -*-===*\
-|* *|
-|* The LLVM Compiler Infrastructure *|
-|* *|
-|* This file is distributed under the University of Illinois Open Source *|
-|* License. See LICENSE.TXT for details. *|
-|* *|
-|*===----------------------------------------------------------------------===*|
-|* *|
-|* This file contains definitions to figure out the size of _HOST_ data types.*|
-|* This file is important because different host OS's define different macros,*|
-|* which makes portability tough. This file exports the following *|
-|* definitions: *|
-|* *|
-|* [u]int(32|64)_t : typedefs for signed and unsigned 32/64 bit system types*|
-|* [U]INT(8|16|32|64)_(MIN|MAX) : Constants for the min and max values. *|
-|* *|
-|* No library is required when using these functions. *|
-|* *|
-|*===----------------------------------------------------------------------===*/
-
-/* Please leave this file C-compatible. */
-
-#ifndef LLVM_C_DATATYPES_H
-#define LLVM_C_DATATYPES_H
-
-#ifdef __cplusplus
-#include <cmath>
-#else
-#include <math.h>
-#endif
-
-#include <inttypes.h>
-#include <stdint.h>
-
-#ifndef _MSC_VER
-
-#if !defined(UINT32_MAX)
-# error "The standard header <cstdint> is not C++11 compliant. Must #define "\
- "__STDC_LIMIT_MACROS before #including llvm-c/DataTypes.h"
-#endif
-
-#if !defined(UINT32_C)
-# error "The standard header <cstdint> is not C++11 compliant. Must #define "\
- "__STDC_CONSTANT_MACROS before #including llvm-c/DataTypes.h"
-#endif
-
-/* Note that <inttypes.h> includes <stdint.h>, if this is a C99 system. */
-#include <sys/types.h>
-
-#ifdef _AIX
-// GCC is strict about defining large constants: they must have LL modifier.
-#undef INT64_MAX
-#undef INT64_MIN
-#endif
-
-#else /* _MSC_VER */
-#ifdef __cplusplus
-#include <cstddef>
-#include <cstdlib>
-#else
-#include <stddef.h>
-#include <stdlib.h>
-#endif
-#include <sys/types.h>
-
-#if defined(_WIN64)
-typedef signed __int64 ssize_t;
-#else
-typedef signed int ssize_t;
-#endif /* _WIN64 */
-
-#endif /* _MSC_VER */
-
-/* Set defaults for constants which we cannot find. */
-#if !defined(INT64_MAX)
-# define INT64_MAX 9223372036854775807LL
-#endif
-#if !defined(INT64_MIN)
-# define INT64_MIN ((-INT64_MAX)-1)
-#endif
-#if !defined(UINT64_MAX)
-# define UINT64_MAX 0xffffffffffffffffULL
-#endif
-
-#ifndef HUGE_VALF
-#define HUGE_VALF (float)HUGE_VAL
-#endif
-
-#endif /* LLVM_C_DATATYPES_H */
diff --git a/gnu/llvm/include/llvm-c/DebugInfo.h b/gnu/llvm/include/llvm-c/DebugInfo.h
deleted file mode 100644
index 87a72034b0e..00000000000
--- a/gnu/llvm/include/llvm-c/DebugInfo.h
+++ /dev/null
@@ -1,1194 +0,0 @@
-//===------------ DebugInfo.h - LLVM C API Debug Info API -----------------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-///
-/// This file declares the C API endpoints for generating DWARF Debug Info
-///
-/// Note: This interface is experimental. It is *NOT* stable, and may be
-/// changed without warning.
-///
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_C_DEBUGINFO_H
-#define LLVM_C_DEBUGINFO_H
-
-#include "llvm-c/Core.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * Debug info flags.
- */
-typedef enum {
- LLVMDIFlagZero = 0,
- LLVMDIFlagPrivate = 1,
- LLVMDIFlagProtected = 2,
- LLVMDIFlagPublic = 3,
- LLVMDIFlagFwdDecl = 1 << 2,
- LLVMDIFlagAppleBlock = 1 << 3,
- LLVMDIFlagBlockByrefStruct = 1 << 4,
- LLVMDIFlagVirtual = 1 << 5,
- LLVMDIFlagArtificial = 1 << 6,
- LLVMDIFlagExplicit = 1 << 7,
- LLVMDIFlagPrototyped = 1 << 8,
- LLVMDIFlagObjcClassComplete = 1 << 9,
- LLVMDIFlagObjectPointer = 1 << 10,
- LLVMDIFlagVector = 1 << 11,
- LLVMDIFlagStaticMember = 1 << 12,
- LLVMDIFlagLValueReference = 1 << 13,
- LLVMDIFlagRValueReference = 1 << 14,
- LLVMDIFlagReserved = 1 << 15,
- LLVMDIFlagSingleInheritance = 1 << 16,
- LLVMDIFlagMultipleInheritance = 2 << 16,
- LLVMDIFlagVirtualInheritance = 3 << 16,
- LLVMDIFlagIntroducedVirtual = 1 << 18,
- LLVMDIFlagBitField = 1 << 19,
- LLVMDIFlagNoReturn = 1 << 20,
- LLVMDIFlagMainSubprogram = 1 << 21,
- LLVMDIFlagTypePassByValue = 1 << 22,
- LLVMDIFlagTypePassByReference = 1 << 23,
- LLVMDIFlagEnumClass = 1 << 24,
- LLVMDIFlagFixedEnum = LLVMDIFlagEnumClass, // Deprecated.
- LLVMDIFlagThunk = 1 << 25,
- LLVMDIFlagTrivial = 1 << 26,
- LLVMDIFlagBigEndian = 1 << 27,
- LLVMDIFlagLittleEndian = 1 << 28,
- LLVMDIFlagIndirectVirtualBase = (1 << 2) | (1 << 5),
- LLVMDIFlagAccessibility = LLVMDIFlagPrivate | LLVMDIFlagProtected |
- LLVMDIFlagPublic,
- LLVMDIFlagPtrToMemberRep = LLVMDIFlagSingleInheritance |
- LLVMDIFlagMultipleInheritance |
- LLVMDIFlagVirtualInheritance
-} LLVMDIFlags;
-
-/**
- * Source languages known by DWARF.
- */
-typedef enum {
- LLVMDWARFSourceLanguageC89,
- LLVMDWARFSourceLanguageC,
- LLVMDWARFSourceLanguageAda83,
- LLVMDWARFSourceLanguageC_plus_plus,
- LLVMDWARFSourceLanguageCobol74,
- LLVMDWARFSourceLanguageCobol85,
- LLVMDWARFSourceLanguageFortran77,
- LLVMDWARFSourceLanguageFortran90,
- LLVMDWARFSourceLanguagePascal83,
- LLVMDWARFSourceLanguageModula2,
- // New in DWARF v3:
- LLVMDWARFSourceLanguageJava,
- LLVMDWARFSourceLanguageC99,
- LLVMDWARFSourceLanguageAda95,
- LLVMDWARFSourceLanguageFortran95,
- LLVMDWARFSourceLanguagePLI,
- LLVMDWARFSourceLanguageObjC,
- LLVMDWARFSourceLanguageObjC_plus_plus,
- LLVMDWARFSourceLanguageUPC,
- LLVMDWARFSourceLanguageD,
- // New in DWARF v4:
- LLVMDWARFSourceLanguagePython,
- // New in DWARF v5:
- LLVMDWARFSourceLanguageOpenCL,
- LLVMDWARFSourceLanguageGo,
- LLVMDWARFSourceLanguageModula3,
- LLVMDWARFSourceLanguageHaskell,
- LLVMDWARFSourceLanguageC_plus_plus_03,
- LLVMDWARFSourceLanguageC_plus_plus_11,
- LLVMDWARFSourceLanguageOCaml,
- LLVMDWARFSourceLanguageRust,
- LLVMDWARFSourceLanguageC11,
- LLVMDWARFSourceLanguageSwift,
- LLVMDWARFSourceLanguageJulia,
- LLVMDWARFSourceLanguageDylan,
- LLVMDWARFSourceLanguageC_plus_plus_14,
- LLVMDWARFSourceLanguageFortran03,
- LLVMDWARFSourceLanguageFortran08,
- LLVMDWARFSourceLanguageRenderScript,
- LLVMDWARFSourceLanguageBLISS,
- // Vendor extensions:
- LLVMDWARFSourceLanguageMips_Assembler,
- LLVMDWARFSourceLanguageGOOGLE_RenderScript,
- LLVMDWARFSourceLanguageBORLAND_Delphi
-} LLVMDWARFSourceLanguage;
-
-/**
- * The amount of debug information to emit.
- */
-typedef enum {
- LLVMDWARFEmissionNone = 0,
- LLVMDWARFEmissionFull,
- LLVMDWARFEmissionLineTablesOnly
-} LLVMDWARFEmissionKind;
-
-/**
- * The kind of metadata nodes.
- */
-enum {
- LLVMMDStringMetadataKind,
- LLVMConstantAsMetadataMetadataKind,
- LLVMLocalAsMetadataMetadataKind,
- LLVMDistinctMDOperandPlaceholderMetadataKind,
- LLVMMDTupleMetadataKind,
- LLVMDILocationMetadataKind,
- LLVMDIExpressionMetadataKind,
- LLVMDIGlobalVariableExpressionMetadataKind,
- LLVMGenericDINodeMetadataKind,
- LLVMDISubrangeMetadataKind,
- LLVMDIEnumeratorMetadataKind,
- LLVMDIBasicTypeMetadataKind,
- LLVMDIDerivedTypeMetadataKind,
- LLVMDICompositeTypeMetadataKind,
- LLVMDISubroutineTypeMetadataKind,
- LLVMDIFileMetadataKind,
- LLVMDICompileUnitMetadataKind,
- LLVMDISubprogramMetadataKind,
- LLVMDILexicalBlockMetadataKind,
- LLVMDILexicalBlockFileMetadataKind,
- LLVMDINamespaceMetadataKind,
- LLVMDIModuleMetadataKind,
- LLVMDITemplateTypeParameterMetadataKind,
- LLVMDITemplateValueParameterMetadataKind,
- LLVMDIGlobalVariableMetadataKind,
- LLVMDILocalVariableMetadataKind,
- LLVMDILabelMetadataKind,
- LLVMDIObjCPropertyMetadataKind,
- LLVMDIImportedEntityMetadataKind,
- LLVMDIMacroMetadataKind,
- LLVMDIMacroFileMetadataKind
-};
-typedef unsigned LLVMMetadataKind;
-
-/**
- * An LLVM DWARF type encoding.
- */
-typedef unsigned LLVMDWARFTypeEncoding;
-
-/**
- * The current debug metadata version number.
- */
-unsigned LLVMDebugMetadataVersion(void);
-
-/**
- * The version of debug metadata that's present in the provided \c Module.
- */
-unsigned LLVMGetModuleDebugMetadataVersion(LLVMModuleRef Module);
-
-/**
- * Strip debug info in the module if it exists.
- * To do this, we remove all calls to the debugger intrinsics and any named
- * metadata for debugging. We also remove debug locations for instructions.
- * Return true if module is modified.
- */
-LLVMBool LLVMStripModuleDebugInfo(LLVMModuleRef Module);
-
-/**
- * Construct a builder for a module, and do not allow for unresolved nodes
- * attached to the module.
- */
-LLVMDIBuilderRef LLVMCreateDIBuilderDisallowUnresolved(LLVMModuleRef M);
-
-/**
- * Construct a builder for a module and collect unresolved nodes attached
- * to the module in order to resolve cycles during a call to
- * \c LLVMDIBuilderFinalize.
- */
-LLVMDIBuilderRef LLVMCreateDIBuilder(LLVMModuleRef M);
-
-/**
- * Deallocates the \c DIBuilder and everything it owns.
- * @note You must call \c LLVMDIBuilderFinalize before this
- */
-void LLVMDisposeDIBuilder(LLVMDIBuilderRef Builder);
-
-/**
- * Construct any deferred debug info descriptors.
- */
-void LLVMDIBuilderFinalize(LLVMDIBuilderRef Builder);
-
-/**
- * A CompileUnit provides an anchor for all debugging
- * information generated during this instance of compilation.
- * \param Lang Source programming language, eg.
- * \c LLVMDWARFSourceLanguageC99
- * \param FileRef File info.
- * \param Producer Identify the producer of debugging information
- * and code. Usually this is a compiler
- * version string.
- * \param ProducerLen The length of the C string passed to \c Producer.
- * \param isOptimized A boolean flag which indicates whether optimization
- * is enabled or not.
- * \param Flags This string lists command line options. This
- * string is directly embedded in debug info
- * output which may be used by a tool
- * analyzing generated debugging information.
- * \param FlagsLen The length of the C string passed to \c Flags.
- * \param RuntimeVer This indicates runtime version for languages like
- * Objective-C.
- * \param SplitName The name of the file that we'll split debug info
- * out into.
- * \param SplitNameLen The length of the C string passed to \c SplitName.
- * \param Kind The kind of debug information to generate.
- * \param DWOId The DWOId if this is a split skeleton compile unit.
- * \param SplitDebugInlining Whether to emit inline debug info.
- * \param DebugInfoForProfiling Whether to emit extra debug info for
- * profile collection.
- */
-LLVMMetadataRef LLVMDIBuilderCreateCompileUnit(
- LLVMDIBuilderRef Builder, LLVMDWARFSourceLanguage Lang,
- LLVMMetadataRef FileRef, const char *Producer, size_t ProducerLen,
- LLVMBool isOptimized, const char *Flags, size_t FlagsLen,
- unsigned RuntimeVer, const char *SplitName, size_t SplitNameLen,
- LLVMDWARFEmissionKind Kind, unsigned DWOId, LLVMBool SplitDebugInlining,
- LLVMBool DebugInfoForProfiling);
-
-/**
- * Create a file descriptor to hold debugging information for a file.
- * \param Builder The \c DIBuilder.
- * \param Filename File name.
- * \param FilenameLen The length of the C string passed to \c Filename.
- * \param Directory Directory.
- * \param DirectoryLen The length of the C string passed to \c Directory.
- */
-LLVMMetadataRef
-LLVMDIBuilderCreateFile(LLVMDIBuilderRef Builder, const char *Filename,
- size_t FilenameLen, const char *Directory,
- size_t DirectoryLen);
-
-/**
- * Creates a new descriptor for a module with the specified parent scope.
- * \param Builder The \c DIBuilder.
- * \param ParentScope The parent scope containing this module declaration.
- * \param Name Module name.
- * \param NameLen The length of the C string passed to \c Name.
- * \param ConfigMacros A space-separated shell-quoted list of -D macro
- definitions as they would appear on a command line.
- * \param ConfigMacrosLen The length of the C string passed to \c ConfigMacros.
- * \param IncludePath The path to the module map file.
- * \param IncludePathLen The length of the C string passed to \c IncludePath.
- * \param ISysRoot The Clang system root (value of -isysroot).
- * \param ISysRootLen The length of the C string passed to \c ISysRoot.
- */
-LLVMMetadataRef
-LLVMDIBuilderCreateModule(LLVMDIBuilderRef Builder, LLVMMetadataRef ParentScope,
- const char *Name, size_t NameLen,
- const char *ConfigMacros, size_t ConfigMacrosLen,
- const char *IncludePath, size_t IncludePathLen,
- const char *ISysRoot, size_t ISysRootLen);
-
-/**
- * Creates a new descriptor for a namespace with the specified parent scope.
- * \param Builder The \c DIBuilder.
- * \param ParentScope The parent scope containing this module declaration.
- * \param Name NameSpace name.
- * \param NameLen The length of the C string passed to \c Name.
- * \param ExportSymbols Whether or not the namespace exports symbols, e.g.
- * this is true of C++ inline namespaces.
- */
-LLVMMetadataRef
-LLVMDIBuilderCreateNameSpace(LLVMDIBuilderRef Builder,
- LLVMMetadataRef ParentScope,
- const char *Name, size_t NameLen,
- LLVMBool ExportSymbols);
-
-/**
- * Create a new descriptor for the specified subprogram.
- * \param Builder The \c DIBuilder.
- * \param Scope Function scope.
- * \param Name Function name.
- * \param NameLen Length of enumeration name.
- * \param LinkageName Mangled function name.
- * \param LinkageNameLen Length of linkage name.
- * \param File File where this variable is defined.
- * \param LineNo Line number.
- * \param Ty Function type.
- * \param IsLocalToUnit True if this function is not externally visible.
- * \param IsDefinition True if this is a function definition.
- * \param ScopeLine Set to the beginning of the scope this starts
- * \param Flags E.g.: \c LLVMDIFlagLValueReference. These flags are
- * used to emit dwarf attributes.
- * \param IsOptimized True if optimization is ON.
- */
-LLVMMetadataRef LLVMDIBuilderCreateFunction(
- LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name,
- size_t NameLen, const char *LinkageName, size_t LinkageNameLen,
- LLVMMetadataRef File, unsigned LineNo, LLVMMetadataRef Ty,
- LLVMBool IsLocalToUnit, LLVMBool IsDefinition,
- unsigned ScopeLine, LLVMDIFlags Flags, LLVMBool IsOptimized);
-
-/**
- * Create a descriptor for a lexical block with the specified parent context.
- * \param Builder The \c DIBuilder.
- * \param Scope Parent lexical block.
- * \param File Source file.
- * \param Line The line in the source file.
- * \param Column The column in the source file.
- */
-LLVMMetadataRef LLVMDIBuilderCreateLexicalBlock(
- LLVMDIBuilderRef Builder, LLVMMetadataRef Scope,
- LLVMMetadataRef File, unsigned Line, unsigned Column);
-
-/**
- * Create a descriptor for a lexical block with a new file attached.
- * \param Builder The \c DIBuilder.
- * \param Scope Lexical block.
- * \param File Source file.
- * \param Discriminator DWARF path discriminator value.
- */
-LLVMMetadataRef
-LLVMDIBuilderCreateLexicalBlockFile(LLVMDIBuilderRef Builder,
- LLVMMetadataRef Scope,
- LLVMMetadataRef File,
- unsigned Discriminator);
-
-/**
- * Create a descriptor for an imported namespace. Suitable for e.g. C++
- * using declarations.
- * \param Builder The \c DIBuilder.
- * \param Scope The scope this module is imported into
- * \param File File where the declaration is located.
- * \param Line Line number of the declaration.
- */
-LLVMMetadataRef
-LLVMDIBuilderCreateImportedModuleFromNamespace(LLVMDIBuilderRef Builder,
- LLVMMetadataRef Scope,
- LLVMMetadataRef NS,
- LLVMMetadataRef File,
- unsigned Line);
-
-/**
- * Create a descriptor for an imported module that aliases another
- * imported entity descriptor.
- * \param Builder The \c DIBuilder.
- * \param Scope The scope this module is imported into
- * \param ImportedEntity Previous imported entity to alias.
- * \param File File where the declaration is located.
- * \param Line Line number of the declaration.
- */
-LLVMMetadataRef
-LLVMDIBuilderCreateImportedModuleFromAlias(LLVMDIBuilderRef Builder,
- LLVMMetadataRef Scope,
- LLVMMetadataRef ImportedEntity,
- LLVMMetadataRef File,
- unsigned Line);
-
-/**
- * Create a descriptor for an imported module.
- * \param Builder The \c DIBuilder.
- * \param Scope The scope this module is imported into
- * \param M The module being imported here
- * \param File File where the declaration is located.
- * \param Line Line number of the declaration.
- */
-LLVMMetadataRef
-LLVMDIBuilderCreateImportedModuleFromModule(LLVMDIBuilderRef Builder,
- LLVMMetadataRef Scope,
- LLVMMetadataRef M,
- LLVMMetadataRef File,
- unsigned Line);
-
-/**
- * Create a descriptor for an imported function, type, or variable. Suitable
- * for e.g. FORTRAN-style USE declarations.
- * \param Builder The DIBuilder.
- * \param Scope The scope this module is imported into.
- * \param Decl The declaration (or definition) of a function, type,
- or variable.
- * \param File File where the declaration is located.
- * \param Line Line number of the declaration.
- * \param Name A name that uniquely identifies this imported declaration.
- * \param NameLen The length of the C string passed to \c Name.
- */
-LLVMMetadataRef
-LLVMDIBuilderCreateImportedDeclaration(LLVMDIBuilderRef Builder,
- LLVMMetadataRef Scope,
- LLVMMetadataRef Decl,
- LLVMMetadataRef File,
- unsigned Line,
- const char *Name, size_t NameLen);
-
-/**
- * Creates a new DebugLocation that describes a source location.
- * \param Line The line in the source file.
- * \param Column The column in the source file.
- * \param Scope The scope in which the location resides.
- * \param InlinedAt The scope where this location was inlined, if at all.
- * (optional).
- * \note If the item to which this location is attached cannot be
- * attributed to a source line, pass 0 for the line and column.
- */
-LLVMMetadataRef
-LLVMDIBuilderCreateDebugLocation(LLVMContextRef Ctx, unsigned Line,
- unsigned Column, LLVMMetadataRef Scope,
- LLVMMetadataRef InlinedAt);
-
-/**
- * Get the line number of this debug location.
- * \param Location The debug location.
- *
- * @see DILocation::getLine()
- */
-unsigned LLVMDILocationGetLine(LLVMMetadataRef Location);
-
-/**
- * Get the column number of this debug location.
- * \param Location The debug location.
- *
- * @see DILocation::getColumn()
- */
-unsigned LLVMDILocationGetColumn(LLVMMetadataRef Location);
-
-/**
- * Get the local scope associated with this debug location.
- * \param Location The debug location.
- *
- * @see DILocation::getScope()
- */
-LLVMMetadataRef LLVMDILocationGetScope(LLVMMetadataRef Location);
-
-/**
- * Create a type array.
- * \param Builder The DIBuilder.
- * \param Data The type elements.
- * \param NumElements Number of type elements.
- */
-LLVMMetadataRef LLVMDIBuilderGetOrCreateTypeArray(LLVMDIBuilderRef Builder,
- LLVMMetadataRef *Data,
- size_t NumElements);
-
-/**
- * Create subroutine type.
- * \param Builder The DIBuilder.
- * \param File The file in which the subroutine resides.
- * \param ParameterTypes An array of subroutine parameter types. This
- * includes return type at 0th index.
- * \param NumParameterTypes The number of parameter types in \c ParameterTypes
- * \param Flags E.g.: \c LLVMDIFlagLValueReference.
- * These flags are used to emit dwarf attributes.
- */
-LLVMMetadataRef
-LLVMDIBuilderCreateSubroutineType(LLVMDIBuilderRef Builder,
- LLVMMetadataRef File,
- LLVMMetadataRef *ParameterTypes,
- unsigned NumParameterTypes,
- LLVMDIFlags Flags);
-
-/**
- * Create debugging information entry for an enumeration.
- * \param Builder The DIBuilder.
- * \param Scope Scope in which this enumeration is defined.
- * \param Name Enumeration name.
- * \param NameLen Length of enumeration name.
- * \param File File where this member is defined.
- * \param LineNumber Line number.
- * \param SizeInBits Member size.
- * \param AlignInBits Member alignment.
- * \param Elements Enumeration elements.
- * \param NumElements Number of enumeration elements.
- * \param ClassTy Underlying type of a C++11/ObjC fixed enum.
- */
-LLVMMetadataRef LLVMDIBuilderCreateEnumerationType(
- LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name,
- size_t NameLen, LLVMMetadataRef File, unsigned LineNumber,
- uint64_t SizeInBits, uint32_t AlignInBits, LLVMMetadataRef *Elements,
- unsigned NumElements, LLVMMetadataRef ClassTy);
-
-/**
- * Create debugging information entry for a union.
- * \param Builder The DIBuilder.
- * \param Scope Scope in which this union is defined.
- * \param Name Union name.
- * \param NameLen Length of union name.
- * \param File File where this member is defined.
- * \param LineNumber Line number.
- * \param SizeInBits Member size.
- * \param AlignInBits Member alignment.
- * \param Flags Flags to encode member attribute, e.g. private
- * \param Elements Union elements.
- * \param NumElements Number of union elements.
- * \param RunTimeLang Optional parameter, Objective-C runtime version.
- * \param UniqueId A unique identifier for the union.
- * \param UniqueIdLen Length of unique identifier.
- */
-LLVMMetadataRef LLVMDIBuilderCreateUnionType(
- LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name,
- size_t NameLen, LLVMMetadataRef File, unsigned LineNumber,
- uint64_t SizeInBits, uint32_t AlignInBits, LLVMDIFlags Flags,
- LLVMMetadataRef *Elements, unsigned NumElements, unsigned RunTimeLang,
- const char *UniqueId, size_t UniqueIdLen);
-
-
-/**
- * Create debugging information entry for an array.
- * \param Builder The DIBuilder.
- * \param Size Array size.
- * \param AlignInBits Alignment.
- * \param Ty Element type.
- * \param Subscripts Subscripts.
- * \param NumSubscripts Number of subscripts.
- */
-LLVMMetadataRef
-LLVMDIBuilderCreateArrayType(LLVMDIBuilderRef Builder, uint64_t Size,
- uint32_t AlignInBits, LLVMMetadataRef Ty,
- LLVMMetadataRef *Subscripts,
- unsigned NumSubscripts);
-
-/**
- * Create debugging information entry for a vector type.
- * \param Builder The DIBuilder.
- * \param Size Vector size.
- * \param AlignInBits Alignment.
- * \param Ty Element type.
- * \param Subscripts Subscripts.
- * \param NumSubscripts Number of subscripts.
- */
-LLVMMetadataRef
-LLVMDIBuilderCreateVectorType(LLVMDIBuilderRef Builder, uint64_t Size,
- uint32_t AlignInBits, LLVMMetadataRef Ty,
- LLVMMetadataRef *Subscripts,
- unsigned NumSubscripts);
-
-/**
- * Create a DWARF unspecified type.
- * \param Builder The DIBuilder.
- * \param Name The unspecified type's name.
- * \param NameLen Length of type name.
- */
-LLVMMetadataRef
-LLVMDIBuilderCreateUnspecifiedType(LLVMDIBuilderRef Builder, const char *Name,
- size_t NameLen);
-
-/**
- * Create debugging information entry for a basic
- * type.
- * \param Builder The DIBuilder.
- * \param Name Type name.
- * \param NameLen Length of type name.
- * \param SizeInBits Size of the type.
- * \param Encoding DWARF encoding code, e.g. \c LLVMDWARFTypeEncoding_float.
- * \param Flags Flags to encode optional attribute like endianity
- */
-LLVMMetadataRef
-LLVMDIBuilderCreateBasicType(LLVMDIBuilderRef Builder, const char *Name,
- size_t NameLen, uint64_t SizeInBits,
- LLVMDWARFTypeEncoding Encoding,
- LLVMDIFlags Flags);
-
-/**
- * Create debugging information entry for a pointer.
- * \param Builder The DIBuilder.
- * \param PointeeTy Type pointed by this pointer.
- * \param SizeInBits Size.
- * \param AlignInBits Alignment. (optional, pass 0 to ignore)
- * \param AddressSpace DWARF address space. (optional, pass 0 to ignore)
- * \param Name Pointer type name. (optional)
- * \param NameLen Length of pointer type name. (optional)
- */
-LLVMMetadataRef LLVMDIBuilderCreatePointerType(
- LLVMDIBuilderRef Builder, LLVMMetadataRef PointeeTy,
- uint64_t SizeInBits, uint32_t AlignInBits, unsigned AddressSpace,
- const char *Name, size_t NameLen);
-
-/**
- * Create debugging information entry for a struct.
- * \param Builder The DIBuilder.
- * \param Scope Scope in which this struct is defined.
- * \param Name Struct name.
- * \param NameLen Struct name length.
- * \param File File where this member is defined.
- * \param LineNumber Line number.
- * \param SizeInBits Member size.
- * \param AlignInBits Member alignment.
- * \param Flags Flags to encode member attribute, e.g. private
- * \param Elements Struct elements.
- * \param NumElements Number of struct elements.
- * \param RunTimeLang Optional parameter, Objective-C runtime version.
- * \param VTableHolder The object containing the vtable for the struct.
- * \param UniqueId A unique identifier for the struct.
- * \param UniqueIdLen Length of the unique identifier for the struct.
- */
-LLVMMetadataRef LLVMDIBuilderCreateStructType(
- LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name,
- size_t NameLen, LLVMMetadataRef File, unsigned LineNumber,
- uint64_t SizeInBits, uint32_t AlignInBits, LLVMDIFlags Flags,
- LLVMMetadataRef DerivedFrom, LLVMMetadataRef *Elements,
- unsigned NumElements, unsigned RunTimeLang, LLVMMetadataRef VTableHolder,
- const char *UniqueId, size_t UniqueIdLen);
-
-/**
- * Create debugging information entry for a member.
- * \param Builder The DIBuilder.
- * \param Scope Member scope.
- * \param Name Member name.
- * \param NameLen Length of member name.
- * \param File File where this member is defined.
- * \param LineNo Line number.
- * \param SizeInBits Member size.
- * \param AlignInBits Member alignment.
- * \param OffsetInBits Member offset.
- * \param Flags Flags to encode member attribute, e.g. private
- * \param Ty Parent type.
- */
-LLVMMetadataRef LLVMDIBuilderCreateMemberType(
- LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name,
- size_t NameLen, LLVMMetadataRef File, unsigned LineNo,
- uint64_t SizeInBits, uint32_t AlignInBits, uint64_t OffsetInBits,
- LLVMDIFlags Flags, LLVMMetadataRef Ty);
-
-/**
- * Create debugging information entry for a
- * C++ static data member.
- * \param Builder The DIBuilder.
- * \param Scope Member scope.
- * \param Name Member name.
- * \param NameLen Length of member name.
- * \param File File where this member is declared.
- * \param LineNumber Line number.
- * \param Type Type of the static member.
- * \param Flags Flags to encode member attribute, e.g. private.
- * \param ConstantVal Const initializer of the member.
- * \param AlignInBits Member alignment.
- */
-LLVMMetadataRef
-LLVMDIBuilderCreateStaticMemberType(
- LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name,
- size_t NameLen, LLVMMetadataRef File, unsigned LineNumber,
- LLVMMetadataRef Type, LLVMDIFlags Flags, LLVMValueRef ConstantVal,
- uint32_t AlignInBits);
-
-/**
- * Create debugging information entry for a pointer to member.
- * \param Builder The DIBuilder.
- * \param PointeeType Type pointed to by this pointer.
- * \param ClassType Type for which this pointer points to members of.
- * \param SizeInBits Size.
- * \param AlignInBits Alignment.
- * \param Flags Flags.
- */
-LLVMMetadataRef
-LLVMDIBuilderCreateMemberPointerType(LLVMDIBuilderRef Builder,
- LLVMMetadataRef PointeeType,
- LLVMMetadataRef ClassType,
- uint64_t SizeInBits,
- uint32_t AlignInBits,
- LLVMDIFlags Flags);
-/**
- * Create debugging information entry for Objective-C instance variable.
- * \param Builder The DIBuilder.
- * \param Name Member name.
- * \param NameLen The length of the C string passed to \c Name.
- * \param File File where this member is defined.
- * \param LineNo Line number.
- * \param SizeInBits Member size.
- * \param AlignInBits Member alignment.
- * \param OffsetInBits Member offset.
- * \param Flags Flags to encode member attribute, e.g. private
- * \param Ty Parent type.
- * \param PropertyNode Property associated with this ivar.
- */
-LLVMMetadataRef
-LLVMDIBuilderCreateObjCIVar(LLVMDIBuilderRef Builder,
- const char *Name, size_t NameLen,
- LLVMMetadataRef File, unsigned LineNo,
- uint64_t SizeInBits, uint32_t AlignInBits,
- uint64_t OffsetInBits, LLVMDIFlags Flags,
- LLVMMetadataRef Ty, LLVMMetadataRef PropertyNode);
-
-/**
- * Create debugging information entry for Objective-C property.
- * \param Builder The DIBuilder.
- * \param Name Property name.
- * \param NameLen The length of the C string passed to \c Name.
- * \param File File where this property is defined.
- * \param LineNo Line number.
- * \param GetterName Name of the Objective C property getter selector.
- * \param GetterNameLen The length of the C string passed to \c GetterName.
- * \param SetterName Name of the Objective C property setter selector.
- * \param SetterNameLen The length of the C string passed to \c SetterName.
- * \param PropertyAttributes Objective C property attributes.
- * \param Ty Type.
- */
-LLVMMetadataRef
-LLVMDIBuilderCreateObjCProperty(LLVMDIBuilderRef Builder,
- const char *Name, size_t NameLen,
- LLVMMetadataRef File, unsigned LineNo,
- const char *GetterName, size_t GetterNameLen,
- const char *SetterName, size_t SetterNameLen,
- unsigned PropertyAttributes,
- LLVMMetadataRef Ty);
-
-/**
- * Create a uniqued DIType* clone with FlagObjectPointer and FlagArtificial set.
- * \param Builder The DIBuilder.
- * \param Type The underlying type to which this pointer points.
- */
-LLVMMetadataRef
-LLVMDIBuilderCreateObjectPointerType(LLVMDIBuilderRef Builder,
- LLVMMetadataRef Type);
-
-/**
- * Create debugging information entry for a qualified
- * type, e.g. 'const int'.
- * \param Builder The DIBuilder.
- * \param Tag Tag identifying type,
- * e.g. LLVMDWARFTypeQualifier_volatile_type
- * \param Type Base Type.
- */
-LLVMMetadataRef
-LLVMDIBuilderCreateQualifiedType(LLVMDIBuilderRef Builder, unsigned Tag,
- LLVMMetadataRef Type);
-
-/**
- * Create debugging information entry for a c++
- * style reference or rvalue reference type.
- * \param Builder The DIBuilder.
- * \param Tag Tag identifying type,
- * \param Type Base Type.
- */
-LLVMMetadataRef
-LLVMDIBuilderCreateReferenceType(LLVMDIBuilderRef Builder, unsigned Tag,
- LLVMMetadataRef Type);
-
-/**
- * Create C++11 nullptr type.
- * \param Builder The DIBuilder.
- */
-LLVMMetadataRef
-LLVMDIBuilderCreateNullPtrType(LLVMDIBuilderRef Builder);
-
-/**
- * Create debugging information entry for a typedef.
- * \param Builder The DIBuilder.
- * \param Type Original type.
- * \param Name Typedef name.
- * \param File File where this type is defined.
- * \param LineNo Line number.
- * \param Scope The surrounding context for the typedef.
- */
-LLVMMetadataRef
-LLVMDIBuilderCreateTypedef(LLVMDIBuilderRef Builder, LLVMMetadataRef Type,
- const char *Name, size_t NameLen,
- LLVMMetadataRef File, unsigned LineNo,
- LLVMMetadataRef Scope);
-
-/**
- * Create debugging information entry to establish inheritance relationship
- * between two types.
- * \param Builder The DIBuilder.
- * \param Ty Original type.
- * \param BaseTy Base type. Ty is inherits from base.
- * \param BaseOffset Base offset.
- * \param VBPtrOffset Virtual base pointer offset.
- * \param Flags Flags to describe inheritance attribute, e.g. private
- */
-LLVMMetadataRef
-LLVMDIBuilderCreateInheritance(LLVMDIBuilderRef Builder,
- LLVMMetadataRef Ty, LLVMMetadataRef BaseTy,
- uint64_t BaseOffset, uint32_t VBPtrOffset,
- LLVMDIFlags Flags);
-
-/**
- * Create a permanent forward-declared type.
- * \param Builder The DIBuilder.
- * \param Tag A unique tag for this type.
- * \param Name Type name.
- * \param NameLen Length of type name.
- * \param Scope Type scope.
- * \param File File where this type is defined.
- * \param Line Line number where this type is defined.
- * \param RuntimeLang Indicates runtime version for languages like
- * Objective-C.
- * \param SizeInBits Member size.
- * \param AlignInBits Member alignment.
- * \param UniqueIdentifier A unique identifier for the type.
- * \param UniqueIdentifierLen Length of the unique identifier.
- */
-LLVMMetadataRef LLVMDIBuilderCreateForwardDecl(
- LLVMDIBuilderRef Builder, unsigned Tag, const char *Name,
- size_t NameLen, LLVMMetadataRef Scope, LLVMMetadataRef File, unsigned Line,
- unsigned RuntimeLang, uint64_t SizeInBits, uint32_t AlignInBits,
- const char *UniqueIdentifier, size_t UniqueIdentifierLen);
-
-/**
- * Create a temporary forward-declared type.
- * \param Builder The DIBuilder.
- * \param Tag A unique tag for this type.
- * \param Name Type name.
- * \param NameLen Length of type name.
- * \param Scope Type scope.
- * \param File File where this type is defined.
- * \param Line Line number where this type is defined.
- * \param RuntimeLang Indicates runtime version for languages like
- * Objective-C.
- * \param SizeInBits Member size.
- * \param AlignInBits Member alignment.
- * \param Flags Flags.
- * \param UniqueIdentifier A unique identifier for the type.
- * \param UniqueIdentifierLen Length of the unique identifier.
- */
-LLVMMetadataRef
-LLVMDIBuilderCreateReplaceableCompositeType(
- LLVMDIBuilderRef Builder, unsigned Tag, const char *Name,
- size_t NameLen, LLVMMetadataRef Scope, LLVMMetadataRef File, unsigned Line,
- unsigned RuntimeLang, uint64_t SizeInBits, uint32_t AlignInBits,
- LLVMDIFlags Flags, const char *UniqueIdentifier,
- size_t UniqueIdentifierLen);
-
-/**
- * Create debugging information entry for a bit field member.
- * \param Builder The DIBuilder.
- * \param Scope Member scope.
- * \param Name Member name.
- * \param NameLen Length of member name.
- * \param File File where this member is defined.
- * \param LineNumber Line number.
- * \param SizeInBits Member size.
- * \param OffsetInBits Member offset.
- * \param StorageOffsetInBits Member storage offset.
- * \param Flags Flags to encode member attribute.
- * \param Type Parent type.
- */
-LLVMMetadataRef
-LLVMDIBuilderCreateBitFieldMemberType(LLVMDIBuilderRef Builder,
- LLVMMetadataRef Scope,
- const char *Name, size_t NameLen,
- LLVMMetadataRef File, unsigned LineNumber,
- uint64_t SizeInBits,
- uint64_t OffsetInBits,
- uint64_t StorageOffsetInBits,
- LLVMDIFlags Flags, LLVMMetadataRef Type);
-
-/**
- * Create debugging information entry for a class.
- * \param Scope Scope in which this class is defined.
- * \param Name Class name.
- * \param NameLen The length of the C string passed to \c Name.
- * \param File File where this member is defined.
- * \param LineNumber Line number.
- * \param SizeInBits Member size.
- * \param AlignInBits Member alignment.
- * \param OffsetInBits Member offset.
- * \param Flags Flags to encode member attribute, e.g. private.
- * \param DerivedFrom Debug info of the base class of this type.
- * \param Elements Class members.
- * \param NumElements Number of class elements.
- * \param VTableHolder Debug info of the base class that contains vtable
- * for this type. This is used in
- * DW_AT_containing_type. See DWARF documentation
- * for more info.
- * \param TemplateParamsNode Template type parameters.
- * \param UniqueIdentifier A unique identifier for the type.
- * \param UniqueIdentifierLen Length of the unique identifier.
- */
-LLVMMetadataRef LLVMDIBuilderCreateClassType(LLVMDIBuilderRef Builder,
- LLVMMetadataRef Scope, const char *Name, size_t NameLen,
- LLVMMetadataRef File, unsigned LineNumber, uint64_t SizeInBits,
- uint32_t AlignInBits, uint64_t OffsetInBits, LLVMDIFlags Flags,
- LLVMMetadataRef DerivedFrom,
- LLVMMetadataRef *Elements, unsigned NumElements,
- LLVMMetadataRef VTableHolder, LLVMMetadataRef TemplateParamsNode,
- const char *UniqueIdentifier, size_t UniqueIdentifierLen);
-
-/**
- * Create a uniqued DIType* clone with FlagArtificial set.
- * \param Builder The DIBuilder.
- * \param Type The underlying type.
- */
-LLVMMetadataRef
-LLVMDIBuilderCreateArtificialType(LLVMDIBuilderRef Builder,
- LLVMMetadataRef Type);
-
-/**
- * Get the name of this DIType.
- * \param DType The DIType.
- * \param Length The length of the returned string.
- *
- * @see DIType::getName()
- */
-const char *LLVMDITypeGetName(LLVMMetadataRef DType, size_t *Length);
-
-/**
- * Get the size of this DIType in bits.
- * \param DType The DIType.
- *
- * @see DIType::getSizeInBits()
- */
-uint64_t LLVMDITypeGetSizeInBits(LLVMMetadataRef DType);
-
-/**
- * Get the offset of this DIType in bits.
- * \param DType The DIType.
- *
- * @see DIType::getOffsetInBits()
- */
-uint64_t LLVMDITypeGetOffsetInBits(LLVMMetadataRef DType);
-
-/**
- * Get the alignment of this DIType in bits.
- * \param DType The DIType.
- *
- * @see DIType::getAlignInBits()
- */
-uint32_t LLVMDITypeGetAlignInBits(LLVMMetadataRef DType);
-
-/**
- * Get the source line where this DIType is declared.
- * \param DType The DIType.
- *
- * @see DIType::getLine()
- */
-unsigned LLVMDITypeGetLine(LLVMMetadataRef DType);
-
-/**
- * Get the flags associated with this DIType.
- * \param DType The DIType.
- *
- * @see DIType::getFlags()
- */
-LLVMDIFlags LLVMDITypeGetFlags(LLVMMetadataRef DType);
-
-/**
- * Create a descriptor for a value range.
- * \param Builder The DIBuilder.
- * \param LowerBound Lower bound of the subrange, e.g. 0 for C, 1 for Fortran.
- * \param Count Count of elements in the subrange.
- */
-LLVMMetadataRef LLVMDIBuilderGetOrCreateSubrange(LLVMDIBuilderRef Builder,
- int64_t LowerBound,
- int64_t Count);
-
-/**
- * Create an array of DI Nodes.
- * \param Builder The DIBuilder.
- * \param Data The DI Node elements.
- * \param NumElements Number of DI Node elements.
- */
-LLVMMetadataRef LLVMDIBuilderGetOrCreateArray(LLVMDIBuilderRef Builder,
- LLVMMetadataRef *Data,
- size_t NumElements);
-
-/**
- * Create a new descriptor for the specified variable which has a complex
- * address expression for its address.
- * \param Builder The DIBuilder.
- * \param Addr An array of complex address operations.
- * \param Length Length of the address operation array.
- */
-LLVMMetadataRef LLVMDIBuilderCreateExpression(LLVMDIBuilderRef Builder,
- int64_t *Addr, size_t Length);
-
-/**
- * Create a new descriptor for the specified variable that does not have an
- * address, but does have a constant value.
- * \param Builder The DIBuilder.
- * \param Value The constant value.
- */
-LLVMMetadataRef
-LLVMDIBuilderCreateConstantValueExpression(LLVMDIBuilderRef Builder,
- int64_t Value);
-
-/**
- * Create a new descriptor for the specified variable.
- * \param Scope Variable scope.
- * \param Name Name of the variable.
- * \param NameLen The length of the C string passed to \c Name.
- * \param Linkage Mangled name of the variable.
- * \param LinkLen The length of the C string passed to \c Linkage.
- * \param File File where this variable is defined.
- * \param LineNo Line number.
- * \param Ty Variable Type.
- * \param LocalToUnit Boolean flag indicate whether this variable is
- * externally visible or not.
- * \param Expr The location of the global relative to the attached
- * GlobalVariable.
- * \param Decl Reference to the corresponding declaration.
- * variables.
- * \param AlignInBits Variable alignment(or 0 if no alignment attr was
- * specified)
- */
-LLVMMetadataRef LLVMDIBuilderCreateGlobalVariableExpression(
- LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name,
- size_t NameLen, const char *Linkage, size_t LinkLen, LLVMMetadataRef File,
- unsigned LineNo, LLVMMetadataRef Ty, LLVMBool LocalToUnit,
- LLVMMetadataRef Expr, LLVMMetadataRef Decl, uint32_t AlignInBits);
-/**
- * Create a new temporary \c MDNode. Suitable for use in constructing cyclic
- * \c MDNode structures. A temporary \c MDNode is not uniqued, may be RAUW'd,
- * and must be manually deleted with \c LLVMDisposeTemporaryMDNode.
- * \param Ctx The context in which to construct the temporary node.
- * \param Data The metadata elements.
- * \param NumElements Number of metadata elements.
- */
-LLVMMetadataRef LLVMTemporaryMDNode(LLVMContextRef Ctx, LLVMMetadataRef *Data,
- size_t NumElements);
-
-/**
- * Deallocate a temporary node.
- *
- * Calls \c replaceAllUsesWith(nullptr) before deleting, so any remaining
- * references will be reset.
- * \param TempNode The temporary metadata node.
- */
-void LLVMDisposeTemporaryMDNode(LLVMMetadataRef TempNode);
-
-/**
- * Replace all uses of temporary metadata.
- * \param TempTargetMetadata The temporary metadata node.
- * \param Replacement The replacement metadata node.
- */
-void LLVMMetadataReplaceAllUsesWith(LLVMMetadataRef TempTargetMetadata,
- LLVMMetadataRef Replacement);
-
-/**
- * Create a new descriptor for the specified global variable that is temporary
- * and meant to be RAUWed.
- * \param Scope Variable scope.
- * \param Name Name of the variable.
- * \param NameLen The length of the C string passed to \c Name.
- * \param Linkage Mangled name of the variable.
- * \param LnkLen The length of the C string passed to \c Linkage.
- * \param File File where this variable is defined.
- * \param LineNo Line number.
- * \param Ty Variable Type.
- * \param LocalToUnit Boolean flag indicate whether this variable is
- * externally visible or not.
- * \param Decl Reference to the corresponding declaration.
- * \param AlignInBits Variable alignment(or 0 if no alignment attr was
- * specified)
- */
-LLVMMetadataRef LLVMDIBuilderCreateTempGlobalVariableFwdDecl(
- LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name,
- size_t NameLen, const char *Linkage, size_t LnkLen, LLVMMetadataRef File,
- unsigned LineNo, LLVMMetadataRef Ty, LLVMBool LocalToUnit,
- LLVMMetadataRef Decl, uint32_t AlignInBits);
-
-/**
- * Insert a new llvm.dbg.declare intrinsic call before the given instruction.
- * \param Builder The DIBuilder.
- * \param Storage The storage of the variable to declare.
- * \param VarInfo The variable's debug info descriptor.
- * \param Expr A complex location expression for the variable.
- * \param DebugLoc Debug info location.
- * \param Instr Instruction acting as a location for the new intrinsic.
- */
-LLVMValueRef LLVMDIBuilderInsertDeclareBefore(
- LLVMDIBuilderRef Builder, LLVMValueRef Storage, LLVMMetadataRef VarInfo,
- LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMValueRef Instr);
-
-/**
- * Insert a new llvm.dbg.declare intrinsic call at the end of the given basic
- * block. If the basic block has a terminator instruction, the intrinsic is
- * inserted before that terminator instruction.
- * \param Builder The DIBuilder.
- * \param Storage The storage of the variable to declare.
- * \param VarInfo The variable's debug info descriptor.
- * \param Expr A complex location expression for the variable.
- * \param DebugLoc Debug info location.
- * \param Block Basic block acting as a location for the new intrinsic.
- */
-LLVMValueRef LLVMDIBuilderInsertDeclareAtEnd(
- LLVMDIBuilderRef Builder, LLVMValueRef Storage, LLVMMetadataRef VarInfo,
- LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMBasicBlockRef Block);
-
-/**
- * Insert a new llvm.dbg.value intrinsic call before the given instruction.
- * \param Builder The DIBuilder.
- * \param Val The value of the variable.
- * \param VarInfo The variable's debug info descriptor.
- * \param Expr A complex location expression for the variable.
- * \param DebugLoc Debug info location.
- * \param Instr Instruction acting as a location for the new intrinsic.
- */
-LLVMValueRef LLVMDIBuilderInsertDbgValueBefore(LLVMDIBuilderRef Builder,
- LLVMValueRef Val,
- LLVMMetadataRef VarInfo,
- LLVMMetadataRef Expr,
- LLVMMetadataRef DebugLoc,
- LLVMValueRef Instr);
-
-/**
- * Insert a new llvm.dbg.value intrinsic call at the end of the given basic
- * block. If the basic block has a terminator instruction, the intrinsic is
- * inserted before that terminator instruction.
- * \param Builder The DIBuilder.
- * \param Val The value of the variable.
- * \param VarInfo The variable's debug info descriptor.
- * \param Expr A complex location expression for the variable.
- * \param DebugLoc Debug info location.
- * \param Block Basic block acting as a location for the new intrinsic.
- */
-LLVMValueRef LLVMDIBuilderInsertDbgValueAtEnd(LLVMDIBuilderRef Builder,
- LLVMValueRef Val,
- LLVMMetadataRef VarInfo,
- LLVMMetadataRef Expr,
- LLVMMetadataRef DebugLoc,
- LLVMBasicBlockRef Block);
-
-/**
- * Create a new descriptor for a local auto variable.
- * \param Builder The DIBuilder.
- * \param Scope The local scope the variable is declared in.
- * \param Name Variable name.
- * \param NameLen Length of variable name.
- * \param File File where this variable is defined.
- * \param LineNo Line number.
- * \param Ty Metadata describing the type of the variable.
- * \param AlwaysPreserve If true, this descriptor will survive optimizations.
- * \param Flags Flags.
- * \param AlignInBits Variable alignment.
- */
-LLVMMetadataRef LLVMDIBuilderCreateAutoVariable(
- LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name,
- size_t NameLen, LLVMMetadataRef File, unsigned LineNo, LLVMMetadataRef Ty,
- LLVMBool AlwaysPreserve, LLVMDIFlags Flags, uint32_t AlignInBits);
-
-/**
- * Create a new descriptor for a function parameter variable.
- * \param Builder The DIBuilder.
- * \param Scope The local scope the variable is declared in.
- * \param Name Variable name.
- * \param NameLen Length of variable name.
- * \param ArgNo Unique argument number for this variable; starts at 1.
- * \param File File where this variable is defined.
- * \param LineNo Line number.
- * \param Ty Metadata describing the type of the variable.
- * \param AlwaysPreserve If true, this descriptor will survive optimizations.
- * \param Flags Flags.
- */
-LLVMMetadataRef LLVMDIBuilderCreateParameterVariable(
- LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name,
- size_t NameLen, unsigned ArgNo, LLVMMetadataRef File, unsigned LineNo,
- LLVMMetadataRef Ty, LLVMBool AlwaysPreserve, LLVMDIFlags Flags);
-
-/**
- * Get the metadata of the subprogram attached to a function.
- *
- * @see llvm::Function::getSubprogram()
- */
-LLVMMetadataRef LLVMGetSubprogram(LLVMValueRef Func);
-
-/**
- * Set the subprogram attached to a function.
- *
- * @see llvm::Function::setSubprogram()
- */
-void LLVMSetSubprogram(LLVMValueRef Func, LLVMMetadataRef SP);
-
-/**
- * Obtain the enumerated type of a Metadata instance.
- *
- * @see llvm::Metadata::getMetadataID()
- */
-LLVMMetadataKind LLVMGetMetadataKind(LLVMMetadataRef Metadata);
-
-#ifdef __cplusplus
-} /* end extern "C" */
-#endif
-
-#endif
diff --git a/gnu/llvm/include/llvm-c/Disassembler.h b/gnu/llvm/include/llvm-c/Disassembler.h
deleted file mode 100644
index 5e80b95848c..00000000000
--- a/gnu/llvm/include/llvm-c/Disassembler.h
+++ /dev/null
@@ -1,113 +0,0 @@
-/*===-- llvm-c/Disassembler.h - Disassembler Public 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 header provides a public interface to a disassembler library. *|
-|* LLVM provides an implementation of this interface. *|
-|* *|
-\*===----------------------------------------------------------------------===*/
-
-#ifndef LLVM_C_DISASSEMBLER_H
-#define LLVM_C_DISASSEMBLER_H
-
-#include "llvm-c/DisassemblerTypes.h"
-
-/**
- * @defgroup LLVMCDisassembler Disassembler
- * @ingroup LLVMC
- *
- * @{
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* !defined(__cplusplus) */
-
-/**
- * Create a disassembler for the TripleName. Symbolic disassembly is supported
- * by passing a block of information in the DisInfo parameter and specifying the
- * TagType and callback functions as described above. These can all be passed
- * as NULL. If successful, this returns a disassembler context. If not, it
- * returns NULL. This function is equivalent to calling
- * LLVMCreateDisasmCPUFeatures() with an empty CPU name and feature set.
- */
-LLVMDisasmContextRef LLVMCreateDisasm(const char *TripleName, void *DisInfo,
- int TagType, LLVMOpInfoCallback GetOpInfo,
- LLVMSymbolLookupCallback SymbolLookUp);
-
-/**
- * Create a disassembler for the TripleName and a specific CPU. Symbolic
- * disassembly is supported by passing a block of information in the DisInfo
- * parameter and specifying the TagType and callback functions as described
- * above. These can all be passed * as NULL. If successful, this returns a
- * disassembler context. If not, it returns NULL. This function is equivalent
- * to calling LLVMCreateDisasmCPUFeatures() with an empty feature set.
- */
-LLVMDisasmContextRef LLVMCreateDisasmCPU(const char *Triple, const char *CPU,
- void *DisInfo, int TagType,
- LLVMOpInfoCallback GetOpInfo,
- LLVMSymbolLookupCallback SymbolLookUp);
-
-/**
- * Create a disassembler for the TripleName, a specific CPU and specific feature
- * string. Symbolic disassembly is supported by passing a block of information
- * in the DisInfo parameter and specifying the TagType and callback functions as
- * described above. These can all be passed * as NULL. If successful, this
- * returns a disassembler context. If not, it returns NULL.
- */
-LLVMDisasmContextRef
-LLVMCreateDisasmCPUFeatures(const char *Triple, const char *CPU,
- const char *Features, void *DisInfo, int TagType,
- LLVMOpInfoCallback GetOpInfo,
- LLVMSymbolLookupCallback SymbolLookUp);
-
-/**
- * Set the disassembler's options. Returns 1 if it can set the Options and 0
- * otherwise.
- */
-int LLVMSetDisasmOptions(LLVMDisasmContextRef DC, uint64_t Options);
-
-/* The option to produce marked up assembly. */
-#define LLVMDisassembler_Option_UseMarkup 1
-/* The option to print immediates as hex. */
-#define LLVMDisassembler_Option_PrintImmHex 2
-/* The option use the other assembler printer variant */
-#define LLVMDisassembler_Option_AsmPrinterVariant 4
-/* The option to set comment on instructions */
-#define LLVMDisassembler_Option_SetInstrComments 8
- /* The option to print latency information alongside instructions */
-#define LLVMDisassembler_Option_PrintLatency 16
-
-/**
- * Dispose of a disassembler context.
- */
-void LLVMDisasmDispose(LLVMDisasmContextRef DC);
-
-/**
- * Disassemble a single instruction using the disassembler context specified in
- * the parameter DC. The bytes of the instruction are specified in the
- * parameter Bytes, and contains at least BytesSize number of bytes. The
- * instruction is at the address specified by the PC parameter. If a valid
- * instruction can be disassembled, its string is returned indirectly in
- * OutString whose size is specified in the parameter OutStringSize. This
- * function returns the number of bytes in the instruction or zero if there was
- * no valid instruction.
- */
-size_t LLVMDisasmInstruction(LLVMDisasmContextRef DC, uint8_t *Bytes,
- uint64_t BytesSize, uint64_t PC,
- char *OutString, size_t OutStringSize);
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif /* !defined(__cplusplus) */
-
-#endif /* LLVM_C_DISASSEMBLER_H */
diff --git a/gnu/llvm/include/llvm-c/DisassemblerTypes.h b/gnu/llvm/include/llvm-c/DisassemblerTypes.h
deleted file mode 100644
index e8754ac7705..00000000000
--- a/gnu/llvm/include/llvm-c/DisassemblerTypes.h
+++ /dev/null
@@ -1,160 +0,0 @@
-/*===-- llvm-c/DisassemblerTypedefs.h -----------------------------*- C -*-===*\
-|* *|
-|* The LLVM Compiler Infrastructure *|
-|* *|
-|* This file is distributed under the University of Illinois Open Source *|
-|* License. See LICENSE.TXT for details. *|
-|* *|
-|*===----------------------------------------------------------------------===*/
-
-#ifndef LLVM_DISASSEMBLER_TYPES_H
-#define LLVM_DISASSEMBLER_TYPES_H
-
-#include "llvm-c/DataTypes.h"
-#ifdef __cplusplus
-#include <cstddef>
-#else
-#include <stddef.h>
-#endif
-
-/**
- * An opaque reference to a disassembler context.
- */
-typedef void *LLVMDisasmContextRef;
-
-/**
- * The type for the operand information call back function. This is called to
- * get the symbolic information for an operand of an instruction. Typically
- * this is from the relocation information, symbol table, etc. That block of
- * information is saved when the disassembler context is created and passed to
- * the call back in the DisInfo parameter. The instruction containing operand
- * is at the PC parameter. For some instruction sets, there can be more than
- * one operand with symbolic information. To determine the symbolic operand
- * information for each operand, the bytes for the specific operand in the
- * instruction are specified by the Offset parameter and its byte widith is the
- * size parameter. For instructions sets with fixed widths and one symbolic
- * operand per instruction, the Offset parameter will be zero and Size parameter
- * will be the instruction width. The information is returned in TagBuf and is
- * Triple specific with its specific information defined by the value of
- * TagType for that Triple. If symbolic information is returned the function
- * returns 1, otherwise it returns 0.
- */
-typedef int (*LLVMOpInfoCallback)(void *DisInfo, uint64_t PC,
- uint64_t Offset, uint64_t Size,
- int TagType, void *TagBuf);
-
-/**
- * The initial support in LLVM MC for the most general form of a relocatable
- * expression is "AddSymbol - SubtractSymbol + Offset". For some Darwin targets
- * this full form is encoded in the relocation information so that AddSymbol and
- * SubtractSymbol can be link edited independent of each other. Many other
- * platforms only allow a relocatable expression of the form AddSymbol + Offset
- * to be encoded.
- *
- * The LLVMOpInfoCallback() for the TagType value of 1 uses the struct
- * LLVMOpInfo1. The value of the relocatable expression for the operand,
- * including any PC adjustment, is passed in to the call back in the Value
- * field. The symbolic information about the operand is returned using all
- * the fields of the structure with the Offset of the relocatable expression
- * returned in the Value field. It is possible that some symbols in the
- * relocatable expression were assembly temporary symbols, for example
- * "Ldata - LpicBase + constant", and only the Values of the symbols without
- * symbol names are present in the relocation information. The VariantKind
- * type is one of the Target specific #defines below and is used to print
- * operands like "_foo@GOT", ":lower16:_foo", etc.
- */
-struct LLVMOpInfoSymbol1 {
- uint64_t Present; /* 1 if this symbol is present */
- const char *Name; /* symbol name if not NULL */
- uint64_t Value; /* symbol value if name is NULL */
-};
-
-struct LLVMOpInfo1 {
- struct LLVMOpInfoSymbol1 AddSymbol;
- struct LLVMOpInfoSymbol1 SubtractSymbol;
- uint64_t Value;
- uint64_t VariantKind;
-};
-
-/**
- * The operand VariantKinds for symbolic disassembly.
- */
-#define LLVMDisassembler_VariantKind_None 0 /* all targets */
-
-/**
- * The ARM target VariantKinds.
- */
-#define LLVMDisassembler_VariantKind_ARM_HI16 1 /* :upper16: */
-#define LLVMDisassembler_VariantKind_ARM_LO16 2 /* :lower16: */
-
-/**
- * The ARM64 target VariantKinds.
- */
-#define LLVMDisassembler_VariantKind_ARM64_PAGE 1 /* @page */
-#define LLVMDisassembler_VariantKind_ARM64_PAGEOFF 2 /* @pageoff */
-#define LLVMDisassembler_VariantKind_ARM64_GOTPAGE 3 /* @gotpage */
-#define LLVMDisassembler_VariantKind_ARM64_GOTPAGEOFF 4 /* @gotpageoff */
-#define LLVMDisassembler_VariantKind_ARM64_TLVP 5 /* @tvlppage */
-#define LLVMDisassembler_VariantKind_ARM64_TLVOFF 6 /* @tvlppageoff */
-
-/**
- * The type for the symbol lookup function. This may be called by the
- * disassembler for things like adding a comment for a PC plus a constant
- * offset load instruction to use a symbol name instead of a load address value.
- * It is passed the block information is saved when the disassembler context is
- * created and the ReferenceValue to look up as a symbol. If no symbol is found
- * for the ReferenceValue NULL is returned. The ReferenceType of the
- * instruction is passed indirectly as is the PC of the instruction in
- * ReferencePC. If the output reference can be determined its type is returned
- * indirectly in ReferenceType along with ReferenceName if any, or that is set
- * to NULL.
- */
-typedef const char *(*LLVMSymbolLookupCallback)(void *DisInfo,
- uint64_t ReferenceValue,
- uint64_t *ReferenceType,
- uint64_t ReferencePC,
- const char **ReferenceName);
-/**
- * The reference types on input and output.
- */
-/* No input reference type or no output reference type. */
-#define LLVMDisassembler_ReferenceType_InOut_None 0
-
-/* The input reference is from a branch instruction. */
-#define LLVMDisassembler_ReferenceType_In_Branch 1
-/* The input reference is from a PC relative load instruction. */
-#define LLVMDisassembler_ReferenceType_In_PCrel_Load 2
-
-/* The input reference is from an ARM64::ADRP instruction. */
-#define LLVMDisassembler_ReferenceType_In_ARM64_ADRP 0x100000001
-/* The input reference is from an ARM64::ADDXri instruction. */
-#define LLVMDisassembler_ReferenceType_In_ARM64_ADDXri 0x100000002
-/* The input reference is from an ARM64::LDRXui instruction. */
-#define LLVMDisassembler_ReferenceType_In_ARM64_LDRXui 0x100000003
-/* The input reference is from an ARM64::LDRXl instruction. */
-#define LLVMDisassembler_ReferenceType_In_ARM64_LDRXl 0x100000004
-/* The input reference is from an ARM64::ADR instruction. */
-#define LLVMDisassembler_ReferenceType_In_ARM64_ADR 0x100000005
-
-/* The output reference is to as symbol stub. */
-#define LLVMDisassembler_ReferenceType_Out_SymbolStub 1
-/* The output reference is to a symbol address in a literal pool. */
-#define LLVMDisassembler_ReferenceType_Out_LitPool_SymAddr 2
-/* The output reference is to a cstring address in a literal pool. */
-#define LLVMDisassembler_ReferenceType_Out_LitPool_CstrAddr 3
-
-/* The output reference is to a Objective-C CoreFoundation string. */
-#define LLVMDisassembler_ReferenceType_Out_Objc_CFString_Ref 4
-/* The output reference is to a Objective-C message. */
-#define LLVMDisassembler_ReferenceType_Out_Objc_Message 5
-/* The output reference is to a Objective-C message ref. */
-#define LLVMDisassembler_ReferenceType_Out_Objc_Message_Ref 6
-/* The output reference is to a Objective-C selector ref. */
-#define LLVMDisassembler_ReferenceType_Out_Objc_Selector_Ref 7
-/* The output reference is to a Objective-C class ref. */
-#define LLVMDisassembler_ReferenceType_Out_Objc_Class_Ref 8
-
-/* The output reference is to a C++ symbol name. */
-#define LLVMDisassembler_ReferenceType_DeMangled_Name 9
-
-#endif
diff --git a/gnu/llvm/include/llvm-c/Error.h b/gnu/llvm/include/llvm-c/Error.h
deleted file mode 100644
index 71e84661222..00000000000
--- a/gnu/llvm/include/llvm-c/Error.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/*===------- llvm-c/Error.h - llvm::Error class 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 LLVM's Error class. *|
-|* *|
-\*===----------------------------------------------------------------------===*/
-
-#ifndef LLVM_C_ERROR_H
-#define LLVM_C_ERROR_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define LLVMErrorSuccess 0
-
-/**
- * Opaque reference to an error instance. Null serves as the 'success' value.
- */
-typedef struct LLVMOpaqueError *LLVMErrorRef;
-
-/**
- * Error type identifier.
- */
-typedef const void *LLVMErrorTypeId;
-
-/**
- * Returns the type id for the given error instance, which must be a failure
- * value (i.e. non-null).
- */
-LLVMErrorTypeId LLVMGetErrorTypeId(LLVMErrorRef Err);
-
-/**
- * Dispose of the given error without handling it. This operation consumes the
- * error, and the given LLVMErrorRef value is not usable once this call returns.
- * Note: This method *only* needs to be called if the error is not being passed
- * to some other consuming operation, e.g. LLVMGetErrorMessage.
- */
-void LLVMConsumeError(LLVMErrorRef Err);
-
-/**
- * Returns the given string's error message. This operation consumes the error,
- * and the given LLVMErrorRef value is not usable once this call returns.
- * The caller is responsible for disposing of the string by calling
- * LLVMDisposeErrorMessage.
- */
-char *LLVMGetErrorMessage(LLVMErrorRef Err);
-
-/**
- * Dispose of the given error message.
- */
-void LLVMDisposeErrorMessage(char *ErrMsg);
-
-/**
- * Returns the type id for llvm StringError.
- */
-LLVMErrorTypeId LLVMGetStringErrorTypeId();
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/gnu/llvm/include/llvm-c/ErrorHandling.h b/gnu/llvm/include/llvm-c/ErrorHandling.h
deleted file mode 100644
index 2059b3aeb15..00000000000
--- a/gnu/llvm/include/llvm-c/ErrorHandling.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*===-- llvm-c/ErrorHandling.h - Error Handling 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 LLVM's error handling mechanism. *|
-|* *|
-\*===----------------------------------------------------------------------===*/
-
-#ifndef LLVM_C_ERROR_HANDLING_H
-#define LLVM_C_ERROR_HANDLING_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef void (*LLVMFatalErrorHandler)(const char *Reason);
-
-/**
- * Install a fatal error handler. By default, if LLVM detects a fatal error, it
- * will call exit(1). This may not be appropriate in many contexts. For example,
- * doing exit(1) will bypass many crash reporting/tracing system tools. This
- * function allows you to install a callback that will be invoked prior to the
- * call to exit(1).
- */
-void LLVMInstallFatalErrorHandler(LLVMFatalErrorHandler Handler);
-
-/**
- * Reset the fatal error handler. This resets LLVM's fatal error handling
- * behavior to the default.
- */
-void LLVMResetFatalErrorHandler(void);
-
-/**
- * Enable LLVM's built-in stack trace code. This intercepts the OS's crash
- * signals and prints which component of LLVM you were in at the time if the
- * crash.
- */
-void LLVMEnablePrettyStackTrace(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/gnu/llvm/include/llvm-c/ExecutionEngine.h b/gnu/llvm/include/llvm-c/ExecutionEngine.h
deleted file mode 100644
index e8ebef9ab15..00000000000
--- a/gnu/llvm/include/llvm-c/ExecutionEngine.h
+++ /dev/null
@@ -1,200 +0,0 @@
-/*===-- llvm-c/ExecutionEngine.h - ExecutionEngine Lib C Iface --*- C++ -*-===*\
-|* *|
-|* The LLVM Compiler Infrastructure *|
-|* *|
-|* This file is distributed under the University of Illinois Open Source *|
-|* License. See LICENSE.TXT for details. *|
-|* *|
-|*===----------------------------------------------------------------------===*|
-|* *|
-|* This header declares the C interface to libLLVMExecutionEngine.o, which *|
-|* implements various analyses of the LLVM IR. *|
-|* *|
-|* Many exotic languages can interoperate with C code but have a harder time *|
-|* with C++ due to name mangling. So in addition to C, this interface enables *|
-|* tools written in such languages. *|
-|* *|
-\*===----------------------------------------------------------------------===*/
-
-#ifndef LLVM_C_EXECUTIONENGINE_H
-#define LLVM_C_EXECUTIONENGINE_H
-
-#include "llvm-c/Target.h"
-#include "llvm-c/TargetMachine.h"
-#include "llvm-c/Types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup LLVMCExecutionEngine Execution Engine
- * @ingroup LLVMC
- *
- * @{
- */
-
-void LLVMLinkInMCJIT(void);
-void LLVMLinkInInterpreter(void);
-
-typedef struct LLVMOpaqueGenericValue *LLVMGenericValueRef;
-typedef struct LLVMOpaqueExecutionEngine *LLVMExecutionEngineRef;
-typedef struct LLVMOpaqueMCJITMemoryManager *LLVMMCJITMemoryManagerRef;
-
-struct LLVMMCJITCompilerOptions {
- unsigned OptLevel;
- LLVMCodeModel CodeModel;
- LLVMBool NoFramePointerElim;
- LLVMBool EnableFastISel;
- LLVMMCJITMemoryManagerRef MCJMM;
-};
-
-/*===-- Operations on generic values --------------------------------------===*/
-
-LLVMGenericValueRef LLVMCreateGenericValueOfInt(LLVMTypeRef Ty,
- unsigned long long N,
- LLVMBool IsSigned);
-
-LLVMGenericValueRef LLVMCreateGenericValueOfPointer(void *P);
-
-LLVMGenericValueRef LLVMCreateGenericValueOfFloat(LLVMTypeRef Ty, double N);
-
-unsigned LLVMGenericValueIntWidth(LLVMGenericValueRef GenValRef);
-
-unsigned long long LLVMGenericValueToInt(LLVMGenericValueRef GenVal,
- LLVMBool IsSigned);
-
-void *LLVMGenericValueToPointer(LLVMGenericValueRef GenVal);
-
-double LLVMGenericValueToFloat(LLVMTypeRef TyRef, LLVMGenericValueRef GenVal);
-
-void LLVMDisposeGenericValue(LLVMGenericValueRef GenVal);
-
-/*===-- Operations on execution engines -----------------------------------===*/
-
-LLVMBool LLVMCreateExecutionEngineForModule(LLVMExecutionEngineRef *OutEE,
- LLVMModuleRef M,
- char **OutError);
-
-LLVMBool LLVMCreateInterpreterForModule(LLVMExecutionEngineRef *OutInterp,
- LLVMModuleRef M,
- char **OutError);
-
-LLVMBool LLVMCreateJITCompilerForModule(LLVMExecutionEngineRef *OutJIT,
- LLVMModuleRef M,
- unsigned OptLevel,
- char **OutError);
-
-void LLVMInitializeMCJITCompilerOptions(
- struct LLVMMCJITCompilerOptions *Options, size_t SizeOfOptions);
-
-/**
- * Create an MCJIT execution engine for a module, with the given options. It is
- * the responsibility of the caller to ensure that all fields in Options up to
- * the given SizeOfOptions are initialized. It is correct to pass a smaller
- * value of SizeOfOptions that omits some fields. The canonical way of using
- * this is:
- *
- * LLVMMCJITCompilerOptions options;
- * LLVMInitializeMCJITCompilerOptions(&options, sizeof(options));
- * ... fill in those options you care about
- * LLVMCreateMCJITCompilerForModule(&jit, mod, &options, sizeof(options),
- * &error);
- *
- * Note that this is also correct, though possibly suboptimal:
- *
- * LLVMCreateMCJITCompilerForModule(&jit, mod, 0, 0, &error);
- */
-LLVMBool LLVMCreateMCJITCompilerForModule(
- LLVMExecutionEngineRef *OutJIT, LLVMModuleRef M,
- struct LLVMMCJITCompilerOptions *Options, size_t SizeOfOptions,
- char **OutError);
-
-void LLVMDisposeExecutionEngine(LLVMExecutionEngineRef EE);
-
-void LLVMRunStaticConstructors(LLVMExecutionEngineRef EE);
-
-void LLVMRunStaticDestructors(LLVMExecutionEngineRef EE);
-
-int LLVMRunFunctionAsMain(LLVMExecutionEngineRef EE, LLVMValueRef F,
- unsigned ArgC, const char * const *ArgV,
- const char * const *EnvP);
-
-LLVMGenericValueRef LLVMRunFunction(LLVMExecutionEngineRef EE, LLVMValueRef F,
- unsigned NumArgs,
- LLVMGenericValueRef *Args);
-
-void LLVMFreeMachineCodeForFunction(LLVMExecutionEngineRef EE, LLVMValueRef F);
-
-void LLVMAddModule(LLVMExecutionEngineRef EE, LLVMModuleRef M);
-
-LLVMBool LLVMRemoveModule(LLVMExecutionEngineRef EE, LLVMModuleRef M,
- LLVMModuleRef *OutMod, char **OutError);
-
-LLVMBool LLVMFindFunction(LLVMExecutionEngineRef EE, const char *Name,
- LLVMValueRef *OutFn);
-
-void *LLVMRecompileAndRelinkFunction(LLVMExecutionEngineRef EE,
- LLVMValueRef Fn);
-
-LLVMTargetDataRef LLVMGetExecutionEngineTargetData(LLVMExecutionEngineRef EE);
-LLVMTargetMachineRef
-LLVMGetExecutionEngineTargetMachine(LLVMExecutionEngineRef EE);
-
-void LLVMAddGlobalMapping(LLVMExecutionEngineRef EE, LLVMValueRef Global,
- void* Addr);
-
-void *LLVMGetPointerToGlobal(LLVMExecutionEngineRef EE, LLVMValueRef Global);
-
-uint64_t LLVMGetGlobalValueAddress(LLVMExecutionEngineRef EE, const char *Name);
-
-uint64_t LLVMGetFunctionAddress(LLVMExecutionEngineRef EE, const char *Name);
-
-/*===-- Operations on memory managers -------------------------------------===*/
-
-typedef uint8_t *(*LLVMMemoryManagerAllocateCodeSectionCallback)(
- void *Opaque, uintptr_t Size, unsigned Alignment, unsigned SectionID,
- const char *SectionName);
-typedef uint8_t *(*LLVMMemoryManagerAllocateDataSectionCallback)(
- void *Opaque, uintptr_t Size, unsigned Alignment, unsigned SectionID,
- const char *SectionName, LLVMBool IsReadOnly);
-typedef LLVMBool (*LLVMMemoryManagerFinalizeMemoryCallback)(
- void *Opaque, char **ErrMsg);
-typedef void (*LLVMMemoryManagerDestroyCallback)(void *Opaque);
-
-/**
- * Create a simple custom MCJIT memory manager. This memory manager can
- * intercept allocations in a module-oblivious way. This will return NULL
- * if any of the passed functions are NULL.
- *
- * @param Opaque An opaque client object to pass back to the callbacks.
- * @param AllocateCodeSection Allocate a block of memory for executable code.
- * @param AllocateDataSection Allocate a block of memory for data.
- * @param FinalizeMemory Set page permissions and flush cache. Return 0 on
- * success, 1 on error.
- */
-LLVMMCJITMemoryManagerRef LLVMCreateSimpleMCJITMemoryManager(
- void *Opaque,
- LLVMMemoryManagerAllocateCodeSectionCallback AllocateCodeSection,
- LLVMMemoryManagerAllocateDataSectionCallback AllocateDataSection,
- LLVMMemoryManagerFinalizeMemoryCallback FinalizeMemory,
- LLVMMemoryManagerDestroyCallback Destroy);
-
-void LLVMDisposeMCJITMemoryManager(LLVMMCJITMemoryManagerRef MM);
-
-/*===-- JIT Event Listener functions -------------------------------------===*/
-
-LLVMJITEventListenerRef LLVMCreateGDBRegistrationListener(void);
-LLVMJITEventListenerRef LLVMCreateIntelJITEventListener(void);
-LLVMJITEventListenerRef LLVMCreateOProfileJITEventListener(void);
-LLVMJITEventListenerRef LLVMCreatePerfJITEventListener(void);
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif /* defined(__cplusplus) */
-
-#endif
diff --git a/gnu/llvm/include/llvm-c/IRReader.h b/gnu/llvm/include/llvm-c/IRReader.h
deleted file mode 100644
index 5b58d9921fb..00000000000
--- a/gnu/llvm/include/llvm-c/IRReader.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/*===-- llvm-c/IRReader.h - IR Reader 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 the IR Reader. *|
-|* *|
-\*===----------------------------------------------------------------------===*/
-
-#ifndef LLVM_C_IRREADER_H
-#define LLVM_C_IRREADER_H
-
-#include "llvm-c/Types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * Read LLVM IR from a memory buffer and convert it into an in-memory Module
- * object. Returns 0 on success.
- * Optionally returns a human-readable description of any errors that
- * occurred during parsing IR. OutMessage must be disposed with
- * LLVMDisposeMessage.
- *
- * @see llvm::ParseIR()
- */
-LLVMBool LLVMParseIRInContext(LLVMContextRef ContextRef,
- LLVMMemoryBufferRef MemBuf, LLVMModuleRef *OutM,
- char **OutMessage);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/gnu/llvm/include/llvm-c/Initialization.h b/gnu/llvm/include/llvm-c/Initialization.h
deleted file mode 100644
index e45eafb139f..00000000000
--- a/gnu/llvm/include/llvm-c/Initialization.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*===-- llvm-c/Initialization.h - Initialization 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 header declares the C interface to LLVM initialization routines, *|
-|* which must be called before you can use the functionality provided by *|
-|* the corresponding LLVM library. *|
-|* *|
-\*===----------------------------------------------------------------------===*/
-
-#ifndef LLVM_C_INITIALIZATION_H
-#define LLVM_C_INITIALIZATION_H
-
-#include "llvm-c/Types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup LLVMCInitialization Initialization Routines
- * @ingroup LLVMC
- *
- * This module contains routines used to initialize the LLVM system.
- *
- * @{
- */
-
-void LLVMInitializeCore(LLVMPassRegistryRef R);
-void LLVMInitializeTransformUtils(LLVMPassRegistryRef R);
-void LLVMInitializeScalarOpts(LLVMPassRegistryRef R);
-void LLVMInitializeObjCARCOpts(LLVMPassRegistryRef R);
-void LLVMInitializeVectorization(LLVMPassRegistryRef R);
-void LLVMInitializeInstCombine(LLVMPassRegistryRef R);
-void LLVMInitializeAggressiveInstCombiner(LLVMPassRegistryRef R);
-void LLVMInitializeIPO(LLVMPassRegistryRef R);
-void LLVMInitializeInstrumentation(LLVMPassRegistryRef R);
-void LLVMInitializeAnalysis(LLVMPassRegistryRef R);
-void LLVMInitializeIPA(LLVMPassRegistryRef R);
-void LLVMInitializeCodeGen(LLVMPassRegistryRef R);
-void LLVMInitializeTarget(LLVMPassRegistryRef R);
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/gnu/llvm/include/llvm-c/LinkTimeOptimizer.h b/gnu/llvm/include/llvm-c/LinkTimeOptimizer.h
deleted file mode 100644
index 8bcf59969cc..00000000000
--- a/gnu/llvm/include/llvm-c/LinkTimeOptimizer.h
+++ /dev/null
@@ -1,69 +0,0 @@
-//===-- llvm/LinkTimeOptimizer.h - LTO Public 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 header provides a C API to use the LLVM link time optimization
-// library. This is intended to be used by linkers which are C-only in
-// their implementation for performing LTO.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_C_LINKTIMEOPTIMIZER_H
-#define LLVM_C_LINKTIMEOPTIMIZER_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup LLVMCLinkTimeOptimizer Link Time Optimization
- * @ingroup LLVMC
- *
- * @{
- */
-
- /// This provides a dummy type for pointers to the LTO object.
- typedef void* llvm_lto_t;
-
- /// This provides a C-visible enumerator to manage status codes.
- /// This should map exactly onto the C++ enumerator LTOStatus.
- typedef enum llvm_lto_status {
- LLVM_LTO_UNKNOWN,
- LLVM_LTO_OPT_SUCCESS,
- LLVM_LTO_READ_SUCCESS,
- LLVM_LTO_READ_FAILURE,
- LLVM_LTO_WRITE_FAILURE,
- LLVM_LTO_NO_TARGET,
- LLVM_LTO_NO_WORK,
- LLVM_LTO_MODULE_MERGE_FAILURE,
- LLVM_LTO_ASM_FAILURE,
-
- // Added C-specific error codes
- LLVM_LTO_NULL_OBJECT
- } llvm_lto_status_t;
-
- /// This provides C interface to initialize link time optimizer. This allows
- /// linker to use dlopen() interface to dynamically load LinkTimeOptimizer.
- /// extern "C" helps, because dlopen() interface uses name to find the symbol.
- extern llvm_lto_t llvm_create_optimizer(void);
- extern void llvm_destroy_optimizer(llvm_lto_t lto);
-
- extern llvm_lto_status_t llvm_read_object_file
- (llvm_lto_t lto, const char* input_filename);
- extern llvm_lto_status_t llvm_optimize_modules
- (llvm_lto_t lto, const char* output_filename);
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/gnu/llvm/include/llvm-c/Linker.h b/gnu/llvm/include/llvm-c/Linker.h
deleted file mode 100644
index d02c37f94c8..00000000000
--- a/gnu/llvm/include/llvm-c/Linker.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*===-- llvm-c/Linker.h - Module Linker 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 the module/file/archive linker. *|
-|* *|
-\*===----------------------------------------------------------------------===*/
-
-#ifndef LLVM_C_LINKER_H
-#define LLVM_C_LINKER_H
-
-#include "llvm-c/Types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* This enum is provided for backwards-compatibility only. It has no effect. */
-typedef enum {
- LLVMLinkerDestroySource = 0, /* This is the default behavior. */
- LLVMLinkerPreserveSource_Removed = 1 /* This option has been deprecated and
- should not be used. */
-} LLVMLinkerMode;
-
-/* Links the source module into the destination module. The source module is
- * destroyed.
- * The return value is true if an error occurred, false otherwise.
- * Use the diagnostic handler to get any diagnostic message.
-*/
-LLVMBool LLVMLinkModules2(LLVMModuleRef Dest, LLVMModuleRef Src);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/gnu/llvm/include/llvm-c/Object.h b/gnu/llvm/include/llvm-c/Object.h
deleted file mode 100644
index a2980e89fe3..00000000000
--- a/gnu/llvm/include/llvm-c/Object.h
+++ /dev/null
@@ -1,100 +0,0 @@
-/*===-- llvm-c/Object.h - Object Lib C Iface --------------------*- C++ -*-===*/
-/* */
-/* The LLVM Compiler Infrastructure */
-/* */
-/* This file is distributed under the University of Illinois Open Source */
-/* License. See LICENSE.TXT for details. */
-/* */
-/*===----------------------------------------------------------------------===*/
-/* */
-/* This header declares the C interface to libLLVMObject.a, which */
-/* implements object file reading and writing. */
-/* */
-/* Many exotic languages can interoperate with C code but have a harder time */
-/* with C++ due to name mangling. So in addition to C, this interface enables */
-/* tools written in such languages. */
-/* */
-/*===----------------------------------------------------------------------===*/
-
-#ifndef LLVM_C_OBJECT_H
-#define LLVM_C_OBJECT_H
-
-#include "llvm-c/Types.h"
-#include "llvm/Config/llvm-config.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup LLVMCObject Object file reading and writing
- * @ingroup LLVMC
- *
- * @{
- */
-
-// Opaque type wrappers
-typedef struct LLVMOpaqueObjectFile *LLVMObjectFileRef;
-typedef struct LLVMOpaqueSectionIterator *LLVMSectionIteratorRef;
-typedef struct LLVMOpaqueSymbolIterator *LLVMSymbolIteratorRef;
-typedef struct LLVMOpaqueRelocationIterator *LLVMRelocationIteratorRef;
-
-// ObjectFile creation
-LLVMObjectFileRef LLVMCreateObjectFile(LLVMMemoryBufferRef MemBuf);
-void LLVMDisposeObjectFile(LLVMObjectFileRef ObjectFile);
-
-// ObjectFile Section iterators
-LLVMSectionIteratorRef LLVMGetSections(LLVMObjectFileRef ObjectFile);
-void LLVMDisposeSectionIterator(LLVMSectionIteratorRef SI);
-LLVMBool LLVMIsSectionIteratorAtEnd(LLVMObjectFileRef ObjectFile,
- LLVMSectionIteratorRef SI);
-void LLVMMoveToNextSection(LLVMSectionIteratorRef SI);
-void LLVMMoveToContainingSection(LLVMSectionIteratorRef Sect,
- LLVMSymbolIteratorRef Sym);
-
-// ObjectFile Symbol iterators
-LLVMSymbolIteratorRef LLVMGetSymbols(LLVMObjectFileRef ObjectFile);
-void LLVMDisposeSymbolIterator(LLVMSymbolIteratorRef SI);
-LLVMBool LLVMIsSymbolIteratorAtEnd(LLVMObjectFileRef ObjectFile,
- LLVMSymbolIteratorRef SI);
-void LLVMMoveToNextSymbol(LLVMSymbolIteratorRef SI);
-
-// SectionRef accessors
-const char *LLVMGetSectionName(LLVMSectionIteratorRef SI);
-uint64_t LLVMGetSectionSize(LLVMSectionIteratorRef SI);
-const char *LLVMGetSectionContents(LLVMSectionIteratorRef SI);
-uint64_t LLVMGetSectionAddress(LLVMSectionIteratorRef SI);
-LLVMBool LLVMGetSectionContainsSymbol(LLVMSectionIteratorRef SI,
- LLVMSymbolIteratorRef Sym);
-
-// Section Relocation iterators
-LLVMRelocationIteratorRef LLVMGetRelocations(LLVMSectionIteratorRef Section);
-void LLVMDisposeRelocationIterator(LLVMRelocationIteratorRef RI);
-LLVMBool LLVMIsRelocationIteratorAtEnd(LLVMSectionIteratorRef Section,
- LLVMRelocationIteratorRef RI);
-void LLVMMoveToNextRelocation(LLVMRelocationIteratorRef RI);
-
-
-// SymbolRef accessors
-const char *LLVMGetSymbolName(LLVMSymbolIteratorRef SI);
-uint64_t LLVMGetSymbolAddress(LLVMSymbolIteratorRef SI);
-uint64_t LLVMGetSymbolSize(LLVMSymbolIteratorRef SI);
-
-// RelocationRef accessors
-uint64_t LLVMGetRelocationOffset(LLVMRelocationIteratorRef RI);
-LLVMSymbolIteratorRef LLVMGetRelocationSymbol(LLVMRelocationIteratorRef RI);
-uint64_t LLVMGetRelocationType(LLVMRelocationIteratorRef RI);
-// NOTE: Caller takes ownership of returned string of the two
-// following functions.
-const char *LLVMGetRelocationTypeName(LLVMRelocationIteratorRef RI);
-const char *LLVMGetRelocationValueString(LLVMRelocationIteratorRef RI);
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif /* defined(__cplusplus) */
-
-#endif
diff --git a/gnu/llvm/include/llvm-c/OptRemarks.h b/gnu/llvm/include/llvm-c/OptRemarks.h
deleted file mode 100644
index 6a90394e711..00000000000
--- a/gnu/llvm/include/llvm-c/OptRemarks.h
+++ /dev/null
@@ -1,204 +0,0 @@
-/*===-- llvm-c/OptRemarks.h - OptRemarks Public 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 header provides a public interface to an opt-remark library. *|
-|* LLVM provides an implementation of this interface. *|
-|* *|
-\*===----------------------------------------------------------------------===*/
-
-#ifndef LLVM_C_OPT_REMARKS_H
-#define LLVM_C_OPT_REMARKS_H
-
-#include "llvm-c/Core.h"
-#include "llvm-c/Types.h"
-#ifdef __cplusplus
-#include <cstddef>
-extern "C" {
-#else
-#include <stddef.h>
-#endif /* !defined(__cplusplus) */
-
-/**
- * @defgroup LLVMCOPTREMARKS OptRemarks
- * @ingroup LLVMC
- *
- * @{
- */
-
-#define OPT_REMARKS_API_VERSION 0
-
-/**
- * String containing a buffer and a length. The buffer is not guaranteed to be
- * zero-terminated.
- *
- * \since OPT_REMARKS_API_VERSION=0
- */
-typedef struct {
- const char *Str;
- uint32_t Len;
-} LLVMOptRemarkStringRef;
-
-/**
- * DebugLoc containing File, Line and Column.
- *
- * \since OPT_REMARKS_API_VERSION=0
- */
-typedef struct {
- // File:
- LLVMOptRemarkStringRef SourceFile;
- // Line:
- uint32_t SourceLineNumber;
- // Column:
- uint32_t SourceColumnNumber;
-} LLVMOptRemarkDebugLoc;
-
-/**
- * Element of the "Args" list. The key might give more information about what
- * are the semantics of the value, e.g. "Callee" will tell you that the value
- * is a symbol that names a function.
- *
- * \since OPT_REMARKS_API_VERSION=0
- */
-typedef struct {
- // e.g. "Callee"
- LLVMOptRemarkStringRef Key;
- // e.g. "malloc"
- LLVMOptRemarkStringRef Value;
-
- // "DebugLoc": Optional
- LLVMOptRemarkDebugLoc DebugLoc;
-} LLVMOptRemarkArg;
-
-/**
- * One remark entry.
- *
- * \since OPT_REMARKS_API_VERSION=0
- */
-typedef struct {
- // e.g. !Missed, !Passed
- LLVMOptRemarkStringRef RemarkType;
- // "Pass": Required
- LLVMOptRemarkStringRef PassName;
- // "Name": Required
- LLVMOptRemarkStringRef RemarkName;
- // "Function": Required
- LLVMOptRemarkStringRef FunctionName;
-
- // "DebugLoc": Optional
- LLVMOptRemarkDebugLoc DebugLoc;
- // "Hotness": Optional
- uint32_t Hotness;
- // "Args": Optional. It is an array of `num_args` elements.
- uint32_t NumArgs;
- LLVMOptRemarkArg *Args;
-} LLVMOptRemarkEntry;
-
-typedef struct LLVMOptRemarkOpaqueParser *LLVMOptRemarkParserRef;
-
-/**
- * Creates a remark parser that can be used to read and parse the buffer located
- * in \p Buf of size \p Size.
- *
- * \p Buf cannot be NULL.
- *
- * This function should be paired with LLVMOptRemarkParserDispose() to avoid
- * leaking resources.
- *
- * \since OPT_REMARKS_API_VERSION=0
- */
-extern LLVMOptRemarkParserRef LLVMOptRemarkParserCreate(const void *Buf,
- uint64_t Size);
-
-/**
- * Returns the next remark in the file.
- *
- * The value pointed to by the return value is invalidated by the next call to
- * LLVMOptRemarkParserGetNext().
- *
- * If the parser reaches the end of the buffer, the return value will be NULL.
- *
- * In the case of an error, the return value will be NULL, and:
- *
- * 1) LLVMOptRemarkParserHasError() will return `1`.
- *
- * 2) LLVMOptRemarkParserGetErrorMessage() will return a descriptive error
- * message.
- *
- * An error may occur if:
- *
- * 1) An argument is invalid.
- *
- * 2) There is a YAML parsing error. This type of error aborts parsing
- * immediately and returns `1`. It can occur on malformed YAML.
- *
- * 3) Remark parsing error. If this type of error occurs, the parser won't call
- * the handler and will continue to the next one. It can occur on malformed
- * remarks, like missing or extra fields in the file.
- *
- * Here is a quick example of the usage:
- *
- * ```
- * LLVMOptRemarkParserRef Parser = LLVMOptRemarkParserCreate(Buf, Size);
- * LLVMOptRemarkEntry *Remark = NULL;
- * while ((Remark == LLVMOptRemarkParserGetNext(Parser))) {
- * // use Remark
- * }
- * bool HasError = LLVMOptRemarkParserHasError(Parser);
- * LLVMOptRemarkParserDispose(Parser);
- * ```
- *
- * \since OPT_REMARKS_API_VERSION=0
- */
-extern LLVMOptRemarkEntry *
-LLVMOptRemarkParserGetNext(LLVMOptRemarkParserRef Parser);
-
-/**
- * Returns `1` if the parser encountered an error while parsing the buffer.
- *
- * \since OPT_REMARKS_API_VERSION=0
- */
-extern LLVMBool LLVMOptRemarkParserHasError(LLVMOptRemarkParserRef Parser);
-
-/**
- * Returns a null-terminated string containing an error message.
- *
- * In case of no error, the result is `NULL`.
- *
- * The memory of the string is bound to the lifetime of \p Parser. If
- * LLVMOptRemarkParserDispose() is called, the memory of the string will be
- * released.
- *
- * \since OPT_REMARKS_API_VERSION=0
- */
-extern const char *
-LLVMOptRemarkParserGetErrorMessage(LLVMOptRemarkParserRef Parser);
-
-/**
- * Releases all the resources used by \p Parser.
- *
- * \since OPT_REMARKS_API_VERSION=0
- */
-extern void LLVMOptRemarkParserDispose(LLVMOptRemarkParserRef Parser);
-
-/**
- * Returns the version of the opt-remarks dylib.
- *
- * \since OPT_REMARKS_API_VERSION=0
- */
-extern uint32_t LLVMOptRemarkVersion(void);
-
-/**
- * @} // endgoup LLVMCOPTREMARKS
- */
-
-#ifdef __cplusplus
-}
-#endif /* !defined(__cplusplus) */
-
-#endif /* LLVM_C_OPT_REMARKS_H */
diff --git a/gnu/llvm/include/llvm-c/OrcBindings.h b/gnu/llvm/include/llvm-c/OrcBindings.h
deleted file mode 100644
index 570db87fee9..00000000000
--- a/gnu/llvm/include/llvm-c/OrcBindings.h
+++ /dev/null
@@ -1,172 +0,0 @@
-/*===----------- llvm-c/OrcBindings.h - Orc Lib C Iface ---------*- C++ -*-===*\
-|* *|
-|* The LLVM Compiler Infrastructure *|
-|* *|
-|* This file is distributed under the University of Illinois Open Source *|
-|* License. See LICENSE.TXT for details. *|
-|* *|
-|*===----------------------------------------------------------------------===*|
-|* *|
-|* This header declares the C interface to libLLVMOrcJIT.a, which implements *|
-|* JIT compilation of LLVM IR. *|
-|* *|
-|* Many exotic languages can interoperate with C code but have a harder time *|
-|* with C++ due to name mangling. So in addition to C, this interface enables *|
-|* tools written in such languages. *|
-|* *|
-|* Note: This interface is experimental. It is *NOT* stable, and may be *|
-|* changed without warning. *|
-|* *|
-\*===----------------------------------------------------------------------===*/
-
-#ifndef LLVM_C_ORCBINDINGS_H
-#define LLVM_C_ORCBINDINGS_H
-
-#include "llvm-c/Error.h"
-#include "llvm-c/Object.h"
-#include "llvm-c/TargetMachine.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef struct LLVMOrcOpaqueJITStack *LLVMOrcJITStackRef;
-typedef uint64_t LLVMOrcModuleHandle;
-typedef uint64_t LLVMOrcTargetAddress;
-typedef uint64_t (*LLVMOrcSymbolResolverFn)(const char *Name, void *LookupCtx);
-typedef uint64_t (*LLVMOrcLazyCompileCallbackFn)(LLVMOrcJITStackRef JITStack,
- void *CallbackCtx);
-
-/**
- * Create an ORC JIT stack.
- *
- * The client owns the resulting stack, and must call OrcDisposeInstance(...)
- * to destroy it and free its memory. The JIT stack will take ownership of the
- * TargetMachine, which will be destroyed when the stack is destroyed. The
- * client should not attempt to dispose of the Target Machine, or it will result
- * in a double-free.
- */
-LLVMOrcJITStackRef LLVMOrcCreateInstance(LLVMTargetMachineRef TM);
-
-/**
- * Get the error message for the most recent error (if any).
- *
- * This message is owned by the ORC JIT Stack and will be freed when the stack
- * is disposed of by LLVMOrcDisposeInstance.
- */
-const char *LLVMOrcGetErrorMsg(LLVMOrcJITStackRef JITStack);
-
-/**
- * Mangle the given symbol.
- * Memory will be allocated for MangledSymbol to hold the result. The client
- */
-void LLVMOrcGetMangledSymbol(LLVMOrcJITStackRef JITStack, char **MangledSymbol,
- const char *Symbol);
-
-/**
- * Dispose of a mangled symbol.
- */
-void LLVMOrcDisposeMangledSymbol(char *MangledSymbol);
-
-/**
- * Create a lazy compile callback.
- */
-LLVMErrorRef LLVMOrcCreateLazyCompileCallback(
- LLVMOrcJITStackRef JITStack, LLVMOrcTargetAddress *RetAddr,
- LLVMOrcLazyCompileCallbackFn Callback, void *CallbackCtx);
-
-/**
- * Create a named indirect call stub.
- */
-LLVMErrorRef LLVMOrcCreateIndirectStub(LLVMOrcJITStackRef JITStack,
- const char *StubName,
- LLVMOrcTargetAddress InitAddr);
-
-/**
- * Set the pointer for the given indirect stub.
- */
-LLVMErrorRef LLVMOrcSetIndirectStubPointer(LLVMOrcJITStackRef JITStack,
- const char *StubName,
- LLVMOrcTargetAddress NewAddr);
-
-/**
- * Add module to be eagerly compiled.
- */
-LLVMErrorRef LLVMOrcAddEagerlyCompiledIR(LLVMOrcJITStackRef JITStack,
- LLVMOrcModuleHandle *RetHandle,
- LLVMModuleRef Mod,
- LLVMOrcSymbolResolverFn SymbolResolver,
- void *SymbolResolverCtx);
-
-/**
- * Add module to be lazily compiled one function at a time.
- */
-LLVMErrorRef LLVMOrcAddLazilyCompiledIR(LLVMOrcJITStackRef JITStack,
- LLVMOrcModuleHandle *RetHandle,
- LLVMModuleRef Mod,
- LLVMOrcSymbolResolverFn SymbolResolver,
- void *SymbolResolverCtx);
-
-/**
- * Add an object file.
- *
- * This method takes ownership of the given memory buffer and attempts to add
- * it to the JIT as an object file.
- * Clients should *not* dispose of the 'Obj' argument: the JIT will manage it
- * from this call onwards.
- */
-LLVMErrorRef LLVMOrcAddObjectFile(LLVMOrcJITStackRef JITStack,
- LLVMOrcModuleHandle *RetHandle,
- LLVMMemoryBufferRef Obj,
- LLVMOrcSymbolResolverFn SymbolResolver,
- void *SymbolResolverCtx);
-
-/**
- * Remove a module set from the JIT.
- *
- * This works for all modules that can be added via OrcAdd*, including object
- * files.
- */
-LLVMErrorRef LLVMOrcRemoveModule(LLVMOrcJITStackRef JITStack,
- LLVMOrcModuleHandle H);
-
-/**
- * Get symbol address from JIT instance.
- */
-LLVMErrorRef LLVMOrcGetSymbolAddress(LLVMOrcJITStackRef JITStack,
- LLVMOrcTargetAddress *RetAddr,
- const char *SymbolName);
-
-/**
- * Get symbol address from JIT instance, searching only the specified
- * handle.
- */
-LLVMErrorRef LLVMOrcGetSymbolAddressIn(LLVMOrcJITStackRef JITStack,
- LLVMOrcTargetAddress *RetAddr,
- LLVMOrcModuleHandle H,
- const char *SymbolName);
-
-/**
- * Dispose of an ORC JIT stack.
- */
-LLVMErrorRef LLVMOrcDisposeInstance(LLVMOrcJITStackRef JITStack);
-
-/**
- * Register a JIT Event Listener.
- *
- * A NULL listener is ignored.
- */
-void LLVMOrcRegisterJITEventListener(LLVMOrcJITStackRef JITStack, LLVMJITEventListenerRef L);
-
-/**
- * Unegister a JIT Event Listener.
- *
- * A NULL listener is ignored.
- */
-void LLVMOrcUnregisterJITEventListener(LLVMOrcJITStackRef JITStack, LLVMJITEventListenerRef L);
-
-#ifdef __cplusplus
-}
-#endif /* extern "C" */
-
-#endif /* LLVM_C_ORCBINDINGS_H */
diff --git a/gnu/llvm/include/llvm-c/Support.h b/gnu/llvm/include/llvm-c/Support.h
deleted file mode 100644
index 37d5d72ff5d..00000000000
--- a/gnu/llvm/include/llvm-c/Support.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*===-- llvm-c/Support.h - Support 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 the LLVM support library. *|
-|* *|
-\*===----------------------------------------------------------------------===*/
-
-#ifndef LLVM_C_SUPPORT_H
-#define LLVM_C_SUPPORT_H
-
-#include "llvm-c/DataTypes.h"
-#include "llvm-c/Types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * This function permanently loads the dynamic library at the given path.
- * It is safe to call this function multiple times for the same library.
- *
- * @see sys::DynamicLibrary::LoadLibraryPermanently()
- */
-LLVMBool LLVMLoadLibraryPermanently(const char* Filename);
-
-/**
- * This function parses the given arguments using the LLVM command line parser.
- * Note that the only stable thing about this function is its signature; you
- * cannot rely on any particular set of command line arguments being interpreted
- * the same way across LLVM versions.
- *
- * @see llvm::cl::ParseCommandLineOptions()
- */
-void LLVMParseCommandLineOptions(int argc, const char *const *argv,
- const char *Overview);
-
-/**
- * This function will search through all previously loaded dynamic
- * libraries for the symbol \p symbolName. If it is found, the address of
- * that symbol is returned. If not, null is returned.
- *
- * @see sys::DynamicLibrary::SearchForAddressOfSymbol()
- */
-void *LLVMSearchForAddressOfSymbol(const char *symbolName);
-
-/**
- * This functions permanently adds the symbol \p symbolName with the
- * value \p symbolValue. These symbols are searched before any
- * libraries.
- *
- * @see sys::DynamicLibrary::AddSymbol()
- */
-void LLVMAddSymbol(const char *symbolName, void *symbolValue);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/gnu/llvm/include/llvm-c/Target.h b/gnu/llvm/include/llvm-c/Target.h
deleted file mode 100644
index 03004ba5eec..00000000000
--- a/gnu/llvm/include/llvm-c/Target.h
+++ /dev/null
@@ -1,299 +0,0 @@
-/*===-- llvm-c/Target.h - Target Lib C Iface --------------------*- C++ -*-===*/
-/* */
-/* The LLVM Compiler Infrastructure */
-/* */
-/* This file is distributed under the University of Illinois Open Source */
-/* License. See LICENSE.TXT for details. */
-/* */
-/*===----------------------------------------------------------------------===*/
-/* */
-/* This header declares the C interface to libLLVMTarget.a, which */
-/* implements target information. */
-/* */
-/* Many exotic languages can interoperate with C code but have a harder time */
-/* with C++ due to name mangling. So in addition to C, this interface enables */
-/* tools written in such languages. */
-/* */
-/*===----------------------------------------------------------------------===*/
-
-#ifndef LLVM_C_TARGET_H
-#define LLVM_C_TARGET_H
-
-#include "llvm-c/Types.h"
-#include "llvm/Config/llvm-config.h"
-
-#if defined(_MSC_VER) && !defined(inline)
-#define inline __inline
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup LLVMCTarget Target information
- * @ingroup LLVMC
- *
- * @{
- */
-
-enum LLVMByteOrdering { LLVMBigEndian, LLVMLittleEndian };
-
-typedef struct LLVMOpaqueTargetData *LLVMTargetDataRef;
-typedef struct LLVMOpaqueTargetLibraryInfotData *LLVMTargetLibraryInfoRef;
-
-/* Declare all of the target-initialization functions that are available. */
-#define LLVM_TARGET(TargetName) \
- void LLVMInitialize##TargetName##TargetInfo(void);
-#include "llvm/Config/Targets.def"
-#undef LLVM_TARGET /* Explicit undef to make SWIG happier */
-
-#define LLVM_TARGET(TargetName) void LLVMInitialize##TargetName##Target(void);
-#include "llvm/Config/Targets.def"
-#undef LLVM_TARGET /* Explicit undef to make SWIG happier */
-
-#define LLVM_TARGET(TargetName) \
- void LLVMInitialize##TargetName##TargetMC(void);
-#include "llvm/Config/Targets.def"
-#undef LLVM_TARGET /* Explicit undef to make SWIG happier */
-
-/* Declare all of the available assembly printer initialization functions. */
-#define LLVM_ASM_PRINTER(TargetName) \
- void LLVMInitialize##TargetName##AsmPrinter(void);
-#include "llvm/Config/AsmPrinters.def"
-#undef LLVM_ASM_PRINTER /* Explicit undef to make SWIG happier */
-
-/* Declare all of the available assembly parser initialization functions. */
-#define LLVM_ASM_PARSER(TargetName) \
- void LLVMInitialize##TargetName##AsmParser(void);
-#include "llvm/Config/AsmParsers.def"
-#undef LLVM_ASM_PARSER /* Explicit undef to make SWIG happier */
-
-/* Declare all of the available disassembler initialization functions. */
-#define LLVM_DISASSEMBLER(TargetName) \
- void LLVMInitialize##TargetName##Disassembler(void);
-#include "llvm/Config/Disassemblers.def"
-#undef LLVM_DISASSEMBLER /* Explicit undef to make SWIG happier */
-
-/** LLVMInitializeAllTargetInfos - The main program should call this function if
- it wants access to all available targets that LLVM is configured to
- support. */
-static inline void LLVMInitializeAllTargetInfos(void) {
-#define LLVM_TARGET(TargetName) LLVMInitialize##TargetName##TargetInfo();
-#include "llvm/Config/Targets.def"
-#undef LLVM_TARGET /* Explicit undef to make SWIG happier */
-}
-
-/** LLVMInitializeAllTargets - The main program should call this function if it
- wants to link in all available targets that LLVM is configured to
- support. */
-static inline void LLVMInitializeAllTargets(void) {
-#define LLVM_TARGET(TargetName) LLVMInitialize##TargetName##Target();
-#include "llvm/Config/Targets.def"
-#undef LLVM_TARGET /* Explicit undef to make SWIG happier */
-}
-
-/** LLVMInitializeAllTargetMCs - The main program should call this function if
- it wants access to all available target MC that LLVM is configured to
- support. */
-static inline void LLVMInitializeAllTargetMCs(void) {
-#define LLVM_TARGET(TargetName) LLVMInitialize##TargetName##TargetMC();
-#include "llvm/Config/Targets.def"
-#undef LLVM_TARGET /* Explicit undef to make SWIG happier */
-}
-
-/** LLVMInitializeAllAsmPrinters - The main program should call this function if
- it wants all asm printers that LLVM is configured to support, to make them
- available via the TargetRegistry. */
-static inline void LLVMInitializeAllAsmPrinters(void) {
-#define LLVM_ASM_PRINTER(TargetName) LLVMInitialize##TargetName##AsmPrinter();
-#include "llvm/Config/AsmPrinters.def"
-#undef LLVM_ASM_PRINTER /* Explicit undef to make SWIG happier */
-}
-
-/** LLVMInitializeAllAsmParsers - The main program should call this function if
- it wants all asm parsers that LLVM is configured to support, to make them
- available via the TargetRegistry. */
-static inline void LLVMInitializeAllAsmParsers(void) {
-#define LLVM_ASM_PARSER(TargetName) LLVMInitialize##TargetName##AsmParser();
-#include "llvm/Config/AsmParsers.def"
-#undef LLVM_ASM_PARSER /* Explicit undef to make SWIG happier */
-}
-
-/** LLVMInitializeAllDisassemblers - The main program should call this function
- if it wants all disassemblers that LLVM is configured to support, to make
- them available via the TargetRegistry. */
-static inline void LLVMInitializeAllDisassemblers(void) {
-#define LLVM_DISASSEMBLER(TargetName) \
- LLVMInitialize##TargetName##Disassembler();
-#include "llvm/Config/Disassemblers.def"
-#undef LLVM_DISASSEMBLER /* Explicit undef to make SWIG happier */
-}
-
-/** LLVMInitializeNativeTarget - The main program should call this function to
- initialize the native target corresponding to the host. This is useful
- for JIT applications to ensure that the target gets linked in correctly. */
-static inline LLVMBool LLVMInitializeNativeTarget(void) {
- /* If we have a native target, initialize it to ensure it is linked in. */
-#ifdef LLVM_NATIVE_TARGET
- LLVM_NATIVE_TARGETINFO();
- LLVM_NATIVE_TARGET();
- LLVM_NATIVE_TARGETMC();
- return 0;
-#else
- return 1;
-#endif
-}
-
-/** LLVMInitializeNativeTargetAsmParser - The main program should call this
- function to initialize the parser for the native target corresponding to the
- host. */
-static inline LLVMBool LLVMInitializeNativeAsmParser(void) {
-#ifdef LLVM_NATIVE_ASMPARSER
- LLVM_NATIVE_ASMPARSER();
- return 0;
-#else
- return 1;
-#endif
-}
-
-/** LLVMInitializeNativeTargetAsmPrinter - The main program should call this
- function to initialize the printer for the native target corresponding to
- the host. */
-static inline LLVMBool LLVMInitializeNativeAsmPrinter(void) {
-#ifdef LLVM_NATIVE_ASMPRINTER
- LLVM_NATIVE_ASMPRINTER();
- return 0;
-#else
- return 1;
-#endif
-}
-
-/** LLVMInitializeNativeTargetDisassembler - The main program should call this
- function to initialize the disassembler for the native target corresponding
- to the host. */
-static inline LLVMBool LLVMInitializeNativeDisassembler(void) {
-#ifdef LLVM_NATIVE_DISASSEMBLER
- LLVM_NATIVE_DISASSEMBLER();
- return 0;
-#else
- return 1;
-#endif
-}
-
-/*===-- Target Data -------------------------------------------------------===*/
-
-/**
- * Obtain the data layout for a module.
- *
- * @see Module::getDataLayout()
- */
-LLVMTargetDataRef LLVMGetModuleDataLayout(LLVMModuleRef M);
-
-/**
- * Set the data layout for a module.
- *
- * @see Module::setDataLayout()
- */
-void LLVMSetModuleDataLayout(LLVMModuleRef M, LLVMTargetDataRef DL);
-
-/** Creates target data from a target layout string.
- See the constructor llvm::DataLayout::DataLayout. */
-LLVMTargetDataRef LLVMCreateTargetData(const char *StringRep);
-
-/** Deallocates a TargetData.
- See the destructor llvm::DataLayout::~DataLayout. */
-void LLVMDisposeTargetData(LLVMTargetDataRef TD);
-
-/** Adds target library information to a pass manager. This does not take
- ownership of the target library info.
- See the method llvm::PassManagerBase::add. */
-void LLVMAddTargetLibraryInfo(LLVMTargetLibraryInfoRef TLI,
- LLVMPassManagerRef PM);
-
-/** Converts target data to a target layout string. The string must be disposed
- with LLVMDisposeMessage.
- See the constructor llvm::DataLayout::DataLayout. */
-char *LLVMCopyStringRepOfTargetData(LLVMTargetDataRef TD);
-
-/** Returns the byte order of a target, either LLVMBigEndian or
- LLVMLittleEndian.
- See the method llvm::DataLayout::isLittleEndian. */
-enum LLVMByteOrdering LLVMByteOrder(LLVMTargetDataRef TD);
-
-/** Returns the pointer size in bytes for a target.
- See the method llvm::DataLayout::getPointerSize. */
-unsigned LLVMPointerSize(LLVMTargetDataRef TD);
-
-/** Returns the pointer size in bytes for a target for a specified
- address space.
- See the method llvm::DataLayout::getPointerSize. */
-unsigned LLVMPointerSizeForAS(LLVMTargetDataRef TD, unsigned AS);
-
-/** Returns the integer type that is the same size as a pointer on a target.
- See the method llvm::DataLayout::getIntPtrType. */
-LLVMTypeRef LLVMIntPtrType(LLVMTargetDataRef TD);
-
-/** Returns the integer type that is the same size as a pointer on a target.
- This version allows the address space to be specified.
- See the method llvm::DataLayout::getIntPtrType. */
-LLVMTypeRef LLVMIntPtrTypeForAS(LLVMTargetDataRef TD, unsigned AS);
-
-/** Returns the integer type that is the same size as a pointer on a target.
- See the method llvm::DataLayout::getIntPtrType. */
-LLVMTypeRef LLVMIntPtrTypeInContext(LLVMContextRef C, LLVMTargetDataRef TD);
-
-/** Returns the integer type that is the same size as a pointer on a target.
- This version allows the address space to be specified.
- See the method llvm::DataLayout::getIntPtrType. */
-LLVMTypeRef LLVMIntPtrTypeForASInContext(LLVMContextRef C, LLVMTargetDataRef TD,
- unsigned AS);
-
-/** Computes the size of a type in bytes for a target.
- See the method llvm::DataLayout::getTypeSizeInBits. */
-unsigned long long LLVMSizeOfTypeInBits(LLVMTargetDataRef TD, LLVMTypeRef Ty);
-
-/** Computes the storage size of a type in bytes for a target.
- See the method llvm::DataLayout::getTypeStoreSize. */
-unsigned long long LLVMStoreSizeOfType(LLVMTargetDataRef TD, LLVMTypeRef Ty);
-
-/** Computes the ABI size of a type in bytes for a target.
- See the method llvm::DataLayout::getTypeAllocSize. */
-unsigned long long LLVMABISizeOfType(LLVMTargetDataRef TD, LLVMTypeRef Ty);
-
-/** Computes the ABI alignment of a type in bytes for a target.
- See the method llvm::DataLayout::getTypeABISize. */
-unsigned LLVMABIAlignmentOfType(LLVMTargetDataRef TD, LLVMTypeRef Ty);
-
-/** Computes the call frame alignment of a type in bytes for a target.
- See the method llvm::DataLayout::getTypeABISize. */
-unsigned LLVMCallFrameAlignmentOfType(LLVMTargetDataRef TD, LLVMTypeRef Ty);
-
-/** Computes the preferred alignment of a type in bytes for a target.
- See the method llvm::DataLayout::getTypeABISize. */
-unsigned LLVMPreferredAlignmentOfType(LLVMTargetDataRef TD, LLVMTypeRef Ty);
-
-/** Computes the preferred alignment of a global variable in bytes for a target.
- See the method llvm::DataLayout::getPreferredAlignment. */
-unsigned LLVMPreferredAlignmentOfGlobal(LLVMTargetDataRef TD,
- LLVMValueRef GlobalVar);
-
-/** Computes the structure element that contains the byte offset for a target.
- See the method llvm::StructLayout::getElementContainingOffset. */
-unsigned LLVMElementAtOffset(LLVMTargetDataRef TD, LLVMTypeRef StructTy,
- unsigned long long Offset);
-
-/** Computes the byte offset of the indexed struct element for a target.
- See the method llvm::StructLayout::getElementContainingOffset. */
-unsigned long long LLVMOffsetOfElement(LLVMTargetDataRef TD,
- LLVMTypeRef StructTy, unsigned Element);
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif /* defined(__cplusplus) */
-
-#endif
diff --git a/gnu/llvm/include/llvm-c/TargetMachine.h b/gnu/llvm/include/llvm-c/TargetMachine.h
deleted file mode 100644
index c06e9edc9aa..00000000000
--- a/gnu/llvm/include/llvm-c/TargetMachine.h
+++ /dev/null
@@ -1,163 +0,0 @@
-/*===-- llvm-c/TargetMachine.h - Target Machine Library 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 header declares the C interface to the Target and TargetMachine *|
-|* classes, which can be used to generate assembly or object files. *|
-|* *|
-|* Many exotic languages can interoperate with C code but have a harder time *|
-|* with C++ due to name mangling. So in addition to C, this interface enables *|
-|* tools written in such languages. *|
-|* *|
-\*===----------------------------------------------------------------------===*/
-
-#ifndef LLVM_C_TARGETMACHINE_H
-#define LLVM_C_TARGETMACHINE_H
-
-#include "llvm-c/Target.h"
-#include "llvm-c/Types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-typedef struct LLVMOpaqueTargetMachine *LLVMTargetMachineRef;
-typedef struct LLVMTarget *LLVMTargetRef;
-
-typedef enum {
- LLVMCodeGenLevelNone,
- LLVMCodeGenLevelLess,
- LLVMCodeGenLevelDefault,
- LLVMCodeGenLevelAggressive
-} LLVMCodeGenOptLevel;
-
-typedef enum {
- LLVMRelocDefault,
- LLVMRelocStatic,
- LLVMRelocPIC,
- LLVMRelocDynamicNoPic,
- LLVMRelocROPI,
- LLVMRelocRWPI,
- LLVMRelocROPI_RWPI
-} LLVMRelocMode;
-
-typedef enum {
- LLVMCodeModelDefault,
- LLVMCodeModelJITDefault,
- LLVMCodeModelTiny,
- LLVMCodeModelSmall,
- LLVMCodeModelKernel,
- LLVMCodeModelMedium,
- LLVMCodeModelLarge
-} LLVMCodeModel;
-
-typedef enum {
- LLVMAssemblyFile,
- LLVMObjectFile
-} LLVMCodeGenFileType;
-
-/** Returns the first llvm::Target in the registered targets list. */
-LLVMTargetRef LLVMGetFirstTarget(void);
-/** Returns the next llvm::Target given a previous one (or null if there's none) */
-LLVMTargetRef LLVMGetNextTarget(LLVMTargetRef T);
-
-/*===-- Target ------------------------------------------------------------===*/
-/** Finds the target corresponding to the given name and stores it in \p T.
- Returns 0 on success. */
-LLVMTargetRef LLVMGetTargetFromName(const char *Name);
-
-/** Finds the target corresponding to the given triple and stores it in \p T.
- Returns 0 on success. Optionally returns any error in ErrorMessage.
- Use LLVMDisposeMessage to dispose the message. */
-LLVMBool LLVMGetTargetFromTriple(const char* Triple, LLVMTargetRef *T,
- char **ErrorMessage);
-
-/** Returns the name of a target. See llvm::Target::getName */
-const char *LLVMGetTargetName(LLVMTargetRef T);
-
-/** Returns the description of a target. See llvm::Target::getDescription */
-const char *LLVMGetTargetDescription(LLVMTargetRef T);
-
-/** Returns if the target has a JIT */
-LLVMBool LLVMTargetHasJIT(LLVMTargetRef T);
-
-/** Returns if the target has a TargetMachine associated */
-LLVMBool LLVMTargetHasTargetMachine(LLVMTargetRef T);
-
-/** Returns if the target as an ASM backend (required for emitting output) */
-LLVMBool LLVMTargetHasAsmBackend(LLVMTargetRef T);
-
-/*===-- Target Machine ----------------------------------------------------===*/
-/** Creates a new llvm::TargetMachine. See llvm::Target::createTargetMachine */
-LLVMTargetMachineRef LLVMCreateTargetMachine(LLVMTargetRef T,
- const char *Triple, const char *CPU, const char *Features,
- LLVMCodeGenOptLevel Level, LLVMRelocMode Reloc, LLVMCodeModel CodeModel);
-
-/** Dispose the LLVMTargetMachineRef instance generated by
- LLVMCreateTargetMachine. */
-void LLVMDisposeTargetMachine(LLVMTargetMachineRef T);
-
-/** Returns the Target used in a TargetMachine */
-LLVMTargetRef LLVMGetTargetMachineTarget(LLVMTargetMachineRef T);
-
-/** Returns the triple used creating this target machine. See
- llvm::TargetMachine::getTriple. The result needs to be disposed with
- LLVMDisposeMessage. */
-char *LLVMGetTargetMachineTriple(LLVMTargetMachineRef T);
-
-/** Returns the cpu used creating this target machine. See
- llvm::TargetMachine::getCPU. The result needs to be disposed with
- LLVMDisposeMessage. */
-char *LLVMGetTargetMachineCPU(LLVMTargetMachineRef T);
-
-/** Returns the feature string used creating this target machine. See
- llvm::TargetMachine::getFeatureString. The result needs to be disposed with
- LLVMDisposeMessage. */
-char *LLVMGetTargetMachineFeatureString(LLVMTargetMachineRef T);
-
-/** Create a DataLayout based on the targetMachine. */
-LLVMTargetDataRef LLVMCreateTargetDataLayout(LLVMTargetMachineRef T);
-
-/** Set the target machine's ASM verbosity. */
-void LLVMSetTargetMachineAsmVerbosity(LLVMTargetMachineRef T,
- LLVMBool VerboseAsm);
-
-/** Emits an asm or object file for the given module to the filename. This
- wraps several c++ only classes (among them a file stream). Returns any
- error in ErrorMessage. Use LLVMDisposeMessage to dispose the message. */
-LLVMBool LLVMTargetMachineEmitToFile(LLVMTargetMachineRef T, LLVMModuleRef M,
- char *Filename, LLVMCodeGenFileType codegen, char **ErrorMessage);
-
-/** Compile the LLVM IR stored in \p M and store the result in \p OutMemBuf. */
-LLVMBool LLVMTargetMachineEmitToMemoryBuffer(LLVMTargetMachineRef T, LLVMModuleRef M,
- LLVMCodeGenFileType codegen, char** ErrorMessage, LLVMMemoryBufferRef *OutMemBuf);
-
-/*===-- Triple ------------------------------------------------------------===*/
-/** Get a triple for the host machine as a string. The result needs to be
- disposed with LLVMDisposeMessage. */
-char* LLVMGetDefaultTargetTriple(void);
-
-/** Normalize a target triple. The result needs to be disposed with
- LLVMDisposeMessage. */
-char* LLVMNormalizeTargetTriple(const char* triple);
-
-/** Get the host CPU as a string. The result needs to be disposed with
- LLVMDisposeMessage. */
-char* LLVMGetHostCPUName(void);
-
-/** Get the host CPU's features as a string. The result needs to be disposed
- with LLVMDisposeMessage. */
-char* LLVMGetHostCPUFeatures(void);
-
-/** Adds the target-specific analysis passes to the pass manager. */
-void LLVMAddAnalysisPasses(LLVMTargetMachineRef T, LLVMPassManagerRef PM);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/gnu/llvm/include/llvm-c/Transforms/AggressiveInstCombine.h b/gnu/llvm/include/llvm-c/Transforms/AggressiveInstCombine.h
deleted file mode 100644
index 8756a22e917..00000000000
--- a/gnu/llvm/include/llvm-c/Transforms/AggressiveInstCombine.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*===-- AggressiveInstCombine.h ---------------------------------*- C++ -*-===*\
-|* *|
-|* The LLVM Compiler Infrastructure *|
-|* *|
-|* This file is distributed under the University of Illinois Open Source *|
-|* License. See LICENSE.TXT for details. *|
-|* *|
-|*===----------------------------------------------------------------------===*|
-|* *|
-|* This header declares the C interface to libLLVMAggressiveInstCombine.a, *|
-|* which combines instructions to form fewer, simple IR instructions. *|
-|* *|
-\*===----------------------------------------------------------------------===*/
-
-#ifndef LLVM_C_TRANSFORMS_AGGRESSIVEINSTCOMBINE_H
-#define LLVM_C_TRANSFORMS_AGGRESSIVEINSTCOMBINE_H
-
-#include "llvm-c/Types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup LLVMCTransformsAggressiveInstCombine Aggressive Instruction Combining transformations
- * @ingroup LLVMCTransforms
- *
- * @{
- */
-
-/** See llvm::createAggressiveInstCombinerPass function. */
-void LLVMAddAggressiveInstCombinerPass(LLVMPassManagerRef PM);
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif /* defined(__cplusplus) */
-
-#endif
-
diff --git a/gnu/llvm/include/llvm-c/Transforms/Coroutines.h b/gnu/llvm/include/llvm-c/Transforms/Coroutines.h
deleted file mode 100644
index 827e30fb2d7..00000000000
--- a/gnu/llvm/include/llvm-c/Transforms/Coroutines.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*===-- Coroutines.h - Coroutines Library 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 header declares the C interface to libLLVMCoroutines.a, which *|
-|* implements various scalar transformations of the LLVM IR. *|
-|* *|
-|* Many exotic languages can interoperate with C code but have a harder time *|
-|* with C++ due to name mangling. So in addition to C, this interface enables *|
-|* tools written in such languages. *|
-|* *|
-\*===----------------------------------------------------------------------===*/
-
-#ifndef LLVM_C_TRANSFORMS_COROUTINES_H
-#define LLVM_C_TRANSFORMS_COROUTINES_H
-
-#include "llvm-c/Types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup LLVMCTransformsCoroutines Coroutine transformations
- * @ingroup LLVMCTransforms
- *
- * @{
- */
-
-/** See llvm::createCoroEarlyPass function. */
-void LLVMAddCoroEarlyPass(LLVMPassManagerRef PM);
-
-/** See llvm::createCoroSplitPass function. */
-void LLVMAddCoroSplitPass(LLVMPassManagerRef PM);
-
-/** See llvm::createCoroElidePass function. */
-void LLVMAddCoroElidePass(LLVMPassManagerRef PM);
-
-/** See llvm::createCoroCleanupPass function. */
-void LLVMAddCoroCleanupPass(LLVMPassManagerRef PM);
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif /* defined(__cplusplus) */
-
-#endif
diff --git a/gnu/llvm/include/llvm-c/Transforms/IPO.h b/gnu/llvm/include/llvm-c/Transforms/IPO.h
deleted file mode 100644
index 7705b1864dc..00000000000
--- a/gnu/llvm/include/llvm-c/Transforms/IPO.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/*===-- IPO.h - Interprocedural Transformations 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 header declares the C interface to libLLVMIPO.a, which implements *|
-|* various interprocedural transformations of the LLVM IR. *|
-|* *|
-\*===----------------------------------------------------------------------===*/
-
-#ifndef LLVM_C_TRANSFORMS_IPO_H
-#define LLVM_C_TRANSFORMS_IPO_H
-
-#include "llvm-c/Types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup LLVMCTransformsIPO Interprocedural transformations
- * @ingroup LLVMCTransforms
- *
- * @{
- */
-
-/** See llvm::createArgumentPromotionPass function. */
-void LLVMAddArgumentPromotionPass(LLVMPassManagerRef PM);
-
-/** See llvm::createConstantMergePass function. */
-void LLVMAddConstantMergePass(LLVMPassManagerRef PM);
-
-/** See llvm::createCalledValuePropagationPass function. */
-void LLVMAddCalledValuePropagationPass(LLVMPassManagerRef PM);
-
-/** See llvm::createDeadArgEliminationPass function. */
-void LLVMAddDeadArgEliminationPass(LLVMPassManagerRef PM);
-
-/** See llvm::createFunctionAttrsPass function. */
-void LLVMAddFunctionAttrsPass(LLVMPassManagerRef PM);
-
-/** See llvm::createFunctionInliningPass function. */
-void LLVMAddFunctionInliningPass(LLVMPassManagerRef PM);
-
-/** See llvm::createAlwaysInlinerPass function. */
-void LLVMAddAlwaysInlinerPass(LLVMPassManagerRef PM);
-
-/** See llvm::createGlobalDCEPass function. */
-void LLVMAddGlobalDCEPass(LLVMPassManagerRef PM);
-
-/** See llvm::createGlobalOptimizerPass function. */
-void LLVMAddGlobalOptimizerPass(LLVMPassManagerRef PM);
-
-/** See llvm::createIPConstantPropagationPass function. */
-void LLVMAddIPConstantPropagationPass(LLVMPassManagerRef PM);
-
-/** See llvm::createPruneEHPass function. */
-void LLVMAddPruneEHPass(LLVMPassManagerRef PM);
-
-/** See llvm::createIPSCCPPass function. */
-void LLVMAddIPSCCPPass(LLVMPassManagerRef PM);
-
-/** See llvm::createInternalizePass function. */
-void LLVMAddInternalizePass(LLVMPassManagerRef, unsigned AllButMain);
-
-/** See llvm::createStripDeadPrototypesPass function. */
-void LLVMAddStripDeadPrototypesPass(LLVMPassManagerRef PM);
-
-/** See llvm::createStripSymbolsPass function. */
-void LLVMAddStripSymbolsPass(LLVMPassManagerRef PM);
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif /* defined(__cplusplus) */
-
-#endif
diff --git a/gnu/llvm/include/llvm-c/Transforms/InstCombine.h b/gnu/llvm/include/llvm-c/Transforms/InstCombine.h
deleted file mode 100644
index e1c1572d53d..00000000000
--- a/gnu/llvm/include/llvm-c/Transforms/InstCombine.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*===-- Scalar.h - Scalar Transformation Library 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 header declares the C interface to libLLVMInstCombine.a, which *|
-|* combines instructions to form fewer, simple IR instructions. *|
-|* *|
-\*===----------------------------------------------------------------------===*/
-
-#ifndef LLVM_C_TRANSFORMS_INSTCOMBINE_H
-#define LLVM_C_TRANSFORMS_INSTCOMBINE_H
-
-#include "llvm-c/Types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup LLVMCTransformsInstCombine Instruction Combining transformations
- * @ingroup LLVMCTransforms
- *
- * @{
- */
-
-/** See llvm::createInstructionCombiningPass function. */
-void LLVMAddInstructionCombiningPass(LLVMPassManagerRef PM);
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif /* defined(__cplusplus) */
-
-#endif
-
diff --git a/gnu/llvm/include/llvm-c/Transforms/PassManagerBuilder.h b/gnu/llvm/include/llvm-c/Transforms/PassManagerBuilder.h
deleted file mode 100644
index 69786b341ab..00000000000
--- a/gnu/llvm/include/llvm-c/Transforms/PassManagerBuilder.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/*===-- llvm-c/Transform/PassManagerBuilder.h - PMB 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 header declares the C interface to the PassManagerBuilder class. *|
-|* *|
-\*===----------------------------------------------------------------------===*/
-
-#ifndef LLVM_C_TRANSFORMS_PASSMANAGERBUILDER_H
-#define LLVM_C_TRANSFORMS_PASSMANAGERBUILDER_H
-
-#include "llvm-c/Types.h"
-
-typedef struct LLVMOpaquePassManagerBuilder *LLVMPassManagerBuilderRef;
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup LLVMCTransformsPassManagerBuilder Pass manager builder
- * @ingroup LLVMCTransforms
- *
- * @{
- */
-
-/** See llvm::PassManagerBuilder. */
-LLVMPassManagerBuilderRef LLVMPassManagerBuilderCreate(void);
-void LLVMPassManagerBuilderDispose(LLVMPassManagerBuilderRef PMB);
-
-/** See llvm::PassManagerBuilder::OptLevel. */
-void
-LLVMPassManagerBuilderSetOptLevel(LLVMPassManagerBuilderRef PMB,
- unsigned OptLevel);
-
-/** See llvm::PassManagerBuilder::SizeLevel. */
-void
-LLVMPassManagerBuilderSetSizeLevel(LLVMPassManagerBuilderRef PMB,
- unsigned SizeLevel);
-
-/** See llvm::PassManagerBuilder::DisableUnitAtATime. */
-void
-LLVMPassManagerBuilderSetDisableUnitAtATime(LLVMPassManagerBuilderRef PMB,
- LLVMBool Value);
-
-/** See llvm::PassManagerBuilder::DisableUnrollLoops. */
-void
-LLVMPassManagerBuilderSetDisableUnrollLoops(LLVMPassManagerBuilderRef PMB,
- LLVMBool Value);
-
-/** See llvm::PassManagerBuilder::DisableSimplifyLibCalls */
-void
-LLVMPassManagerBuilderSetDisableSimplifyLibCalls(LLVMPassManagerBuilderRef PMB,
- LLVMBool Value);
-
-/** See llvm::PassManagerBuilder::Inliner. */
-void
-LLVMPassManagerBuilderUseInlinerWithThreshold(LLVMPassManagerBuilderRef PMB,
- unsigned Threshold);
-
-/** See llvm::PassManagerBuilder::populateFunctionPassManager. */
-void
-LLVMPassManagerBuilderPopulateFunctionPassManager(LLVMPassManagerBuilderRef PMB,
- LLVMPassManagerRef PM);
-
-/** See llvm::PassManagerBuilder::populateModulePassManager. */
-void
-LLVMPassManagerBuilderPopulateModulePassManager(LLVMPassManagerBuilderRef PMB,
- LLVMPassManagerRef PM);
-
-/** See llvm::PassManagerBuilder::populateLTOPassManager. */
-void LLVMPassManagerBuilderPopulateLTOPassManager(LLVMPassManagerBuilderRef PMB,
- LLVMPassManagerRef PM,
- LLVMBool Internalize,
- LLVMBool RunInliner);
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/gnu/llvm/include/llvm-c/Transforms/Scalar.h b/gnu/llvm/include/llvm-c/Transforms/Scalar.h
deleted file mode 100644
index 3c3bb4eb9b8..00000000000
--- a/gnu/llvm/include/llvm-c/Transforms/Scalar.h
+++ /dev/null
@@ -1,167 +0,0 @@
-/*===-- Scalar.h - Scalar Transformation Library 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 header declares the C interface to libLLVMScalarOpts.a, which *|
-|* implements various scalar transformations of the LLVM IR. *|
-|* *|
-|* Many exotic languages can interoperate with C code but have a harder time *|
-|* with C++ due to name mangling. So in addition to C, this interface enables *|
-|* tools written in such languages. *|
-|* *|
-\*===----------------------------------------------------------------------===*/
-
-#ifndef LLVM_C_TRANSFORMS_SCALAR_H
-#define LLVM_C_TRANSFORMS_SCALAR_H
-
-#include "llvm-c/Types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup LLVMCTransformsScalar Scalar transformations
- * @ingroup LLVMCTransforms
- *
- * @{
- */
-
-/** See llvm::createAggressiveDCEPass function. */
-void LLVMAddAggressiveDCEPass(LLVMPassManagerRef PM);
-
-/** See llvm::createBitTrackingDCEPass function. */
-void LLVMAddBitTrackingDCEPass(LLVMPassManagerRef PM);
-
-/** See llvm::createAlignmentFromAssumptionsPass function. */
-void LLVMAddAlignmentFromAssumptionsPass(LLVMPassManagerRef PM);
-
-/** See llvm::createCFGSimplificationPass function. */
-void LLVMAddCFGSimplificationPass(LLVMPassManagerRef PM);
-
-/** See llvm::createDeadStoreEliminationPass function. */
-void LLVMAddDeadStoreEliminationPass(LLVMPassManagerRef PM);
-
-/** See llvm::createScalarizerPass function. */
-void LLVMAddScalarizerPass(LLVMPassManagerRef PM);
-
-/** See llvm::createMergedLoadStoreMotionPass function. */
-void LLVMAddMergedLoadStoreMotionPass(LLVMPassManagerRef PM);
-
-/** See llvm::createGVNPass function. */
-void LLVMAddGVNPass(LLVMPassManagerRef PM);
-
-/** See llvm::createGVNPass function. */
-void LLVMAddNewGVNPass(LLVMPassManagerRef PM);
-
-/** See llvm::createIndVarSimplifyPass function. */
-void LLVMAddIndVarSimplifyPass(LLVMPassManagerRef PM);
-
-/** See llvm::createInstructionCombiningPass function. */
-void LLVMAddInstructionCombiningPass(LLVMPassManagerRef PM);
-
-/** See llvm::createJumpThreadingPass function. */
-void LLVMAddJumpThreadingPass(LLVMPassManagerRef PM);
-
-/** See llvm::createLICMPass function. */
-void LLVMAddLICMPass(LLVMPassManagerRef PM);
-
-/** See llvm::createLoopDeletionPass function. */
-void LLVMAddLoopDeletionPass(LLVMPassManagerRef PM);
-
-/** See llvm::createLoopIdiomPass function */
-void LLVMAddLoopIdiomPass(LLVMPassManagerRef PM);
-
-/** See llvm::createLoopRotatePass function. */
-void LLVMAddLoopRotatePass(LLVMPassManagerRef PM);
-
-/** See llvm::createLoopRerollPass function. */
-void LLVMAddLoopRerollPass(LLVMPassManagerRef PM);
-
-/** See llvm::createLoopUnrollPass function. */
-void LLVMAddLoopUnrollPass(LLVMPassManagerRef PM);
-
-/** See llvm::createLoopUnrollAndJamPass function. */
-void LLVMAddLoopUnrollAndJamPass(LLVMPassManagerRef PM);
-
-/** See llvm::createLoopUnswitchPass function. */
-void LLVMAddLoopUnswitchPass(LLVMPassManagerRef PM);
-
-/** See llvm::createLowerAtomicPass function. */
-void LLVMAddLowerAtomicPass(LLVMPassManagerRef PM);
-
-/** See llvm::createMemCpyOptPass function. */
-void LLVMAddMemCpyOptPass(LLVMPassManagerRef PM);
-
-/** See llvm::createPartiallyInlineLibCallsPass function. */
-void LLVMAddPartiallyInlineLibCallsPass(LLVMPassManagerRef PM);
-
-/** See llvm::createReassociatePass function. */
-void LLVMAddReassociatePass(LLVMPassManagerRef PM);
-
-/** See llvm::createSCCPPass function. */
-void LLVMAddSCCPPass(LLVMPassManagerRef PM);
-
-/** See llvm::createSROAPass function. */
-void LLVMAddScalarReplAggregatesPass(LLVMPassManagerRef PM);
-
-/** See llvm::createSROAPass function. */
-void LLVMAddScalarReplAggregatesPassSSA(LLVMPassManagerRef PM);
-
-/** See llvm::createSROAPass function. */
-void LLVMAddScalarReplAggregatesPassWithThreshold(LLVMPassManagerRef PM,
- int Threshold);
-
-/** See llvm::createSimplifyLibCallsPass function. */
-void LLVMAddSimplifyLibCallsPass(LLVMPassManagerRef PM);
-
-/** See llvm::createTailCallEliminationPass function. */
-void LLVMAddTailCallEliminationPass(LLVMPassManagerRef PM);
-
-/** See llvm::createConstantPropagationPass function. */
-void LLVMAddConstantPropagationPass(LLVMPassManagerRef PM);
-
-/** See llvm::demotePromoteMemoryToRegisterPass function. */
-void LLVMAddDemoteMemoryToRegisterPass(LLVMPassManagerRef PM);
-
-/** See llvm::createVerifierPass function. */
-void LLVMAddVerifierPass(LLVMPassManagerRef PM);
-
-/** See llvm::createCorrelatedValuePropagationPass function */
-void LLVMAddCorrelatedValuePropagationPass(LLVMPassManagerRef PM);
-
-/** See llvm::createEarlyCSEPass function */
-void LLVMAddEarlyCSEPass(LLVMPassManagerRef PM);
-
-/** See llvm::createEarlyCSEPass function */
-void LLVMAddEarlyCSEMemSSAPass(LLVMPassManagerRef PM);
-
-/** See llvm::createLowerExpectIntrinsicPass function */
-void LLVMAddLowerExpectIntrinsicPass(LLVMPassManagerRef PM);
-
-/** See llvm::createTypeBasedAliasAnalysisPass function */
-void LLVMAddTypeBasedAliasAnalysisPass(LLVMPassManagerRef PM);
-
-/** See llvm::createScopedNoAliasAAPass function */
-void LLVMAddScopedNoAliasAAPass(LLVMPassManagerRef PM);
-
-/** See llvm::createBasicAliasAnalysisPass function */
-void LLVMAddBasicAliasAnalysisPass(LLVMPassManagerRef PM);
-
-/** See llvm::createUnifyFunctionExitNodesPass function */
-void LLVMAddUnifyFunctionExitNodesPass(LLVMPassManagerRef PM);
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif /* defined(__cplusplus) */
-
-#endif
diff --git a/gnu/llvm/include/llvm-c/Transforms/Utils.h b/gnu/llvm/include/llvm-c/Transforms/Utils.h
deleted file mode 100644
index f171f7fbbe3..00000000000
--- a/gnu/llvm/include/llvm-c/Transforms/Utils.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*===-- Utils.h - Transformation Utils Library 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 header declares the C interface to libLLVMTransformUtils.a, which *|
-|* implements various transformation utilities of the LLVM IR. *|
-|* *|
-|* Many exotic languages can interoperate with C code but have a harder time *|
-|* with C++ due to name mangling. So in addition to C, this interface enables *|
-|* tools written in such languages. *|
-|* *|
-\*===----------------------------------------------------------------------===*/
-
-#ifndef LLVM_C_TRANSFORMS_UTILS_H
-#define LLVM_C_TRANSFORMS_UTILS_H
-
-#include "llvm-c/Types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup LLVMCTransformsUtils Transformation Utilities
- * @ingroup LLVMCTransforms
- *
- * @{
- */
-
-/** See llvm::createLowerSwitchPass function. */
-void LLVMAddLowerSwitchPass(LLVMPassManagerRef PM);
-
-/** See llvm::createPromoteMemoryToRegisterPass function. */
-void LLVMAddPromoteMemoryToRegisterPass(LLVMPassManagerRef PM);
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif /* defined(__cplusplus) */
-
-#endif
-
diff --git a/gnu/llvm/include/llvm-c/Transforms/Vectorize.h b/gnu/llvm/include/llvm-c/Transforms/Vectorize.h
deleted file mode 100644
index e3f9961acfb..00000000000
--- a/gnu/llvm/include/llvm-c/Transforms/Vectorize.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*===---------------------------Vectorize.h --------------------- -*- C -*-===*\
-|*===----------- Vectorization Transformation Library C Interface ---------===*|
-|* *|
-|* The LLVM Compiler Infrastructure *|
-|* *|
-|* This file is distributed under the University of Illinois Open Source *|
-|* License. See LICENSE.TXT for details. *|
-|* *|
-|*===----------------------------------------------------------------------===*|
-|* *|
-|* This header declares the C interface to libLLVMVectorize.a, which *|
-|* implements various vectorization transformations of the LLVM IR. *|
-|* *|
-|* Many exotic languages can interoperate with C code but have a harder time *|
-|* with C++ due to name mangling. So in addition to C, this interface enables *|
-|* tools written in such languages. *|
-|* *|
-\*===----------------------------------------------------------------------===*/
-
-#ifndef LLVM_C_TRANSFORMS_VECTORIZE_H
-#define LLVM_C_TRANSFORMS_VECTORIZE_H
-
-#include "llvm-c/Types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup LLVMCTransformsVectorize Vectorization transformations
- * @ingroup LLVMCTransforms
- *
- * @{
- */
-
-/** See llvm::createLoopVectorizePass function. */
-void LLVMAddLoopVectorizePass(LLVMPassManagerRef PM);
-
-/** See llvm::createSLPVectorizerPass function. */
-void LLVMAddSLPVectorizePass(LLVMPassManagerRef PM);
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif /* defined(__cplusplus) */
-
-#endif
diff --git a/gnu/llvm/include/llvm-c/Types.h b/gnu/llvm/include/llvm-c/Types.h
deleted file mode 100644
index ce1acf3e042..00000000000
--- a/gnu/llvm/include/llvm-c/Types.h
+++ /dev/null
@@ -1,174 +0,0 @@
-/*===-- llvm-c/Support.h - C Interface Types declarations ---------*- 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 types used by the C interface to LLVM. *|
-|* *|
-\*===----------------------------------------------------------------------===*/
-
-#ifndef LLVM_C_TYPES_H
-#define LLVM_C_TYPES_H
-
-#include "llvm-c/DataTypes.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup LLVMCSupportTypes Types and Enumerations
- *
- * @{
- */
-
-typedef int LLVMBool;
-
-/* Opaque types. */
-
-/**
- * LLVM uses a polymorphic type hierarchy which C cannot represent, therefore
- * parameters must be passed as base types. Despite the declared types, most
- * of the functions provided operate only on branches of the type hierarchy.
- * The declared parameter names are descriptive and specify which type is
- * required. Additionally, each type hierarchy is documented along with the
- * functions that operate upon it. For more detail, refer to LLVM's C++ code.
- * If in doubt, refer to Core.cpp, which performs parameter downcasts in the
- * form unwrap<RequiredType>(Param).
- */
-
-/**
- * Used to pass regions of memory through LLVM interfaces.
- *
- * @see llvm::MemoryBuffer
- */
-typedef struct LLVMOpaqueMemoryBuffer *LLVMMemoryBufferRef;
-
-/**
- * The top-level container for all LLVM global data. See the LLVMContext class.
- */
-typedef struct LLVMOpaqueContext *LLVMContextRef;
-
-/**
- * The top-level container for all other LLVM Intermediate Representation (IR)
- * objects.
- *
- * @see llvm::Module
- */
-typedef struct LLVMOpaqueModule *LLVMModuleRef;
-
-/**
- * Each value in the LLVM IR has a type, an LLVMTypeRef.
- *
- * @see llvm::Type
- */
-typedef struct LLVMOpaqueType *LLVMTypeRef;
-
-/**
- * Represents an individual value in LLVM IR.
- *
- * This models llvm::Value.
- */
-typedef struct LLVMOpaqueValue *LLVMValueRef;
-
-/**
- * Represents a basic block of instructions in LLVM IR.
- *
- * This models llvm::BasicBlock.
- */
-typedef struct LLVMOpaqueBasicBlock *LLVMBasicBlockRef;
-
-/**
- * Represents an LLVM Metadata.
- *
- * This models llvm::Metadata.
- */
-typedef struct LLVMOpaqueMetadata *LLVMMetadataRef;
-
-/**
- * Represents an LLVM Named Metadata Node.
- *
- * This models llvm::NamedMDNode.
- */
-typedef struct LLVMOpaqueNamedMDNode *LLVMNamedMDNodeRef;
-
-/**
- * Represents an entry in a Global Object's metadata attachments.
- *
- * This models std::pair<unsigned, MDNode *>
- */
-typedef struct LLVMOpaqueValueMetadataEntry LLVMValueMetadataEntry;
-
-/**
- * Represents an LLVM basic block builder.
- *
- * This models llvm::IRBuilder.
- */
-typedef struct LLVMOpaqueBuilder *LLVMBuilderRef;
-
-/**
- * Represents an LLVM debug info builder.
- *
- * This models llvm::DIBuilder.
- */
-typedef struct LLVMOpaqueDIBuilder *LLVMDIBuilderRef;
-
-/**
- * Interface used to provide a module to JIT or interpreter.
- * This is now just a synonym for llvm::Module, but we have to keep using the
- * different type to keep binary compatibility.
- */
-typedef struct LLVMOpaqueModuleProvider *LLVMModuleProviderRef;
-
-/** @see llvm::PassManagerBase */
-typedef struct LLVMOpaquePassManager *LLVMPassManagerRef;
-
-/** @see llvm::PassRegistry */
-typedef struct LLVMOpaquePassRegistry *LLVMPassRegistryRef;
-
-/**
- * Used to get the users and usees of a Value.
- *
- * @see llvm::Use */
-typedef struct LLVMOpaqueUse *LLVMUseRef;
-
-/**
- * Used to represent an attributes.
- *
- * @see llvm::Attribute
- */
-typedef struct LLVMOpaqueAttributeRef *LLVMAttributeRef;
-
-/**
- * @see llvm::DiagnosticInfo
- */
-typedef struct LLVMOpaqueDiagnosticInfo *LLVMDiagnosticInfoRef;
-
-/**
- * @see llvm::Comdat
- */
-typedef struct LLVMComdat *LLVMComdatRef;
-
-/**
- * @see llvm::Module::ModuleFlagEntry
- */
-typedef struct LLVMOpaqueModuleFlagEntry LLVMModuleFlagEntry;
-
-/**
- * @see llvm::JITEventListener
- */
-typedef struct LLVMOpaqueJITEventListener *LLVMJITEventListenerRef;
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/gnu/llvm/include/llvm-c/lto.h b/gnu/llvm/include/llvm-c/lto.h
deleted file mode 100644
index 090cd34af4e..00000000000
--- a/gnu/llvm/include/llvm-c/lto.h
+++ /dev/null
@@ -1,859 +0,0 @@
-/*===-- llvm-c/lto.h - LTO Public 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 header provides public interface to an abstract link time optimization*|
-|* library. LLVM provides an implementation of this interface for use with *|
-|* llvm bitcode files. *|
-|* *|
-\*===----------------------------------------------------------------------===*/
-
-#ifndef LLVM_C_LTO_H
-#define LLVM_C_LTO_H
-
-#ifdef __cplusplus
-#include <cstddef>
-#else
-#include <stddef.h>
-#endif
-#include <sys/types.h>
-
-#ifndef __cplusplus
-#if !defined(_MSC_VER)
-#include <stdbool.h>
-typedef bool lto_bool_t;
-#else
-/* MSVC in particular does not have anything like _Bool or bool in C, but we can
- at least make sure the type is the same size. The implementation side will
- use C++ bool. */
-typedef unsigned char lto_bool_t;
-#endif
-#else
-typedef bool lto_bool_t;
-#endif
-
-/**
- * @defgroup LLVMCLTO LTO
- * @ingroup LLVMC
- *
- * @{
- */
-
-#define LTO_API_VERSION 23
-
-/**
- * \since prior to LTO_API_VERSION=3
- */
-typedef enum {
- LTO_SYMBOL_ALIGNMENT_MASK = 0x0000001F, /* log2 of alignment */
- LTO_SYMBOL_PERMISSIONS_MASK = 0x000000E0,
- LTO_SYMBOL_PERMISSIONS_CODE = 0x000000A0,
- LTO_SYMBOL_PERMISSIONS_DATA = 0x000000C0,
- LTO_SYMBOL_PERMISSIONS_RODATA = 0x00000080,
- LTO_SYMBOL_DEFINITION_MASK = 0x00000700,
- LTO_SYMBOL_DEFINITION_REGULAR = 0x00000100,
- LTO_SYMBOL_DEFINITION_TENTATIVE = 0x00000200,
- LTO_SYMBOL_DEFINITION_WEAK = 0x00000300,
- LTO_SYMBOL_DEFINITION_UNDEFINED = 0x00000400,
- LTO_SYMBOL_DEFINITION_WEAKUNDEF = 0x00000500,
- LTO_SYMBOL_SCOPE_MASK = 0x00003800,
- LTO_SYMBOL_SCOPE_INTERNAL = 0x00000800,
- LTO_SYMBOL_SCOPE_HIDDEN = 0x00001000,
- LTO_SYMBOL_SCOPE_PROTECTED = 0x00002000,
- LTO_SYMBOL_SCOPE_DEFAULT = 0x00001800,
- LTO_SYMBOL_SCOPE_DEFAULT_CAN_BE_HIDDEN = 0x00002800,
- LTO_SYMBOL_COMDAT = 0x00004000,
- LTO_SYMBOL_ALIAS = 0x00008000
-} lto_symbol_attributes;
-
-/**
- * \since prior to LTO_API_VERSION=3
- */
-typedef enum {
- LTO_DEBUG_MODEL_NONE = 0,
- LTO_DEBUG_MODEL_DWARF = 1
-} lto_debug_model;
-
-/**
- * \since prior to LTO_API_VERSION=3
- */
-typedef enum {
- LTO_CODEGEN_PIC_MODEL_STATIC = 0,
- LTO_CODEGEN_PIC_MODEL_DYNAMIC = 1,
- LTO_CODEGEN_PIC_MODEL_DYNAMIC_NO_PIC = 2,
- LTO_CODEGEN_PIC_MODEL_DEFAULT = 3
-} lto_codegen_model;
-
-/** opaque reference to a loaded object module */
-typedef struct LLVMOpaqueLTOModule *lto_module_t;
-
-/** opaque reference to a code generator */
-typedef struct LLVMOpaqueLTOCodeGenerator *lto_code_gen_t;
-
-/** opaque reference to a thin code generator */
-typedef struct LLVMOpaqueThinLTOCodeGenerator *thinlto_code_gen_t;
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * Returns a printable string.
- *
- * \since prior to LTO_API_VERSION=3
- */
-extern const char*
-lto_get_version(void);
-
-/**
- * Returns the last error string or NULL if last operation was successful.
- *
- * \since prior to LTO_API_VERSION=3
- */
-extern const char*
-lto_get_error_message(void);
-
-/**
- * Checks if a file is a loadable object file.
- *
- * \since prior to LTO_API_VERSION=3
- */
-extern lto_bool_t
-lto_module_is_object_file(const char* path);
-
-/**
- * Checks if a file is a loadable object compiled for requested target.
- *
- * \since prior to LTO_API_VERSION=3
- */
-extern lto_bool_t
-lto_module_is_object_file_for_target(const char* path,
- const char* target_triple_prefix);
-
-/**
- * Return true if \p Buffer contains a bitcode file with ObjC code (category
- * or class) in it.
- *
- * \since LTO_API_VERSION=20
- */
-extern lto_bool_t
-lto_module_has_objc_category(const void *mem, size_t length);
-
-/**
- * Checks if a buffer is a loadable object file.
- *
- * \since prior to LTO_API_VERSION=3
- */
-extern lto_bool_t lto_module_is_object_file_in_memory(const void *mem,
- size_t length);
-
-/**
- * Checks if a buffer is a loadable object compiled for requested target.
- *
- * \since prior to LTO_API_VERSION=3
- */
-extern lto_bool_t
-lto_module_is_object_file_in_memory_for_target(const void* mem, size_t length,
- const char* target_triple_prefix);
-
-/**
- * Loads an object file from disk.
- * Returns NULL on error (check lto_get_error_message() for details).
- *
- * \since prior to LTO_API_VERSION=3
- */
-extern lto_module_t
-lto_module_create(const char* path);
-
-/**
- * Loads an object file from memory.
- * Returns NULL on error (check lto_get_error_message() for details).
- *
- * \since prior to LTO_API_VERSION=3
- */
-extern lto_module_t
-lto_module_create_from_memory(const void* mem, size_t length);
-
-/**
- * Loads an object file from memory with an extra path argument.
- * Returns NULL on error (check lto_get_error_message() for details).
- *
- * \since LTO_API_VERSION=9
- */
-extern lto_module_t
-lto_module_create_from_memory_with_path(const void* mem, size_t length,
- const char *path);
-
-/**
- * Loads an object file in its own context.
- *
- * Loads an object file in its own LLVMContext. This function call is
- * thread-safe. However, modules created this way should not be merged into an
- * lto_code_gen_t using \a lto_codegen_add_module().
- *
- * Returns NULL on error (check lto_get_error_message() for details).
- *
- * \since LTO_API_VERSION=11
- */
-extern lto_module_t
-lto_module_create_in_local_context(const void *mem, size_t length,
- const char *path);
-
-/**
- * Loads an object file in the codegen context.
- *
- * Loads an object file into the same context as \c cg. The module is safe to
- * add using \a lto_codegen_add_module().
- *
- * Returns NULL on error (check lto_get_error_message() for details).
- *
- * \since LTO_API_VERSION=11
- */
-extern lto_module_t
-lto_module_create_in_codegen_context(const void *mem, size_t length,
- const char *path, lto_code_gen_t cg);
-
-/**
- * Loads an object file from disk. The seek point of fd is not preserved.
- * Returns NULL on error (check lto_get_error_message() for details).
- *
- * \since LTO_API_VERSION=5
- */
-extern lto_module_t
-lto_module_create_from_fd(int fd, const char *path, size_t file_size);
-
-/**
- * Loads an object file from disk. The seek point of fd is not preserved.
- * Returns NULL on error (check lto_get_error_message() for details).
- *
- * \since LTO_API_VERSION=5
- */
-extern lto_module_t
-lto_module_create_from_fd_at_offset(int fd, const char *path, size_t file_size,
- size_t map_size, off_t offset);
-
-/**
- * Frees all memory internally allocated by the module.
- * Upon return the lto_module_t is no longer valid.
- *
- * \since prior to LTO_API_VERSION=3
- */
-extern void
-lto_module_dispose(lto_module_t mod);
-
-/**
- * Returns triple string which the object module was compiled under.
- *
- * \since prior to LTO_API_VERSION=3
- */
-extern const char*
-lto_module_get_target_triple(lto_module_t mod);
-
-/**
- * Sets triple string with which the object will be codegened.
- *
- * \since LTO_API_VERSION=4
- */
-extern void
-lto_module_set_target_triple(lto_module_t mod, const char *triple);
-
-/**
- * Returns the number of symbols in the object module.
- *
- * \since prior to LTO_API_VERSION=3
- */
-extern unsigned int
-lto_module_get_num_symbols(lto_module_t mod);
-
-/**
- * Returns the name of the ith symbol in the object module.
- *
- * \since prior to LTO_API_VERSION=3
- */
-extern const char*
-lto_module_get_symbol_name(lto_module_t mod, unsigned int index);
-
-/**
- * Returns the attributes of the ith symbol in the object module.
- *
- * \since prior to LTO_API_VERSION=3
- */
-extern lto_symbol_attributes
-lto_module_get_symbol_attribute(lto_module_t mod, unsigned int index);
-
-/**
- * Returns the module's linker options.
- *
- * The linker options may consist of multiple flags. It is the linker's
- * responsibility to split the flags using a platform-specific mechanism.
- *
- * \since LTO_API_VERSION=16
- */
-extern const char*
-lto_module_get_linkeropts(lto_module_t mod);
-
-/**
- * Diagnostic severity.
- *
- * \since LTO_API_VERSION=7
- */
-typedef enum {
- LTO_DS_ERROR = 0,
- LTO_DS_WARNING = 1,
- LTO_DS_REMARK = 3, // Added in LTO_API_VERSION=10.
- LTO_DS_NOTE = 2
-} lto_codegen_diagnostic_severity_t;
-
-/**
- * Diagnostic handler type.
- * \p severity defines the severity.
- * \p diag is the actual diagnostic.
- * The diagnostic is not prefixed by any of severity keyword, e.g., 'error: '.
- * \p ctxt is used to pass the context set with the diagnostic handler.
- *
- * \since LTO_API_VERSION=7
- */
-typedef void (*lto_diagnostic_handler_t)(
- lto_codegen_diagnostic_severity_t severity, const char *diag, void *ctxt);
-
-/**
- * Set a diagnostic handler and the related context (void *).
- * This is more general than lto_get_error_message, as the diagnostic handler
- * can be called at anytime within lto.
- *
- * \since LTO_API_VERSION=7
- */
-extern void lto_codegen_set_diagnostic_handler(lto_code_gen_t,
- lto_diagnostic_handler_t,
- void *);
-
-/**
- * Instantiates a code generator.
- * Returns NULL on error (check lto_get_error_message() for details).
- *
- * All modules added using \a lto_codegen_add_module() must have been created
- * in the same context as the codegen.
- *
- * \since prior to LTO_API_VERSION=3
- */
-extern lto_code_gen_t
-lto_codegen_create(void);
-
-/**
- * Instantiate a code generator in its own context.
- *
- * Instantiates a code generator in its own context. Modules added via \a
- * lto_codegen_add_module() must have all been created in the same context,
- * using \a lto_module_create_in_codegen_context().
- *
- * \since LTO_API_VERSION=11
- */
-extern lto_code_gen_t
-lto_codegen_create_in_local_context(void);
-
-/**
- * Frees all code generator and all memory it internally allocated.
- * Upon return the lto_code_gen_t is no longer valid.
- *
- * \since prior to LTO_API_VERSION=3
- */
-extern void
-lto_codegen_dispose(lto_code_gen_t);
-
-/**
- * Add an object module to the set of modules for which code will be generated.
- * Returns true on error (check lto_get_error_message() for details).
- *
- * \c cg and \c mod must both be in the same context. See \a
- * lto_codegen_create_in_local_context() and \a
- * lto_module_create_in_codegen_context().
- *
- * \since prior to LTO_API_VERSION=3
- */
-extern lto_bool_t
-lto_codegen_add_module(lto_code_gen_t cg, lto_module_t mod);
-
-/**
- * Sets the object module for code generation. This will transfer the ownership
- * of the module to the code generator.
- *
- * \c cg and \c mod must both be in the same context.
- *
- * \since LTO_API_VERSION=13
- */
-extern void
-lto_codegen_set_module(lto_code_gen_t cg, lto_module_t mod);
-
-/**
- * Sets if debug info should be generated.
- * Returns true on error (check lto_get_error_message() for details).
- *
- * \since prior to LTO_API_VERSION=3
- */
-extern lto_bool_t
-lto_codegen_set_debug_model(lto_code_gen_t cg, lto_debug_model);
-
-/**
- * Sets which PIC code model to generated.
- * Returns true on error (check lto_get_error_message() for details).
- *
- * \since prior to LTO_API_VERSION=3
- */
-extern lto_bool_t
-lto_codegen_set_pic_model(lto_code_gen_t cg, lto_codegen_model);
-
-/**
- * Sets the cpu to generate code for.
- *
- * \since LTO_API_VERSION=4
- */
-extern void
-lto_codegen_set_cpu(lto_code_gen_t cg, const char *cpu);
-
-/**
- * Sets the location of the assembler tool to run. If not set, libLTO
- * will use gcc to invoke the assembler.
- *
- * \since LTO_API_VERSION=3
- */
-extern void
-lto_codegen_set_assembler_path(lto_code_gen_t cg, const char* path);
-
-/**
- * Sets extra arguments that libLTO should pass to the assembler.
- *
- * \since LTO_API_VERSION=4
- */
-extern void
-lto_codegen_set_assembler_args(lto_code_gen_t cg, const char **args,
- int nargs);
-
-/**
- * Adds to a list of all global symbols that must exist in the final generated
- * code. If a function is not listed there, it might be inlined into every usage
- * and optimized away.
- *
- * \since prior to LTO_API_VERSION=3
- */
-extern void
-lto_codegen_add_must_preserve_symbol(lto_code_gen_t cg, const char* symbol);
-
-/**
- * Writes a new object file at the specified path that contains the
- * merged contents of all modules added so far.
- * Returns true on error (check lto_get_error_message() for details).
- *
- * \since LTO_API_VERSION=5
- */
-extern lto_bool_t
-lto_codegen_write_merged_modules(lto_code_gen_t cg, const char* path);
-
-/**
- * Generates code for all added modules into one native object file.
- * This calls lto_codegen_optimize then lto_codegen_compile_optimized.
- *
- * On success returns a pointer to a generated mach-o/ELF buffer and
- * length set to the buffer size. The buffer is owned by the
- * lto_code_gen_t and will be freed when lto_codegen_dispose()
- * is called, or lto_codegen_compile() is called again.
- * On failure, returns NULL (check lto_get_error_message() for details).
- *
- * \since prior to LTO_API_VERSION=3
- */
-extern const void*
-lto_codegen_compile(lto_code_gen_t cg, size_t* length);
-
-/**
- * Generates code for all added modules into one native object file.
- * This calls lto_codegen_optimize then lto_codegen_compile_optimized (instead
- * of returning a generated mach-o/ELF buffer, it writes to a file).
- *
- * The name of the file is written to name. Returns true on error.
- *
- * \since LTO_API_VERSION=5
- */
-extern lto_bool_t
-lto_codegen_compile_to_file(lto_code_gen_t cg, const char** name);
-
-/**
- * Runs optimization for the merged module. Returns true on error.
- *
- * \since LTO_API_VERSION=12
- */
-extern lto_bool_t
-lto_codegen_optimize(lto_code_gen_t cg);
-
-/**
- * Generates code for the optimized merged module into one native object file.
- * It will not run any IR optimizations on the merged module.
- *
- * On success returns a pointer to a generated mach-o/ELF buffer and length set
- * to the buffer size. The buffer is owned by the lto_code_gen_t and will be
- * freed when lto_codegen_dispose() is called, or
- * lto_codegen_compile_optimized() is called again. On failure, returns NULL
- * (check lto_get_error_message() for details).
- *
- * \since LTO_API_VERSION=12
- */
-extern const void*
-lto_codegen_compile_optimized(lto_code_gen_t cg, size_t* length);
-
-/**
- * Returns the runtime API version.
- *
- * \since LTO_API_VERSION=12
- */
-extern unsigned int
-lto_api_version(void);
-
-/**
- * Sets options to help debug codegen bugs.
- *
- * \since prior to LTO_API_VERSION=3
- */
-extern void
-lto_codegen_debug_options(lto_code_gen_t cg, const char *);
-
-/**
- * Initializes LLVM disassemblers.
- * FIXME: This doesn't really belong here.
- *
- * \since LTO_API_VERSION=5
- */
-extern void
-lto_initialize_disassembler(void);
-
-/**
- * Sets if we should run internalize pass during optimization and code
- * generation.
- *
- * \since LTO_API_VERSION=14
- */
-extern void
-lto_codegen_set_should_internalize(lto_code_gen_t cg,
- lto_bool_t ShouldInternalize);
-
-/**
- * Set whether to embed uselists in bitcode.
- *
- * Sets whether \a lto_codegen_write_merged_modules() should embed uselists in
- * output bitcode. This should be turned on for all -save-temps output.
- *
- * \since LTO_API_VERSION=15
- */
-extern void
-lto_codegen_set_should_embed_uselists(lto_code_gen_t cg,
- lto_bool_t ShouldEmbedUselists);
-
-/**
- * @} // endgoup LLVMCLTO
- * @defgroup LLVMCTLTO ThinLTO
- * @ingroup LLVMC
- *
- * @{
- */
-
-/**
- * Type to wrap a single object returned by ThinLTO.
- *
- * \since LTO_API_VERSION=18
- */
-typedef struct {
- const char *Buffer;
- size_t Size;
-} LTOObjectBuffer;
-
-/**
- * Instantiates a ThinLTO code generator.
- * Returns NULL on error (check lto_get_error_message() for details).
- *
- *
- * The ThinLTOCodeGenerator is not intended to be reuse for multiple
- * compilation: the model is that the client adds modules to the generator and
- * ask to perform the ThinLTO optimizations / codegen, and finally destroys the
- * codegenerator.
- *
- * \since LTO_API_VERSION=18
- */
-extern thinlto_code_gen_t thinlto_create_codegen(void);
-
-/**
- * Frees the generator and all memory it internally allocated.
- * Upon return the thinlto_code_gen_t is no longer valid.
- *
- * \since LTO_API_VERSION=18
- */
-extern void thinlto_codegen_dispose(thinlto_code_gen_t cg);
-
-/**
- * Add a module to a ThinLTO code generator. Identifier has to be unique among
- * all the modules in a code generator. The data buffer stays owned by the
- * client, and is expected to be available for the entire lifetime of the
- * thinlto_code_gen_t it is added to.
- *
- * On failure, returns NULL (check lto_get_error_message() for details).
- *
- *
- * \since LTO_API_VERSION=18
- */
-extern void thinlto_codegen_add_module(thinlto_code_gen_t cg,
- const char *identifier, const char *data,
- int length);
-
-/**
- * Optimize and codegen all the modules added to the codegenerator using
- * ThinLTO. Resulting objects are accessible using thinlto_module_get_object().
- *
- * \since LTO_API_VERSION=18
- */
-extern void thinlto_codegen_process(thinlto_code_gen_t cg);
-
-/**
- * Returns the number of object files produced by the ThinLTO CodeGenerator.
- *
- * It usually matches the number of input files, but this is not a guarantee of
- * the API and may change in future implementation, so the client should not
- * assume it.
- *
- * \since LTO_API_VERSION=18
- */
-extern unsigned int thinlto_module_get_num_objects(thinlto_code_gen_t cg);
-
-/**
- * Returns a reference to the ith object file produced by the ThinLTO
- * CodeGenerator.
- *
- * Client should use \p thinlto_module_get_num_objects() to get the number of
- * available objects.
- *
- * \since LTO_API_VERSION=18
- */
-extern LTOObjectBuffer thinlto_module_get_object(thinlto_code_gen_t cg,
- unsigned int index);
-
-/**
- * Returns the number of object files produced by the ThinLTO CodeGenerator.
- *
- * It usually matches the number of input files, but this is not a guarantee of
- * the API and may change in future implementation, so the client should not
- * assume it.
- *
- * \since LTO_API_VERSION=21
- */
-unsigned int thinlto_module_get_num_object_files(thinlto_code_gen_t cg);
-
-/**
- * Returns the path to the ith object file produced by the ThinLTO
- * CodeGenerator.
- *
- * Client should use \p thinlto_module_get_num_object_files() to get the number
- * of available objects.
- *
- * \since LTO_API_VERSION=21
- */
-const char *thinlto_module_get_object_file(thinlto_code_gen_t cg,
- unsigned int index);
-
-/**
- * Sets which PIC code model to generate.
- * Returns true on error (check lto_get_error_message() for details).
- *
- * \since LTO_API_VERSION=18
- */
-extern lto_bool_t thinlto_codegen_set_pic_model(thinlto_code_gen_t cg,
- lto_codegen_model);
-
-/**
- * Sets the path to a directory to use as a storage for temporary bitcode files.
- * The intention is to make the bitcode files available for debugging at various
- * stage of the pipeline.
- *
- * \since LTO_API_VERSION=18
- */
-extern void thinlto_codegen_set_savetemps_dir(thinlto_code_gen_t cg,
- const char *save_temps_dir);
-
-/**
- * Set the path to a directory where to save generated object files. This
- * path can be used by a linker to request on-disk files instead of in-memory
- * buffers. When set, results are available through
- * thinlto_module_get_object_file() instead of thinlto_module_get_object().
- *
- * \since LTO_API_VERSION=21
- */
-void thinlto_set_generated_objects_dir(thinlto_code_gen_t cg,
- const char *save_temps_dir);
-
-/**
- * Sets the cpu to generate code for.
- *
- * \since LTO_API_VERSION=18
- */
-extern void thinlto_codegen_set_cpu(thinlto_code_gen_t cg, const char *cpu);
-
-/**
- * Disable CodeGen, only run the stages till codegen and stop. The output will
- * be bitcode.
- *
- * \since LTO_API_VERSION=19
- */
-extern void thinlto_codegen_disable_codegen(thinlto_code_gen_t cg,
- lto_bool_t disable);
-
-/**
- * Perform CodeGen only: disable all other stages.
- *
- * \since LTO_API_VERSION=19
- */
-extern void thinlto_codegen_set_codegen_only(thinlto_code_gen_t cg,
- lto_bool_t codegen_only);
-
-/**
- * Parse -mllvm style debug options.
- *
- * \since LTO_API_VERSION=18
- */
-extern void thinlto_debug_options(const char *const *options, int number);
-
-/**
- * Test if a module has support for ThinLTO linking.
- *
- * \since LTO_API_VERSION=18
- */
-extern lto_bool_t lto_module_is_thinlto(lto_module_t mod);
-
-/**
- * Adds a symbol to the list of global symbols that must exist in the final
- * generated code. If a function is not listed there, it might be inlined into
- * every usage and optimized away. For every single module, the functions
- * referenced from code outside of the ThinLTO modules need to be added here.
- *
- * \since LTO_API_VERSION=18
- */
-extern void thinlto_codegen_add_must_preserve_symbol(thinlto_code_gen_t cg,
- const char *name,
- int length);
-
-/**
- * Adds a symbol to the list of global symbols that are cross-referenced between
- * ThinLTO files. If the ThinLTO CodeGenerator can ensure that every
- * references from a ThinLTO module to this symbol is optimized away, then
- * the symbol can be discarded.
- *
- * \since LTO_API_VERSION=18
- */
-extern void thinlto_codegen_add_cross_referenced_symbol(thinlto_code_gen_t cg,
- const char *name,
- int length);
-
-/**
- * @} // endgoup LLVMCTLTO
- * @defgroup LLVMCTLTO_CACHING ThinLTO Cache Control
- * @ingroup LLVMCTLTO
- *
- * These entry points control the ThinLTO cache. The cache is intended to
- * support incremental builds, and thus needs to be persistent across builds.
- * The client enables the cache by supplying a path to an existing directory.
- * The code generator will use this to store objects files that may be reused
- * during a subsequent build.
- * To avoid filling the disk space, a few knobs are provided:
- * - The pruning interval limits the frequency at which the garbage collector
- * will try to scan the cache directory to prune expired entries.
- * Setting to a negative number disables the pruning.
- * - The pruning expiration time indicates to the garbage collector how old an
- * entry needs to be to be removed.
- * - Finally, the garbage collector can be instructed to prune the cache until
- * the occupied space goes below a threshold.
- * @{
- */
-
-/**
- * Sets the path to a directory to use as a cache storage for incremental build.
- * Setting this activates caching.
- *
- * \since LTO_API_VERSION=18
- */
-extern void thinlto_codegen_set_cache_dir(thinlto_code_gen_t cg,
- const char *cache_dir);
-
-/**
- * Sets the cache pruning interval (in seconds). A negative value disables the
- * pruning. An unspecified default value will be applied, and a value of 0 will
- * force prunning to occur.
- *
- * \since LTO_API_VERSION=18
- */
-extern void thinlto_codegen_set_cache_pruning_interval(thinlto_code_gen_t cg,
- int interval);
-
-/**
- * Sets the maximum cache size that can be persistent across build, in terms of
- * percentage of the available space on the disk. Set to 100 to indicate
- * no limit, 50 to indicate that the cache size will not be left over half the
- * available space. A value over 100 will be reduced to 100, a value of 0 will
- * be ignored. An unspecified default value will be applied.
- *
- * The formula looks like:
- * AvailableSpace = FreeSpace + ExistingCacheSize
- * NewCacheSize = AvailableSpace * P/100
- *
- * \since LTO_API_VERSION=18
- */
-extern void thinlto_codegen_set_final_cache_size_relative_to_available_space(
- thinlto_code_gen_t cg, unsigned percentage);
-
-/**
- * Sets the expiration (in seconds) for an entry in the cache. An unspecified
- * default value will be applied. A value of 0 will be ignored.
- *
- * \since LTO_API_VERSION=18
- */
-extern void thinlto_codegen_set_cache_entry_expiration(thinlto_code_gen_t cg,
- unsigned expiration);
-
-/**
- * Sets the maximum size of the cache directory (in bytes). A value over the
- * amount of available space on the disk will be reduced to the amount of
- * available space. An unspecified default value will be applied. A value of 0
- * will be ignored.
- *
- * \since LTO_API_VERSION=22
- */
-extern void thinlto_codegen_set_cache_size_bytes(thinlto_code_gen_t cg,
- unsigned max_size_bytes);
-
-/**
- * Same as thinlto_codegen_set_cache_size_bytes, except the maximum size is in
- * megabytes (2^20 bytes).
- *
- * \since LTO_API_VERSION=23
- */
-extern void
-thinlto_codegen_set_cache_size_megabytes(thinlto_code_gen_t cg,
- unsigned max_size_megabytes);
-
-/**
- * Sets the maximum number of files in the cache directory. An unspecified
- * default value will be applied. A value of 0 will be ignored.
- *
- * \since LTO_API_VERSION=22
- */
-extern void thinlto_codegen_set_cache_size_files(thinlto_code_gen_t cg,
- unsigned max_size_files);
-
-
-
-/**
- * @} // endgroup LLVMCTLTO_CACHING
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* LLVM_C_LTO_H */
diff --git a/gnu/llvm/include/llvm-c/module.modulemap b/gnu/llvm/include/llvm-c/module.modulemap
deleted file mode 100644
index a456119595c..00000000000
--- a/gnu/llvm/include/llvm-c/module.modulemap
+++ /dev/null
@@ -1,4 +0,0 @@
-module LLVM_C {
- umbrella "."
- module * { export * }
-}