Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 7 additions & 5 deletions deps/LLVMExtra/include/LLVMExtra.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,6 @@

LLVM_C_EXTERN_C_BEGIN

// XXX: without this, Clang.jl doesn't emit LLVMExtraInitializeNativeTarget.
// maybe LLVM_C_EXTERN_C_BEGIN somehow eats the function definition?
void dummy();

// Initialization functions
LLVMBool LLVMExtraInitializeNativeTarget(void);
LLVMBool LLVMExtraInitializeNativeAsmParser(void);
Expand Down Expand Up @@ -162,8 +158,10 @@ void LLVMReplaceMDNodeOperandWith(LLVMValueRef V, unsigned Index,
#endif

// Constant data
#if LLVM_VERSION_MAJOR < 21
LLVMValueRef LLVMConstDataArray(LLVMTypeRef ElementTy, const void *Data,
unsigned NumElements);
size_t SizeInBytes);
#endif

// Missing opaque pointer APIs
#if LLVM_VERSION_MAJOR < 17
Expand Down Expand Up @@ -258,5 +256,9 @@ LLVMErrorRef LLVMRunJuliaPassesOnFunction(LLVMValueRef F, const char *Passes,
// More DataLayout queries
unsigned LLVMGlobalsAddressSpace(LLVMTargetDataRef TD);

#if LLVM_VERSION_MAJOR >= 21
LLVMContextRef LLVMOrcThreadSafeContextGetContext(LLVMOrcThreadSafeContextRef TSCtx);
#endif

LLVM_C_EXTERN_C_END
#endif
25 changes: 21 additions & 4 deletions deps/LLVMExtra/lib/Core.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -569,12 +569,14 @@ void LLVMReplaceMDNodeOperandWith(LLVMValueRef V, unsigned Index,
// Constant data
//

#if LLVM_VERSION_MAJOR < 21
LLVMValueRef LLVMConstDataArray(LLVMTypeRef ElementTy, const void *Data,
unsigned NumElements) {
StringRef S((const char *)Data,
NumElements * unwrap(ElementTy)->getPrimitiveSizeInBits() / 8);
return wrap(ConstantDataArray::getRaw(S, NumElements, unwrap(ElementTy)));
size_t SizeInBytes) {
Type *Ty = unwrap(ElementTy);
size_t Len = SizeInBytes / (Ty->getPrimitiveSizeInBits() / 8);
return wrap(ConstantDataArray::getRaw(StringRef((const char*)Data, SizeInBytes), Len, Ty));
}
#endif


//
Expand Down Expand Up @@ -807,3 +809,18 @@ LLVMContextRef LLVMGetBuilderContext(LLVMBuilderRef Builder) {
unsigned LLVMGlobalsAddressSpace(LLVMTargetDataRef TD) {
return unwrap(TD)->getDefaultGlobalsAddressSpace();
}

#if LLVM_VERSION_MAJOR >= 21

DEFINE_SIMPLE_CONVERSION_FUNCTIONS(orc::ThreadSafeContext, LLVMOrcThreadSafeContextRef)

//
// Removed from LLVM and unsafe but it's only used to provide an unsafe API
// on the julia side anyway
//

LLVMContextRef LLVMOrcThreadSafeContextGetContext(LLVMOrcThreadSafeContextRef TSCtx) {
return wrap(unwrap(TSCtx)->withContextDo([] (LLVMContext *ctx) { return ctx; }));
}

#endif
30 changes: 25 additions & 5 deletions lib/15/libLLVM.jl
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using CEnum
using CEnum: CEnum, @cenum

const IS_LIBC_MUSL = occursin("musl", Base.MACHINE)

Expand Down Expand Up @@ -840,11 +840,11 @@ end
end

"""
##Ctag#230
##Ctag#277

Attribute index are either LLVMAttributeReturnIndex, LLVMAttributeFunctionIndex or a parameter number from 1 to N.
"""
@cenum var"##Ctag#230"::Int32 begin
@cenum var"##Ctag#277"::Int32 begin
LLVMAttributeReturnIndex = 0
LLVMAttributeFunctionIndex = -1
end
Expand Down Expand Up @@ -3350,6 +3350,14 @@ function LLVMGetAggregateElement(C, Idx)
ccall((:LLVMGetAggregateElement, libllvm), LLVMValueRef, (LLVMValueRef, Cuint), C, Idx)
end

"""
LLVMGetElementAsConstant(C, idx)

Get an element at specified index as a constant.

# See also
ConstantDataSequential::getElementAsConstant()
"""
function LLVMGetElementAsConstant(C, idx)
ccall((:LLVMGetElementAsConstant, libllvm), LLVMValueRef, (LLVMValueRef, Cuint), C, idx)
end
Expand Down Expand Up @@ -3886,6 +3894,18 @@ function LLVMSetExternallyInitialized(GlobalVar, IsExtInit)
ccall((:LLVMSetExternallyInitialized, libllvm), Cvoid, (LLVMValueRef, LLVMBool), GlobalVar, IsExtInit)
end

"""
LLVMAddAlias(M, Ty, Aliasee, Name)

` LLVMCoreValueConstantGlobalAlias Global Aliases`

This group contains function that operate on global alias values.

@{

# See also
llvm::GlobalAlias
"""
function LLVMAddAlias(M, Ty, Aliasee, Name)
ccall((:LLVMAddAlias, libllvm), LLVMValueRef, (LLVMModuleRef, LLVMTypeRef, LLVMValueRef, Cstring), M, Ty, Aliasee, Name)
end
Expand Down Expand Up @@ -6534,11 +6554,11 @@ The amount of debug information to emit.
end

"""
##Ctag#231
##Ctag#278

The kind of metadata nodes.
"""
@cenum var"##Ctag#231"::UInt32 begin
@cenum var"##Ctag#278"::UInt32 begin
LLVMMDStringMetadataKind = 0
LLVMConstantAsMetadataMetadataKind = 1
LLVMLocalAsMetadataMetadataKind = 2
Expand Down
2 changes: 1 addition & 1 deletion lib/15/libLLVM_extra.jl
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using CEnum
using CEnum: CEnum, @cenum

function LLVMExtraInitializeNativeTarget()
ccall((:LLVMExtraInitializeNativeTarget, libLLVMExtra), LLVMBool, ())
Expand Down
18 changes: 13 additions & 5 deletions lib/16/libLLVM.jl
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using CEnum
using CEnum: CEnum, @cenum

const IS_LIBC_MUSL = occursin("musl", Base.MACHINE)

Expand Down Expand Up @@ -843,11 +843,11 @@ end
end

"""
##Ctag#232
##Ctag#279

Attribute index are either LLVMAttributeReturnIndex, LLVMAttributeFunctionIndex or a parameter number from 1 to N.
"""
@cenum var"##Ctag#232"::Int32 begin
@cenum var"##Ctag#279"::Int32 begin
LLVMAttributeReturnIndex = 0
LLVMAttributeFunctionIndex = -1
end
Expand Down Expand Up @@ -3373,6 +3373,14 @@ function LLVMGetAggregateElement(C, Idx)
ccall((:LLVMGetAggregateElement, libllvm), LLVMValueRef, (LLVMValueRef, Cuint), C, Idx)
end

"""
LLVMGetElementAsConstant(C, idx)

Get an element at specified index as a constant.

# See also
ConstantDataSequential::getElementAsConstant()
"""
function LLVMGetElementAsConstant(C, idx)
ccall((:LLVMGetElementAsConstant, libllvm), LLVMValueRef, (LLVMValueRef, Cuint), C, idx)
end
Expand Down Expand Up @@ -6522,11 +6530,11 @@ The amount of debug information to emit.
end

"""
##Ctag#233
##Ctag#280

The kind of metadata nodes.
"""
@cenum var"##Ctag#233"::UInt32 begin
@cenum var"##Ctag#280"::UInt32 begin
LLVMMDStringMetadataKind = 0
LLVMConstantAsMetadataMetadataKind = 1
LLVMLocalAsMetadataMetadataKind = 2
Expand Down
2 changes: 1 addition & 1 deletion lib/16/libLLVM_extra.jl
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using CEnum
using CEnum: CEnum, @cenum

function LLVMExtraInitializeNativeTarget()
ccall((:LLVMExtraInitializeNativeTarget, libLLVMExtra), LLVMBool, ())
Expand Down
18 changes: 13 additions & 5 deletions lib/17/libLLVM.jl
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using CEnum
using CEnum: CEnum, @cenum

const IS_LIBC_MUSL = occursin("musl", Base.MACHINE)

Expand Down Expand Up @@ -841,11 +841,11 @@ end
end

"""
##Ctag#234
##Ctag#281

Attribute index are either LLVMAttributeReturnIndex, LLVMAttributeFunctionIndex or a parameter number from 1 to N.
"""
@cenum var"##Ctag#234"::Int32 begin
@cenum var"##Ctag#281"::Int32 begin
LLVMAttributeReturnIndex = 0
LLVMAttributeFunctionIndex = -1
end
Expand Down Expand Up @@ -3398,6 +3398,14 @@ function LLVMGetAggregateElement(C, Idx)
ccall((:LLVMGetAggregateElement, libllvm), LLVMValueRef, (LLVMValueRef, Cuint), C, Idx)
end

"""
LLVMGetElementAsConstant(C, idx)

Get an element at specified index as a constant.

# See also
ConstantDataSequential::getElementAsConstant()
"""
function LLVMGetElementAsConstant(C, idx)
ccall((:LLVMGetElementAsConstant, libllvm), LLVMValueRef, (LLVMValueRef, Cuint), C, idx)
end
Expand Down Expand Up @@ -6568,11 +6576,11 @@ The amount of debug information to emit.
end

"""
##Ctag#235
##Ctag#282

The kind of metadata nodes.
"""
@cenum var"##Ctag#235"::UInt32 begin
@cenum var"##Ctag#282"::UInt32 begin
LLVMMDStringMetadataKind = 0
LLVMConstantAsMetadataMetadataKind = 1
LLVMLocalAsMetadataMetadataKind = 2
Expand Down
2 changes: 1 addition & 1 deletion lib/17/libLLVM_extra.jl
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using CEnum
using CEnum: CEnum, @cenum

function LLVMExtraInitializeNativeTarget()
ccall((:LLVMExtraInitializeNativeTarget, libLLVMExtra), LLVMBool, ())
Expand Down
20 changes: 14 additions & 6 deletions lib/18/libLLVM.jl
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using CEnum
using CEnum: CEnum, @cenum

const IS_LIBC_MUSL = occursin("musl", Base.MACHINE)

Expand Down Expand Up @@ -848,11 +848,11 @@ end
end

"""
##Ctag#236
##Ctag#283

Attribute index are either LLVMAttributeReturnIndex, LLVMAttributeFunctionIndex or a parameter number from 1 to N.
"""
@cenum var"##Ctag#236"::Int32 begin
@cenum var"##Ctag#283"::Int32 begin
LLVMAttributeReturnIndex = 0
LLVMAttributeFunctionIndex = -1
end
Expand All @@ -876,7 +876,7 @@ end

const LLVMAttributeIndex = Cuint

@cenum var"##Ctag#237"::UInt32 begin
@cenum var"##Ctag#284"::UInt32 begin
LLVMFastMathAllowReassoc = 1
LLVMFastMathNoNaNs = 2
LLVMFastMathNoInfs = 4
Expand Down Expand Up @@ -3507,6 +3507,14 @@ function LLVMGetAggregateElement(C, Idx)
ccall((:LLVMGetAggregateElement, libllvm), LLVMValueRef, (LLVMValueRef, Cuint), C, Idx)
end

"""
LLVMGetElementAsConstant(C, idx)

Get an element at specified index as a constant.

# See also
ConstantDataSequential::getElementAsConstant()
"""
function LLVMGetElementAsConstant(C, idx)
ccall((:LLVMGetElementAsConstant, libllvm), LLVMValueRef, (LLVMValueRef, Cuint), C, idx)
end
Expand Down Expand Up @@ -6827,11 +6835,11 @@ The amount of debug information to emit.
end

"""
##Ctag#238
##Ctag#285

The kind of metadata nodes.
"""
@cenum var"##Ctag#238"::UInt32 begin
@cenum var"##Ctag#285"::UInt32 begin
LLVMMDStringMetadataKind = 0
LLVMConstantAsMetadataMetadataKind = 1
LLVMLocalAsMetadataMetadataKind = 2
Expand Down
2 changes: 1 addition & 1 deletion lib/18/libLLVM_extra.jl
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using CEnum
using CEnum: CEnum, @cenum

function LLVMExtraInitializeNativeTarget()
ccall((:LLVMExtraInitializeNativeTarget, libLLVMExtra), LLVMBool, ())
Expand Down
22 changes: 15 additions & 7 deletions lib/19/libLLVM.jl
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using CEnum
using CEnum: CEnum, @cenum

const IS_LIBC_MUSL = occursin("musl", Base.MACHINE)

Expand Down Expand Up @@ -855,11 +855,11 @@ end
end

"""
##Ctag#239
##Ctag#286

Attribute index are either LLVMAttributeReturnIndex, LLVMAttributeFunctionIndex or a parameter number from 1 to N.
"""
@cenum var"##Ctag#239"::Int32 begin
@cenum var"##Ctag#286"::Int32 begin
LLVMAttributeReturnIndex = 0
LLVMAttributeFunctionIndex = -1
end
Expand All @@ -883,7 +883,7 @@ CallInst::TailCallKind
LLVMTailCallKindNoTail = 3
end

@cenum var"##Ctag#240"::UInt32 begin
@cenum var"##Ctag#287"::UInt32 begin
LLVMFastMathAllowReassoc = 1
LLVMFastMathNoNaNs = 2
LLVMFastMathNoInfs = 4
Expand All @@ -902,7 +902,7 @@ See https://llvm.org/docs/LangRef.html#fast-math-flags
"""
const LLVMFastMathFlags = Cuint

@cenum var"##Ctag#241"::UInt32 begin
@cenum var"##Ctag#288"::UInt32 begin
LLVMGEPFlagInBounds = 1
LLVMGEPFlagNUSW = 2
LLVMGEPFlagNUW = 4
Expand Down Expand Up @@ -3706,6 +3706,14 @@ function LLVMGetAggregateElement(C, Idx)
ccall((:LLVMGetAggregateElement, libllvm), LLVMValueRef, (LLVMValueRef, Cuint), C, Idx)
end

"""
LLVMGetElementAsConstant(C, idx)

Get an element at specified index as a constant.

# See also
ConstantDataSequential::getElementAsConstant()
"""
function LLVMGetElementAsConstant(C, idx)
ccall((:LLVMGetElementAsConstant, libllvm), LLVMValueRef, (LLVMValueRef, Cuint), C, idx)
end
Expand Down Expand Up @@ -7226,11 +7234,11 @@ The amount of debug information to emit.
end

"""
##Ctag#242
##Ctag#289

The kind of metadata nodes.
"""
@cenum var"##Ctag#242"::UInt32 begin
@cenum var"##Ctag#289"::UInt32 begin
LLVMMDStringMetadataKind = 0
LLVMConstantAsMetadataMetadataKind = 1
LLVMLocalAsMetadataMetadataKind = 2
Expand Down
2 changes: 1 addition & 1 deletion lib/19/libLLVM_extra.jl
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using CEnum
using CEnum: CEnum, @cenum

function LLVMExtraInitializeNativeTarget()
ccall((:LLVMExtraInitializeNativeTarget, libLLVMExtra), LLVMBool, ())
Expand Down
Loading
Loading