diff options
author | Matthew Dempsky <mdempsky@google.com> | 2020-12-13 23:01:34 -0800 |
---|---|---|
committer | Matthew Dempsky <mdempsky@google.com> | 2020-12-15 07:16:12 +0000 |
commit | 305d93ef84aed971145b3aa1bce1f9f389bc90c0 (patch) | |
tree | 4b9eea25ac7ef35bfe8db53e06dcf91561595ea8 /src/cmd/compile/internal/gc/main.go | |
parent | 9f16620f46fc51ff1c8182b440bd60f97eb35278 (diff) | |
download | go-305d93ef84aed971145b3aa1bce1f9f389bc90c0.tar.gz go-305d93ef84aed971145b3aa1bce1f9f389bc90c0.zip |
[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>
Diffstat (limited to 'src/cmd/compile/internal/gc/main.go')
-rw-r--r-- | src/cmd/compile/internal/gc/main.go | 27 |
1 files changed, 12 insertions, 15 deletions
diff --git a/src/cmd/compile/internal/gc/main.go b/src/cmd/compile/internal/gc/main.go index 368fe1fcab..fa4dba4935 100644 --- a/src/cmd/compile/internal/gc/main.go +++ b/src/cmd/compile/internal/gc/main.go @@ -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() |