From 63740cfada080d0f24ae3db2b185f32452a7e328 Mon Sep 17 00:00:00 2001 From: Ayke van Laethem Date: Tue, 16 Sep 2025 11:24:58 +0200 Subject: [PATCH] LLVM 21 support --- .github/workflows/test.yml | 9 ++++----- ir.go | 13 ------------- ir_test.go | 1 - llvm_config_darwin_llvm20.go | 2 +- llvm_config_darwin_llvm21.go | 15 +++++++++++++++ llvm_config_linux_llvm20.go | 2 +- llvm_config_linux_llvm21.go | 10 ++++++++++ 7 files changed, 31 insertions(+), 21 deletions(-) create mode 100644 llvm_config_darwin_llvm21.go create mode 100644 llvm_config_linux_llvm21.go diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index bed9b95..8946fd3 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -10,7 +10,7 @@ jobs: runs-on: macos-latest strategy: matrix: - llvm: [14, 15, 16, 17, 18, 19, 20] + llvm: [14, 15, 16, 17, 18, 19, 20, 21] steps: - name: Checkout uses: actions/checkout@v4 @@ -20,7 +20,6 @@ jobs: go-version: '1.22' # Optional step when a LLVM version is very new. - name: Update Homebrew - if: matrix.llvm == 20 run: brew update - name: Install LLVM run: HOMEBREW_NO_AUTO_UPDATE=1 brew install llvm@${{ matrix.llvm }} @@ -28,14 +27,14 @@ jobs: run: go test -v -tags=llvm${{ matrix.llvm }} - name: Test default LLVM - if: matrix.llvm == 20 + if: matrix.llvm == 21 run: go test -v test-linux: runs-on: ubuntu-22.04 strategy: matrix: - llvm: [14, 15, 16, 17, 18, 19, 20] + llvm: [14, 15, 16, 17, 18, 19, 20, 21] steps: - name: Checkout uses: actions/checkout@v4 @@ -53,6 +52,6 @@ jobs: run: go test -v -tags=llvm${{ matrix.llvm }} - name: Test default LLVM - if: matrix.llvm == 20 + if: matrix.llvm == 21 run: go test -v diff --git a/ir.go b/ir.go index 7e03ec6..efb0de1 100644 --- a/ir.go +++ b/ir.go @@ -76,7 +76,6 @@ type ( ComdatSelectionKind C.LLVMComdatSelectionKind IntPredicate C.LLVMIntPredicate FloatPredicate C.LLVMRealPredicate - LandingPadClause C.LLVMLandingPadClauseTy InlineAsmDialect C.LLVMInlineAsmDialect ) @@ -344,15 +343,6 @@ const ( FloatPredicateTrue FloatPredicate = C.LLVMRealPredicateTrue ) -//------------------------------------------------------------------------- -// llvm.LandingPadClause -//------------------------------------------------------------------------- - -const ( - LandingPadCatch LandingPadClause = C.LLVMLandingPadCatch - LandingPadFilter LandingPadClause = C.LLVMLandingPadFilter -) - //------------------------------------------------------------------------- // llvm.InlineAsmDialect //------------------------------------------------------------------------- @@ -928,9 +918,6 @@ func ConstNUWAdd(lhs, rhs Value) (v Value) { v.C = C.LLVMConstNUWAdd(lhs.C, rhs. func ConstSub(lhs, rhs Value) (v Value) { v.C = C.LLVMConstSub(lhs.C, rhs.C); return } func ConstNSWSub(lhs, rhs Value) (v Value) { v.C = C.LLVMConstNSWSub(lhs.C, rhs.C); return } func ConstNUWSub(lhs, rhs Value) (v Value) { v.C = C.LLVMConstNUWSub(lhs.C, rhs.C); return } -func ConstMul(lhs, rhs Value) (v Value) { v.C = C.LLVMConstMul(lhs.C, rhs.C); return } -func ConstNSWMul(lhs, rhs Value) (v Value) { v.C = C.LLVMConstNSWMul(lhs.C, rhs.C); return } -func ConstNUWMul(lhs, rhs Value) (v Value) { v.C = C.LLVMConstNUWMul(lhs.C, rhs.C); return } func ConstXor(lhs, rhs Value) (v Value) { v.C = C.LLVMConstXor(lhs.C, rhs.C); return } func ConstGEP(t Type, v Value, indices []Value) (rv Value) { diff --git a/ir_test.go b/ir_test.go index 57b306f..a912aec 100644 --- a/ir_test.go +++ b/ir_test.go @@ -62,7 +62,6 @@ func TestAttributes(t *testing.T) { "nest", "noalias", "nobuiltin", - "nocapture", "noduplicate", "noimplicitfloat", "noinline", diff --git a/llvm_config_darwin_llvm20.go b/llvm_config_darwin_llvm20.go index 22d2826..880e0d0 100644 --- a/llvm_config_darwin_llvm20.go +++ b/llvm_config_darwin_llvm20.go @@ -1,4 +1,4 @@ -//go:build !byollvm && darwin && !llvm14 && !llvm15 && !llvm16 && !llvm17 && !llvm18 && !llvm19 +//go:build !byollvm && darwin && llvm20 package llvm diff --git a/llvm_config_darwin_llvm21.go b/llvm_config_darwin_llvm21.go new file mode 100644 index 0000000..1bc7c3c --- /dev/null +++ b/llvm_config_darwin_llvm21.go @@ -0,0 +1,15 @@ +//go:build !byollvm && darwin && !llvm14 && !llvm15 && !llvm16 && !llvm17 && !llvm18 && !llvm19 && !llvm20 + +package llvm + +// Automatically generated by `make config BUILDDIR=`, do not edit. + +// #cgo amd64 CPPFLAGS: -I/usr/local/opt/llvm@21/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS +// #cgo amd64 CXXFLAGS: -std=c++17 +// #cgo amd64 LDFLAGS: -L/usr/local/opt/llvm@21/lib -Wl,-search_paths_first -Wl,-headerpad_max_install_names -lLLVM -lz -lm +// #cgo arm64 CPPFLAGS: -I/opt/homebrew/opt/llvm@21/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS +// #cgo arm64 CXXFLAGS: -std=c++17 +// #cgo arm64 LDFLAGS: -L/opt/homebrew/opt/llvm@21/lib -Wl,-search_paths_first -Wl,-headerpad_max_install_names -lLLVM -lz -lm +import "C" + +type run_build_sh int diff --git a/llvm_config_linux_llvm20.go b/llvm_config_linux_llvm20.go index a610933..90c8b9b 100644 --- a/llvm_config_linux_llvm20.go +++ b/llvm_config_linux_llvm20.go @@ -1,4 +1,4 @@ -//go:build !byollvm && linux && !llvm14 && !llvm15 && !llvm16 && !llvm17 && !llvm18 && !llvm19 +//go:build !byollvm && linux && llvm20 package llvm diff --git a/llvm_config_linux_llvm21.go b/llvm_config_linux_llvm21.go new file mode 100644 index 0000000..00c0560 --- /dev/null +++ b/llvm_config_linux_llvm21.go @@ -0,0 +1,10 @@ +//go:build !byollvm && linux && !llvm14 && !llvm15 && !llvm16 && !llvm17 && !llvm18 && !llvm19 && !llvm20 + +package llvm + +// #cgo CPPFLAGS: -I/usr/include/llvm-21 -I/usr/include/llvm-c-21 -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS +// #cgo CXXFLAGS: -std=c++17 +// #cgo LDFLAGS: -L/usr/lib/llvm-21/lib -lLLVM-21 +import "C" + +type run_build_sh int