mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
[dev.regabi] cmd/compile: flatten dependency graph [generated]
This CL shuffles a couple functions around to help flatten the package dependency graph somewhat: 1. ssa.LosesStmtMark is only ever used in associated with an objw.Prog, so we might as well move it to that package. This removes a dependency from objw (a relatively low-level utility package that wraps cmd/internal/obj) on ssa (a large and relatively high-level package). 2. Moves liveness.SetTypeBits into a new package typebits. A single-function package is a bit on the silly side, but reflectdata shouldn't need to depend on liveness (nor vice versa). [git-generate] cd src/cmd/compile/internal/ssa rf ' mv LosesStmtMark prog.go mv prog.go cmd/compile/internal/objw ' cd ../liveness rf ' mv SetTypeBits Set mv Set typebits.go rm typebits.go:/Copyright/+4,/^package/-0 mv typebits.go cmd/compile/internal/typebits ' Change-Id: Ic9a983f0ad6c0cf1a537f99889699a8444699e6e Reviewed-on: https://go-review.googlesource.com/c/go/+/280447 Trust: Matthew Dempsky <mdempsky@google.com> Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com>
This commit is contained in:
parent
f8afb8216a
commit
3383b5c74a
6 changed files with 106 additions and 96 deletions
|
|
@ -33,7 +33,6 @@ package objw
|
|||
import (
|
||||
"cmd/compile/internal/base"
|
||||
"cmd/compile/internal/ir"
|
||||
"cmd/compile/internal/ssa"
|
||||
"cmd/internal/obj"
|
||||
"cmd/internal/objabi"
|
||||
"cmd/internal/src"
|
||||
|
|
@ -173,7 +172,7 @@ func (pp *Progs) Prog(as obj.As) *obj.Prog {
|
|||
p.Pos = pp.Pos
|
||||
if pp.Pos.IsStmt() == src.PosIsStmt {
|
||||
// Clear IsStmt for later Progs at this pos provided that as can be marked as a stmt
|
||||
if ssa.LosesStmtMark(as) {
|
||||
if LosesStmtMark(as) {
|
||||
return p
|
||||
}
|
||||
pp.Pos = pp.Pos.WithNotStmt()
|
||||
|
|
@ -216,3 +215,12 @@ func (pp *Progs) SetText(fn *ir.Func) {
|
|||
ptxt.From.Name = obj.NAME_EXTERN
|
||||
ptxt.From.Sym = fn.LSym
|
||||
}
|
||||
|
||||
// LosesStmtMark reports whether a prog with op as loses its statement mark on the way to DWARF.
|
||||
// The attributes from some opcodes are lost in translation.
|
||||
// TODO: this is an artifact of how funcpctab combines information for instructions at a single PC.
|
||||
// Should try to fix it there.
|
||||
func LosesStmtMark(as obj.As) bool {
|
||||
// is_stmt does not work for these; it DOES for ANOP even though that generates no code.
|
||||
return as == obj.APCDATA || as == obj.AFUNCDATA
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue