github.com/euank/go@v0.0.0-20160829210321-495514729181/src/cmd/compile/internal/gc/testdata/regalloc_ssa.go (about)

     1  // run
     2  
     3  // Copyright 2015 The Go Authors. All rights reserved.
     4  // Use of this source code is governed by a BSD-style
     5  // license that can be found in the LICENSE file.
     6  
     7  // Tests phi implementation
     8  
     9  package main
    10  
    11  func phiOverwrite_ssa() int {
    12  	var n int
    13  	for i := 0; i < 10; i++ {
    14  		if i == 6 {
    15  			break
    16  		}
    17  		n = i
    18  	}
    19  	return n
    20  }
    21  
    22  func phiOverwrite() {
    23  	want := 5
    24  	got := phiOverwrite_ssa()
    25  	if got != want {
    26  		println("phiOverwrite_ssa()=", want, ", got", got)
    27  		failed = true
    28  	}
    29  }
    30  
    31  func phiOverwriteBig_ssa() int {
    32  	var a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z int
    33  	a = 1
    34  	for idx := 0; idx < 26; idx++ {
    35  		a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z = b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, a
    36  	}
    37  	return a*1 + b*2 + c*3 + d*4 + e*5 + f*6 + g*7 + h*8 + i*9 + j*10 + k*11 + l*12 + m*13 + n*14 + o*15 + p*16 + q*17 + r*18 + s*19 + t*20 + u*21 + v*22 + w*23 + x*24 + y*25 + z*26
    38  }
    39  
    40  func phiOverwriteBig() {
    41  	want := 1
    42  	got := phiOverwriteBig_ssa()
    43  	if got != want {
    44  		println("phiOverwriteBig_ssa()=", want, ", got", got)
    45  		failed = true
    46  	}
    47  }
    48  
    49  var failed = false
    50  
    51  func main() {
    52  	phiOverwrite()
    53  	phiOverwriteBig()
    54  	if failed {
    55  		panic("failed")
    56  	}
    57  }