David Chase
David Chase
I just did the obvious experiment, and it is not unified IR. Still slow: ``` GOEXPERIMENT=nounified go test foo_test.go -bench Bench goos: darwin goarch: amd64 cpu: Intel(R) Core(TM) i5-1038NG7 CPU...
It looks like a bug in escape analysis. ``` GOEXPERIMENT=nounified GOSSAFUNC=BenchmarkAllocs go test -c -o foo_19 -gcflags -m=2 foo_test.go # command-line-arguments [command-line-arguments.test] ./foo_test.go:11:6: can inline (*Object).Initialize with cost 6 as:...
`.autotmp_3` is to carry the result of one inlined call to another (visible with `-m=5`). I'm inclined to poke at this a bit more to see why it went wrong,...
I still think this is incorrect behavior by escape analysis, but it is taking me a while to figure out exactly where it goes wrong. I've been stepping through the...
The escape analysis runs on inlined code. That's where the decision is made wrong, in my opinion. If this AST is actually malformed, we need some way of rejecting it....
The problem is loopdepth, but I think this is a bug in escape analysis -- anytime there is an autotmp used in a loop, its loopdepth will be wrong unless...
ONAMEs can have assignments at any depth. It's important to record the least-nested visibility because that is a form of escape (many-to-one). For autotmps, we do seem to declare them,...
@rsc not sure who else to suggest look at this.
A runnable example would be very helpful; without more context, I can't tell much about what's supposed to happen. What did you expect to happen?
@golang/security if this is a bug, it has a proposed fix.