]> Cypherpunks.ru repositories - gostls13.git/commitdiff
[dev.typeparams] all: merge dev.regabi (37f138d) into dev.typeparams
authorRuss Cox <rsc@golang.org>
Wed, 23 Dec 2020 06:43:22 +0000 (01:43 -0500)
committerRuss Cox <rsc@golang.org>
Wed, 23 Dec 2020 06:43:22 +0000 (01:43 -0500)
Conflicts:

* src/cmd/compile/fmtmap_test.go
* src/cmd/compile/internal/gc/go.go
* src/cmd/compile/internal/gc/main.go
* src/cmd/compile/internal/noder/noder.go

Merge List:

* 2020-12-23 37f138df6b [dev.regabi] cmd/compile: split out package test [generated]
* 2020-12-23 3d8a3cb06b [dev.regabi] cmd/compile: split out package pkginit [generated]
* 2020-12-23 3f04d964ab [dev.regabi] cmd/compile: split up walkexpr1, walkstmt [generated]
* 2020-12-23 e4895ab4c0 [dev.regabi] cmd/compile: split out package walk [generated]
* 2020-12-23 01fd2d05c8 [dev.regabi] cmd/compile: split out package dwarfgen [generated]
* 2020-12-23 6c34d2f420 [dev.regabi] cmd/compile: split out package ssagen [generated]
* 2020-12-23 de65151e50 [dev.regabi] cmd/compile: split out package reflectdata [generated]
* 2020-12-23 4dfb5d91a8 [dev.regabi] cmd/compile: split out package staticdata [generated]
* 2020-12-23 fbc82f03b1 [dev.regabi] cmd/compile: split out package noder [generated]
* 2020-12-23 de454eef5f [dev.regabi] cmd/compile: split out package escape [generated]
* 2020-12-23 071ab0a14c [dev.regabi] cmd/compile: split out package liveness [generated]
* 2020-12-23 0ced54062e [dev.regabi] cmd/compile: split out package objw [generated]
* 2020-12-23 575fd6ff0a [dev.regabi] cmd/compile: split out package inline [generated]
* 2020-12-23 0256ba99a8 [dev.regabi] cmd/compile: split up typecheck1 [generated]
* 2020-12-23 b9693d7627 [dev.regabi] cmd/compile: split out package typecheck [generated]
* 2020-12-23 dac0de3748 [dev.regabi] cmd/compile: move type size calculations into package types [generated]
* 2020-12-23 527a1895d6 [dev.regabi] cmd/compile: move helpers into package ir [generated]
* 2020-12-23 65c4c6dfb2 [dev.regabi] cmd/compile: group known symbols, packages, names [generated]
* 2020-12-23 9ee309255a [dev.regabi] cmd/compile: move helpers into package types [generated]
* 2020-12-23 ead4957892 [dev.regabi] cmd/compile: move helpers into package base [generated]
* 2020-12-23 440308ffd7 [dev.regabi] cmd/compile: simplify Nodes usage [generated]
* 2020-12-23 f9d373720e [dev.regabi] cmd/compile: remove Left, Right etc methods [generated]
* 2020-12-23 14d667341f [dev.regabi] cmd/compile: remove Node.Left etc [generated]
* 2020-12-23 6f27d29be0 [dev.regabi] cmd/compile: remove ir.Nod [generated]
* 2020-12-23 69cf39089f [dev.regabi] cmd/compile: do not die in early base.FlushErrors

Change-Id: Ic4686e77c6ee38b3cd7d37fc7f3e93aaa9017b7a

1  2 
src/cmd/compile/fmtmap_test.go
src/cmd/compile/internal/base/flag.go
src/cmd/compile/internal/gc/main.go
src/cmd/compile/internal/noder/noder.go
src/cmd/compile/internal/test/dep_test.go

