OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [go.test/] [test/] [reorder.go] - Rev 700

Compare with Previous | Blame | View Log

// $G $D/$F.go && $L $F.$A && ./$A.out

// Copyright 2011 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.

// Check reordering of assignments.

package main

import "fmt"

func main() {
        p1()
        p2()
        p3()
        p4()
        p5()
        p6()
        p7()
        p8()
}

var gx []int

func f(i int) int {
        return gx[i]
}

func check(x []int, x0, x1, x2 int) {
        if x[0] != x0 || x[1] != x1 || x[2] != x2 {
                fmt.Printf("%v, want %d,%d,%d\n", x, x0, x1, x2)
                panic("failed")
        }
}

func check3(x, y, z, xx, yy, zz int) {
        if x != xx || y != yy || z != zz {
                fmt.Printf("%d,%d,%d, want %d,%d,%d\n", x, y, z, xx, yy, zz)
                panic("failed")
        }
}

func p1() {
        x := []int{1,2,3}
        i := 0
        i, x[i] = 1, 100
        _ = i
        check(x, 100, 2, 3)
}

func p2() {
        x := []int{1,2,3}
        i := 0
        x[i], i = 100, 1
        _ = i
        check(x, 100, 2, 3)
}

func p3() {
        x := []int{1,2,3}
        y := x
        gx = x
        x[1], y[0] = f(0), f(1)
        check(x, 2, 1, 3)
}

func p4() {
        x := []int{1,2,3}
        y := x
        gx = x
        x[1], y[0] = gx[0], gx[1]
        check(x, 2, 1, 3)
}

func p5() {
        x := []int{1,2,3}
        y := x
        p := &x[0]
        q := &x[1]
        *p, *q = x[1], y[0]
        check(x, 2, 1, 3)
}

func p6() {
        x := 1
        y := 2
        z := 3
        px := &x
        py := &y
        *px, *py = y, x
        check3(x, y, z, 2, 1, 3)        
}

func f1(x, y, z int) (xx, yy, zz int) {
        return x, y, z
}

func f2() (x, y, z int) {
        return f1(2, 1, 3)
}

func p7() {
        x, y, z := f2()
        check3(x, y, z, 2, 1, 3)
}

func p8() {
        x := []int{1,2,3}

        defer func() {
                err := recover()
                if err == nil {
                        panic("not panicking")
                }
                check(x, 100, 2, 3)
        }()

        i := 0
        i, x[i], x[5] = 1, 100, 500
}

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.