diff --git a/.github/workflows/goallc.yml b/.github/workflows/goallc.yml index 3da7a9285a8b46..1a400550e664cc 100644 --- a/.github/workflows/goallc.yml +++ b/.github/workflows/goallc.yml @@ -15,8 +15,8 @@ concurrency: cancel-in-progress: true env: - LLVM_RELEASE: goallc-llvm23.1.0-v6 - LLVM_REVISION: 55ecc0838b8f49e04d9c68874cf83d6f7153e2a3 + LLVM_RELEASE: goallc-llvm23.1.0-v8 + LLVM_REVISION: 445acfc09213ef8f70906a10f32ba96c1d0813c7 jobs: linux: @@ -32,7 +32,7 @@ jobs: - arch: arm64 runner: ubuntu-22.04-arm env: - LLVM_ARCHIVE: goallc-llvm23.1.0-v6-linux-${{ matrix.arch }}.tar.zst + LLVM_ARCHIVE: goallc-llvm23.1.0-v8-linux-${{ matrix.arch }}.tar.zst LLVM_ROOT: ${{ github.workspace }}/.goallc/llvm CCACHE_DIR: ${{ github.workspace }}/.ccache CCACHE_MAXSIZE: 5G diff --git a/src/cmd/llvmplugin/testdata/check-aarch64-frame.py b/src/cmd/llvmplugin/testdata/check-aarch64-frame.py index b544e8da00f17e..f6ab183999a95d 100644 --- a/src/cmd/llvmplugin/testdata/check-aarch64-frame.py +++ b/src/cmd/llvmplugin/testdata/check-aarch64-frame.py @@ -130,9 +130,6 @@ def main(): lambda item: item["kind"] == "stack_map_index" and item["index"] == 1, "PCDATA_StackMapIndex tables", ) - values = [item["value"] for item in stack_index["ranges"]] - if values != [-1, 1, 0]: - fail(f"unexpected stack-map range values: {values}") queries = metadata["stack_map_queries"] if len(queries) != 2: fail(f"unexpected call queries: {queries}") @@ -171,15 +168,17 @@ def main(): (item["start"], item["end"], item["value"]) for item in stack_index["ranges"] ] - want_ranges = [ - (0, indirect_query["call_offset"], -1), - ( - indirect_query["call_offset"], - morestack_query["call_offset"], - 1, - ), - (morestack_query["call_offset"], function["size"], 0), - ] + ordered_queries = sorted(queries, key=lambda item: item["call_offset"]) + want_ranges = [(0, ordered_queries[0]["call_offset"], -1)] + for index, query in enumerate(ordered_queries): + end = ( + ordered_queries[index + 1]["call_offset"] + if index + 1 < len(ordered_queries) + else function["size"] + ) + want_ranges.append( + (query["call_offset"], end, query["stack_map_index"]) + ) if actual_ranges != want_ranges: fail( f"unexpected exact stack-map ranges: {actual_ranges}, " diff --git a/test/llvm_tests.json b/test/llvm_tests.json index e53f6a70084645..682326338e250f 100644 --- a/test/llvm_tests.json +++ b/test/llvm_tests.json @@ -464,7 +464,7 @@ "typeparam/smallest.go": "generic ordered minimum over slices", "typeparam/typeswitch4.go": "generic type switches over interfaces", "235.go": "upstream regression repeatedly qualified through LLVM compile, GoObj link, and execution", - "abi/method_wrapper.go": "aggregate method-wrapper results repeatedly pass LLVM O2 compile, GoObj link, and execution on Darwin/arm64; Linux/amd64 remains explicitly overridden gray", + "abi/method_wrapper.go": "aggregate method-wrapper results repeatedly pass LLVM O2 compile, GoObj link, and execution on both CI architectures", "armimm.go": "upstream regression repeatedly qualified through LLVM compile, GoObj link, and execution", "atomicload.go": "upstream regression repeatedly qualified through LLVM compile, GoObj link, and execution", "bigmap.go": "upstream regression repeatedly qualified through LLVM compile, GoObj link, and execution", @@ -1167,10 +1167,11 @@ "fixedbugs/issue19658.go": "closure and interface regression repeatedly passes LLVM O2 compile, GoObj link, and execution on both CI architectures", "fixedbugs/issue26411.go": "runtime regression repeatedly passes LLVM O2 compile, GoObj link, and execution on both CI architectures", "fixedbugs/issue28688.go": "soft-float copy regression repeatedly passes LLVM O2 compile, GoObj link, and execution on both CI architectures", - "fixedbugs/issue78081.go": "concurrent GC and stack-shrink regression repeatedly passes LLVM O2 compile, GoObj link, and execution on Darwin/arm64; Linux/amd64 remains explicitly overridden gray", + "fixedbugs/issue78081.go": "concurrent GC and stack-shrink regression repeatedly passes LLVM O2 compile, GoObj link, and execution on both CI architectures", "zerodivide.go": "defer/recover execution repeatedly qualified through LLVM O2 compile, link, and execution" }, "graylist": { + "devirtualization_nil_panics.go": "panic line checks require LLVM pcfile and pcline emission from the pending Go #117 and LLVM #62 changes", "fixedbugs/issue73916.go": "recover needs frontend pcinline metadata to count the inlined deferred function as a logical frame", "fixedbugs/issue73916b.go": "recover needs frontend pcinline metadata to count nested inlined logical frames", "fixedbugs/issue73917.go": "recover needs frontend pcinline metadata through an inlined value-method wrapper", @@ -1194,12 +1195,9 @@ }, "platform_graylist": { "linux/amd64": { - "abi/method_wrapper.go": "x86 releases the outgoing call frame before loading aggregate method results returned on the stack", "fixedbugs/issue23522.go": "x86 dynamic SSE4.1 floor selection lowers the guarded LLVM intrinsic to an unavailable external libcall", "fixedbugs/issue68322.go": "x86 dynamic SSE4.1 truncation lowers the guarded LLVM intrinsic to an unavailable external libcall", - "fixedbugs/issue78081.go": "Linux/amd64 concurrent GC and stack shrinking intermittently fail to unwind a GoObj frame completely", - "llvm_float_intrinsics.go": "x86 dynamic SSE4.1 and FMA intrinsics lower to unavailable external libc and libm calls", - "stackobj2.go": "Linux/amd64 stack growth scans an uninitialized pointer slot in main.makelist" + "llvm_float_intrinsics.go": "x86 dynamic SSE4.1 and FMA intrinsics lower to unavailable external libc and libm calls" } }, "platform_blacklist": {