Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
3f83270
runtime,cl: stack-keyed sampled memory profiling with gc semantics
cpunion Jul 4, 2026
2173cea
ssa,runtime: gc-conformant type-assertion panics and go:nointerface s…
cpunion Jul 6, 2026
d08e486
ssa,runtime: tighten recover to direct deferred calls (Defer-node model)
cpunion Jul 6, 2026
17a44bc
ssa,runtime: real runtime.Error values for type asserts, fault signal…
cpunion Jul 6, 2026
207675c
style: gofmt golden in.go files under _testrt
cpunion Jul 6, 2026
fe94f73
cl,ssa,runtime: stack-object finalizer liveness
cpunion Jul 6, 2026
4a23ec7
ci: cap coverage-run package parallelism at 2
cpunion Jul 6, 2026
66c229a
test: memprofile attribution regressions; retire heapsampling xfails
cpunion Jul 4, 2026
2e36dbf
runtime: never wait on the frame-table init latch from the memprofile…
cpunion Jul 5, 2026
a904bae
runtime,cl: panic-site pc snapshots — deferred callers and fault stac…
cpunion Jul 4, 2026
05aafd4
test: goroot xfails and fault-stack regressions for panic snapshots
cpunion Jul 4, 2026
28186b2
Merge remote-tracking branch 'origin/codex/stage5-panic-snapshot' int…
cpunion Jul 11, 2026
3d4c64f
Merge remote-tracking branch 'origin/codex/stage5-memprofile' into co…
cpunion Jul 11, 2026
68a754b
Merge remote-tracking branch 'origin/codex/stage5-typeassert' into co…
cpunion Jul 11, 2026
2e41187
Merge remote-tracking branch 'origin/codex/stage5-recover-defer' into…
cpunion Jul 11, 2026
13892e3
Merge remote-tracking branch 'origin/codex/stage5-recover-errors' int…
cpunion Jul 11, 2026
29793f5
Merge remote-tracking branch 'origin/codex/stage5-finalizer-liveness'…
cpunion Jul 11, 2026
1326f79
test: retire stale goroot xfails after stage5 sweep
cpunion Jul 11, 2026
b0429c0
Merge remote-tracking branch 'xgo-dev/main' into codex/stage5-integra…
cpunion Jul 11, 2026
a04621d
test(goroot): classify missing darwin failures
cpunion Jul 11, 2026
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
2 changes: 1 addition & 1 deletion .github/workflows/go.yml
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ jobs:
- name: Test with coverage
# 45m: the caller-info acceptance suite (test/go) legitimately grew
# the covered run past the old 30m budget on macOS runners.
run: go test -timeout 45m -coverprofile="coverage.txt" -covermode=atomic ./...
run: go test -timeout 45m -p 2 -coverprofile="coverage.txt" -covermode=atomic ./...

- name: Test with embedded emulator env
env:
Expand Down
4 changes: 2 additions & 2 deletions cl/_testdata/vargs/in.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package main

import "github.com/goplus/lib/c"

// CHECK: @0 = private unnamed_addr constant [3 x i8] c"int", align 1
// CHECK: @1 = private unnamed_addr constant [4 x i8] c"%d\0A\00", align 1

