Skip to content

cmd/compile: very long names for simple generic usage #71535

@rsc

Description

@rsc

Go version

go1.23.5, go1.24rc2

Output of go env in your module/workspace:

n/a

What did you do?

Build a program using a few TransientSlice[Value].
Profile it, showing hot symbols.
Run nm to see symbols.

git clone https://github.com/rsc/ivy
cd ivy
git fetch pprofbug # tag I created
go build
go tool nm ./ivy | grep Append
./ivy -profile=x.prof testdata/copy.ivy
go tool pprof ./ivy
top10

What did you see happen?

Unexpectedly long symbol names, like in the comically large and unreadable boxes in this profile:

Image

Or in this nm output:

% go tool nm ivy | grep Append
1000cbb10 T math/big.(*Float).Append
100131f60 T robpike.io/ivy/internal/persist.(*TransientSlice[go.shape.interface { Eval(robpike.io/ivy/value.Context) robpike.io/ivy/value.Value; Inner() robpike.io/ivy/value.Value; ProgString() string; Rank() int; Sprint(*robpike.io/ivy/config.Config) string; String() string; robpike.io/ivy/value.shrink() robpike.io/ivy/value.Value; robpike.io/ivy/value.toType(string, *robpike.io/ivy/config.Config, robpike.io/ivy/value.valueType) robpike.io/ivy/value.Value }]).Append
1000837d0 T strconv.AppendInt
1000944e0 T time.Time.AppendFormat
% 

What did you expect to see?

Reasonably short symbol names, and normal-sized pprof boxes.

Metadata

Metadata

Assignees

No one assigned

    Labels

    BugReportIssues describing a possible bug in the Go implementation.NeedsInvestigationSomeone must examine and confirm this is a valid issue and not a duplicate of an existing one.compiler/runtimeIssues related to the Go compiler and/or runtime.

    Type

    No type

    Projects

    Status

    Todo

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions