• Josh Bleecher Snyder's avatar
    [dev.ssa] cmd/compile: add GOSSAFUNC and GOSSAPKG · d298209b
    Josh Bleecher Snyder authored
    These temporary environment variables make it
    possible to enable using SSA-generated code
    for a particular function or package without
    having to rebuild the compiler.
    
    This makes it possible to start bulk testing
    SSA generated code.
    
    First, bump up the default stack size
    (_StackMin in runtime/stack2.go) to something
    large like 32768, because without stackmaps
    we can't grow stacks.
    
    Then run something like:
    
    for pkg in `go list std`
    do
      GOGC=off GOSSAPKG=`basename $pkg` go test -a $pkg
    done
    
    When a test fails, you can re-run those tests,
    selectively enabling one function after another,
    until you find the one that is causing trouble.
    
    Doing this right now yields some interesting results:
    
    * There are several packages for which we generate
      some code and whose tests pass. Yay!
    
    * We can generate code for encoding/base64, but
      tests there fail, so there's a bug to fix.
    
    * Attempting to build the runtime yields a panic during codegen:
      panic: interface conversion: ssa.Location is nil, not *ssa.LocalSlot
    
    * The top unimplemented codegen items are (simplified):
      59 genValue not implemented: REPMOVSB
      18 genValue not implemented: REPSTOSQ
      14 genValue not implemented: SUBQ
       9 branch not implemented: If v -> b b. Control: XORQconst <bool> [1]
       8 genValue not implemented: MOVQstoreidx8
       4 branch not implemented: If v -> b b. Control: SETG <bool>
       3 branch not implemented: If v -> b b. Control: SETLE <bool>
       2 load flags not implemented: LoadReg8 <flags>
       2 genValue not implemented: InvertFlags <flags>
       1 store flags not implemented: StoreReg8 <flags>
       1 branch not implemented: If v -> b b. Control: SETGE <bool>
    
    Change-Id: Ib64809ac0c917e25bcae27829ae634c70d290c7f
    Reviewed-on: https://go-review.googlesource.com/12547Reviewed-by: default avatarKeith Randall <khr@golang.org>
    d298209b
config.go 2.39 KB