]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.ssa] cmd/compile: fix build
authorJosh Bleecher Snyder <josharian@gmail.com>
Sun, 6 Sep 2015 22:04:46 +0000 (15:04 -0700)
committerJosh Bleecher Snyder <josharian@gmail.com>
Sun, 6 Sep 2015 22:08:14 +0000 (22:08 +0000)
CL 14337 made SSA support fixedbugs/issue9604b.go.
That test contains > 40k blocks.
This made the O(n^2) dom algorithm fail to terminate
in a reasonable length of time, breaking the build.

For the moment, cap the number of blocks
to fix the build.

This will be reverted when a more efficient
dom algorithm is put in place,
which will be soon.

Change-Id: Ia66c2629481d29d06655ec54d1deff076b0422c6
Reviewed-on: https://go-review.googlesource.com/14342
Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
src/cmd/compile/internal/ssa/cse.go

index 836a7803acb53b5fff80c62d059819608a1c50b9..003530a9d309bc64189010f6e98de15a5868116a 100644 (file)
@@ -10,6 +10,11 @@ import "sort"
 // Values are just relinked, nothing is deleted.  A subsequent deadcode
 // pass is required to actually remove duplicate expressions.
 func cse(f *Func) {
+       if f.NumBlocks() > 10000 {
+               f.Unimplementedf("too many blocks: %d", f.NumBlocks())
+               return
+       }
+
        // Two values are equivalent if they satisfy the following definition:
        // equivalent(v, w):
        //   v.op == w.op