index 9105bac1912455530cd1651d51994420200f9019,a925ec05ace7f064c5346ed4cb73b1d4d088abf6..7663d1e23baae274b7ce53320243df88a676cc0e
@@@ -20,83 -20,56 +20,83 @@@ package main_tes
  // An absent entry means that the format is not recognized as valid.
  // An empty new format means that the format should remain unchanged.
  var knownFormats = map[string]string{
 -      "*bytes.Buffer %s":                             "",
 -      "*cmd/compile/internal/ssa.Block %s":           "",
 -      "*cmd/compile/internal/ssa.Func %s":            "",
 -      "*cmd/compile/internal/ssa.Register %s":        "",
 -      "*cmd/compile/internal/ssa.Value %s":           "",
 -      "*cmd/compile/internal/types.Sym %+v":          "",
 -      "*cmd/compile/internal/types.Sym %S":           "",
 -      "*cmd/compile/internal/types.Type %+v":         "",
 -      "*cmd/compile/internal/types.Type %-S":         "",
 -      "*cmd/compile/internal/types.Type %L":          "",
 -      "*cmd/compile/internal/types.Type %S":          "",
 -      "*cmd/compile/internal/types.Type %s":          "",
 -      "*math/big.Float %f":                           "",
 -      "*math/big.Int %s":                             "",
 -      "[]cmd/compile/internal/syntax.token %s":       "",
 -      "cmd/compile/internal/arm.shift %d":            "",
 -      "cmd/compile/internal/gc.RegIndex %d":          "",
 -      "cmd/compile/internal/ir.Class %d":             "",
 -      "cmd/compile/internal/ir.Node %+v":             "",
 -      "cmd/compile/internal/ir.Node %L":              "",
 -      "cmd/compile/internal/ir.Nodes %+v":            "",
 -      "cmd/compile/internal/ir.Nodes %.v":            "",
 -      "cmd/compile/internal/ir.Op %+v":               "",
 -      "cmd/compile/internal/ssa.Aux %#v":             "",
 -      "cmd/compile/internal/ssa.Aux %q":              "",
 -      "cmd/compile/internal/ssa.Aux %s":              "",
 -      "cmd/compile/internal/ssa.BranchPrediction %d": "",
 -      "cmd/compile/internal/ssa.ID %d":               "",
 -      "cmd/compile/internal/ssa.LocalSlot %s":        "",
 -      "cmd/compile/internal/ssa.Location %s":         "",
 -      "cmd/compile/internal/ssa.Op %s":               "",
 -      "cmd/compile/internal/ssa.ValAndOff %s":        "",
 -      "cmd/compile/internal/ssa.flagConstant %s":     "",
 -      "cmd/compile/internal/ssa.rbrank %d":           "",
 -      "cmd/compile/internal/ssa.regMask %d":          "",
 -      "cmd/compile/internal/ssa.register %d":         "",
 -      "cmd/compile/internal/ssa.relation %s":         "",
 -      "cmd/compile/internal/syntax.Error %q":         "",
 -      "cmd/compile/internal/syntax.Expr %#v":         "",
 -      "cmd/compile/internal/syntax.LitKind %d":       "",
 -      "cmd/compile/internal/syntax.Operator %s":      "",
 -      "cmd/compile/internal/syntax.Pos %s":           "",
 -      "cmd/compile/internal/syntax.position %s":      "",
 -      "cmd/compile/internal/syntax.token %q":         "",
 -      "cmd/compile/internal/syntax.token %s":         "",
 -      "cmd/compile/internal/types.Kind %d":           "",
 -      "cmd/compile/internal/types.Kind %s":           "",
 -      "cmd/compile/internal/walk.initKind %d":        "",
 -      "go/constant.Value %#v":                        "",
 -      "math/big.Accuracy %s":                         "",
 -      "reflect.Type %s":                              "",
 -      "time.Duration %d":                             "",
 +      "*bytes.Buffer %s":                                                               "",
 +      "*cmd/compile/internal/ssa.Block %s":                                             "",
 +      "*cmd/compile/internal/ssa.Func %s":                                              "",
 +      "*cmd/compile/internal/ssa.Register %s":                                          "",
 +      "*cmd/compile/internal/ssa.Value %s":                                             "",
 +      "*cmd/compile/internal/syntax.CallExpr %s":                                       "",
 +      "*cmd/compile/internal/syntax.FuncLit %s":                                        "",
 +      "*cmd/compile/internal/syntax.IndexExpr %s":                                      "",
 +      "*cmd/compile/internal/types.Sym %+v":                                            "",
 +      "*cmd/compile/internal/types.Sym %S":                                             "",
 +      "*cmd/compile/internal/types.Type %+v":                                           "",
 +      "*cmd/compile/internal/types.Type %-S":                                           "",
 +      "*cmd/compile/internal/types.Type %L":                                            "",
 +      "*cmd/compile/internal/types.Type %S":                                            "",
 +      "*cmd/compile/internal/types.Type %s":                                            "",
 +      "*cmd/compile/internal/types2.Basic %s":                                          "",
 +      "*cmd/compile/internal/types2.Chan %s":                                           "",
 +      "*cmd/compile/internal/types2.Func %s":                                           "",
 +      "*cmd/compile/internal/types2.Initializer %s":                                    "",
 +      "*cmd/compile/internal/types2.Interface %s":                                      "",
 +      "*cmd/compile/internal/types2.MethodSet %s":                                      "",
 +      "*cmd/compile/internal/types2.Named %s":                                          "",
 +      "*cmd/compile/internal/types2.Package %s":                                        "",
 +      "*cmd/compile/internal/types2.Selection %s":                                      "",
 +      "*cmd/compile/internal/types2.Signature %s":                                      "",
 +      "*cmd/compile/internal/types2.TypeName %s":                                       "",
 +      "*cmd/compile/internal/types2.TypeParam %s":                                      "",
 +      "*cmd/compile/internal/types2.Var %s":                                            "",
 +      "*cmd/compile/internal/types2.operand %s":                                        "",
 +      "*cmd/compile/internal/types2.substMap %s":                                       "",
 +      "*math/big.Float %f":                                                             "",
 +      "*math/big.Int %s":                                                               "",
 +      "[]*cmd/compile/internal/types2.TypeName %s":                                     "",
 +      "[]cmd/compile/internal/syntax.token %s":                                         "",
 +      "[]cmd/compile/internal/types2.Type %s":                                          "",
 +      "cmd/compile/internal/arm.shift %d":                                              "",
 +      "cmd/compile/internal/gc.RegIndex %d":                                            "",
-       "cmd/compile/internal/gc.initKind %d":                                            "",
 +      "cmd/compile/internal/ir.Class %d":                                               "",
 +      "cmd/compile/internal/ir.Node %+v":                                               "",
 +      "cmd/compile/internal/ir.Node %L":                                                "",
 +      "cmd/compile/internal/ir.Nodes %+v":                                              "",
 +      "cmd/compile/internal/ir.Nodes %.v":                                              "",
 +      "cmd/compile/internal/ir.Op %+v":                                                 "",
 +      "cmd/compile/internal/ssa.Aux %#v":                                               "",
 +      "cmd/compile/internal/ssa.Aux %q":                                                "",
 +      "cmd/compile/internal/ssa.Aux %s":                                                "",
 +      "cmd/compile/internal/ssa.BranchPrediction %d":                                   "",
 +      "cmd/compile/internal/ssa.ID %d":                                                 "",
 +      "cmd/compile/internal/ssa.LocalSlot %s":                                          "",
 +      "cmd/compile/internal/ssa.Location %s":                                           "",
 +      "cmd/compile/internal/ssa.Op %s":                                                 "",
 +      "cmd/compile/internal/ssa.ValAndOff %s":                                          "",
 +      "cmd/compile/internal/ssa.flagConstant %s":                                       "",
 +      "cmd/compile/internal/ssa.rbrank %d":                                             "",
 +      "cmd/compile/internal/ssa.regMask %d":                                            "",
 +      "cmd/compile/internal/ssa.register %d":                                           "",
 +      "cmd/compile/internal/ssa.relation %s":                                           "",
 +      "cmd/compile/internal/syntax.ChanDir %d":                                         "",
 +      "cmd/compile/internal/syntax.Error %q":                                           "",
 +      "cmd/compile/internal/syntax.Expr %#v":                                           "",
 +      "cmd/compile/internal/syntax.Expr %s":                                            "",
 +      "cmd/compile/internal/syntax.LitKind %d":                                         "",
 +      "cmd/compile/internal/syntax.Operator %s":                                        "",
 +      "cmd/compile/internal/syntax.Pos %s":                                             "",
 +      "cmd/compile/internal/syntax.position %s":                                        "",
 +      "cmd/compile/internal/syntax.token %q":                                           "",
 +      "cmd/compile/internal/syntax.token %s":                                           "",
 +      "cmd/compile/internal/types.Kind %d":                                             "",
 +      "cmd/compile/internal/types.Kind %s":                                             "",
 +      "cmd/compile/internal/types2.Object %s":                                          "",
 +      "cmd/compile/internal/types2.Type %s":                                            "",
 +      "cmd/compile/internal/types2.color %s":                                           "",
++      "cmd/compile/internal/walk.initKind %d":                                          "",
 +      "go/constant.Value %#v":                                                          "",
 +      "go/constant.Value %s":                                                           "",
 +      "map[*cmd/compile/internal/types2.TypeParam]cmd/compile/internal/types2.Type %s": "",
 +      "math/big.Accuracy %s":                                                           "",
 +      "reflect.Type %s":                                                                "",
 +      "time.Duration %d":                                                               "",
  }
