mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
Revert "cmd/compile,cmd/asm: simplify recording of branch targets"
This reverts CL 243318. Reason for revert: Seems to be crashing some builders. Change-Id: I2ffc59bc5535be60b884b281c8d0eff4647dc756 Reviewed-on: https://go-review.googlesource.com/c/go/+/251169 Reviewed-by: Bryan C. Mills <bcmills@google.com>
This commit is contained in:
parent
42fd1306ce
commit
26ad27bb02
21 changed files with 134 additions and 142 deletions
|
|
@ -237,19 +237,6 @@ const (
|
|||
TYPE_REGLIST
|
||||
)
|
||||
|
||||
func (a *Addr) Target() *Prog {
|
||||
if a.Type == TYPE_BRANCH && a.Val != nil {
|
||||
return a.Val.(*Prog)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (a *Addr) SetTarget(t *Prog) {
|
||||
if a.Type != TYPE_BRANCH {
|
||||
panic("setting branch target when type is not TYPE_BRANCH")
|
||||
}
|
||||
a.Val = t
|
||||
}
|
||||
|
||||
// Prog describes a single machine instruction.
|
||||
//
|
||||
// The general instruction form is:
|
||||
|
|
@ -268,7 +255,7 @@ func (a *Addr) SetTarget(t *Prog) {
|
|||
// to avoid too much changes in a single swing.
|
||||
// (1) scheme is enough to express any kind of operand combination.
|
||||
//
|
||||
// Jump instructions use the To.Val field to point to the target *Prog,
|
||||
// Jump instructions use the Pcond field to point to the target instruction,
|
||||
// which must be in the same linked list as the jump instruction.
|
||||
//
|
||||
// The Progs for a given function are arranged in a list linked through the Link field.
|
||||
|
|
@ -287,7 +274,7 @@ type Prog struct {
|
|||
From Addr // first source operand
|
||||
RestArgs []Addr // can pack any operands that not fit into {Prog.From, Prog.To}
|
||||
To Addr // destination operand (second is RegTo2 below)
|
||||
Pool *Prog // constant pool entry, for arm,arm64 back ends
|
||||
Pcond *Prog // target of conditional jump
|
||||
Forwd *Prog // for x86 back end
|
||||
Rel *Prog // for x86, arm back ends
|
||||
Pc int64 // for back ends or assembler: virtual or actual program counter, depending on phase
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue