aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/compile/internal/gc/main.go
diff options
context:
space:
mode:
authorMatthew Dempsky <mdempsky@google.com>2020-12-13 23:01:34 -0800
committerMatthew Dempsky <mdempsky@google.com>2020-12-15 07:16:12 +0000
commit305d93ef84aed971145b3aa1bce1f9f389bc90c0 (patch)
tree4b9eea25ac7ef35bfe8db53e06dcf91561595ea8 /src/cmd/compile/internal/gc/main.go
parent9f16620f46fc51ff1c8182b440bd60f97eb35278 (diff)
downloadgo-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.go27
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()