From cd433d8d15275e6a98925ff7fdca9693851facb0 Mon Sep 17 00:00:00 2001 From: ZhouGuangyuan Date: Thu, 13 Aug 2026 17:16:37 +0800 Subject: [PATCH 1/5] cmd/compile: encode LLVM ABI0 in function names Keep ABIInternal LLVM names unchanged and append the reserved suffix to every ABI0 declaration and definition. Remove goobj.symbol.name metadata now that the LLVM GoObj writer derives ABI identity from names. --- src/cmd/compile/internal/ssa/llvmdata.go | 11 ----------- src/cmd/compile/internal/ssa/llvmdebug.go | 3 --- src/cmd/compile/internal/ssa/ssa2llvm.go | 9 ++++++--- src/cmd/compile/internal/ssa/ssa2llvm_test.go | 15 +++++++++++++++ src/cmd/llvmplugin/testdata/aarch64-frame.ll | 2 +- test/codegen/_cgo_llvm_unsafe_args.go | 4 ++-- 6 files changed, 24 insertions(+), 20 deletions(-) diff --git a/src/cmd/compile/internal/ssa/llvmdata.go b/src/cmd/compile/internal/ssa/llvmdata.go index 855b41803d0f03..955e741ff88eba 100644 --- a/src/cmd/compile/internal/ssa/llvmdata.go +++ b/src/cmd/compile/internal/ssa/llvmdata.go @@ -86,15 +86,6 @@ func attachGoObjSymbolRef(value llvm.Value, s *obj.LSym) { })) } -func setGoObjABI0SymbolNameMetadata(value llvm.Value, name string, cc llvm.CallConv) { - if cc != goABI0CallConv { - return - } - value.SetGlobalMetadata(GlobalCtxt.MDKindID(goObjSymbolNameMD), GlobalCtxt.MDNode([]llvm.Metadata{ - GlobalCtxt.MDString(name), - })) -} - // attachGoObjABISymbolRef is for LLVM-generated runtime calls that do not // carry an SSA AuxCall. Use the compiler's ABI-aware symbol table so their // builtin/non-package classification stays identical to the native writer. @@ -472,13 +463,11 @@ func llvmExternalDataRef(s *obj.LSym, data map[*obj.LSym]bool) llvm.Value { storageName := llvmFunctionStorageName(s.Name, llvmCallConv(s.ABI())) if f := CurrentModule.NamedFunction(storageName); !f.IsNil() { attachGoObjSymbolRef(f, s) - setGoObjABI0SymbolNameMetadata(f, s.Name, llvmCallConv(s.ABI())) return f } f := llvm.AddFunction(CurrentModule, storageName, llvm.FunctionType(GlobalCtxt.VoidType(), nil, false)) f.SetFunctionCallConv(llvmCallConv(s.ABI())) attachGoObjSymbolRef(f, s) - setGoObjABI0SymbolNameMetadata(f, s.Name, llvmCallConv(s.ABI())) return f } if g := CurrentModule.NamedGlobal(s.Name); !g.IsNil() { diff --git a/src/cmd/compile/internal/ssa/llvmdebug.go b/src/cmd/compile/internal/ssa/llvmdebug.go index d6f27cd396dadf..de76a44f6178d9 100644 --- a/src/cmd/compile/internal/ssa/llvmdebug.go +++ b/src/cmd/compile/internal/ssa/llvmdebug.go @@ -137,9 +137,6 @@ func llvmDebugSubprogramValue(sym *obj.LSym, sp llvm.Metadata, abstractValues ma llvm.FunctionType(GlobalCtxt.VoidType(), nil, false)) value.SetFunctionCallConv(llvmCallConv(sym.ABI())) value.SetLinkage(llvm.WeakAnyLinkage) - value.SetGlobalMetadata(GlobalCtxt.MDKindID(goObjSymbolNameMD), GlobalCtxt.MDNode([]llvm.Metadata{ - GlobalCtxt.MDString(canonicalName), - })) value.SetSubprogram(sp) b := GlobalCtxt.NewBuilder() b.SetInsertPointAtEnd(GlobalCtxt.AddBasicBlock(value, "goobj.abstract")) diff --git a/src/cmd/compile/internal/ssa/ssa2llvm.go b/src/cmd/compile/internal/ssa/ssa2llvm.go index faff606b0789ec..ff6c67c2990f46 100644 --- a/src/cmd/compile/internal/ssa/ssa2llvm.go +++ b/src/cmd/compile/internal/ssa/ssa2llvm.go @@ -10,6 +10,7 @@ import ( "cmd/internal/src" "fmt" "internal/buildcfg" + "strings" "github.com/goallc/go-llvm" ) @@ -64,6 +65,7 @@ type llvmAddressedResult struct { // the standard Go linker can call directly. const goABIInternalCallConv llvm.CallConv = 22 const goABI0CallConv llvm.CallConv = 23 +const goABI0SymbolSuffix = "" const goResultsTupleAttr = "go_results_tuple" const goGCStrategy = "goallc" const goGCLeafFunctionAttr = "gc-leaf-function" @@ -76,7 +78,6 @@ const goDeferResultMD = "goallc.defer_result" const goOpenDeferBitsMD = "goallc.open_defer_bits" const goOpenDeferSlotsMD = "goallc.open_defer_slots" const goObjMarkerRelocMD = "goobj.marker_reloc" -const goObjSymbolNameMD = "goobj.symbol.name" const goObjSymbolIndexMD = "goobj.symbol.index" const llvmFramePointerAttr = "frame-pointer" const llvmFramePointerNonLeaf = "non-leaf" @@ -241,8 +242,11 @@ func configureLLVMCall(call llvm.Value, sig llvmFuncSignature) { } func llvmFunctionStorageName(name string, cc llvm.CallConv) string { + if strings.HasSuffix(name, goABI0SymbolSuffix) { + base.Fatalf("Go symbol name %q uses reserved LLVM ABI suffix", name) + } if cc == goABI0CallConv { - return name + ".goallc.abi0" + return name + goABI0SymbolSuffix } return name } @@ -272,7 +276,6 @@ func getOrInsertLLVMFunction(name string, sig llvmFuncSignature, cc llvm.CallCon replacement.SetName(storageName) fn = replacement } - setGoObjABI0SymbolNameMetadata(fn, name, cc) configureLLVMFunction(fn, sig, cc) return fn } diff --git a/src/cmd/compile/internal/ssa/ssa2llvm_test.go b/src/cmd/compile/internal/ssa/ssa2llvm_test.go index 89c6acdf1a065e..a25aeab2f93848 100644 --- a/src/cmd/compile/internal/ssa/ssa2llvm_test.go +++ b/src/cmd/compile/internal/ssa/ssa2llvm_test.go @@ -39,6 +39,21 @@ func TestLLVMCurrentGRegister(t *testing.T) { } } +func TestLLVMFunctionStorageName(t *testing.T) { + for _, test := range []struct { + name string + cc llvm.CallConv + want string + }{ + {"runtime.morestack", goABI0CallConv, "runtime.morestack"}, + {"runtime.morestack", goABIInternalCallConv, "runtime.morestack"}, + } { + if got := llvmFunctionStorageName(test.name, test.cc); got != test.want { + t.Errorf("llvmFunctionStorageName(%q, %d) = %q, want %q", test.name, test.cc, got, test.want) + } + } +} + func TestLLVMAMD64MapPackedByteLowering(t *testing.T) { oldTypes := type2lTypes oldModule := CurrentModule diff --git a/src/cmd/llvmplugin/testdata/aarch64-frame.ll b/src/cmd/llvmplugin/testdata/aarch64-frame.ll index 4f394c54b23fae..7e95610d3ff4b0 100644 --- a/src/cmd/llvmplugin/testdata/aarch64-frame.ll +++ b/src/cmd/llvmplugin/testdata/aarch64-frame.ll @@ -97,7 +97,7 @@ entry: ret ptr %result } -define goabi0 ptr @aarch64_abi0_pointer_result(ptr %pointer) #0 gc "goallc" { +define goabi0 ptr @"aarch64_abi0_pointer_result"(ptr %pointer) #0 gc "goallc" { entry: %buf = alloca [8192 x i8], align 16 %slot = getelementptr inbounds [8192 x i8], ptr %buf, i64 0, i64 8191 diff --git a/test/codegen/_cgo_llvm_unsafe_args.go b/test/codegen/_cgo_llvm_unsafe_args.go index 902ed5053f777e..b3889b0bdf39b1 100644 --- a/test/codegen/_cgo_llvm_unsafe_args.go +++ b/test/codegen/_cgo_llvm_unsafe_args.go @@ -9,7 +9,7 @@ package codegen //go:noescape func llvmCgoUnsafeSink(*uintptr) -// LLVM-LABEL: define goabi0 i64 @codegen.llvmCgoUnsafeFrame.goallc.abi0( +// LLVM-LABEL: define goabi0 i64 @"codegen.llvmCgoUnsafeFrame"( // LLVM-SAME: i64 %p) #[[NOINLINE:[0-9]+]] gc "goallc" // LLVM-NOT: alloca // LLVM: [[FRAME:%.*]] = {{.*}}call ptr @llvm.go.abi0.frame() @@ -20,7 +20,7 @@ func llvmCgoUnsafeSink(*uintptr) // LLVM: {{.*}}call goabiinternal void @codegen.llvmCgoUnsafeSink(ptr{{.*}} [[FRAME]]) // LLVM: {{%.*}} = load i64, ptr [[RESULT]] // LLVM: attributes #[[NOINLINE]] = { {{.*}}noinline -// LLVM-OPT-LABEL: define goabi0 i64 @codegen.llvmCgoUnsafeFrame.goallc.abi0( +// LLVM-OPT-LABEL: define goabi0 i64 @"codegen.llvmCgoUnsafeFrame"( // LLVM-OPT-SAME: i64 %p) {{.*}}#[[OPT_NOINLINE:[0-9]+]] gc "goallc" // LLVM-OPT-NOT: alloca // LLVM-OPT: [[OPT_FRAME:%.*]] = {{.*}}call ptr @llvm.go.abi0.frame() From 2a340947bd2c2fb8b3443a8943c268bec836c77f Mon Sep 17 00:00:00 2001 From: ZhouGuangyuan Date: Fri, 14 Aug 2026 00:07:40 +0800 Subject: [PATCH 2/5] ci: update pinned GoALLC LLVM payload --- .github/workflows/goallc.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/goallc.yml b/.github/workflows/goallc.yml index 3391988dd7de86..ca4fb197ea913b 100644 --- a/.github/workflows/goallc.yml +++ b/.github/workflows/goallc.yml @@ -25,8 +25,8 @@ concurrency: cancel-in-progress: true env: - PINNED_LLVM_RELEASE: goallc-llvm23.1.0-20260812T002702Z - PINNED_LLVM_REVISION: d9a0149bdda5b9fb1f63bf5c8cd2dbe71d7bf523 + PINNED_LLVM_RELEASE: goallc-llvm23.1.0-20260813T151301Z + PINNED_LLVM_REVISION: 91a76fdf60e9de5a8147a3d4ce2d4b47d4eff27f jobs: llvm-payload: From 207442d344772d1f57987dae108046239869e4c5 Mon Sep 17 00:00:00 2001 From: ZhouGuangyuan Date: Fri, 14 Aug 2026 00:15:58 +0800 Subject: [PATCH 3/5] cmd/llvmplugin: update fixtures for pinned LLVM --- src/cmd/llvmplugin/testdata/aarch64-frame.ll | 3 ++- .../llvmplugin/testdata/aggregate-call-result-goobj.ll | 7 +++---- src/cmd/llvmplugin/testdata/conditional-relocation.ll | 7 +++---- src/cmd/llvmplugin/testdata/debug-inline.ll | 10 +++++----- src/cmd/llvmplugin/testdata/multiple-calls.ll | 7 +++---- 5 files changed, 16 insertions(+), 18 deletions(-) diff --git a/src/cmd/llvmplugin/testdata/aarch64-frame.ll b/src/cmd/llvmplugin/testdata/aarch64-frame.ll index 7e95610d3ff4b0..a404413d0220af 100644 --- a/src/cmd/llvmplugin/testdata/aarch64-frame.ll +++ b/src/cmd/llvmplugin/testdata/aarch64-frame.ll @@ -23,7 +23,8 @@ target triple = "aarch64-apple-darwin-goobj" ; OBJVIEW-NEXT: 1 ; FRAME-TEXT-LABEL: TEXT aarch64_pointer_and_code_live(SB) -; FRAME-TEXT: R_CALLARM64:runtime.morestack_noctxt{{.*}}PCDATA_StackMapIndex=0{{.*}}ArgsPointerMaps=01{{.*}}LocalsPointerMaps=00 +; FRAME-TEXT: PCDATA_StackMapIndex=0{{.*}}ArgsPointerMaps=01{{.*}}LocalsPointerMaps=00 +; FRAME-TEXT: R_CALLARM64:runtime.morestack_noctxt ; FRAME-TEXT-NEXT: {{.*}}stack-growth safepoint{{.*}}map[0]{{.*}}ArgsPointerMaps=01{{.*}}LocalsPointerMaps=00 ; FRAME-TEXT: R_CALLIND{{.*}}PCDATA_StackMapIndex=1{{.*}}ArgsPointerMaps=00{{.*}}LocalsPointerMaps=01 ; FRAME-TEXT-NEXT: {{.*}}ordinary safepoint{{.*}}map[1]{{.*}}ArgsPointerMaps=00{{.*}}LocalsPointerMaps=01 diff --git a/src/cmd/llvmplugin/testdata/aggregate-call-result-goobj.ll b/src/cmd/llvmplugin/testdata/aggregate-call-result-goobj.ll index 1eb42cffc7a0fe..2a67c90650c018 100644 --- a/src/cmd/llvmplugin/testdata/aggregate-call-result-goobj.ll +++ b/src/cmd/llvmplugin/testdata/aggregate-call-result-goobj.ll @@ -5,14 +5,14 @@ target triple = "x86_64-unknown-linux-goobj" ; OBJVIEW: "kind": "stack_map_index" ; OBJVIEW: "start": 0 ; OBJVIEW-NEXT: "end": [[#MAKE_START:]] -; OBJVIEW-NEXT: "value": -1 +; OBJVIEW-NEXT: "value": 0 ; OBJVIEW: "start": [[#MAKE_START]] ; OBJVIEW-NEXT: "end": [[#SAFEPOINT_START:]] ; OBJVIEW-NEXT: "value": 1 ; OBJVIEW: "start": [[#SAFEPOINT_START]] -; OBJVIEW-NEXT: "end": [[#MORESTACK_START:]] +; OBJVIEW-NEXT: "end": [[#ENTRY_DEPTH_START:]] ; OBJVIEW-NEXT: "value": 2 -; OBJVIEW: "start": [[#MORESTACK_START]] +; OBJVIEW: "start": [[#ENTRY_DEPTH_START]] ; OBJVIEW-NEXT: "end": [[#SIZE]] ; OBJVIEW-NEXT: "value": 0 ; OBJVIEW: "kind": "args_pointer_maps" @@ -48,7 +48,6 @@ target triple = "x86_64-unknown-linux-goobj" ; OBJVIEW: "stack_map_index": 2 ; OBJVIEW-NEXT: "relocation_type": "R_CALL" ; OBJVIEW: "sym_index": 2 -; OBJVIEW: "call_offset": [[#MORESTACK_START+1]] ; OBJVIEW: "stack_map_index": 0 ; OBJVIEW-NEXT: "relocation_type": "R_CALL" ; OBJVIEW: "sym_index": 3 diff --git a/src/cmd/llvmplugin/testdata/conditional-relocation.ll b/src/cmd/llvmplugin/testdata/conditional-relocation.ll index d74187db6bccc9..fc44f9070c77b9 100644 --- a/src/cmd/llvmplugin/testdata/conditional-relocation.ll +++ b/src/cmd/llvmplugin/testdata/conditional-relocation.ll @@ -9,11 +9,11 @@ target triple = "x86_64-unknown-linux-goobj" ; OBJVIEW: "kind": "stack_map_index" ; OBJVIEW: "start": 0 ; OBJVIEW-NEXT: "end": [[#SAFEPOINT_START:]] -; OBJVIEW-NEXT: "value": -1 +; OBJVIEW-NEXT: "value": 0 ; OBJVIEW: "start": [[#SAFEPOINT_START]] -; OBJVIEW-NEXT: "end": [[#MORESTACK_START:]] +; OBJVIEW-NEXT: "end": [[#ENTRY_DEPTH_START:]] ; OBJVIEW-NEXT: "value": 1 -; OBJVIEW: "start": [[#MORESTACK_START]] +; OBJVIEW: "start": [[#ENTRY_DEPTH_START]] ; OBJVIEW-NEXT: "end": [[#SIZE]] ; OBJVIEW-NEXT: "value": 0 ; OBJVIEW: "kind": "locals_pointer_maps" @@ -25,7 +25,6 @@ target triple = "x86_64-unknown-linux-goobj" ; OBJVIEW-NEXT: 0 ; OBJVIEW: "call_offset": [[#SAFEPOINT_START+1]] ; OBJVIEW: "stack_map_index": 1 -; OBJVIEW: "call_offset": [[#MORESTACK_START+1]] ; OBJVIEW: "stack_map_index": 0 declare goabiinternal void @callee() diff --git a/src/cmd/llvmplugin/testdata/debug-inline.ll b/src/cmd/llvmplugin/testdata/debug-inline.ll index 707f9f62ea5240..8e39644c5fa3e6 100644 --- a/src/cmd/llvmplugin/testdata/debug-inline.ll +++ b/src/cmd/llvmplugin/testdata/debug-inline.ll @@ -7,12 +7,12 @@ target triple = "x86_64-unknown-linux-goobj" ; DEBUG: "line": 10, ; DEBUG: "name": "main.mid", ; DEBUG-X86: "parent_pc": 6 -; DEBUG-AARCH64: "parent_pc": 0 +; DEBUG-AARCH64: "parent_pc": 32 ; DEBUG: "parent": 0, ; DEBUG: "line": 20, ; DEBUG: "name": "main.inner", ; DEBUG-X86: "parent_pc": 7 -; DEBUG-AARCH64: "parent_pc": 4 +; DEBUG-AARCH64: "parent_pc": 36 ; DEBUG-X86: "pc_quantum": 1, ; DEBUG-AARCH64: "pc_quantum": 4, ; DEBUG: "kind": "pcfile", @@ -47,7 +47,7 @@ target triple = "x86_64-unknown-linux-goobj" ; DEBUG: "line": 0, ; DEBUG: "name": "main.zeroCallee", ; DEBUG-X86: "parent_pc": 6 -; DEBUG-AARCH64: "parent_pc": 0 +; DEBUG-AARCH64: "parent_pc": 32 ; DEBUG-LABEL: "name": "main.shared", ; DEBUG: "start_line": 70, @@ -56,12 +56,12 @@ target triple = "x86_64-unknown-linux-goobj" ; DEBUG: "line": 71, ; DEBUG: "name": "main.sharedLeft", ; DEBUG-X86: "parent_pc": 6 -; DEBUG-AARCH64: "parent_pc": 0 +; DEBUG-AARCH64: "parent_pc": 32 ; DEBUG: "parent": -1, ; DEBUG: "line": 71, ; DEBUG: "name": "main.sharedRight", ; DEBUG-X86: "parent_pc": 14 -; DEBUG-AARCH64: "parent_pc": 12 +; DEBUG-AARCH64: "parent_pc": 44 @main.sink = global i64 0 diff --git a/src/cmd/llvmplugin/testdata/multiple-calls.ll b/src/cmd/llvmplugin/testdata/multiple-calls.ll index b45b643c8d1412..2e765199b38a50 100644 --- a/src/cmd/llvmplugin/testdata/multiple-calls.ll +++ b/src/cmd/llvmplugin/testdata/multiple-calls.ll @@ -9,14 +9,14 @@ target triple = "x86_64-unknown-linux-goobj" ; OBJVIEW: "kind": "stack_map_index" ; OBJVIEW: "start": 0 ; OBJVIEW-NEXT: "end": [[#FIRST_START:]] -; OBJVIEW-NEXT: "value": -1 +; OBJVIEW-NEXT: "value": 0 ; OBJVIEW: "start": [[#FIRST_START]] ; OBJVIEW-NEXT: "end": [[#SECOND_START:]] ; OBJVIEW-NEXT: "value": 1 ; OBJVIEW: "start": [[#SECOND_START]] -; OBJVIEW-NEXT: "end": [[#MORESTACK_START:]] +; OBJVIEW-NEXT: "end": [[#ENTRY_DEPTH_START:]] ; OBJVIEW-NEXT: "value": 2 -; OBJVIEW: "start": [[#MORESTACK_START]] +; OBJVIEW: "start": [[#ENTRY_DEPTH_START]] ; OBJVIEW-NEXT: "end": [[#SIZE]] ; OBJVIEW-NEXT: "value": 0 ; OBJVIEW: "kind": "locals_pointer_maps" @@ -34,7 +34,6 @@ target triple = "x86_64-unknown-linux-goobj" ; OBJVIEW: "stack_map_index": 1 ; OBJVIEW: "call_offset": [[#SECOND_START+1]] ; OBJVIEW: "stack_map_index": 2 -; OBJVIEW: "call_offset": [[#MORESTACK_START+1]] ; OBJVIEW: "stack_map_index": 0 declare goabiinternal void @first_callee() From d7f96590ee9000e1941df13e6f77376453538dc7 Mon Sep 17 00:00:00 2001 From: ZhouGuangyuan Date: Fri, 14 Aug 2026 00:41:26 +0800 Subject: [PATCH 4/5] test: update GoObj stack map expectations --- src/cmd/internal/testdir/llvm_abi_test.go | 10 ++++++---- src/cmd/internal/testdir/llvm_alloca_test.go | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/cmd/internal/testdir/llvm_abi_test.go b/src/cmd/internal/testdir/llvm_abi_test.go index 0bfbf05d58484a..e05d675c904fa9 100644 --- a/src/cmd/internal/testdir/llvm_abi_test.go +++ b/src/cmd/internal/testdir/llvm_abi_test.go @@ -438,24 +438,26 @@ func runLLVMAMD64ArgsPointerMapDifferentialTest(t *testing.T, gorootTestDir stri "-o", "-", goallcIR) machinePatterns := map[string][]string{ "p.initializedPointerResult": { - `STATEPOINT 5147424658422983495,[^\n]*\$rsp, 72,`, `STATEPOINT -[0-9]+,[^\n]*\$rsp, 0,`, }, "p.partiallyInitializedAggregateResult": { - `STATEPOINT 5147424658422983495,[^\n]*\$rsp, 80,[^\n]*\$rsp, 88,`, `STATEPOINT -[0-9]+,[^\n]*\$rsp, 0,[^\n]*\$rsp, 8,`, }, "p.liveScalarStackArgument": { - `STATEPOINT 5147424658422983495,[^\n]*\$rsp, 64,`, `STATEPOINT -[0-9]+,[^\n]*\$rsp, 72,`, }, "p.liveAggregateStackArgument": { - `STATEPOINT 5147424658422983495,[^\n]*\$rsp, 48,[^\n]*\$rsp, 64,`, `STATEPOINT -[0-9]+,[^\n]*\$rsp, 56,[^\n]*\$rsp, 72,`, }, } for name, patterns := range machinePatterns { body := llvmABIMachineFunction(t, machineIR, name) + if !regexp.MustCompile(`(?m)^.*CALL64pcrel32 &"?runtime\.morestack_noctxt"?[^\n]*$`).Match(body) { + t.Fatalf("%s PEI MIR has no raw ABI0 morestack call\n%s", name, body) + } + if regexp.MustCompile(`(?m)^.*STATEPOINT[^\n]*runtime\.morestack_noctxt[^\n]*$`).Match(body) { + t.Fatalf("%s PEI MIR still represents morestack as a statepoint\n%s", name, body) + } for _, pattern := range patterns { if !regexp.MustCompile(pattern).Match(body) { t.Fatalf("%s PEI MIR does not match %q\n%s", name, pattern, body) diff --git a/src/cmd/internal/testdir/llvm_alloca_test.go b/src/cmd/internal/testdir/llvm_alloca_test.go index 41c4da5be11ccb..de1bfc00692526 100644 --- a/src/cmd/internal/testdir/llvm_alloca_test.go +++ b/src/cmd/internal/testdir/llvm_alloca_test.go @@ -283,7 +283,7 @@ func runLLVMAllocaStatepointTest(t *testing.T, gorootTestDir string) { checks.goallcLocals, [][]int{nil, nil}, [][]int{nil, checks.goallcPointerBits}, - []int32{-1, 1, 0}, + []int32{0, 1, 0}, []int32{1, 1, 1, 1, 0}) goallcStackObjects := llvmABIStackObjects(t, symbol) From de11cce9f216e7b68ae32abf505f1f3f53de8368 Mon Sep 17 00:00:00 2001 From: ZhouGuangyuan Date: Fri, 14 Aug 2026 02:16:18 +0800 Subject: [PATCH 5/5] ci: update pinned GoALLC LLVM payload --- .github/workflows/goallc.yml | 4 +- src/cmd/internal/testdir/llvm_abi_test.go | 81 ++++++++++--------- src/cmd/internal/testdir/llvm_alloca_test.go | 10 ++- .../testdata/llvm_args_pointer_maps.mir | 6 +- src/cmd/llvmplugin/testdata/aarch64-frame.ll | 10 +-- .../testdata/aggregate-call-result-goobj.ll | 6 +- .../testdata/conditional-relocation.ll | 6 +- src/cmd/llvmplugin/testdata/debug-inline.ll | 20 ++--- src/cmd/llvmplugin/testdata/multiple-calls.ll | 6 +- 9 files changed, 80 insertions(+), 69 deletions(-) diff --git a/.github/workflows/goallc.yml b/.github/workflows/goallc.yml index ca4fb197ea913b..758cd26bbd6ffb 100644 --- a/.github/workflows/goallc.yml +++ b/.github/workflows/goallc.yml @@ -25,8 +25,8 @@ concurrency: cancel-in-progress: true env: - PINNED_LLVM_RELEASE: goallc-llvm23.1.0-20260813T151301Z - PINNED_LLVM_REVISION: 91a76fdf60e9de5a8147a3d4ce2d4b47d4eff27f + PINNED_LLVM_RELEASE: goallc-llvm23.1.0-20260813T171727Z + PINNED_LLVM_REVISION: 1d142acb4dab7262347b57ac341235913b210f40 jobs: llvm-payload: diff --git a/src/cmd/internal/testdir/llvm_abi_test.go b/src/cmd/internal/testdir/llvm_abi_test.go index e05d675c904fa9..328a7a21846798 100644 --- a/src/cmd/internal/testdir/llvm_abi_test.go +++ b/src/cmd/internal/testdir/llvm_abi_test.go @@ -230,7 +230,7 @@ func runLLVMAArch64ABIDifferentialTest(t *testing.T, gorootTestDir string) { nativeArgsMaps: [][]int{{0}, nil}, goallcArgsMaps: [][]int{{0}, nil, nil}, nativeStackMaps: []int32{-1, 0, 1, -1}, - goallcStackMaps: []int32{-1, 1, 0, 2}, + goallcStackMaps: []int32{-1, 1, -1, 2}, }, { name: "mixedABI", args: 152, pointerBits: []int{2, 4, 18}, @@ -239,106 +239,106 @@ func runLLVMAArch64ABIDifferentialTest(t *testing.T, gorootTestDir string) { // homes in LocalsPointerMaps through locals-only alloca records. goallcArgsMaps: [][]int{{2, 4, 18}, {2}}, nativeStackMaps: []int32{-1, 0, -1}, - goallcStackMaps: []int32{-1, 1, 0}, - goallcQueryMaps: [][]int{{2}, {2}, {2}, {2}, {2, 4, 18}}, + goallcStackMaps: []int32{-1, 1, -1}, + goallcQueryMaps: [][]int{{2, 4, 18}, {2}, {2}, {2}, {2}}, }, { name: "liveScalarStackArgument", args: 136, pointerBits: []int{0}, nativeArgsMaps: [][]int{{0}, nil}, goallcArgsMaps: [][]int{{0}}, nativeStackMaps: []int32{-1, 0, -1}, - goallcStackMaps: []int32{-1, 0}, + goallcStackMaps: []int32{-1, 0, -1}, checkFullMaps: true, nativeLocals: 8, goallcLocals: 24, nativeLocalMaps: [][]int{nil, nil}, goallcLocalMaps: [][]int{nil}, nativeQueries: []int32{0, -1}, - goallcQueries: []int32{0, 0}, + goallcQueries: []int32{-1, 0}, }, { name: "livePointerSequenceStackArguments", args: 152, pointerBits: []int{0, 2}, nativeArgsMaps: [][]int{{0, 2}, nil}, goallcArgsMaps: [][]int{{0, 2}}, nativeStackMaps: []int32{-1, 0, -1}, - goallcStackMaps: []int32{-1, 0}, + goallcStackMaps: []int32{-1, 0, -1}, checkFullMaps: true, nativeLocals: 8, goallcLocals: 24, nativeLocalMaps: [][]int{nil, nil}, goallcLocalMaps: [][]int{nil}, nativeQueries: []int32{0, -1}, - goallcQueries: []int32{0, 0}, + goallcQueries: []int32{-1, 0}, }, { name: "livePointerAggregateStackArgument", args: 136, pointerBits: []int{0, 2}, nativeArgsMaps: [][]int{{0, 2}, nil}, goallcArgsMaps: [][]int{{0, 2}}, nativeStackMaps: []int32{-1, 0, -1}, - goallcStackMaps: []int32{-1, 0}, + goallcStackMaps: []int32{-1, 0, -1}, checkFullMaps: true, nativeLocals: 8, goallcLocals: 24, nativeLocalMaps: [][]int{nil, nil}, goallcLocalMaps: [][]int{nil}, nativeQueries: []int32{0, -1}, - goallcQueries: []int32{0, 0}, + goallcQueries: []int32{-1, 0}, }, { name: "growPointer", args: 16, pointerBits: []int{0}, nativeArgsMaps: [][]int{{0}, nil}, goallcArgsMaps: [][]int{{0}, nil}, nativeStackMaps: []int32{-1, 0, -1}, - goallcStackMaps: []int32{-1, 1, 0}, + goallcStackMaps: []int32{-1, 1, -1}, }, { name: "overflowResults", args: 48, pointerBits: []int{2, 3, 4, 5}, nativeArgsMaps: [][]int{{2, 3, 4, 5}, nil}, goallcArgsMaps: [][]int{{2, 3, 4, 5}, nil}, nativeStackMaps: []int32{-1, 0, -1}, - goallcStackMaps: []int32{-1, 1, 0}, + goallcStackMaps: []int32{-1, 1, -1}, }, { name: "initializedStackResult", args: 16, pointerBits: []int{1}, nativeArgsMaps: [][]int{{1}, nil}, goallcArgsMaps: [][]int{{1}, nil}, nativeStackMaps: []int32{-1, 0, -1}, - goallcStackMaps: []int32{-1, 1, 0}, + goallcStackMaps: []int32{-1, 1, -1}, }, { name: "stackAggregateResult", args: 40, pointerBits: []int{4}, nativeArgsMaps: [][]int{{4}, nil}, goallcArgsMaps: [][]int{{4}, nil}, nativeStackMaps: []int32{-1, 0, -1}, - goallcStackMaps: []int32{-1, 1, 0}, + goallcStackMaps: []int32{-1, 1, -1}, }, { name: "bothOverflow", args: 168, pointerBits: []int{2, 6, 20}, nativeArgsMaps: [][]int{{2, 6, 20}, nil}, goallcArgsMaps: [][]int{{2, 6, 20}, {2}, nil}, nativeStackMaps: []int32{-1, 0, 1, -1}, - goallcStackMaps: []int32{-1, 1, 0, 2}, + goallcStackMaps: []int32{-1, 1, -1, 2}, }, { name: "pointerAggregateBothOverflow", args: 152, pointerBits: []int{0, 2}, nativeArgsMaps: [][]int{{0, 2}, nil}, goallcArgsMaps: [][]int{{0, 2}}, nativeStackMaps: []int32{-1, 0, -1}, - goallcStackMaps: []int32{-1, 0}, + goallcStackMaps: []int32{-1, 0, -1}, checkFullMaps: true, nativeLocals: 8, goallcLocals: 136, nativeLocalMaps: [][]int{nil, nil}, goallcLocalMaps: [][]int{nil}, nativeQueries: []int32{0, -1}, - goallcQueries: []int32{0, 0}, + goallcQueries: []int32{-1, 0}, }, { name: "requireAggregate", args: 40, pointerBits: []int{4}, nativeArgsMaps: [][]int{{4}, nil}, goallcArgsMaps: [][]int{{4}, nil, nil}, nativeStackMaps: []int32{-1, 0, 1, -1}, - goallcStackMaps: []int32{-1, 1, 2, 0}, + goallcStackMaps: []int32{-1, 1, 2, -1, 2}, }, } for _, tc := range cases { @@ -503,30 +503,30 @@ func runLLVMAMD64ArgsPointerMapDifferentialTest(t *testing.T, gorootTestDir stri name: "initializedPointerResult", args: 72, entryBits: []int{8}, goallcLocals: 16, goallcArgs: [][]int{{8}, nil}, goallcMaps: [][]int{nil, {1}}, - nativePCData: []int32{-1, 0, -1}, goallcPCData: []int32{-1, 1, 0}, - nativeQueries: []int32{0, -1}, goallcQueries: []int32{1, 0}, + nativePCData: []int32{-1, 0, -1}, goallcPCData: []int32{-1, 1, -1}, + nativeQueries: []int32{0, -1}, goallcQueries: []int32{1, -1}, nativePCSP: []int32{0, 8, 0}, goallcPCSP: []int32{0, 8, 16, 8, 0}, }, { name: "partiallyInitializedAggregateResult", args: 88, entryBits: []int{9, 10}, goallcLocals: 24, goallcArgs: [][]int{{9, 10}, nil}, goallcMaps: [][]int{nil, {1, 2}}, - nativePCData: []int32{-1, 0, -1}, goallcPCData: []int32{-1, 1, 0}, - nativeQueries: []int32{0, 0, -1}, goallcQueries: []int32{1, 1, 0}, + nativePCData: []int32{-1, 0, -1}, goallcPCData: []int32{-1, 1, -1}, + nativeQueries: []int32{0, 0, -1}, goallcQueries: []int32{1, 1, -1}, nativePCSP: []int32{0, 8, 0}, goallcPCSP: []int32{0, 8, 24, 8, 0}, }, { name: "liveScalarStackArgument", args: 136, entryBits: []int{7}, goallcLocals: 8, goallcArgs: [][]int{{7}}, goallcMaps: [][]int{nil}, - nativePCData: []int32{-1, 0, -1}, goallcPCData: []int32{-1, 0}, - nativeQueries: []int32{0, -1}, goallcQueries: []int32{0, 0}, + nativePCData: []int32{-1, 0, -1}, goallcPCData: []int32{-1, 0, -1}, + nativeQueries: []int32{0, -1}, goallcQueries: []int32{0, -1}, nativePCSP: []int32{0, 8, 0}, goallcPCSP: []int32{0, 8, 0}, }, { name: "liveAggregateStackArgument", args: 136, entryBits: []int{5, 7}, goallcLocals: 8, goallcArgs: [][]int{{5, 7}}, goallcMaps: [][]int{nil}, - nativePCData: []int32{-1, 0, -1}, goallcPCData: []int32{-1, 0}, - nativeQueries: []int32{0, -1}, goallcQueries: []int32{0, 0}, + nativePCData: []int32{-1, 0, -1}, goallcPCData: []int32{-1, 0, -1}, + nativeQueries: []int32{0, -1}, goallcQueries: []int32{0, -1}, nativePCSP: []int32{0, 8, 0}, goallcPCSP: []int32{0, 8, 0}, }, } @@ -656,32 +656,32 @@ func runLLVMABIArgsPointerMapSourceTest(t *testing.T, gorootTestDir, llc, opt, p nativeLocals: 8, goallcLocals: 24, nativeArgs: [][]int{{1}, nil}, goallcArgs: [][]int{{1}, nil}, nativeMaps: [][]int{nil, nil}, goallcMaps: [][]int{nil, {1}}, - nativePCData: []int32{-1, 0, -1}, goallcPCData: []int32{-1, 1, 0}, - nativeQueries: []int32{0, -1}, goallcQueries: []int32{1, 0}, + nativePCData: []int32{-1, 0, -1}, goallcPCData: []int32{-1, 1, -1}, + nativeQueries: []int32{0, -1}, goallcQueries: []int32{-1, 1}, }, { name: "partiallyInitializedAggregateResult", args: 40, entryBits: []int{3, 4}, nativeLocals: 8, goallcLocals: 24, nativeArgs: [][]int{{3, 4}, nil}, goallcArgs: [][]int{{3, 4}, nil}, nativeMaps: [][]int{nil, nil}, goallcMaps: [][]int{nil, {0, 1}}, - nativePCData: []int32{-1, 0, -1}, goallcPCData: []int32{-1, 1, 0}, - nativeQueries: []int32{0, 0, -1}, goallcQueries: []int32{1, 1, 0}, + nativePCData: []int32{-1, 0, -1}, goallcPCData: []int32{-1, 1, -1}, + nativeQueries: []int32{0, 0, -1}, goallcQueries: []int32{-1, 1, 1}, }, { name: "liveScalarStackArgument", args: 136, entryBits: []int{0}, nativeLocals: 8, goallcLocals: 8, nativeArgs: [][]int{{0}, nil}, goallcArgs: [][]int{{0}}, nativeMaps: [][]int{nil, nil}, goallcMaps: [][]int{nil}, - nativePCData: []int32{-1, 0, -1}, goallcPCData: []int32{-1, 0}, - nativeQueries: []int32{0, -1}, goallcQueries: []int32{0, 0}, + nativePCData: []int32{-1, 0, -1}, goallcPCData: []int32{-1, 0, -1}, + nativeQueries: []int32{0, -1}, goallcQueries: []int32{-1, 0}, }, { name: "liveAggregateStackArgument", args: 136, entryBits: []int{0, 2}, nativeLocals: 8, goallcLocals: 8, nativeArgs: [][]int{{0, 2}, nil}, goallcArgs: [][]int{{0, 2}}, nativeMaps: [][]int{nil, nil}, goallcMaps: [][]int{nil}, - nativePCData: []int32{-1, 0, -1}, goallcPCData: []int32{-1, 0}, - nativeQueries: []int32{0, -1}, goallcQueries: []int32{0, 0}, + nativePCData: []int32{-1, 0, -1}, goallcPCData: []int32{-1, 0, -1}, + nativeQueries: []int32{0, -1}, goallcQueries: []int32{-1, 0}, }, } for _, tc := range cases { @@ -725,7 +725,7 @@ func runLLVMABIArgsPointerMapMachineTest(t *testing.T, goroot, llc, plugin strin [][]int{nil, nil}; !reflect.DeepEqual(got, want) { t.Fatalf("machine LocalsPointerMaps=%v, want %v", got, want) } - if got, want := llvmABIStackMapRanges(symbol), []int32{-1, 0, 1}; !reflect.DeepEqual(got, want) { + if got, want := llvmABIStackMapRanges(symbol), []int32{-1, 1}; !reflect.DeepEqual(got, want) { t.Fatalf("machine PCDATA_StackMapIndex=%v, want %v", got, want) } var queryIndexes []int32 @@ -735,7 +735,7 @@ func runLLVMABIArgsPointerMapMachineTest(t *testing.T, goroot, llc, plugin strin } queryIndexes = append(queryIndexes, query.StackMapIndex) } - if got, want := queryIndexes, []int32{0, 1}; !reflect.DeepEqual(got, want) { + if got, want := queryIndexes, []int32{-1, 1}; !reflect.DeepEqual(got, want) { t.Fatalf("machine stack-map query indexes=%v, want %v", got, want) } t.Logf("machine ArgsPointerMaps=%v LocalsPointerMaps=%v PCDATA=%v", @@ -748,7 +748,7 @@ func checkLLVMABIStatepointTupleAttrs(t *testing.T, ir []byte, callees ...string t.Helper() for _, callee := range callees { call := regexp.MustCompile(`(?m)^.*@llvm\.experimental\.gc\.statepoint.*@main\.` + - regexp.QuoteMeta(callee) + `.*#([0-9]+)$`).FindSubmatch(ir) + regexp.QuoteMeta(callee) + `.*#([0-9]+)[^\n]*$`).FindSubmatch(ir) if len(call) != 2 { t.Fatalf("rewritten IR has no attributed statepoint call to main.%s", callee) } @@ -990,11 +990,16 @@ func checkLLVMABIStackMapQueryBitmaps(t *testing.T, backend string, symbol llvmA if query.DecodeError != "" { t.Fatalf("%s stack-map query failed: %s", backend, query.DecodeError) } - if query.StackMapIndex < 0 || int(query.StackMapIndex) >= len(args) { + index := query.StackMapIndex + if index == -1 { + // runtime.stkframe.getStackMap interprets the entry sentinel as map 0. + index = 0 + } + if index < 0 || int(index) >= len(args) { t.Fatalf("%s stack-map query index %d is outside %d ArgsPointerMaps", backend, query.StackMapIndex, len(args)) } - got = append(got, args[query.StackMapIndex]) + got = append(got, args[index]) } if !reflect.DeepEqual(got, want) { t.Fatalf("%s stack-map query bitmaps=%v, want %v", backend, got, want) diff --git a/src/cmd/internal/testdir/llvm_alloca_test.go b/src/cmd/internal/testdir/llvm_alloca_test.go index de1bfc00692526..04e7850acf708c 100644 --- a/src/cmd/internal/testdir/llvm_alloca_test.go +++ b/src/cmd/internal/testdir/llvm_alloca_test.go @@ -20,6 +20,8 @@ type llvmAllocaArchitectureChecks struct { restoredStorePattern string goallcLocals uint32 goallcPointerBits []int + goallcPCData []int32 + goallcQueries []int32 } var llvmAllocaChecks = map[string]llvmAllocaArchitectureChecks{ @@ -28,12 +30,16 @@ var llvmAllocaChecks = map[string]llvmAllocaArchitectureChecks{ restoredStorePattern: `(?m)^\s*(?:str|stp)\b`, goallcLocals: 88, goallcPointerBits: []int{5, 7, 8, 9}, + goallcPCData: []int32{-1, 1, -1}, + goallcQueries: []int32{-1, 1, 1, 1, 1}, }, "linux/amd64": { betweenCallsPattern: `(?s)\bcallq\s+p\.mutateLocal\n(.*?)\bcallq\s+p\.safepoint`, restoredStorePattern: `(?m)^\s*mov[a-z]*\s+[^,\n]+,\s*-[0-9]+\(%rbp\)`, goallcLocals: 88, goallcPointerBits: []int{5, 7, 8, 9}, + goallcPCData: []int32{-1, 1, -1}, + goallcQueries: []int32{1, 1, 1, 1, -1}, }, } @@ -283,8 +289,8 @@ func runLLVMAllocaStatepointTest(t *testing.T, gorootTestDir string) { checks.goallcLocals, [][]int{nil, nil}, [][]int{nil, checks.goallcPointerBits}, - []int32{0, 1, 0}, - []int32{1, 1, 1, 1, 0}) + checks.goallcPCData, + checks.goallcQueries) goallcStackObjects := llvmABIStackObjects(t, symbol) if len(goallcStackObjects) != 0 { diff --git a/src/cmd/internal/testdir/testdata/llvm_args_pointer_maps.mir b/src/cmd/internal/testdir/testdata/llvm_args_pointer_maps.mir index eeecaa518796b7..6d71b5d8562480 100644 --- a/src/cmd/internal/testdir/testdata/llvm_args_pointer_maps.mir +++ b/src/cmd/internal/testdir/testdata/llvm_args_pointer_maps.mir @@ -7,7 +7,7 @@ ptr } - declare goabi0 void @runtime.morestack_noctxt() + declare goabi0 void @"runtime.morestack_noctxt"() declare goabiinternal void @p.safepoint() define goabiinternal %results @p.argResult(ptr %input) @@ -18,7 +18,6 @@ attributes #0 = { "frame-pointer"="non-leaf" - "go-stack-growth-statepoint" "go_results_tuple" } ... @@ -43,8 +42,9 @@ body: | bb.0.entry: liveins: $lr + STACKMAP 5147419139155979380, 0, 1, 8, $sp, 16 $x3 = COPY $lr - STATEPOINT 5147424658422983495, 0, 0, &runtime.morestack_noctxt, 2, 22, 2, 0, 2, 0, 2, 1, 1, 8, $sp, 16, 2, 0, 2, 1, 0, 0, csr_aarch64_go, implicit-def $sp, implicit-def dead early-clobber $lr, implicit $x3 + BL &"runtime.morestack_noctxt", implicit-def $lr, implicit $sp, implicit $x3 STATEPOINT 1, 0, 0, &p.safepoint, 2, 22, 2, 0, 2, 0, 2, 1, 1, 8, $sp, 8, 2, 0, 2, 1, 0, 0, csr_aarch64_go, implicit-def $sp, implicit-def dead early-clobber $lr RET_ReallyLR ... diff --git a/src/cmd/llvmplugin/testdata/aarch64-frame.ll b/src/cmd/llvmplugin/testdata/aarch64-frame.ll index a404413d0220af..a2e202b7ea6fc2 100644 --- a/src/cmd/llvmplugin/testdata/aarch64-frame.ll +++ b/src/cmd/llvmplugin/testdata/aarch64-frame.ll @@ -23,7 +23,7 @@ target triple = "aarch64-apple-darwin-goobj" ; OBJVIEW-NEXT: 1 ; FRAME-TEXT-LABEL: TEXT aarch64_pointer_and_code_live(SB) -; FRAME-TEXT: PCDATA_StackMapIndex=0{{.*}}ArgsPointerMaps=01{{.*}}LocalsPointerMaps=00 +; FRAME-TEXT: PCDATA_StackMapIndex=-1 ; FRAME-TEXT: R_CALLARM64:runtime.morestack_noctxt ; FRAME-TEXT-NEXT: {{.*}}stack-growth safepoint{{.*}}map[0]{{.*}}ArgsPointerMaps=01{{.*}}LocalsPointerMaps=00 ; FRAME-TEXT: R_CALLIND{{.*}}PCDATA_StackMapIndex=1{{.*}}ArgsPointerMaps=00{{.*}}LocalsPointerMaps=01 @@ -38,7 +38,7 @@ target triple = "aarch64-apple-darwin-goobj" ; OBJVIEW-NEXT: 0 ; OBJVIEW: "kind": "locals_pointer_maps" ; OBJVIEW: "count": 1 -; OBJVIEW: "stack_map_index": 0 +; OBJVIEW: "stack_map_index": -1 ; OBJVIEW-NEXT: "relocation_type": "R_CALLARM64" ; OBJVIEW-LABEL: "name": "aarch64_stack_pointer_arg" @@ -50,7 +50,7 @@ target triple = "aarch64-apple-darwin-goobj" ; OBJVIEW-NEXT: 0 ; OBJVIEW: "kind": "locals_pointer_maps" ; OBJVIEW: "count": 1 -; OBJVIEW: "stack_map_index": 0 +; OBJVIEW: "stack_map_index": -1 ; OBJVIEW-NEXT: "relocation_type": "R_CALLARM64" ; OBJVIEW-LABEL: "name": "aarch64_subword_homes" @@ -59,7 +59,7 @@ target triple = "aarch64-apple-darwin-goobj" ; OBJVIEW: "count": 1 ; OBJVIEW-NEXT: "num_bits": 1 ; OBJVIEW: "set_bits": null -; OBJVIEW: "stack_map_index": 0 +; OBJVIEW: "stack_map_index": -1 ; OBJVIEW-NEXT: "relocation_type": "R_CALLARM64" ; OBJVIEW-LABEL: "name": "aarch64_large_arg_home" @@ -68,7 +68,7 @@ target triple = "aarch64-apple-darwin-goobj" ; OBJVIEW: "count": 1 ; OBJVIEW-NEXT: "num_bits": 4097 ; OBJVIEW: "set_bits": null -; OBJVIEW: "stack_map_index": 0 +; OBJVIEW: "stack_map_index": -1 ; OBJVIEW-NEXT: "relocation_type": "R_CALLARM64" ; ASM: TEXT aarch64_subword_homes(SB) diff --git a/src/cmd/llvmplugin/testdata/aggregate-call-result-goobj.ll b/src/cmd/llvmplugin/testdata/aggregate-call-result-goobj.ll index 2a67c90650c018..bf3ce623032a98 100644 --- a/src/cmd/llvmplugin/testdata/aggregate-call-result-goobj.ll +++ b/src/cmd/llvmplugin/testdata/aggregate-call-result-goobj.ll @@ -5,7 +5,7 @@ target triple = "x86_64-unknown-linux-goobj" ; OBJVIEW: "kind": "stack_map_index" ; OBJVIEW: "start": 0 ; OBJVIEW-NEXT: "end": [[#MAKE_START:]] -; OBJVIEW-NEXT: "value": 0 +; OBJVIEW-NEXT: "value": -1 ; OBJVIEW: "start": [[#MAKE_START]] ; OBJVIEW-NEXT: "end": [[#SAFEPOINT_START:]] ; OBJVIEW-NEXT: "value": 1 @@ -14,7 +14,7 @@ target triple = "x86_64-unknown-linux-goobj" ; OBJVIEW-NEXT: "value": 2 ; OBJVIEW: "start": [[#ENTRY_DEPTH_START]] ; OBJVIEW-NEXT: "end": [[#SIZE]] -; OBJVIEW-NEXT: "value": 0 +; OBJVIEW-NEXT: "value": -1 ; OBJVIEW: "kind": "args_pointer_maps" ; OBJVIEW: "count": 3 ; OBJVIEW-NEXT: "num_bits": 2 @@ -48,7 +48,7 @@ target triple = "x86_64-unknown-linux-goobj" ; OBJVIEW: "stack_map_index": 2 ; OBJVIEW-NEXT: "relocation_type": "R_CALL" ; OBJVIEW: "sym_index": 2 -; OBJVIEW: "stack_map_index": 0 +; OBJVIEW: "stack_map_index": -1 ; OBJVIEW-NEXT: "relocation_type": "R_CALL" ; OBJVIEW: "sym_index": 3 ; OBJVIEW: "references": [ diff --git a/src/cmd/llvmplugin/testdata/conditional-relocation.ll b/src/cmd/llvmplugin/testdata/conditional-relocation.ll index fc44f9070c77b9..0bb179b01533f1 100644 --- a/src/cmd/llvmplugin/testdata/conditional-relocation.ll +++ b/src/cmd/llvmplugin/testdata/conditional-relocation.ll @@ -9,13 +9,13 @@ target triple = "x86_64-unknown-linux-goobj" ; OBJVIEW: "kind": "stack_map_index" ; OBJVIEW: "start": 0 ; OBJVIEW-NEXT: "end": [[#SAFEPOINT_START:]] -; OBJVIEW-NEXT: "value": 0 +; OBJVIEW-NEXT: "value": -1 ; OBJVIEW: "start": [[#SAFEPOINT_START]] ; OBJVIEW-NEXT: "end": [[#ENTRY_DEPTH_START:]] ; OBJVIEW-NEXT: "value": 1 ; OBJVIEW: "start": [[#ENTRY_DEPTH_START]] ; OBJVIEW-NEXT: "end": [[#SIZE]] -; OBJVIEW-NEXT: "value": 0 +; OBJVIEW-NEXT: "value": -1 ; OBJVIEW: "kind": "locals_pointer_maps" ; OBJVIEW: "count": 2 ; OBJVIEW: "index": 0 @@ -25,7 +25,7 @@ target triple = "x86_64-unknown-linux-goobj" ; OBJVIEW-NEXT: 0 ; OBJVIEW: "call_offset": [[#SAFEPOINT_START+1]] ; OBJVIEW: "stack_map_index": 1 -; OBJVIEW: "stack_map_index": 0 +; OBJVIEW: "stack_map_index": -1 declare goabiinternal void @callee() diff --git a/src/cmd/llvmplugin/testdata/debug-inline.ll b/src/cmd/llvmplugin/testdata/debug-inline.ll index 8e39644c5fa3e6..8546e4dfe2b8bc 100644 --- a/src/cmd/llvmplugin/testdata/debug-inline.ll +++ b/src/cmd/llvmplugin/testdata/debug-inline.ll @@ -6,13 +6,13 @@ target triple = "x86_64-unknown-linux-goobj" ; DEBUG: "parent": -1, ; DEBUG: "line": 10, ; DEBUG: "name": "main.mid", -; DEBUG-X86: "parent_pc": 6 -; DEBUG-AARCH64: "parent_pc": 32 +; DEBUG-X86: "parent_pc": 0 +; DEBUG-AARCH64: "parent_pc": 0 ; DEBUG: "parent": 0, ; DEBUG: "line": 20, ; DEBUG: "name": "main.inner", -; DEBUG-X86: "parent_pc": 7 -; DEBUG-AARCH64: "parent_pc": 36 +; DEBUG-X86: "parent_pc": 1 +; DEBUG-AARCH64: "parent_pc": 4 ; DEBUG-X86: "pc_quantum": 1, ; DEBUG-AARCH64: "pc_quantum": 4, ; DEBUG: "kind": "pcfile", @@ -46,8 +46,8 @@ target triple = "x86_64-unknown-linux-goobj" ; DEBUG: "parent": -1, ; DEBUG: "line": 0, ; DEBUG: "name": "main.zeroCallee", -; DEBUG-X86: "parent_pc": 6 -; DEBUG-AARCH64: "parent_pc": 32 +; DEBUG-X86: "parent_pc": 0 +; DEBUG-AARCH64: "parent_pc": 0 ; DEBUG-LABEL: "name": "main.shared", ; DEBUG: "start_line": 70, @@ -55,13 +55,13 @@ target triple = "x86_64-unknown-linux-goobj" ; DEBUG: "parent": -1, ; DEBUG: "line": 71, ; DEBUG: "name": "main.sharedLeft", -; DEBUG-X86: "parent_pc": 6 -; DEBUG-AARCH64: "parent_pc": 32 +; DEBUG-X86: "parent_pc": 0 +; DEBUG-AARCH64: "parent_pc": 0 ; DEBUG: "parent": -1, ; DEBUG: "line": 71, ; DEBUG: "name": "main.sharedRight", -; DEBUG-X86: "parent_pc": 14 -; DEBUG-AARCH64: "parent_pc": 44 +; DEBUG-X86: "parent_pc": 8 +; DEBUG-AARCH64: "parent_pc": 12 @main.sink = global i64 0 diff --git a/src/cmd/llvmplugin/testdata/multiple-calls.ll b/src/cmd/llvmplugin/testdata/multiple-calls.ll index 2e765199b38a50..8b560a5e6c2345 100644 --- a/src/cmd/llvmplugin/testdata/multiple-calls.ll +++ b/src/cmd/llvmplugin/testdata/multiple-calls.ll @@ -9,7 +9,7 @@ target triple = "x86_64-unknown-linux-goobj" ; OBJVIEW: "kind": "stack_map_index" ; OBJVIEW: "start": 0 ; OBJVIEW-NEXT: "end": [[#FIRST_START:]] -; OBJVIEW-NEXT: "value": 0 +; OBJVIEW-NEXT: "value": -1 ; OBJVIEW: "start": [[#FIRST_START]] ; OBJVIEW-NEXT: "end": [[#SECOND_START:]] ; OBJVIEW-NEXT: "value": 1 @@ -18,7 +18,7 @@ target triple = "x86_64-unknown-linux-goobj" ; OBJVIEW-NEXT: "value": 2 ; OBJVIEW: "start": [[#ENTRY_DEPTH_START]] ; OBJVIEW-NEXT: "end": [[#SIZE]] -; OBJVIEW-NEXT: "value": 0 +; OBJVIEW-NEXT: "value": -1 ; OBJVIEW: "kind": "locals_pointer_maps" ; OBJVIEW: "count": 3 ; OBJVIEW: "index": 0 @@ -34,7 +34,7 @@ target triple = "x86_64-unknown-linux-goobj" ; OBJVIEW: "stack_map_index": 1 ; OBJVIEW: "call_offset": [[#SECOND_START+1]] ; OBJVIEW: "stack_map_index": 2 -; OBJVIEW: "stack_map_index": 0 +; OBJVIEW: "stack_map_index": -1 declare goabiinternal void @first_callee() declare goabiinternal void @second_callee()