func main() {
Expand Down Expand Up @@ -88,7 +87,8 @@ func test(a ...any) {
// CHECK-NEXT: br label %_llgo_1
// CHECK-EMPTY:
// CHECK-NEXT: _llgo_5: ; preds = %_llgo_2
// CHECK-NEXT: call void @"{{.*}}/runtime/internal/runtime.PanicTypeAssert"(ptr %12, %"{{.*}}/runtime/internal/runtime.String" { ptr @0, i64 3 }, %"{{.*}}/runtime/internal/runtime.String" zeroinitializer)
// CHECK-NEXT: %17 = call %"{{.*}}/runtime/internal/runtime.eface" @"{{.*}}/runtime/internal/runtime.TypeAssertError"(ptr %12, ptr @_llgo_int, ptr null)
// CHECK-NEXT: call void @"{{.*}}/runtime/internal/runtime.Panic"(%"{{.*}}/runtime/internal/runtime.eface" %17)
// CHECK-NEXT: unreachable
// CHECK-NEXT: }

Expand Down
3 changes: 2 additions & 1 deletion cl/_testgo/abimethod/in.go
Original file line number Diff line number Diff line change
Expand Up @@ -736,7 +736,8 @@ type I2 interface {
// CHECK-NEXT: br i1 %29, label %_llgo_1, label %_llgo_2
// CHECK-EMPTY:
// CHECK-NEXT: _llgo_4: ; preds = %_llgo_0
// CHECK-NEXT: call void @"{{.*}}/runtime/internal/runtime.PanicTypeAssert"(ptr %23, %"{{.*}}/runtime/internal/runtime.String" { ptr @5, i64 3 }, %"{{.*}}/runtime/internal/runtime.String" zeroinitializer)
// CHECK-NEXT: %30 = call %"{{.*}}/runtime/internal/runtime.eface" @"{{.*}}/runtime/internal/runtime.TypeAssertError"(ptr %23, ptr @_llgo_int, ptr null)
// CHECK-NEXT: call void @"{{.*}}/runtime/internal/runtime.Panic"(%"{{.*}}/runtime/internal/runtime.eface" %30)
// CHECK-NEXT: unreachable
// CHECK-NEXT: }

Expand Down
19 changes: 11 additions & 8 deletions cl/_testgo/cgodefer/cgodefer.go
Original file line number Diff line number Diff line change
Expand Up @@ -90,17 +90,20 @@ import "C"
// CHECK-NEXT: store ptr %32, ptr %18, align 8
// CHECK-NEXT: %33 = extractvalue { ptr, i64, { ptr, ptr } } %31, 2
// CHECK-NEXT: call void @"{{.*}}/runtime/internal/runtime.FreeDeferNode"(ptr %30)
// CHECK-NEXT: %34 = extractvalue { ptr, ptr } %33, 1
// CHECK-NEXT: %35 = extractvalue { ptr, ptr } %33, 0
// CHECK-NEXT: call void %35(ptr %34)
// CHECK-NEXT: %34 = extractvalue { ptr, ptr } %33, 0
// CHECK-NEXT: %35 = call ptr @"{{.*}}/runtime/internal/runtime.StartRecoverFrame"(ptr %34)
// CHECK-NEXT: %36 = extractvalue { ptr, ptr } %33, 1
// CHECK-NEXT: %37 = extractvalue { ptr, ptr } %33, 0
// CHECK-NEXT: call void %37(ptr %36)
// CHECK-NEXT: call void @"{{.*}}/runtime/internal/runtime.EndRecoverFrame"(ptr %35)
// CHECK-NEXT: br label %_llgo_8
// CHECK-EMPTY:
// CHECK-NEXT: _llgo_8: ; preds = %_llgo_7, %_llgo_2
// CHECK-NEXT: %36 = load %"{{.*}}/runtime/internal/runtime.Defer", ptr %10, align 8
// CHECK-NEXT: %37 = extractvalue %"{{.*}}/runtime/internal/runtime.Defer" %36, 2
// CHECK-NEXT: call void @"{{.*}}/runtime/internal/runtime.SetThreadDefer"(ptr %37)
// CHECK-NEXT: %38 = load ptr, ptr %17, align 8
// CHECK-NEXT: indirectbr ptr %38, [label %_llgo_3, label %_llgo_6]
// CHECK-NEXT: %38 = load %"{{.*}}/runtime/internal/runtime.Defer", ptr %10, align 8
// CHECK-NEXT: %39 = extractvalue %"{{.*}}/runtime/internal/runtime.Defer" %38, 2
// CHECK-NEXT: call void @"{{.*}}/runtime/internal/runtime.SetThreadDefer"(ptr %39)
// CHECK-NEXT: %40 = load ptr, ptr %17, align 8
// CHECK-NEXT: indirectbr ptr %40, [label %_llgo_3, label %_llgo_6]
// CHECK-NEXT: }
func main() {
// CHECK-LABEL: define { ptr, ptr } @"{{.*}}/cl/_testgo/cgodefer.main$1"(ptr %0){{.*}} {
Expand Down
5 changes: 2 additions & 3 deletions cl/_testgo/closureall/in.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@ import "github.com/goplus/lib/c"

// CHECK: @0 = private unnamed_addr constant [46 x i8] c"{{.*}}/cl/_testgo/closureall.S", align 1
// CHECK: @1 = private unnamed_addr constant [3 x i8] c"Inc", align 1
// CHECK: @7 = private unnamed_addr constant [3 x i8] c"Add", align 1
// CHECK: @9 = private unnamed_addr constant [23 x i8] c"interface{Add(int) int}", align 1

//go:linkname cSqrt C.sqrt
func cSqrt(x c.Double) c.Double
Expand Down Expand Up @@ -173,7 +171,8 @@ func makeWithFree(base int) Fn {
// CHECK-NEXT: ret void
// CHECK-EMPTY:
// CHECK-NEXT: _llgo_2: ; preds = %_llgo_0
// CHECK-NEXT: call void @"{{.*}}/runtime/internal/runtime.PanicTypeAssert"(ptr %21, %"{{.*}}/runtime/internal/runtime.String" { ptr @9, i64 23 }, %"{{.*}}/runtime/internal/runtime.String" { ptr @7, i64 3 })
// CHECK-NEXT: %32 = call %"{{.*}}/runtime/internal/runtime.eface" @"{{.*}}/runtime/internal/runtime.TypeAssertError"(ptr %21, ptr @"_llgo_iface$VdBKYV8-gcMjZtZfcf-u2oKoj9Lu3VXwuG8TGCW2S4A", ptr null)
// CHECK-NEXT: call void @"{{.*}}/runtime/internal/runtime.Panic"(%"{{.*}}/runtime/internal/runtime.eface" %32)
// CHECK-NEXT: unreachable
// CHECK-NEXT: }

Expand Down
16 changes: 8 additions & 8 deletions cl/_testgo/genericembediface/in.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,9 @@ import (

// CHECK: {{^}}@2 = private unnamed_addr constant [20 x i8] c"ServerReflectionInfo", align 1{{$}}
// CHECK: {{^}}@5 = private unnamed_addr constant [7 x i8] c"Context", align 1{{$}}
// CHECK: {{^}}@11 = private unnamed_addr constant [68 x i8] c"{{.*}}/cl/_testgo/genericembediface.ReflectionServer", align 1{{$}}
// CHECK: {{^}}@19 = private unnamed_addr constant [4 x i8] c"pass", align 1{{$}}
// CHECK: {{^}}@20 = private unnamed_addr constant [58 x i8] c"{{.*}}/cl/_testgo/genericembediface.server", align 1{{$}}
// CHECK: {{^}}@21 = private unnamed_addr constant [58 x i8] c"{{.*}}/cl/_testgo/genericembediface.stream", align 1{{$}}
// CHECK: {{^}}@18 = private unnamed_addr constant [4 x i8] c"pass", align 1{{$}}
// CHECK: {{^}}@19 = private unnamed_addr constant [58 x i8] c"{{.*}}/cl/_testgo/genericembediface.server", align 1{{$}}
// CHECK: {{^}}@20 = private unnamed_addr constant [58 x i8] c"{{.*}}/cl/_testgo/genericembediface.stream", align 1{{$}}

type Request struct{}
type Response struct{}
Expand Down Expand Up @@ -48,7 +47,8 @@ type ReflectionServer interface {
// CHECK-NEXT: ret %"{{.*}}/runtime/internal/runtime.iface" %21
// CHECK-EMPTY:
// CHECK-NEXT: _llgo_2: ; preds = %_llgo_0
// CHECK-NEXT: call void @"{{.*}}/runtime/internal/runtime.PanicTypeAssert"(ptr %2, %"{{.*}}/runtime/internal/runtime.String" { ptr @11, i64 68 }, %"{{.*}}/runtime/internal/runtime.String" { ptr @2, i64 20 })
// CHECK-NEXT: %22 = call %"{{.*}}/runtime/internal/runtime.eface" @"{{.*}}/runtime/internal/runtime.TypeAssertError"(ptr %2, ptr @"_llgo_{{.*}}/cl/_testgo/genericembediface.ReflectionServer", ptr null)
// CHECK-NEXT: call void @"{{.*}}/runtime/internal/runtime.Panic"(%"{{.*}}/runtime/internal/runtime.eface" %22)
// CHECK-NEXT: unreachable
// CHECK-NEXT: }

Expand Down Expand Up @@ -93,7 +93,7 @@ func (stream) Context() string {
// CHECK-NEXT: %4 = insertvalue %"{{.*}}/runtime/internal/runtime.iface" undef, ptr %3, 0
// CHECK-NEXT: %5 = insertvalue %"{{.*}}/runtime/internal/runtime.iface" %4, ptr %2, 1
// CHECK-NEXT: %6 = call %"{{.*}}/runtime/internal/runtime.iface" @"{{.*}}/cl/_testgo/genericembediface.handler"(%"{{.*}}/runtime/internal/runtime.eface" %1, %"{{.*}}/runtime/internal/runtime.iface" %5)
// CHECK-NEXT: call void @"{{.*}}/runtime/internal/runtime.PrintString"(%"{{.*}}/runtime/internal/runtime.String" { ptr @19, i64 4 })
// CHECK-NEXT: call void @"{{.*}}/runtime/internal/runtime.PrintString"(%"{{.*}}/runtime/internal/runtime.String" { ptr @18, i64 4 })
// CHECK-NEXT: call void @"{{.*}}/runtime/internal/runtime.PrintByte"(i8 10)
// CHECK-NEXT: ret void
// CHECK-NEXT: }
Expand All @@ -111,7 +111,7 @@ func main() {
// CHECK-LABEL: define %"{{.*}}/runtime/internal/runtime.iface" @"{{.*}}/cl/_testgo/genericembediface.(*server).ServerReflectionInfo"(ptr %0, %"{{.*}}/runtime/internal/runtime.iface" %1){{.*}} {
// CHECK-NEXT: _llgo_0:
// CHECK-NEXT: %2 = icmp eq ptr %0, null
// CHECK-NEXT: call void @"{{.*}}/runtime/internal/runtime.PanicWrapNilPointer"(i1 %2, %"{{.*}}/runtime/internal/runtime.String" { ptr @20, i64 58 }, %"{{.*}}/runtime/internal/runtime.String" { ptr @2, i64 20 })
// CHECK-NEXT: call void @"{{.*}}/runtime/internal/runtime.PanicWrapNilPointer"(i1 %2, %"{{.*}}/runtime/internal/runtime.String" { ptr @19, i64 58 }, %"{{.*}}/runtime/internal/runtime.String" { ptr @2, i64 20 })
// CHECK-NEXT: %3 = icmp eq ptr %0, null
// CHECK-NEXT: call void @"{{.*}}/runtime/internal/runtime.AssertNilDeref"(i1 %3)
// CHECK-NEXT: %4 = call %"{{.*}}/runtime/internal/runtime.iface" @"{{.*}}/cl/_testgo/genericembediface.server.ServerReflectionInfo"(%"{{.*}}/cl/_testgo/genericembediface.server" zeroinitializer, %"{{.*}}/runtime/internal/runtime.iface" %1)
Expand All @@ -126,7 +126,7 @@ func main() {
// CHECK-LABEL: define %"{{.*}}/runtime/internal/runtime.String" @"{{.*}}/cl/_testgo/genericembediface.(*stream).Context"(ptr %0){{.*}} {
// CHECK-NEXT: _llgo_0:
// CHECK-NEXT: %1 = icmp eq ptr %0, null
// CHECK-NEXT: call void @"{{.*}}/runtime/internal/runtime.PanicWrapNilPointer"(i1 %1, %"{{.*}}/runtime/internal/runtime.String" { ptr @21, i64 58 }, %"{{.*}}/runtime/internal/runtime.String" { ptr @5, i64 7 })
// CHECK-NEXT: call void @"{{.*}}/runtime/internal/runtime.PanicWrapNilPointer"(i1 %1, %"{{.*}}/runtime/internal/runtime.String" { ptr @20, i64 58 }, %"{{.*}}/runtime/internal/runtime.String" { ptr @5, i64 7 })
// CHECK-NEXT: %2 = icmp eq ptr %0, null
// CHECK-NEXT: call void @"{{.*}}/runtime/internal/runtime.AssertNilDeref"(i1 %2)
// CHECK-NEXT: %3 = call %"{{.*}}/runtime/internal/runtime.String" @"{{.*}}/cl/_testgo/genericembediface.stream.Context"(%"{{.*}}/cl/_testgo/genericembediface.stream" zeroinitializer)
Expand Down
Loading
Loading