Simple merge
index b9454604f0d5814289d7d15f6a11a28d76dfc517,8483c87a38d1061f7a409236f2399ed43ce1a483..c5870c650a2267048b3e341a2e0960158cd53e69
@@@ -186,51 -182,45 +182,51 @@@ func Main(archInit func(*ssagen.ArchInf
                logopt.LogJsonOption(base.Flag.JSON)
        }
  
-       ir.EscFmt = escFmt
-       IsIntrinsicCall = isIntrinsicCall
-       SSADumpInline = ssaDumpInline
-       initSSAEnv()
-       initSSATables()
+       ir.EscFmt = escape.Fmt
+       ir.IsIntrinsicCall = ssagen.IsIntrinsicCall
+       inline.SSADumpInline = ssagen.DumpInline
+       ssagen.InitEnv()
+       ssagen.InitTables()
  
-       Widthptr = thearch.LinkArch.PtrSize
-       Widthreg = thearch.LinkArch.RegSize
-       MaxWidth = thearch.MAXWIDTH
+       types.PtrSize = ssagen.Arch.LinkArch.PtrSize
+       types.RegSize = ssagen.Arch.LinkArch.RegSize
+       types.MaxWidth = ssagen.Arch.MAXWIDTH
        types.TypeLinkSym = func(t *types.Type) *obj.LSym {
-               return typenamesym(t).Linksym()
+               return reflectdata.TypeSym(t).Linksym()
        }
  
-       Target = new(ir.Package)
+       typecheck.Target = new(ir.Package)
  
-       NeedFuncSym = makefuncsym
-       NeedITab = func(t, iface *types.Type) { itabname(t, iface) }
-       NeedRuntimeType = addsignat // TODO(rsc): typenamesym for lock?
+       typecheck.NeedFuncSym = staticdata.NeedFuncSym
+       typecheck.NeedITab = func(t, iface *types.Type) { reflectdata.ITabAddr(t, iface) }
+       typecheck.NeedRuntimeType = reflectdata.NeedRuntimeType // TODO(rsc): typenamesym for lock?
  
-       autogeneratedPos = makePos(src.NewFileBase("<autogenerated>", "<autogenerated>"), 1, 0)
+       base.AutogeneratedPos = makePos(src.NewFileBase("<autogenerated>", "<autogenerated>"), 1, 0)
  
        types.TypeLinkSym = func(t *types.Type) *obj.LSym {
-               return typenamesym(t).Linksym()
+               return reflectdata.TypeSym(t).Linksym()
        }
-       TypecheckInit()
+       typecheck.Init()
  
        // Parse input.
-       timings.Start("fe", "parse")
-       lines := parseFiles(flag.Args())
-       cgoSymABIs()
-       timings.Stop()
-       timings.AddEvent(int64(lines), "lines")
+       base.Timer.Start("fe", "parse")
+       lines := noder.ParseFiles(flag.Args())
+       ssagen.CgoSymABIs()
+       base.Timer.Stop()
+       base.Timer.AddEvent(int64(lines), "lines")
 +      if base.Flag.G != 0 && base.Flag.G < 3 {
 +              // can only parse generic code for now
 +              base.ExitIfErrors()
 +              return
 +      }
 +
-       recordPackageName()
+       dwarfgen.RecordPackageName()
  
        // Typecheck.
-       TypecheckPackage()
+       typecheck.Package()
  
        // With all user code typechecked, it's now safe to verify unused dot imports.
-       checkDotImports()
+       noder.CheckDotImports()
        base.ExitIfErrors()
  
        // Build init task.
index 8beef0d18b0f22f25aa3c500485c8e244ed67fdd,a684673c8f490b56061219b41bb24ec0305d9733..1bebb44e6ce11fd747cfe5ee12423b14d760c248
@@@ -18,11 -17,10 +18,12 @@@ import 
        "unicode/utf8"
  
        "cmd/compile/internal/base"
 +      "cmd/compile/internal/importer"
        "cmd/compile/internal/ir"
        "cmd/compile/internal/syntax"
+       "cmd/compile/internal/typecheck"
        "cmd/compile/internal/types"
 +      "cmd/compile/internal/types2"
        "cmd/internal/objabi"
        "cmd/internal/src"
  )
