@@ -1774,6 +1774,7 @@ func buildSSAPkgs(ctx *context, initial []*packages.Package, verbose bool) ([]*a
17741774 prog := ctx .progSSA
17751775 var all []* aPackage
17761776 var errs []* packages.Package
1777+ var createdSSA bool
17771778 packages .Visit (initial , nil , func (p * packages.Package ) {
17781779 if p .Types != nil && ! p .IllTyped {
17791780 pkgPath := p .PkgPath
@@ -1782,7 +1783,10 @@ func buildSSAPkgs(ctx *context, initial []*packages.Package, verbose bool) ([]*a
17821783 return
17831784 }
17841785 var altPkg * packages.Cached
1785- var ssaPkg = createSSAPkg (ctx , prog , p , verbose )
1786+ ssaPkg , created := createSSAPkg (ctx , prog , p , verbose )
1787+ if created {
1788+ createdSSA = true
1789+ }
17861790 if ctx .hasAltPkg (pkgPath ) {
17871791 if altPkg = ctx .dedup .Check (altPkgPathPrefix + pkgPath ); altPkg == nil {
17881792 return
@@ -1816,7 +1820,9 @@ func buildSSAPkgs(ctx *context, initial []*packages.Package, verbose bool) ([]*a
18161820 }
18171821 return nil , fmt .Errorf ("cannot build SSA for packages" )
18181822 }
1819- prog .Build ()
1823+ if createdSSA {
1824+ prog .Build ()
1825+ }
18201826 for _ , pkg := range all {
18211827 fixSSAOrder (pkg .SSA , pkg .Syntax )
18221828 }
@@ -1927,16 +1933,17 @@ func applyPatches(ctx *context, p *packages.Package, verbose bool) {
19271933 }
19281934}
19291935
1930- func createSSAPkg (ctx * context , prog * ssa.Program , p * packages.Package , verbose bool ) * ssa.Package {
1936+ func createSSAPkg (ctx * context , prog * ssa.Program , p * packages.Package , verbose bool ) ( * ssa.Package , bool ) {
19311937 pkgSSA := prog .ImportedPackage (p .ID )
1932- if pkgSSA == nil {
1933- if debugBuild || verbose {
1934- log .Println ("==> BuildSSA" , p .ID )
1935- }
1936- applyPatches (ctx , p , verbose )
1937- pkgSSA = prog .CreatePackage (p .Types , p .Syntax , p .TypesInfo , true )
1938+ if pkgSSA != nil {
1939+ return pkgSSA , false
1940+ }
1941+ if debugBuild || verbose {
1942+ log .Println ("==> BuildSSA" , p .ID )
19381943 }
1939- return pkgSSA
1944+ applyPatches (ctx , p , verbose )
1945+ pkgSSA = prog .CreatePackage (p .Types , p .Syntax , p .TypesInfo , true )
1946+ return pkgSSA , true
19401947}
19411948
19421949/*
0 commit comments