Slightly speeds up Asmb2.
Linking cmd/compile with external linking:
Asmb2 190ms ± 2% 182ms ± 2% -4.14% (p=0.000 n=10+9)
Change-Id: I55511d0e7b0511b60f8d02390076f8566bc7d135
Reviewed-on: https://go-review.googlesource.com/c/go/+/240397
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Than McIntosh <thanm@google.com>
elfsym := ld.ElfSymForReloc(ctxt, r.Xsym)
siz := r.Siz()
- xst := ldr.SymType(r.Xsym)
switch r.Type() {
default:
return false
}
case objabi.R_CALL:
if siz == 4 {
- if xst == sym.SDYNIMPORT {
+ if ldr.SymType(r.Xsym) == sym.SDYNIMPORT {
if ctxt.DynlinkingGo() {
ctxt.Out.Write64(uint64(elf.R_X86_64_PLT32) | uint64(elfsym)<<32)
} else {
}
case objabi.R_PCREL:
if siz == 4 {
- if xst == sym.SDYNIMPORT && ldr.SymElfType(r.Xsym) == elf.STT_FUNC {
+ if ldr.SymType(r.Xsym) == sym.SDYNIMPORT && ldr.SymElfType(r.Xsym) == elf.STT_FUNC {
ctxt.Out.Write64(uint64(elf.R_X86_64_PLT32) | uint64(elfsym)<<32)
} else {
ctxt.Out.Write64(uint64(elf.R_X86_64_PC32) | uint64(elfsym)<<32)
elfsym := ld.ElfSymForReloc(ctxt, r.Xsym)
siz := r.Siz()
- xst := ldr.SymType(r.Xsym)
switch r.Type() {
default:
return false
case objabi.R_PCRELDBL, objabi.R_CALL:
isdbl = true
}
- if xst == sym.SDYNIMPORT && (ldr.SymElfType(r.Xsym) == elf.STT_FUNC || r.Type() == objabi.R_CALL) {
+ if ldr.SymType(r.Xsym) == sym.SDYNIMPORT && (ldr.SymElfType(r.Xsym) == elf.STT_FUNC || r.Type() == objabi.R_CALL) {
if isdbl {
switch siz {
case 2: