sources
sources
/Users/colinking/dev/src/github.com/colinking/about/f.go
func HelloWorld() {
println("hello, world!")
}
AST
AST
buildssa-enter
buildssa-body
. EMPTY-init
. . CALLFUNC l(4) tc(1) hascall
. . . NAME-runtime.printlock a(true) x(0) class(PFUNC) tc(1) used FUNC-func()
. . CALLFUNC l(4) tc(1) hascall
. . . NAME-runtime.printstring a(true) x(0) class(PFUNC) tc(1) used FUNC-func(string)
. . CALLFUNC-rlist
. . . LITERAL-"hello, world!\n" l(4) tc(1) string
. . CALLFUNC l(4) tc(1) hascall
. . . NAME-runtime.printunlock a(true) x(0) class(PFUNC) tc(1) used FUNC-func()
. EMPTY l(4) tc(1) hascall
buildssa-exit
start
start
b1 :-
v1
(?) = InitMem <mem>
v2
(?) = SP <uintptr>
v3
(?) = SB <uintptr>
v4
(4) = StaticCall <mem>
{runtime.printlock} v1
v5
(?) = OffPtr <*string> [0]
v2
v6
(?) = ConstString <string>
{"hello, world!\n"}
v7
(4 ) = Store <mem> {string}
v5 v6
v4
v8
(4) = StaticCall <mem>
{runtime.printstring} [16] v7
v9
(4) = StaticCall <mem>
{runtime.printunlock} v8
Ret v9
(5)
number lines
number lines [18300 ns]
b1 :-
v1
(?) = InitMem <mem>
v2
(?) = SP <uintptr>
v3
(?) = SB <uintptr>
v4
(+4 ) = StaticCall <mem>
{runtime.printlock} v1
v5
(?) = OffPtr <*string> [0]
v2
v6
(?) = ConstString <string>
{"hello, world!\n"}
v7
(4 ) = Store <mem> {string}
v5 v6
v4
v8
(4) = StaticCall <mem>
{runtime.printstring} [16] v7
v9
(4) = StaticCall <mem>
{runtime.printunlock} v8
Ret v9
(+5 )
early phielim
early phielim [4562 ns]
b1 :-
v1
(?) = InitMem <mem>
v2
(?) = SP <uintptr>
v3
(?) = SB <uintptr>
v4
(+4 ) = StaticCall <mem>
{runtime.printlock} v1
v5
(?) = OffPtr <*string> [0]
v2
v6
(?) = ConstString <string>
{"hello, world!\n"}
v7
(4 ) = Store <mem> {string}
v5 v6
v4
v8
(4) = StaticCall <mem>
{runtime.printstring} [16] v7
v9
(4) = StaticCall <mem>
{runtime.printunlock} v8
Ret v9
(+5 )
early copyelim
early copyelim [695 ns]
b1 :-
v1
(?) = InitMem <mem>
v2
(?) = SP <uintptr>
v3
(?) = SB <uintptr>
v4
(+4 ) = StaticCall <mem>
{runtime.printlock} v1
v5
(?) = OffPtr <*string> [0]
v2
v6
(?) = ConstString <string>
{"hello, world!\n"}
v7
(4 ) = Store <mem> {string}
v5 v6
v4
v8
(4) = StaticCall <mem>
{runtime.printstring} [16] v7
v9
(4) = StaticCall <mem>
{runtime.printunlock} v8
Ret v9
(+5 )
early deadcode
early deadcode [5841 ns]
b1 :-
v1
(?) = InitMem <mem>
v2
(?) = SP <uintptr>
v4
(+4 ) = StaticCall <mem>
{runtime.printlock} v1
v5
(?) = OffPtr <*string> [0]
v2
v6
(?) = ConstString <string>
{"hello, world!\n"}
v7
(4 ) = Store <mem> {string}
v5 v6
v4
v8
(4) = StaticCall <mem>
{runtime.printstring} [16] v7
v9
(4) = StaticCall <mem>
{runtime.printunlock} v8
Ret v9
(+5 )
short circuit
short circuit [5019 ns]
b1 :-
v1
(?) = InitMem <mem>
v2
(?) = SP <uintptr>
v4
(+4 ) = StaticCall <mem>
{runtime.printlock} v1
v5
(?) = OffPtr <*string> [0]
v2
v6
(?) = ConstString <string>
{"hello, world!\n"}
v7
(4 ) = Store <mem> {string}
v5 v6
v4
v8
(4) = StaticCall <mem>
{runtime.printstring} [16] v7
v9
(4) = StaticCall <mem>
{runtime.printunlock} v8
Ret v9
(+5 )
decompose args
decompose args [7926 ns]
b1 :-
v1
(?) = InitMem <mem>
v2
(?) = SP <uintptr>
v4
(+4 ) = StaticCall <mem>
{runtime.printlock} v1
v5
(?) = OffPtr <*string> [0]
v2
v6
(?) = ConstString <string>
{"hello, world!\n"}
v7
(4 ) = Store <mem> {string}
v5 v6
v4
v8
(4) = StaticCall <mem>
{runtime.printstring} [16] v7
v9
(4) = StaticCall <mem>
{runtime.printunlock} v8
Ret v9
(+5 )
decompose user
decompose user [2469 ns]
b1 :-
v1
(?) = InitMem <mem>
v2
(?) = SP <uintptr>
v4
(+4 ) = StaticCall <mem>
{runtime.printlock} v1
v5
(?) = OffPtr <*string> [0]
v2
v6
(?) = ConstString <string>
{"hello, world!\n"}
v7
(4 ) = Store <mem> {string}
v5 v6
v4
v8
(4) = StaticCall <mem>
{runtime.printstring} [16] v7
v9
(4) = StaticCall <mem>
{runtime.printunlock} v8
Ret v9
(+5 )
opt
opt [62815 ns]
b1 :-
v1
(?) = InitMem <mem>
v2
(?) = SP <uintptr>
v4
(+4 ) = StaticCall <mem>
{runtime.printlock} v1
v5
(?) = OffPtr <*string> [0]
v2
v10
(?) = SB <uintptr>
v11
(?) = Const64 <int> [14]
v3
(?) = Addr <*uint8>
{go.string."hello, world!\n"}
v10
v6
(?) = StringMake <string>
v3
v11
v7
(4 ) = Store <mem> {string}
v5 v6
v4
v8
(4) = StaticCall <mem>
{runtime.printstring} [16] v7
v9
(4) = StaticCall <mem>
{runtime.printunlock} v8
Ret v9
(+5 )
zero arg cse
zero arg cse [5220 ns]
b1 :-
v1
(?) = InitMem <mem>
v2
(?) = SP <uintptr>
v4
(+4 ) = StaticCall <mem>
{runtime.printlock} v1
v5
(?) = OffPtr <*string> [0]
v2
v10
(?) = SB <uintptr>
v11
(?) = Const64 <int> [14]
v3
(?) = Addr <*uint8>
{go.string."hello, world!\n"}
v10
v6
(?) = StringMake <string>
v3
v11
v7
(4 ) = Store <mem> {string}
v5 v6
v4
v8
(4) = StaticCall <mem>
{runtime.printstring} [16] v7
v9
(4) = StaticCall <mem>
{runtime.printunlock} v8
Ret v9
(+5 )
opt deadcode
opt deadcode [2161 ns]
b1 :-
v1
(?) = InitMem <mem>
v2
(?) = SP <uintptr>
v4
(+4 ) = StaticCall <mem>
{runtime.printlock} v1
v5
(?) = OffPtr <*string> [0]
v2
v10
(?) = SB <uintptr>
v11
(?) = Const64 <int> [14]
v3
(?) = Addr <*uint8>
{go.string."hello, world!\n"}
v10
v6
(?) = StringMake <string>
v3
v11
v7
(4 ) = Store <mem> {string}
v5 v6
v4
v8
(4) = StaticCall <mem>
{runtime.printstring} [16] v7
v9
(4) = StaticCall <mem>
{runtime.printunlock} v8
Ret v9
(+5 )
generic cse
generic cse [16163 ns]
b1 :-
v1
(?) = InitMem <mem>
v2
(?) = SP <uintptr>
v4
(+4 ) = StaticCall <mem>
{runtime.printlock} v1
v5
(?) = OffPtr <*string> [0]
v2
v10
(?) = SB <uintptr>
v11
(?) = Const64 <int> [14]
v3
(?) = Addr <*uint8>
{go.string."hello, world!\n"}
v10
v6
(?) = StringMake <string>
v3
v11
v7
(4 ) = Store <mem> {string}
v5 v6
v4
v8
(4) = StaticCall <mem>
{runtime.printstring} [16] v7
v9
(4) = StaticCall <mem>
{runtime.printunlock} v8
Ret v9
(+5 )
phiopt
phiopt [263 ns]
b1 :-
v1
(?) = InitMem <mem>
v2
(?) = SP <uintptr>
v4
(+4 ) = StaticCall <mem>
{runtime.printlock} v1
v5
(?) = OffPtr <*string> [0]
v2
v10
(?) = SB <uintptr>
v11
(?) = Const64 <int> [14]
v3
(?) = Addr <*uint8>
{go.string."hello, world!\n"}
v10
v6
(?) = StringMake <string>
v3
v11
v7
(4 ) = Store <mem> {string}
v5 v6
v4
v8
(4) = StaticCall <mem>
{runtime.printstring} [16] v7
v9
(4) = StaticCall <mem>
{runtime.printunlock} v8
Ret v9
(+5 )
nilcheckelim
nilcheckelim [8280 ns]
b1 :-
v1
(?) = InitMem <mem>
v2
(?) = SP <uintptr>
v4
(+4 ) = StaticCall <mem>
{runtime.printlock} v1
v5
(?) = OffPtr <*string> [0]
v2
v10
(?) = SB <uintptr>
v11
(?) = Const64 <int> [14]
v3
(?) = Addr <*uint8>
{go.string."hello, world!\n"}
v10
v6
(?) = StringMake <string>
v3
v11
v7
(4 ) = Store <mem> {string}
v5 v6
v4
v8
(4) = StaticCall <mem>
{runtime.printstring} [16] v7
v9
(4) = StaticCall <mem>
{runtime.printunlock} v8
Ret v9
(+5 )
prove
prove [19894 ns]
b1 :-
v1
(?) = InitMem <mem>
v2
(?) = SP <uintptr>
v4
(+4 ) = StaticCall <mem>
{runtime.printlock} v1
v5
(?) = OffPtr <*string> [0]
v2
v10
(?) = SB <uintptr>
v11
(?) = Const64 <int> [14]
v3
(?) = Addr <*uint8>
{go.string."hello, world!\n"}
v10
v6
(?) = StringMake <string>
v3
v11
v7
(4 ) = Store <mem> {string}
v5 v6
v4
v8
(4) = StaticCall <mem>
{runtime.printstring} [16] v7
v9
(4) = StaticCall <mem>
{runtime.printunlock} v8
Ret v9
(+5 )
fuse plain
fuse plain [2628 ns]
b1 :-
v1
(?) = InitMem <mem>
v2
(?) = SP <uintptr>
v4
(+4 ) = StaticCall <mem>
{runtime.printlock} v1
v5
(?) = OffPtr <*string> [0]
v2
v10
(?) = SB <uintptr>
v11
(?) = Const64 <int> [14]
v3
(?) = Addr <*uint8>
{go.string."hello, world!\n"}
v10
v6
(?) = StringMake <string>
v3
v11
v7
(4 ) = Store <mem> {string}
v5 v6
v4
v8
(4) = StaticCall <mem>
{runtime.printstring} [16] v7
v9
(4) = StaticCall <mem>
{runtime.printunlock} v8
Ret v9
(+5 )
decompose builtin
decompose builtin [27030 ns]
b1 :-
v1
(?) = InitMem <mem>
v2
(?) = SP <uintptr>
v4
(+4 ) = StaticCall <mem>
{runtime.printlock} v1
v5
(?) = OffPtr <*string> [0]
v2
v10
(?) = SB <uintptr>
v11
(?) = Const64 <int> [14]
v12
(4 ) = OffPtr <*int> [8]
v5
v3
(?) = Addr <*uint8>
{go.string."hello, world!\n"}
v10
v13
(4 ) = Store <mem> {*uint8}
v5 v3
v4
v6
(?) = StringMake <string>
v3
v11
v7
(4 ) = Store <mem> {int}
v12
v11
v13
v8
(4) = StaticCall <mem>
{runtime.printstring} [16] v7
v9
(4) = StaticCall <mem>
{runtime.printunlock} v8
Ret v9
(+5 )
softfloat
softfloat [273 ns]
b1 :-
v1
(?) = InitMem <mem>
v2
(?) = SP <uintptr>
v4
(+4 ) = StaticCall <mem>
{runtime.printlock} v1
v5
(?) = OffPtr <*string> [0]
v2
v10
(?) = SB <uintptr>
v11
(?) = Const64 <int> [14]
v12
(4 ) = OffPtr <*int> [8]
v5
v3
(?) = Addr <*uint8>
{go.string."hello, world!\n"}
v10
v13
(4 ) = Store <mem> {*uint8}
v5 v3
v4
v6
(?) = StringMake <string>
v3
v11
v7
(4 ) = Store <mem> {int}
v12
v11
v13
v8
(4) = StaticCall <mem>
{runtime.printstring} [16] v7
v9
(4) = StaticCall <mem>
{runtime.printunlock} v8
Ret v9
(+5 )
late opt
late opt [2061 ns]
b1 :-
v1
(?) = InitMem <mem>
v2
(?) = SP <uintptr>
v4
(+4 ) = StaticCall <mem>
{runtime.printlock} v1
v5
(?) = OffPtr <*string> [0]
v2
v10
(?) = SB <uintptr>
v11
(?) = Const64 <int> [14]
v12
(4 ) = OffPtr <*int> [8]
v2
v3
(?) = Addr <*uint8>
{go.string."hello, world!\n"}
v10
v13
(4 ) = Store <mem> {*uint8}
v5 v3
v4
v6
(?) = StringMake <string>
v3
v11
v7
(4 ) = Store <mem> {int}
v12
v11
v13
v8
(4) = StaticCall <mem>
{runtime.printstring} [16] v7
v9
(4) = StaticCall <mem>
{runtime.printunlock} v8
Ret v9
(+5 )
dead auto elim
dead auto elim [14199 ns]
b1 :-
v1
(?) = InitMem <mem>
v2
(?) = SP <uintptr>
v4
(+4 ) = StaticCall <mem>
{runtime.printlock} v1
v5
(?) = OffPtr <*string> [0]
v2
v10
(?) = SB <uintptr>
v11
(?) = Const64 <int> [14]
v12
(4 ) = OffPtr <*int> [8]
v2
v3
(?) = Addr <*uint8>
{go.string."hello, world!\n"}
v10
v13
(4 ) = Store <mem> {*uint8}
v5 v3
v4
v6
(?) = StringMake <string>
v3
v11
v7
(4 ) = Store <mem> {int}
v12
v11
v13
v8
(4) = StaticCall <mem>
{runtime.printstring} [16] v7
v9
(4) = StaticCall <mem>
{runtime.printunlock} v8
Ret v9
(+5 )
generic deadcode
generic deadcode [2624 ns]
b1 :-
v1
(?) = InitMem <mem>
v2
(?) = SP <uintptr>
v4
(+4 ) = StaticCall <mem>
{runtime.printlock} v1
v5
(?) = OffPtr <*string> [0]
v2
v10
(?) = SB <uintptr>
v11
(?) = Const64 <int> [14]
v12
(4 ) = OffPtr <*int> [8]
v2
v3
(?) = Addr <*uint8>
{go.string."hello, world!\n"}
v10
v13
(4 ) = Store <mem> {*uint8}
v5 v3
v4
v7
(4 ) = Store <mem> {int}
v12
v11
v13
v8
(4) = StaticCall <mem>
{runtime.printstring} [16] v7
v9
(4) = StaticCall <mem>
{runtime.printunlock} v8
Ret v9
(+5 )
check bce
check bce [272 ns]
b1 :-
v1
(?) = InitMem <mem>
v2
(?) = SP <uintptr>
v4
(+4 ) = StaticCall <mem>
{runtime.printlock} v1
v5
(?) = OffPtr <*string> [0]
v2
v10
(?) = SB <uintptr>
v11
(?) = Const64 <int> [14]
v12
(4 ) = OffPtr <*int> [8]
v2
v3
(?) = Addr <*uint8>
{go.string."hello, world!\n"}
v10
v13
(4 ) = Store <mem> {*uint8}
v5 v3
v4
v7
(4 ) = Store <mem> {int}
v12
v11
v13
v8
(4) = StaticCall <mem>
{runtime.printstring} [16] v7
v9
(4) = StaticCall <mem>
{runtime.printunlock} v8
Ret v9
(+5 )
branchelim
branchelim [5170 ns]
b1 :-
v1
(?) = InitMem <mem>
v2
(?) = SP <uintptr>
v4
(+4 ) = StaticCall <mem>
{runtime.printlock} v1
v5
(?) = OffPtr <*string> [0]
v2
v10
(?) = SB <uintptr>
v11
(?) = Const64 <int> [14]
v12
(4 ) = OffPtr <*int> [8]
v2
v3
(?) = Addr <*uint8>
{go.string."hello, world!\n"}
v10
v13
(4 ) = Store <mem> {*uint8}
v5 v3
v4
v7
(4 ) = Store <mem> {int}
v12
v11
v13
v8
(4) = StaticCall <mem>
{runtime.printstring} [16] v7
v9
(4) = StaticCall <mem>
{runtime.printunlock} v8
Ret v9
(+5 )
fuse
fuse [342 ns]
b1 :-
v1
(?) = InitMem <mem>
v2
(?) = SP <uintptr>
v4
(+4 ) = StaticCall <mem>
{runtime.printlock} v1
v5
(?) = OffPtr <*string> [0]
v2
v10
(?) = SB <uintptr>
v11
(?) = Const64 <int> [14]
v12
(4 ) = OffPtr <*int> [8]
v2
v3
(?) = Addr <*uint8>
{go.string."hello, world!\n"}
v10
v13
(4 ) = Store <mem> {*uint8}
v5 v3
v4
v7
(4 ) = Store <mem> {int}
v12
v11
v13
v8
(4) = StaticCall <mem>
{runtime.printstring} [16] v7
v9
(4) = StaticCall <mem>
{runtime.printunlock} v8
Ret v9
(+5 )
dse
dse [7444 ns]
b1 :-
v1
(?) = InitMem <mem>
v2
(?) = SP <uintptr>
v4
(+4 ) = StaticCall <mem>
{runtime.printlock} v1
v5
(?) = OffPtr <*string> [0]
v2
v10
(?) = SB <uintptr>
v11
(?) = Const64 <int> [14]
v12
(4 ) = OffPtr <*int> [8]
v2
v3
(?) = Addr <*uint8>
{go.string."hello, world!\n"}
v10
v13
(4 ) = Store <mem> {*uint8}
v5 v3
v4
v7
(4 ) = Store <mem> {int}
v12
v11
v13
v8
(4) = StaticCall <mem>
{runtime.printstring} [16] v7
v9
(4) = StaticCall <mem>
{runtime.printunlock} v8
Ret v9
(+5 )
writebarrier
writebarrier [932 ns]
b1 :-
v1
(?) = InitMem <mem>
v2
(?) = SP <uintptr>
v4
(+4 ) = StaticCall <mem>
{runtime.printlock} v1
v5
(?) = OffPtr <*string> [0]
v2
v10
(?) = SB <uintptr>
v11
(?) = Const64 <int> [14]
v12
(4 ) = OffPtr <*int> [8]
v2
v3
(?) = Addr <*uint8>
{go.string."hello, world!\n"}
v10
v13
(4 ) = Store <mem> {*uint8}
v5 v3
v4
v7
(4 ) = Store <mem> {int}
v12
v11
v13
v8
(4) = StaticCall <mem>
{runtime.printstring} [16] v7
v9
(4) = StaticCall <mem>
{runtime.printunlock} v8
Ret v9
(+5 )
lower
lower [38093 ns]
b1 :-
v1
(?) = InitMem <mem>
v2
(?) = SP <uintptr>
v4
(+4 ) = CALLstatic <mem>
{runtime.printlock} v1
v10
(?) = SB <uintptr>
v11
(?) = MOVQconst <int> [14]
v12
(4 ) = LEAQ <*int> [8]
v2
v3
(?) = LEAQ <*uint8>
{go.string."hello, world!\n"}
v10
v13
(4 ) = MOVQstore <mem>
v2 v3
v4
v7
(4 ) = MOVQstoreconst <mem>
[val=14,off=8] v2
v13
v8
(4) = CALLstatic <mem>
{runtime.printstring} [16] v7
v9
(4) = CALLstatic <mem>
{runtime.printunlock} v8
Ret v9
(+5 )
lowered cse
lowered cse [4525 ns]
b1 :-
v1
(?) = InitMem <mem>
v2
(?) = SP <uintptr>
v4
(+4 ) = CALLstatic <mem>
{runtime.printlock} v1
v10
(?) = SB <uintptr>
v11
(?) = MOVQconst <int> [14]
v12
(4 ) = LEAQ <*int> [8]
v2
v3
(?) = LEAQ <*uint8>
{go.string."hello, world!\n"}
v10
v13
(4 ) = MOVQstore <mem>
v2 v3
v4
v7
(4 ) = MOVQstoreconst <mem>
[val=14,off=8] v2
v13
v8
(4) = CALLstatic <mem>
{runtime.printstring} [16] v7
v9
(4) = CALLstatic <mem>
{runtime.printunlock} v8
Ret v9
(+5 )
elim unread autos
elim unread autos [1424 ns]
b1 :-
v1
(?) = InitMem <mem>
v2
(?) = SP <uintptr>
v4
(+4 ) = CALLstatic <mem>
{runtime.printlock} v1
v10
(?) = SB <uintptr>
v11
(?) = MOVQconst <int> [14]
v12
(4 ) = LEAQ <*int> [8]
v2
v3
(?) = LEAQ <*uint8>
{go.string."hello, world!\n"}
v10
v13
(4 ) = MOVQstore <mem>
v2 v3
v4
v7
(4 ) = MOVQstoreconst <mem>
[val=14,off=8] v2
v13
v8
(4) = CALLstatic <mem>
{runtime.printstring} [16] v7
v9
(4) = CALLstatic <mem>
{runtime.printunlock} v8
Ret v9
(+5 )
lowered deadcode
lowered deadcode [3209 ns]
b1 :-
v1
(?) = InitMem <mem>
v2
(?) = SP <uintptr>
v4
(+4 ) = CALLstatic <mem>
{runtime.printlock} v1
v10
(?) = SB <uintptr>
v3
(?) = LEAQ <*uint8>
{go.string."hello, world!\n"}
v10
v13
(4 ) = MOVQstore <mem>
v2 v3
v4
v7
(4 ) = MOVQstoreconst <mem>
[val=14,off=8] v2
v13
v8
(4) = CALLstatic <mem>
{runtime.printstring} [16] v7
v9
(4) = CALLstatic <mem>
{runtime.printunlock} v8
Ret v9
(+5 )
checkLower
checkLower [884 ns]
b1 :-
v1
(?) = InitMem <mem>
v2
(?) = SP <uintptr>
v4
(+4 ) = CALLstatic <mem>
{runtime.printlock} v1
v10
(?) = SB <uintptr>
v3
(?) = LEAQ <*uint8>
{go.string."hello, world!\n"}
v10
v13
(4 ) = MOVQstore <mem>
v2 v3
v4
v7
(4 ) = MOVQstoreconst <mem>
[val=14,off=8] v2
v13
v8
(4) = CALLstatic <mem>
{runtime.printstring} [16] v7
v9
(4) = CALLstatic <mem>
{runtime.printunlock} v8
Ret v9
(+5 )
late phielim
late phielim [408 ns]
b1 :-
v1
(?) = InitMem <mem>
v2
(?) = SP <uintptr>
v4
(+4 ) = CALLstatic <mem>
{runtime.printlock} v1
v10
(?) = SB <uintptr>
v3
(?) = LEAQ <*uint8>
{go.string."hello, world!\n"}
v10
v13
(4 ) = MOVQstore <mem>
v2 v3
v4
v7
(4 ) = MOVQstoreconst <mem>
[val=14,off=8] v2
v13
v8
(4) = CALLstatic <mem>
{runtime.printstring} [16] v7
v9
(4) = CALLstatic <mem>
{runtime.printunlock} v8
Ret v9
(+5 )
late copyelim
late copyelim [314 ns]
b1 :-
v1
(?) = InitMem <mem>
v2
(?) = SP <uintptr>
v4
(+4 ) = CALLstatic <mem>
{runtime.printlock} v1
v10
(?) = SB <uintptr>
v3
(?) = LEAQ <*uint8>
{go.string."hello, world!\n"}
v10
v13
(4 ) = MOVQstore <mem>
v2 v3
v4
v7
(4 ) = MOVQstoreconst <mem>
[val=14,off=8] v2
v13
v8
(4) = CALLstatic <mem>
{runtime.printstring} [16] v7
v9
(4) = CALLstatic <mem>
{runtime.printunlock} v8
Ret v9
(+5 )
tighten
tighten [18168 ns]
b1 :-
v1
(?) = InitMem <mem>
v2
(?) = SP <uintptr>
v4
(+4 ) = CALLstatic <mem>
{runtime.printlock} v1
v10
(?) = SB <uintptr>
v3
(?) = LEAQ <*uint8>
{go.string."hello, world!\n"}
v10
v13
(4 ) = MOVQstore <mem>
v2 v3
v4
v7
(4 ) = MOVQstoreconst <mem>
[val=14,off=8] v2
v13
v8
(4) = CALLstatic <mem>
{runtime.printstring} [16] v7
v9
(4) = CALLstatic <mem>
{runtime.printunlock} v8
Ret v9
(+5 )
phi tighten
phi tighten [214 ns]
b1 :-
v1
(?) = InitMem <mem>
v2
(?) = SP <uintptr>
v4
(+4 ) = CALLstatic <mem>
{runtime.printlock} v1
v10
(?) = SB <uintptr>
v3
(?) = LEAQ <*uint8>
{go.string."hello, world!\n"}
v10
v13
(4 ) = MOVQstore <mem>
v2 v3
v4
v7
(4 ) = MOVQstoreconst <mem>
[val=14,off=8] v2
v13
v8
(4) = CALLstatic <mem>
{runtime.printstring} [16] v7
v9
(4) = CALLstatic <mem>
{runtime.printunlock} v8
Ret v9
(+5 )
late deadcode
late deadcode [1637 ns]
b1 :-
v1
(?) = InitMem <mem>
v2
(?) = SP <uintptr>
v4
(+4 ) = CALLstatic <mem>
{runtime.printlock} v1
v10
(?) = SB <uintptr>
v3
(?) = LEAQ <*uint8>
{go.string."hello, world!\n"}
v10
v13
(4 ) = MOVQstore <mem>
v2 v3
v4
v7
(4 ) = MOVQstoreconst <mem>
[val=14,off=8] v2
v13
v8
(4) = CALLstatic <mem>
{runtime.printstring} [16] v7
v9
(4) = CALLstatic <mem>
{runtime.printunlock} v8
Ret v9
(+5 )
critical
critical [489 ns]
b1 :-
v1
(?) = InitMem <mem>
v2
(?) = SP <uintptr>
v4
(+4 ) = CALLstatic <mem>
{runtime.printlock} v1
v10
(?) = SB <uintptr>
v3
(?) = LEAQ <*uint8>
{go.string."hello, world!\n"}
v10
v13
(4 ) = MOVQstore <mem>
v2 v3
v4
v7
(4 ) = MOVQstoreconst <mem>
[val=14,off=8] v2
v13
v8
(4) = CALLstatic <mem>
{runtime.printstring} [16] v7
v9
(4) = CALLstatic <mem>
{runtime.printunlock} v8
Ret v9
(+5 )
likelyadjust
likelyadjust [702 ns]
b1 :-
v1
(?) = InitMem <mem>
v2
(?) = SP <uintptr>
v4
(+4 ) = CALLstatic <mem>
{runtime.printlock} v1
v10
(?) = SB <uintptr>
v3
(?) = LEAQ <*uint8>
{go.string."hello, world!\n"}
v10
v13
(4 ) = MOVQstore <mem>
v2 v3
v4
v7
(4 ) = MOVQstoreconst <mem>
[val=14,off=8] v2
v13
v8
(4) = CALLstatic <mem>
{runtime.printstring} [16] v7
v9
(4) = CALLstatic <mem>
{runtime.printunlock} v8
Ret v9
(+5 )
layout
layout [1589 ns]
b1 :-
v1
(?) = InitMem <mem>
v2
(?) = SP <uintptr>
v4
(+4 ) = CALLstatic <mem>
{runtime.printlock} v1
v10
(?) = SB <uintptr>
v3
(?) = LEAQ <*uint8>
{go.string."hello, world!\n"}
v10
v13
(4 ) = MOVQstore <mem>
v2 v3
v4
v7
(4 ) = MOVQstoreconst <mem>
[val=14,off=8] v2
v13
v8
(4) = CALLstatic <mem>
{runtime.printstring} [16] v7
v9
(4) = CALLstatic <mem>
{runtime.printunlock} v8
Ret v9
(+5 )
schedule
schedule [6530 ns]
b1 :-
v1
(?) = InitMem <mem>
v4
(+4 ) = CALLstatic <mem>
{runtime.printlock} v1
v10
(?) = SB <uintptr>
v3
(?) = LEAQ <*uint8>
{go.string."hello, world!\n"}
v10
v2
(?) = SP <uintptr>
v13
(4 ) = MOVQstore <mem>
v2 v3
v4
v7
(4 ) = MOVQstoreconst <mem>
[val=14,off=8] v2
v13
v8
(4) = CALLstatic <mem>
{runtime.printstring} [16] v7
v9
(4) = CALLstatic <mem>
{runtime.printunlock} v8
Ret v9
(+5 )
late nilcheck
late nilcheck [1573 ns]
b1 :-
v1
(?) = InitMem <mem>
v4
(+4 ) = CALLstatic <mem>
{runtime.printlock} v1
v10
(?) = SB <uintptr>
v3
(?) = LEAQ <*uint8>
{go.string."hello, world!\n"}
v10
v2
(?) = SP <uintptr>
v13
(4 ) = MOVQstore <mem>
v2 v3
v4
v7
(4 ) = MOVQstoreconst <mem>
[val=14,off=8] v2
v13
v8
(4) = CALLstatic <mem>
{runtime.printstring} [16] v7
v9
(4) = CALLstatic <mem>
{runtime.printunlock} v8
Ret v9
(+5 )
flagalloc
flagalloc [4223 ns]
b1 :-
v1
(?) = InitMem <mem>
v4
(+4 ) = CALLstatic <mem>
{runtime.printlock} v1
v10
(?) = SB <uintptr>
v3
(?) = LEAQ <*uint8>
{go.string."hello, world!\n"}
v10
v2
(?) = SP <uintptr>
v13
(4 ) = MOVQstore <mem>
v2 v3
v4
v7
(4 ) = MOVQstoreconst <mem>
[val=14,off=8] v2
v13
v8
(4) = CALLstatic <mem>
{runtime.printstring} [16] v7
v9
(4) = CALLstatic <mem>
{runtime.printunlock} v8
Ret v9
(+5 )
regalloc
regalloc [51730 ns]
b1 :-
v1
(?) = InitMem <mem>
v4
(+4 ) = CALLstatic <mem>
{runtime.printlock} v1
v10
(?) = SB <uintptr> : SB
v2
(?) = SP <uintptr> : SP
v12
(4 ) = LEAQ <*uint8>
{go.string."hello, world!\n"}
v10 : AX
v13
(4 ) = MOVQstore <mem>
v2 v12
v4
v7
(4 ) = MOVQstoreconst <mem>
[val=14,off=8] v2
v13
v8
(4) = CALLstatic <mem>
{runtime.printstring} [16] v7
v9
(4) = CALLstatic <mem>
{runtime.printunlock} v8
Ret v9
(+5 )
loop rotate
loop rotate [330 ns]
b1 :-
v1
(?) = InitMem <mem>
v4
(+4 ) = CALLstatic <mem>
{runtime.printlock} v1
v10
(?) = SB <uintptr> : SB
v2
(?) = SP <uintptr> : SP
v12
(4 ) = LEAQ <*uint8>
{go.string."hello, world!\n"}
v10 : AX
v13
(4 ) = MOVQstore <mem>
v2 v12
v4
v7
(4 ) = MOVQstoreconst <mem>
[val=14,off=8] v2
v13
v8
(4) = CALLstatic <mem>
{runtime.printstring} [16] v7
v9
(4) = CALLstatic <mem>
{runtime.printunlock} v8
Ret v9
(+5 )
stackframe
stackframe [3117 ns]
b1 :-
v1
(?) = InitMem <mem>
v4
(+4 ) = CALLstatic <mem>
{runtime.printlock} v1
v10
(?) = SB <uintptr> : SB
v2
(?) = SP <uintptr> : SP
v12
(4 ) = LEAQ <*uint8>
{go.string."hello, world!\n"}
v10 : AX
v13
(4 ) = MOVQstore <mem>
v2 v12
v4
v7
(4 ) = MOVQstoreconst <mem>
[val=14,off=8] v2
v13
v8
(4) = CALLstatic <mem>
{runtime.printstring} [16] v7
v9
(4) = CALLstatic <mem>
{runtime.printunlock} v8
Ret v9
(+5 )
trim
trim [548 ns]
b1 :-
v1
(?) = InitMem <mem>
v4
(+4 ) = CALLstatic <mem>
{runtime.printlock} v1
v10
(?) = SB <uintptr> : SB
v2
(?) = SP <uintptr> : SP
v12
(4 ) = LEAQ <*uint8>
{go.string."hello, world!\n"}
v10 : AX
v13
(4 ) = MOVQstore <mem>
v2 v12
v4
v7
(4 ) = MOVQstoreconst <mem>
[val=14,off=8] v2
v13
v8
(4) = CALLstatic <mem>
{runtime.printstring} [16] v7
v9
(4) = CALLstatic <mem>
{runtime.printunlock} v8
Ret v9
(+5 )
genssa
genssa
# /Users/colinking/dev/src/github.com/colinking/about/f.go
00000 (3) TEXT "".HelloWorld(SB),
ABIInternal
00001 (3) FUNCDATA $0,
gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
00002 (3) FUNCDATA $1,
gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
00003 (3) FUNCDATA $3,
gclocals·9fb7f0986f647f17cb53dda1484e0f7a(SB)
v4
00004 (+4 ) PCDATA $2, $0
v4
00005 (+4 ) PCDATA $0, $0
v4
00006 (4) CALL runtime.printlock(SB)
v12
00007 (4 ) PCDATA $2, $1
v12
00008 (4 ) LEAQ go.string."hello,
world!\n"(SB), AX
v13
00009 (4 ) PCDATA $2, $0
v13
00010 (4 ) MOVQ AX, (SP)
v7
00011 (4 ) MOVQ $14, 8(SP)
v8
00012 (4) CALL runtime.printstring(SB)
v9
00013 (4) CALL runtime.printunlock(SB)
b1
00014 (+5 ) RET
00015 (?) END