mirror of
https://github.com/golang/go
synced 2024-11-23 23:30:10 -07:00
[dev.regabi] cmd/compile: type check externdcl earlier
The next CL requires externdcl to be type checked earlier, but this causes toolstash -cmp to complain because it causes src.PosBases to get added in a different order. So split out into a separate CL. Change-Id: Icab4eadd3fa8acffbd3e980bd8100924378351b3 Reviewed-on: https://go-review.googlesource.com/c/go/+/277732 Trust: Matthew Dempsky <mdempsky@google.com> Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
This commit is contained in:
parent
9f16620f46
commit
305d93ef84
@ -282,9 +282,18 @@ func Main(archInit func(*Arch)) {
|
||||
fcount++
|
||||
}
|
||||
}
|
||||
// With all types checked, it's now safe to verify map keys. One single
|
||||
// check past phase 9 isn't sufficient, as we may exit with other errors
|
||||
// before then, thus skipping map key errors.
|
||||
|
||||
// Phase 3.11: Check external declarations.
|
||||
// TODO(mdempsky): This should be handled when type checking their
|
||||
// corresponding ODCL nodes.
|
||||
timings.Start("fe", "typecheck", "externdcls")
|
||||
for i, n := range externdcl {
|
||||
if n.Op() == ir.ONAME {
|
||||
externdcl[i] = typecheck(externdcl[i], ctxExpr)
|
||||
}
|
||||
}
|
||||
|
||||
// Phase 3.14: With all user code type-checked, it's now safe to verify map keys.
|
||||
checkMapKeys()
|
||||
base.ExitIfErrors()
|
||||
|
||||
@ -418,18 +427,6 @@ func Main(archInit func(*Arch)) {
|
||||
base.Flag.GenDwarfInl = 0
|
||||
}
|
||||
|
||||
// Phase 9: Check external declarations.
|
||||
timings.Start("be", "externaldcls")
|
||||
for i, n := range externdcl {
|
||||
if n.Op() == ir.ONAME {
|
||||
externdcl[i] = typecheck(externdcl[i], ctxExpr)
|
||||
}
|
||||
}
|
||||
// Check the map keys again, since we typechecked the external
|
||||
// declarations.
|
||||
checkMapKeys()
|
||||
base.ExitIfErrors()
|
||||
|
||||
// Write object data to disk.
|
||||
timings.Start("be", "dumpobj")
|
||||
dumpdata()
|
||||
|
Loading…
Reference in New Issue
Block a user