-
Notifications
You must be signed in to change notification settings - Fork 18.3k
Closed
Labels
Milestone
Description
package main type T struct { x interface{} } func bogus1(d interface{}) (*int, *int) { switch d := d.(type) { case nil: return nil, nil case *T: return bogus1(d.x) } panic("x") } 6g -S x.go --- prog list "bogus1" --- 0000 (x.go:7) TEXT bogus1+0(SB),$56-32 0001 (x.go:8) MOVQ d+0(FP),CX 0002 (x.go:8) MOVQ d+8(FP),AX 0003 (x.go:9) MOVQ CX,autotmp_0000+-16(SP) 0004 (x.go:9) MOVQ CX,(SP) 0005 (x.go:9) MOVQ AX,autotmp_0000+-8(SP) 0006 (x.go:9) MOVQ AX,8(SP) 0007 (x.go:9) CALL ,runtime.efacethash+0(SB) 0008 (x.go:9) MOVQ autotmp_0000+-8(SP),BP 0009 (x.go:9) MOVQ autotmp_0000+-16(SP),DX 0010 (x.go:9) MOVL 16(SP),BX 0011 (x.go:9) CMPQ DX,$0 0012 (x.go:9) JNE ,14 0013 (x.go:9) JMP ,25 0014 (x.go:9) CMPL BX,$432690315 0015 (x.go:9) JNE ,40 0016 (x.go:9) MOVQ $type.*"".T+0(SB),(SP) 0017 (x.go:9) MOVQ DX,8(SP) 0018 (x.go:9) MOVQ BP,16(SP) 0019 (x.go:9) CALL ,runtime.assertE2T2+0(SB) 0020 (x.go:9) MOVQ 24(SP),CX 0021 (x.go:9) MOVBQZX 32(SP),BX 0022 (x.go:9) CMPB BX,$0 0023 (x.go:9) JEQ ,40 0024 (x.go:11) JMP ,28 0025 (x.go:10) MOVQ $0,.noname+16(FP) <<< correct location 0026 (x.go:10) MOVQ $0,.noname+24(FP) <<< correct location 0027 (x.go:10) RET , 0028 (x.go:12) LEAQ (CX),BP 0029 (x.go:12) LEAQ (SP),BX 0030 (x.go:12) MOVQ BX,DI 0031 (x.go:12) MOVQ BP,SI 0032 (x.go:12) MOVSQ , 0033 (x.go:12) MOVSQ , 0034 (x.go:12) CALL ,bogus1+0(SB) 0035 (x.go:12) MOVQ 32(SP),BX 0036 (x.go:12) MOVQ BX,.args+32(FP) <<< incorrect location 0037 (x.go:12) MOVQ 40(SP),BX 0038 (x.go:12) MOVQ BX,.args+40(FP) <<< incorrect location 0039 (x.go:12) RET , 0040 (x.go:14) MOVQ $type.string+0(SB),(SP) 0041 (x.go:14) LEAQ go.string."x"+0(SB),BX 0042 (x.go:14) LEAQ 8(SP),BP 0043 (x.go:14) MOVQ BP,DI 0044 (x.go:14) MOVQ BX,SI 0045 (x.go:14) MOVSQ , 0046 (x.go:14) MOVSQ , 0047 (x.go:14) CALL ,runtime.convT2E+0(SB) 0048 (x.go:14) LEAQ 24(SP),BX 0049 (x.go:14) LEAQ (SP),BP 0050 (x.go:14) MOVQ BP,DI 0051 (x.go:14) MOVQ BX,SI 0052 (x.go:14) MOVSQ , 0053 (x.go:14) MOVSQ , 0054 (x.go:14) CALL ,runtime.panic+0(SB) 0055 (x.go:14) UNDEF , 0056 (x.go:15) RET ,