@@@ -31,7 -29,7 +32,7 @@@
  // Each declaration in every *syntax.File is converted to a syntax tree
  // and its root represented by *Node is appended to Target.Decls.
  // Returns the total count of parsed lines.
- func parseFiles(filenames []string) (lines uint) {
 -func ParseFiles(filenames []string) uint {
++func ParseFiles(filenames []string) (lines uint) {
        noders := make([]*noder, 0, len(filenames))
        // Limit the number of simultaneously open files.
        sem := make(chan struct{}, runtime.GOMAXPROCS(0)+10)
                }(filename)
        }
  
 -      var lines uint
 +      // generic noding phase (using new typechecker)
 +      if base.Flag.G != 0 {
 +              // setup and syntax error reporting
 +              nodersmap := make(map[string]*noder)
 +              var files []*syntax.File
 +              for _, p := range noders {
 +                      for e := range p.err {
 +                              p.errorAt(e.Pos, "%s", e.Msg)
 +                      }
 +
 +                      nodersmap[p.file.Pos().RelFilename()] = p
 +                      files = append(files, p.file)
 +                      lines += p.file.EOF.Line()
 +
 +              }
 +              if base.SyntaxErrors() != 0 {
 +                      base.ErrorExit()
 +              }
 +
 +              // typechecking
 +              conf := types2.Config{
 +                      InferFromConstraints:  true,
 +                      IgnoreBranches:        true, // parser already checked via syntax.CheckBranches mode
 +                      CompilerErrorMessages: true, // use error strings matching existing compiler errors
 +                      Error: func(err error) {
 +                              terr := err.(types2.Error)
 +                              if len(terr.Msg) > 0 && terr.Msg[0] == '\t' {
 +                                      // types2 reports error clarifications via separate
 +                                      // error messages which are indented with a tab.
 +                                      // Ignore them to satisfy tools and tests that expect
 +                                      // only one error in such cases.
 +                                      // TODO(gri) Need to adjust error reporting in types2.
 +                                      return
 +                              }
 +                              p := nodersmap[terr.Pos.RelFilename()]
 +                              base.ErrorfAt(p.makeXPos(terr.Pos), "%s", terr.Msg)
 +                      },
 +                      Importer: &gcimports{
 +                              packages: make(map[string]*types2.Package),
 +                              lookup: func(path string) (io.ReadCloser, error) {
 +                                      file, ok := findpkg(path)
 +                                      if !ok {
 +                                              return nil, fmt.Errorf("can't find import: %q", path)
 +                                      }
 +                                      return os.Open(file)
 +                              },
 +                      },
 +              }
 +              info := types2.Info{
 +                      Types:      make(map[syntax.Expr]types2.TypeAndValue),
 +                      Defs:       make(map[*syntax.Name]types2.Object),
 +                      Uses:       make(map[*syntax.Name]types2.Object),
 +                      Selections: make(map[*syntax.SelectorExpr]*types2.Selection),
 +                      // expand as needed
 +              }
 +              conf.Check(base.Ctxt.Pkgpath, files, &info)
 +              base.ExitIfErrors()
 +              if base.Flag.G < 2 {
 +                      return
 +              }
 +
 +              // noding
 +              for _, p := range noders {
 +                      // errors have already been reported
 +
 +                      p.typeInfo = &info
 +                      p.node()
 +                      lines += p.file.EOF.Line()
 +                      p.file = nil // release memory
 +                      base.ExitIfErrors()
 +
 +                      // Always run testdclstack here, even when debug_dclstack is not set, as a sanity measure.
-                       testdclstack()
++                      types.CheckDclstack()
 +              }
 +
 +              types.LocalPkg.Height = myheight
 +              return
 +      }
 +
 +      // traditional (non-generic) noding phase
        for _, p := range noders {
                for e := range p.err {
                        p.errorAt(e.Pos, "%s", e.Msg)
                if base.SyntaxErrors() != 0 {
                        base.ErrorExit()
                }
 +
                // Always run testdclstack here, even when debug_dclstack is not set, as a sanity measure.
-               testdclstack()
+               types.CheckDclstack()
        }
  
        for _, p := range noders {