From 95bb89f6dd4d92747bed1fe451379cd2b99ec5b7 Mon Sep 17 00:00:00 2001 From: Josh Bleecher Snyder Date: Sun, 6 Sep 2015 15:04:46 -0700 Subject: [PATCH] [dev.ssa] cmd/compile: fix build 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 --- src/cmd/compile/internal/ssa/cse.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/cmd/compile/internal/ssa/cse.go b/src/cmd/compile/internal/ssa/cse.go index 836a7803ac..003530a9d3 100644 --- a/src/cmd/compile/internal/ssa/cse.go +++ b/src/cmd/compile/internal/ssa/cse.go @@ -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 -- 2.48.1