Unused PCDATA opcode in go tool compile?

zylthinking@linux:~/code/goc$ go tool compile -S goid.go 
"".Goid STEXT size=70 args=0x8 locals=0x10
        0x0000 00000 (goid.go:21)       TEXT    "".Goid(SB), ABIInternal, $16-8
        0x0000 00000 (goid.go:21)       MOVQ    (TLS), CX
        0x0009 00009 (goid.go:21)       CMPQ    SP, 16(CX)
        0x000d 00013 (goid.go:21)       PCDATA  $0, $-2
        0x000d 00013 (goid.go:21)       JLS     63
        0x000f 00015 (goid.go:21)       PCDATA  $0, $-1
        0x000f 00015 (goid.go:21)       SUBQ    $16, SP
        0x0013 00019 (goid.go:21)       MOVQ    BP, 8(SP)
        0x0018 00024 (goid.go:21)       LEAQ    8(SP), BP
        0x001d 00029 (goid.go:21)       PCDATA  $0, $-2
        0x001d 00029 (goid.go:21)       PCDATA  $1, $-2
        0x001d 00029 (goid.go:21)       FUNCDATA        $0, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
        0x001d 00029 (goid.go:21)       FUNCDATA        $1, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
        0x001d 00029 (goid.go:21)       FUNCDATA        $2, gclocals·9fb7f0986f647f17cb53dda1484e0f7a(SB)
        0x001d 00029 (goid.go:22)       PCDATA  $0, $0
        0x001d 00029 (goid.go:22)       PCDATA  $1, $0
        0x001d 00029 (goid.go:22)       CALL    "".getg(SB)

as above, there two duplicated PCDATA on same PC: 00029
0x001d 00029 (goid.go:21) PCDATA $0, $-2
0x001d 00029 (goid.go:21) PCDATA $1, $-2
0x001d 00029 (goid.go:21) FUNCDATA $0, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
0x001d 00029 (goid.go:21) FUNCDATA $1, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
0x001d 00029 (goid.go:21) FUNCDATA $2, gclocals·9fb7f0986f647f17cb53dda1484e0f7a(SB)
0x001d 00029 (goid.go:22) PCDATA $0, $0
0x001d 00029 (goid.go:22) PCDATA $1, $0

Obviously, the latter one PCDATA $0, $0 will over write the previous PCDATA $0, $-2
Is it an unused line or has some meaning that I don’t know?

And, PCDATA $0, $-2 seems tell runtime it’s unsafe for async preemp, PCDATA $0, $-2 is safe; what is the meaning of PCDATA $0, $0?

I don’t know either
0x001d 00029 (goid.go:21) FUNCDATA $2, gclocals·9fb7f0986f647f17cb53dda1484e0f7a(SB)
0x001d 00029 (goid.go:22) PCDATA $0, $0
why same PC mapped to different lines of source code

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.