cl:
https://go.dev/cl/427140 has been revert caused by that I change the order of done and m.
before this cl:
```
type Once struct {
// done indicates whether the action has been performed.
// It is first in the struct because it is used in the hot path.
// The hot path is inlined at every call site.
// Placing done first allows more compact instructions on some architectures (amd64/386),
// and fewer instructions (to calculate offset) on other architectures.
done uint32
m Mutex
}
```
after cl:
type Once struct {
m Mutex
// done indicates whether the action has been performed.
// It is first in the struct because it is used in the hot path.
// The hot path is inlined at every call site.
// Placing done first allows more compact instructions on some architectures (amd64/386),
// and fewer instructions (to calculate offset) on other architectures.
done atomic.Bool
}
I change the cl just to avoid the static analysis failed.
like in
some of them:
```
analysistest.go:459: a/copylock.go:53:8: diagnostic "assignment copies lock value to *tp: a.Tlock contains sync.Once contains sync/atomic.Bool contains sync/atomic.noCopy" does not match pattern `assignment copies lock value to \*tp: a.Tlock contains sync.Once contains sync.Mutex`
```
If i send another cl with that the order of done and m would not be changed and fix the static analysis failed. It's that ok.
We need to consider that someone may use some code like test on x/tools to check the copy. If the need cl return return like "assignment copies lock value to *tp: a.Tlock contains sync.Once contains sync/atomic.Bool contains sync/atomic.noCopy" instead of `assignment copies lock value to \*tp: a.Tlock contains sync.Once contains sync.Mutex`.
Wait for your suggestion.