]> Cypherpunks.ru repositories - gostls13.git/blobdiff - test/fixedbugs/issue63955.go
cmd/compile: fix findIndVar so it does not match disjointed loop headers
[gostls13.git] / test / fixedbugs / issue63955.go
diff --git a/test/fixedbugs/issue63955.go b/test/fixedbugs/issue63955.go
new file mode 100644 (file)
index 0000000..258e874
--- /dev/null
@@ -0,0 +1,22 @@
+// compile
+
+// Copyright 2023 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package j
+
+func f(try func() int, shouldInc func() bool, N func(int) int) {
+       var n int
+loop: // we want to have 3 preds here, the function entry and both gotos
+       if v := try(); v == 42 || v == 1337 { // the two || are to trick findIndVar
+               if n < 30 { // this aims to be the matched block
+                       if shouldInc() {
+                               n++
+                               goto loop
+                       }
+                       n = N(n) // try to prevent some block joining
+                       goto loop
+               }
+       }
+}