@@ -1770,6 +1770,7 @@ func buildSSAPkgs(ctx *context, initial []*packages.Package, verbose bool) ([]*a
17701770 prog := ctx .progSSA
17711771 var all []* aPackage
17721772 var errs []* packages.Package
1773+ var createdSSA bool
17731774 packages .Visit (initial , nil , func (p * packages.Package ) {
17741775 if p .Types != nil && ! p .IllTyped {
17751776 pkgPath := p .PkgPath
@@ -1778,7 +1779,10 @@ func buildSSAPkgs(ctx *context, initial []*packages.Package, verbose bool) ([]*a
17781779 return
17791780 }
17801781 var altPkg * packages.Cached
1781- var ssaPkg = createSSAPkg (ctx , prog , p , verbose )
1782+ ssaPkg , created := createSSAPkg (ctx , prog , p , verbose )
1783+ if created {
1784+ createdSSA = true
1785+ }
17821786 if ctx .hasAltPkg (pkgPath ) {
17831787 if altPkg = ctx .dedup .Check (altPkgPathPrefix + pkgPath ); altPkg == nil {
17841788 return
@@ -1812,7 +1816,9 @@ func buildSSAPkgs(ctx *context, initial []*packages.Package, verbose bool) ([]*a
18121816 }
18131817 return nil , fmt .Errorf ("cannot build SSA for packages" )
18141818 }
1815- prog .Build ()
1819+ if createdSSA {
1820+ prog .Build ()
1821+ }
18161822 for _ , pkg := range all {
18171823 fixSSAOrder (pkg .SSA , pkg .Syntax )
18181824 }
@@ -1923,16 +1929,17 @@ func applyPatches(ctx *context, p *packages.Package, verbose bool) {
19231929 }
19241930}
19251931
1926- func createSSAPkg (ctx * context , prog * ssa.Program , p * packages.Package , verbose bool ) * ssa.Package {
1932+ func createSSAPkg (ctx * context , prog * ssa.Program , p * packages.Package , verbose bool ) ( * ssa.Package , bool ) {
19271933 pkgSSA := prog .ImportedPackage (p .ID )
1928- if pkgSSA == nil {
1929- if debugBuild || verbose {
1930- log .Println ("==> BuildSSA" , p .ID )
1931- }
1932- applyPatches (ctx , p , verbose )
1933- pkgSSA = prog .CreatePackage (p .Types , p .Syntax , p .TypesInfo , true )
1934+ if pkgSSA != nil {
1935+ return pkgSSA , false
1936+ }
1937+ if debugBuild || verbose {
1938+ log .Println ("==> BuildSSA" , p .ID )
19341939 }
1935- return pkgSSA
1940+ applyPatches (ctx , p , verbose )
1941+ pkgSSA = prog .CreatePackage (p .Types , p .Syntax , p .TypesInfo , true )
1942+ return pkgSSA , true
19361943}
19371944
19381945/*
0 commit comments