code: func CreateProgram(lprog *loader.Program, mode ssa.BuilderMode) *ssa.Program {
  	prog := ssa.NewProgram(lprog.Fset, mode)
  
  	for _, info := range lprog.AllPackages {
  		if info.TransitivelyErrorFree {
  			prog.CreatePackage(info.Pkg, info.Files, &info.Info, info.Importable)
  		}
  	}
  
  	return prog
  }
docs: // CreateProgram returns a new program in SSA form, given a program
  // loaded from source.  An SSA package is created for each transitively
  // error-free package of lprog.
  //
  // Code for bodies of functions is not built until Build is called
  // on the result.
  //
  // mode controls diagnostics and checking during SSA construction.
  //