mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-05 07:08:48 +00:00
Update to LLVM-17
This commit is contained in:
+182
-95
@@ -15,8 +15,10 @@
|
||||
#ifndef LLVM_C_CORE_H
|
||||
#define LLVM_C_CORE_H
|
||||
|
||||
#include "llvm-c/Deprecated.h"
|
||||
#include "llvm-c/ErrorHandling.h"
|
||||
#include "llvm-c/ExternC.h"
|
||||
|
||||
#include "llvm-c/Types.h"
|
||||
|
||||
LLVM_C_EXTERN_C_BEGIN
|
||||
@@ -163,7 +165,8 @@ typedef enum {
|
||||
LLVMTokenTypeKind, /**< Tokens */
|
||||
LLVMScalableVectorTypeKind, /**< Scalable SIMD vector type */
|
||||
LLVMBFloatTypeKind, /**< 16 bit brain floating point type */
|
||||
LLVMX86_AMXTypeKind /**< X86 AMX */
|
||||
LLVMX86_AMXTypeKind, /**< X86 AMX */
|
||||
LLVMTargetExtTypeKind, /**< Target extension type */
|
||||
} LLVMTypeKind;
|
||||
|
||||
typedef enum {
|
||||
@@ -282,7 +285,8 @@ typedef enum {
|
||||
LLVMInlineAsmValueKind,
|
||||
|
||||
LLVMInstructionValueKind,
|
||||
LLVMPoisonValueValueKind
|
||||
LLVMPoisonValueValueKind,
|
||||
LLVMConstantTargetNoneValueKind,
|
||||
} LLVMValueKind;
|
||||
|
||||
typedef enum {
|
||||
@@ -379,8 +383,14 @@ typedef enum {
|
||||
the old one */
|
||||
LLVMAtomicRMWBinOpFAdd, /**< Add a floating point value and return the
|
||||
old one */
|
||||
LLVMAtomicRMWBinOpFSub /**< Subtract a floating point value and return the
|
||||
old one */
|
||||
LLVMAtomicRMWBinOpFSub, /**< Subtract a floating point value and return the
|
||||
old one */
|
||||
LLVMAtomicRMWBinOpFMax, /**< Sets the value if it's greater than the
|
||||
original using an floating point comparison and
|
||||
return the old one */
|
||||
LLVMAtomicRMWBinOpFMin, /**< Sets the value if it's smaller than the
|
||||
original using an floating point comparison and
|
||||
return the old one */
|
||||
} LLVMAtomicRMWBinOp;
|
||||
|
||||
typedef enum {
|
||||
@@ -464,13 +474,21 @@ typedef unsigned LLVMAttributeIndex;
|
||||
* @}
|
||||
*/
|
||||
|
||||
void LLVMInitializeCore(LLVMPassRegistryRef R);
|
||||
|
||||
/** Deallocate and destroy all ManagedStatic variables.
|
||||
@see llvm::llvm_shutdown
|
||||
@see ManagedStatic */
|
||||
void LLVMShutdown(void);
|
||||
|
||||
/*===-- Version query -----------------------------------------------------===*/
|
||||
|
||||
/**
|
||||
* Return the major, minor, and patch version of LLVM
|
||||
*
|
||||
* The version components are returned via the function's three output
|
||||
* parameters or skipped if a NULL pointer was supplied.
|
||||
*/
|
||||
void LLVMGetVersion(unsigned *Major, unsigned *Minor, unsigned *Patch);
|
||||
|
||||
/*===-- Error handling ----------------------------------------------------===*/
|
||||
|
||||
char *LLVMCreateMessage(const char *Message);
|
||||
@@ -872,11 +890,11 @@ void LLVMAppendModuleInlineAsm(LLVMModuleRef M, const char *Asm, size_t Len);
|
||||
*
|
||||
* @see InlineAsm::get()
|
||||
*/
|
||||
LLVMValueRef LLVMGetInlineAsm(LLVMTypeRef Ty,
|
||||
char *AsmString, size_t AsmStringSize,
|
||||
char *Constraints, size_t ConstraintsSize,
|
||||
LLVMBool HasSideEffects, LLVMBool IsAlignStack,
|
||||
LLVMInlineAsmDialect Dialect);
|
||||
LLVMValueRef LLVMGetInlineAsm(LLVMTypeRef Ty, char *AsmString,
|
||||
size_t AsmStringSize, char *Constraints,
|
||||
size_t ConstraintsSize, LLVMBool HasSideEffects,
|
||||
LLVMBool IsAlignStack,
|
||||
LLVMInlineAsmDialect Dialect, LLVMBool CanThrow);
|
||||
|
||||
/**
|
||||
* Obtain the context to which this module is associated.
|
||||
@@ -1389,9 +1407,7 @@ LLVMBool LLVMIsLiteralStruct(LLVMTypeRef StructTy);
|
||||
*/
|
||||
|
||||
/**
|
||||
* Obtain the type of elements within a sequential type.
|
||||
*
|
||||
* This works on array, vector, and pointer types.
|
||||
* Obtain the element type of an array or vector type.
|
||||
*
|
||||
* @see llvm::SequentialType::getElementType()
|
||||
*/
|
||||
@@ -1417,10 +1433,33 @@ unsigned LLVMGetNumContainedTypes(LLVMTypeRef Tp);
|
||||
* The created type will exist in the context that its element type
|
||||
* exists in.
|
||||
*
|
||||
* @deprecated LLVMArrayType is deprecated in favor of the API accurate
|
||||
* LLVMArrayType2
|
||||
* @see llvm::ArrayType::get()
|
||||
*/
|
||||
LLVMTypeRef LLVMArrayType(LLVMTypeRef ElementType, unsigned ElementCount);
|
||||
|
||||
/**
|
||||
* 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 LLVMArrayType2(LLVMTypeRef ElementType, uint64_t ElementCount);
|
||||
|
||||
/**
|
||||
* Obtain the length of an array type.
|
||||
*
|
||||
* This only works on types that represent arrays.
|
||||
*
|
||||
* @deprecated LLVMGetArrayLength is deprecated in favor of the API accurate
|
||||
* LLVMGetArrayLength2
|
||||
* @see llvm::ArrayType::getNumElements()
|
||||
*/
|
||||
unsigned LLVMGetArrayLength(LLVMTypeRef ArrayTy);
|
||||
|
||||
/**
|
||||
* Obtain the length of an array type.
|
||||
*
|
||||
@@ -1428,7 +1467,7 @@ LLVMTypeRef LLVMArrayType(LLVMTypeRef ElementType, unsigned ElementCount);
|
||||
*
|
||||
* @see llvm::ArrayType::getNumElements()
|
||||
*/
|
||||
unsigned LLVMGetArrayLength(LLVMTypeRef ArrayTy);
|
||||
uint64_t LLVMGetArrayLength2(LLVMTypeRef ArrayTy);
|
||||
|
||||
/**
|
||||
* Create a pointer type that points to a defined type.
|
||||
@@ -1440,6 +1479,22 @@ unsigned LLVMGetArrayLength(LLVMTypeRef ArrayTy);
|
||||
*/
|
||||
LLVMTypeRef LLVMPointerType(LLVMTypeRef ElementType, unsigned AddressSpace);
|
||||
|
||||
/**
|
||||
* Determine whether a pointer is opaque.
|
||||
*
|
||||
* True if this is an instance of an opaque PointerType.
|
||||
*
|
||||
* @see llvm::Type::isOpaquePointerTy()
|
||||
*/
|
||||
LLVMBool LLVMPointerTypeIsOpaque(LLVMTypeRef Ty);
|
||||
|
||||
/**
|
||||
* Create an opaque pointer type in a context.
|
||||
*
|
||||
* @see llvm::PointerType::get()
|
||||
*/
|
||||
LLVMTypeRef LLVMPointerTypeInContext(LLVMContextRef C, unsigned AddressSpace);
|
||||
|
||||
/**
|
||||
* Obtain the address space of a pointer type.
|
||||
*
|
||||
@@ -1530,6 +1585,15 @@ LLVMTypeRef LLVMLabelType(void);
|
||||
LLVMTypeRef LLVMX86MMXType(void);
|
||||
LLVMTypeRef LLVMX86AMXType(void);
|
||||
|
||||
/**
|
||||
* Create a target extension type in LLVM context.
|
||||
*/
|
||||
LLVMTypeRef LLVMTargetExtTypeInContext(LLVMContextRef C, const char *Name,
|
||||
LLVMTypeRef *TypeParams,
|
||||
unsigned TypeParamCount,
|
||||
unsigned *IntParams,
|
||||
unsigned IntParamCount);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
@@ -1580,10 +1644,10 @@ LLVMTypeRef LLVMX86AMXType(void);
|
||||
macro(ConstantVector) \
|
||||
macro(GlobalValue) \
|
||||
macro(GlobalAlias) \
|
||||
macro(GlobalIFunc) \
|
||||
macro(GlobalObject) \
|
||||
macro(Function) \
|
||||
macro(GlobalVariable) \
|
||||
macro(GlobalIFunc) \
|
||||
macro(UndefValue) \
|
||||
macro(PoisonValue) \
|
||||
macro(Instruction) \
|
||||
@@ -1740,6 +1804,7 @@ LLVMBool LLVMIsPoison(LLVMValueRef Val);
|
||||
LLVM_FOR_EACH_VALUE_SUBCLASS(LLVM_DECLARE_VALUE_CAST)
|
||||
|
||||
LLVMValueRef LLVMIsAMDNode(LLVMValueRef Val);
|
||||
LLVMValueRef LLVMIsAValueAsMetadata(LLVMValueRef Val);
|
||||
LLVMValueRef LLVMIsAMDString(LLVMValueRef Val);
|
||||
|
||||
/** Deprecated: Use LLVMGetValueName2 instead. */
|
||||
@@ -2072,11 +2137,21 @@ LLVMValueRef LLVMConstStruct(LLVMValueRef *ConstantVals, unsigned Count,
|
||||
/**
|
||||
* Create a ConstantArray from values.
|
||||
*
|
||||
* @deprecated LLVMConstArray is deprecated in favor of the API accurate
|
||||
* LLVMConstArray2
|
||||
* @see llvm::ConstantArray::get()
|
||||
*/
|
||||
LLVMValueRef LLVMConstArray(LLVMTypeRef ElementTy,
|
||||
LLVMValueRef *ConstantVals, unsigned Length);
|
||||
|
||||
/**
|
||||
* Create a ConstantArray from values.
|
||||
*
|
||||
* @see llvm::ConstantArray::get()
|
||||
*/
|
||||
LLVMValueRef LLVMConstArray2(LLVMTypeRef ElementTy, LLVMValueRef *ConstantVals,
|
||||
uint64_t Length);
|
||||
|
||||
/**
|
||||
* Create a non-anonymous ConstantStruct from values.
|
||||
*
|
||||
@@ -2086,12 +2161,24 @@ LLVMValueRef LLVMConstNamedStruct(LLVMTypeRef StructTy,
|
||||
LLVMValueRef *ConstantVals,
|
||||
unsigned Count);
|
||||
|
||||
/**
|
||||
* Get element of a constant aggregate (struct, array or vector) at the
|
||||
* specified index. Returns null if the index is out of range, or it's not
|
||||
* possible to determine the element (e.g., because the constant is a
|
||||
* constant expression.)
|
||||
*
|
||||
* @see llvm::Constant::getAggregateElement()
|
||||
*/
|
||||
LLVMValueRef LLVMGetAggregateElement(LLVMValueRef C, unsigned Idx);
|
||||
|
||||
/**
|
||||
* Get an element at specified index as a constant.
|
||||
*
|
||||
* @see ConstantDataSequential::getElementAsConstant()
|
||||
*/
|
||||
LLVMValueRef LLVMGetElementAsConstant(LLVMValueRef C, unsigned idx);
|
||||
LLVM_ATTRIBUTE_C_DEPRECATED(
|
||||
LLVMValueRef LLVMGetElementAsConstant(LLVMValueRef C, unsigned idx),
|
||||
"Use LLVMGetAggregateElement instead");
|
||||
|
||||
/**
|
||||
* Create a ConstantVector from values.
|
||||
@@ -2119,28 +2206,16 @@ 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);
|
||||
@@ -2151,13 +2226,8 @@ LLVMValueRef LLVMConstFCmp(LLVMRealPredicate Predicate,
|
||||
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);
|
||||
@@ -2185,9 +2255,6 @@ LLVMValueRef LLVMConstPointerCast(LLVMValueRef ConstantVal,
|
||||
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,
|
||||
@@ -2196,11 +2263,6 @@ LLVMValueRef LLVMConstInsertElement(LLVMValueRef VectorConstant,
|
||||
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. */
|
||||
@@ -2261,6 +2323,8 @@ void LLVMSetUnnamedAddr(LLVMValueRef Global, LLVMBool HasUnnamedAddr);
|
||||
* @see llvm::AllocaInst::getAlignment()
|
||||
* @see llvm::LoadInst::getAlignment()
|
||||
* @see llvm::StoreInst::getAlignment()
|
||||
* @see llvm::AtomicRMWInst::setAlignment()
|
||||
* @see llvm::AtomicCmpXchgInst::setAlignment()
|
||||
* @see llvm::GlobalValue::getAlignment()
|
||||
*/
|
||||
unsigned LLVMGetAlignment(LLVMValueRef V);
|
||||
@@ -2270,6 +2334,8 @@ unsigned LLVMGetAlignment(LLVMValueRef V);
|
||||
* @see llvm::AllocaInst::setAlignment()
|
||||
* @see llvm::LoadInst::setAlignment()
|
||||
* @see llvm::StoreInst::setAlignment()
|
||||
* @see llvm::AtomicRMWInst::setAlignment()
|
||||
* @see llvm::AtomicCmpXchgInst::setAlignment()
|
||||
* @see llvm::GlobalValue::setAlignment()
|
||||
*/
|
||||
void LLVMSetAlignment(LLVMValueRef V, unsigned Bytes);
|
||||
@@ -2373,8 +2439,15 @@ void LLVMSetExternallyInitialized(LLVMValueRef GlobalVar, LLVMBool IsExtInit);
|
||||
*
|
||||
* @{
|
||||
*/
|
||||
LLVMValueRef LLVMAddAlias(LLVMModuleRef M, LLVMTypeRef Ty, LLVMValueRef Aliasee,
|
||||
const char *Name);
|
||||
|
||||
/**
|
||||
* Add a GlobalAlias with the given value type, address space and aliasee.
|
||||
*
|
||||
* @see llvm::GlobalAlias::create()
|
||||
*/
|
||||
LLVMValueRef LLVMAddAlias2(LLVMModuleRef M, LLVMTypeRef ValueTy,
|
||||
unsigned AddrSpace, LLVMValueRef Aliasee,
|
||||
const char *Name);
|
||||
|
||||
/**
|
||||
* Obtain a GlobalAlias value from a Module by its name.
|
||||
@@ -2510,6 +2583,12 @@ LLVMTypeRef LLVMIntrinsicGetType(LLVMContextRef Ctx, unsigned ID,
|
||||
*/
|
||||
const char *LLVMIntrinsicGetName(unsigned ID, size_t *NameLength);
|
||||
|
||||
/** Deprecated: Use LLVMIntrinsicCopyOverloadedName2 instead. */
|
||||
const char *LLVMIntrinsicCopyOverloadedName(unsigned ID,
|
||||
LLVMTypeRef *ParamTypes,
|
||||
size_t ParamCount,
|
||||
size_t *NameLength);
|
||||
|
||||
/**
|
||||
* Copies the name of an overloaded intrinsic identified by a given list of
|
||||
* parameter types.
|
||||
@@ -2517,12 +2596,14 @@ const char *LLVMIntrinsicGetName(unsigned ID, size_t *NameLength);
|
||||
* Unlike LLVMIntrinsicGetName, the caller is responsible for freeing the
|
||||
* returned string.
|
||||
*
|
||||
* This version also supports unnamed types.
|
||||
*
|
||||
* @see llvm::Intrinsic::getName()
|
||||
*/
|
||||
const char *LLVMIntrinsicCopyOverloadedName(unsigned ID,
|
||||
LLVMTypeRef *ParamTypes,
|
||||
size_t ParamCount,
|
||||
size_t *NameLength);
|
||||
const char *LLVMIntrinsicCopyOverloadedName2(LLVMModuleRef Mod, unsigned ID,
|
||||
LLVMTypeRef *ParamTypes,
|
||||
size_t ParamCount,
|
||||
size_t *NameLength);
|
||||
|
||||
/**
|
||||
* Obtain if the intrinsic identified by the given ID is overloaded.
|
||||
@@ -2860,6 +2941,14 @@ unsigned LLVMGetMDNodeNumOperands(LLVMValueRef V);
|
||||
*/
|
||||
void LLVMGetMDNodeOperands(LLVMValueRef V, LLVMValueRef *Dest);
|
||||
|
||||
/**
|
||||
* Replace an operand at a specific index in a llvm::MDNode value.
|
||||
*
|
||||
* @see llvm::MDNode::replaceOperandWith()
|
||||
*/
|
||||
void LLVMReplaceMDNodeOperandWith(LLVMValueRef V, unsigned Index,
|
||||
LLVMMetadataRef Replacement);
|
||||
|
||||
/** Deprecated: Use LLVMMDStringInContext2 instead. */
|
||||
LLVMValueRef LLVMMDStringInContext(LLVMContextRef C, const char *Str,
|
||||
unsigned SLen);
|
||||
@@ -3167,7 +3256,7 @@ LLVMValueRef LLVMGetNextInstruction(LLVMValueRef Inst);
|
||||
LLVMValueRef LLVMGetPreviousInstruction(LLVMValueRef Inst);
|
||||
|
||||
/**
|
||||
* Remove and delete an instruction.
|
||||
* Remove an instruction.
|
||||
*
|
||||
* The instruction specified is removed from its containing building
|
||||
* block but is kept alive.
|
||||
@@ -3186,6 +3275,16 @@ void LLVMInstructionRemoveFromParent(LLVMValueRef Inst);
|
||||
*/
|
||||
void LLVMInstructionEraseFromParent(LLVMValueRef Inst);
|
||||
|
||||
/**
|
||||
* Delete an instruction.
|
||||
*
|
||||
* The instruction specified is deleted. It must have previously been
|
||||
* removed from its containing building block.
|
||||
*
|
||||
* @see llvm::Value::deleteValue()
|
||||
*/
|
||||
void LLVMDeleteInstruction(LLVMValueRef Inst);
|
||||
|
||||
/**
|
||||
* Obtain the code opcode for an individual instruction.
|
||||
*
|
||||
@@ -3275,7 +3374,7 @@ void LLVMSetInstructionCallConv(LLVMValueRef Instr, unsigned CC);
|
||||
*/
|
||||
unsigned LLVMGetInstructionCallConv(LLVMValueRef Instr);
|
||||
|
||||
void LLVMSetInstrParamAlignment(LLVMValueRef Instr, unsigned index,
|
||||
void LLVMSetInstrParamAlignment(LLVMValueRef Instr, LLVMAttributeIndex Idx,
|
||||
unsigned Align);
|
||||
|
||||
void LLVMAddCallSiteAttribute(LLVMValueRef C, LLVMAttributeIndex Idx,
|
||||
@@ -3474,7 +3573,7 @@ LLVMTypeRef LLVMGetAllocatedType(LLVMValueRef Alloca);
|
||||
*/
|
||||
|
||||
/**
|
||||
* Check whether the given GEP instruction is inbounds.
|
||||
* Check whether the given GEP operator is inbounds.
|
||||
*/
|
||||
LLVMBool LLVMIsInBounds(LLVMValueRef GEP);
|
||||
|
||||
@@ -3483,6 +3582,11 @@ LLVMBool LLVMIsInBounds(LLVMValueRef GEP);
|
||||
*/
|
||||
void LLVMSetIsInBounds(LLVMValueRef GEP, LLVMBool InBounds);
|
||||
|
||||
/**
|
||||
* Get the source element type of the given GEP operator.
|
||||
*/
|
||||
LLVMTypeRef LLVMGetGEPSourceElementType(LLVMValueRef GEP);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
@@ -3533,7 +3637,7 @@ LLVMBasicBlockRef LLVMGetIncomingBlock(LLVMValueRef PhiNode, unsigned Index);
|
||||
|
||||
/**
|
||||
* Obtain the number of indices.
|
||||
* NB: This also works on GEP.
|
||||
* NB: This also works on GEP operators.
|
||||
*/
|
||||
unsigned LLVMGetNumIndices(LLVMValueRef Inst);
|
||||
|
||||
@@ -3599,10 +3703,20 @@ void LLVMSetCurrentDebugLocation2(LLVMBuilderRef Builder, LLVMMetadataRef Loc);
|
||||
* current debug location for the given builder. If the builder has no current
|
||||
* debug location, this function is a no-op.
|
||||
*
|
||||
* @deprecated LLVMSetInstDebugLocation is deprecated in favor of the more general
|
||||
* LLVMAddMetadataToInst.
|
||||
*
|
||||
* @see llvm::IRBuilder::SetInstDebugLocation()
|
||||
*/
|
||||
void LLVMSetInstDebugLocation(LLVMBuilderRef Builder, LLVMValueRef Inst);
|
||||
|
||||
/**
|
||||
* Adds the metadata registered with the given builder to the given instruction.
|
||||
*
|
||||
* @see llvm::IRBuilder::AddMetadataToInst()
|
||||
*/
|
||||
void LLVMAddMetadataToInst(LLVMBuilderRef Builder, LLVMValueRef Inst);
|
||||
|
||||
/**
|
||||
* Get the dafult floating-point math metadata for a given builder.
|
||||
*
|
||||
@@ -3643,12 +3757,6 @@ 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,
|
||||
@@ -3805,6 +3913,13 @@ LLVMValueRef LLVMBuildNUWNeg(LLVMBuilderRef B, LLVMValueRef V,
|
||||
LLVMValueRef LLVMBuildFNeg(LLVMBuilderRef, LLVMValueRef V, const char *Name);
|
||||
LLVMValueRef LLVMBuildNot(LLVMBuilderRef, LLVMValueRef V, const char *Name);
|
||||
|
||||
LLVMBool LLVMGetNUW(LLVMValueRef ArithInst);
|
||||
void LLVMSetNUW(LLVMValueRef ArithInst, LLVMBool HasNUW);
|
||||
LLVMBool LLVMGetNSW(LLVMValueRef ArithInst);
|
||||
void LLVMSetNSW(LLVMValueRef ArithInst, LLVMBool HasNSW);
|
||||
LLVMBool LLVMGetExact(LLVMValueRef DivOrShrInst);
|
||||
void LLVMSetExact(LLVMValueRef DivOrShrInst, LLVMBool IsExact);
|
||||
|
||||
/* Memory */
|
||||
LLVMValueRef LLVMBuildMalloc(LLVMBuilderRef, LLVMTypeRef Ty, const char *Name);
|
||||
LLVMValueRef LLVMBuildArrayMalloc(LLVMBuilderRef, LLVMTypeRef Ty,
|
||||
@@ -3842,23 +3957,9 @@ 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);
|
||||
@@ -3928,6 +4029,9 @@ LLVMValueRef LLVMBuildFPCast(LLVMBuilderRef, LLVMValueRef Val,
|
||||
LLVMValueRef LLVMBuildIntCast(LLVMBuilderRef, LLVMValueRef Val, /*Signed cast!*/
|
||||
LLVMTypeRef DestTy, const char *Name);
|
||||
|
||||
LLVMOpcode LLVMGetCastOpcode(LLVMValueRef Src, LLVMBool SrcIsSigned,
|
||||
LLVMTypeRef DestTy, LLVMBool DestIsSigned);
|
||||
|
||||
/* Comparisons */
|
||||
LLVMValueRef LLVMBuildICmp(LLVMBuilderRef, LLVMIntPredicate Op,
|
||||
LLVMValueRef LHS, LLVMValueRef RHS,
|
||||
@@ -3938,11 +4042,6 @@ LLVMValueRef LLVMBuildFCmp(LLVMBuilderRef, LLVMRealPredicate Op,
|
||||
|
||||
/* 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);
|
||||
@@ -3971,8 +4070,9 @@ 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 LLVMBuildPtrDiff2(LLVMBuilderRef, LLVMTypeRef ElemTy,
|
||||
LLVMValueRef LHS, LLVMValueRef RHS,
|
||||
const char *Name);
|
||||
LLVMValueRef LLVMBuildFence(LLVMBuilderRef B, LLVMAtomicOrdering ordering,
|
||||
LLVMBool singleThread, const char *Name);
|
||||
LLVMValueRef LLVMBuildAtomicRMW(LLVMBuilderRef B, LLVMAtomicRMWBinOp op,
|
||||
@@ -4000,8 +4100,8 @@ int LLVMGetUndefMaskElem(void);
|
||||
* Get the mask value at position Elt in the mask of a ShuffleVector
|
||||
* instruction.
|
||||
*
|
||||
* \Returns the result of \c LLVMGetUndefMaskElem() if the mask value is undef
|
||||
* at that position.
|
||||
* \Returns the result of \c LLVMGetUndefMaskElem() if the mask value is
|
||||
* poison at that position.
|
||||
*/
|
||||
int LLVMGetMaskValue(LLVMValueRef ShuffleVectorInst, unsigned Elt);
|
||||
|
||||
@@ -4063,26 +4163,13 @@ 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
|
||||
* @ingroup LLVMCCore
|
||||
*
|
||||
* @{
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user