diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 0f91d5528625..22df4061c113 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -64,6 +64,9 @@ jobs: - llvm_version: 13.0.0 llvm_url: https://github.com/llvm/llvm-project/releases/download/llvmorg-13.0.0/clang+llvm-13.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz base_image: ubuntu-20.04 + - llvm_version: 14.0.0 + llvm_url: https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.0/clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz + base_image: ubuntu-18.04 runs-on: ${{ matrix.base_image }} name: "Test LLVM ${{ matrix.llvm_version }} (${{ matrix.base_image }})" steps: diff --git a/src/llvm/ext/llvm-versions.txt b/src/llvm/ext/llvm-versions.txt index 06ce7214188b..405fc1147bde 100644 --- a/src/llvm/ext/llvm-versions.txt +++ b/src/llvm/ext/llvm-versions.txt @@ -1 +1 @@ -13.0 12.0 11.1 11.0 10.0 9.0 8.0 7.1 6.0 5.0 4.0 3.9 3.8 +14.0 13.0 12.0 11.1 11.0 10.0 9.0 8.0 7.1 6.0 5.0 4.0 3.9 3.8 diff --git a/src/llvm/ext/llvm_ext.cc b/src/llvm/ext/llvm_ext.cc index c6f5dd86bb10..18102ceb23b4 100644 --- a/src/llvm/ext/llvm_ext.cc +++ b/src/llvm/ext/llvm_ext.cc @@ -209,8 +209,8 @@ LLVMValueRef LLVMExtDIBuilderInsertDeclareAtEnd( } LLVMMetadataRef LLVMExtDIBuilderCreateExpression( - DIBuilderRef Dref, int64_t *Addr, size_t Length) { - return wrap(Dref->createExpression(ArrayRef(Addr, Length))); + DIBuilderRef Dref, uint64_t *Addr, size_t Length) { + return wrap(Dref->createExpression(ArrayRef(Addr, Length))); } LLVMMetadataRef LLVMExtDIBuilderCreateEnumerationType( @@ -587,8 +587,12 @@ LLVMBool LLVMExtCreateMCJITCompilerForModule( for (auto &F : *Mod) { auto Attrs = F.getAttributes(); StringRef Value = options.NoFramePointerElim ? "all" : "none"; - Attrs = Attrs.addAttribute(F.getContext(), AttributeList::FunctionIndex, - "frame-pointer", Value); + #if LLVM_VERSION_GE(14, 0) + Attrs = Attrs.addFnAttribute(F.getContext(), "frame-pointer", Value); + #else + Attrs = Attrs.addAttribute(F.getContext(), AttributeList::FunctionIndex, + "frame-pointer", Value); + #endif F.setAttributes(Attrs); } diff --git a/src/llvm/lib_llvm.cr b/src/llvm/lib_llvm.cr index d22e00b59fe2..5e5811d8ec2a 100644 --- a/src/llvm/lib_llvm.cr +++ b/src/llvm/lib_llvm.cr @@ -19,6 +19,7 @@ end {% begin %} lib LibLLVM + IS_140 = {{LibLLVM::VERSION.starts_with?("14.0")}} IS_130 = {{LibLLVM::VERSION.starts_with?("13.0")}} IS_120 = {{LibLLVM::VERSION.starts_with?("12.0")}} IS_111 = {{LibLLVM::VERSION.starts_with?("11.1")}} diff --git a/src/llvm/lib_llvm_ext.cr b/src/llvm/lib_llvm_ext.cr index 4f5aa4b39982..59dd50c02c13 100644 --- a/src/llvm/lib_llvm_ext.cr +++ b/src/llvm/lib_llvm_ext.cr @@ -65,7 +65,7 @@ lib LibLLVMExt block : LibLLVM::BasicBlockRef) : LibLLVM::ValueRef fun di_builder_create_expression = LLVMExtDIBuilderCreateExpression(builder : DIBuilder, - addr : Int64*, length : SizeT) : LibLLVM::MetadataRef + addr : UInt64*, length : SizeT) : LibLLVM::MetadataRef fun di_builder_get_or_create_array = LLVMExtDIBuilderGetOrCreateArray(builder : DIBuilder, data : LibLLVM::MetadataRef*, length : SizeT) : LibLLVM::MetadataRef fun di_builder_create_enumerator = LLVMExtDIBuilderCreateEnumerator(builder : DIBuilder, name : Char*, value : Int64) : LibLLVM::MetadataRef