mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
cmd/cgo: iterate over names in deterministic order
This makes GCC behavior (and cgo build failures) deterministic. Fixes #8487. Ran this shell command on linux/amd64 (Ubuntu 12.04) before and after this change: for x in `seq 100`; do go tool cgo -debug-gcc=true issue8441.go 2>&1 | md5sum done | sort | uniq -c Before: 67 2cdcb8c7c4e290f7d9009abc581b83dd - 10 9a55390df94f7cec6d810f3e20590789 - 10 acfad22140d43d9b9517bbc5dfc3c0df - 13 c337f8fee2304b3a8e3158a4362d8698 - After: 100 785c316cbcbcd50896695050e2fa23c1 - LGTM=minux, iant R=golang-codereviews, bradfitz, minux, iant CC=golang-codereviews https://golang.org/cl/126990043
This commit is contained in:
parent
fce63888ce
commit
03e6a88ef0
1 changed files with 2 additions and 1 deletions
|
|
@ -229,7 +229,8 @@ func (p *Package) guessKinds(f *File) []*Name {
|
||||||
// Determine kinds for names we already know about,
|
// Determine kinds for names we already know about,
|
||||||
// like #defines or 'struct foo', before bothering with gcc.
|
// like #defines or 'struct foo', before bothering with gcc.
|
||||||
var names, needType []*Name
|
var names, needType []*Name
|
||||||
for _, n := range f.Name {
|
for _, key := range nameKeys(f.Name) {
|
||||||
|
n := f.Name[key]
|
||||||
// If we've already found this name as a #define
|
// If we've already found this name as a #define
|
||||||
// and we can translate it as a constant value, do so.
|
// and we can translate it as a constant value, do so.
|
||||||
if n.Define != "" {
|
if n.Define != "" {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue