From patchwork Thu Jul 1 20:52:39 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ian Lance Taylor X-Patchwork-Id: 57597 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) by ozlabs.org (Postfix) with SMTP id 07173B70BD for ; Fri, 2 Jul 2010 06:52:57 +1000 (EST) Received: (qmail 16850 invoked by alias); 1 Jul 2010 20:52:55 -0000 Received: (qmail 16838 invoked by uid 22791); 1 Jul 2010 20:52:54 -0000 X-SWARE-Spam-Status: No, hits=-1.3 required=5.0 tests=AWL, BAYES_40, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, SPF_HELO_PASS, TW_CC, T_RP_MATCHES_RCVD, T_TVD_MIME_NO_HEADERS X-Spam-Check-By: sourceware.org Received: from smtp-out.google.com (HELO smtp-out.google.com) (74.125.121.35) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 01 Jul 2010 20:52:48 +0000 Received: from hpaq6.eem.corp.google.com (hpaq6.eem.corp.google.com [172.25.149.6]) by smtp-out.google.com with ESMTP id o61KqkM0025915 for ; Thu, 1 Jul 2010 13:52:46 -0700 Received: from pvg3 (pvg3.prod.google.com [10.241.210.131]) by hpaq6.eem.corp.google.com with ESMTP id o61Kqi4d009081 for ; Thu, 1 Jul 2010 13:52:44 -0700 Received: by pvg3 with SMTP id 3so209844pvg.4 for ; Thu, 01 Jul 2010 13:52:43 -0700 (PDT) Received: by 10.142.125.20 with SMTP id x20mr71787wfc.39.1278017563621; Thu, 01 Jul 2010 13:52:43 -0700 (PDT) Received: from coign.google.com ([216.239.45.130]) by mx.google.com with ESMTPS id c23sm79919rvf.12.2010.07.01.13.52.41 (version=TLSv1/SSLv3 cipher=RC4-MD5); Thu, 01 Jul 2010 13:52:42 -0700 (PDT) From: Ian Lance Taylor To: gcc-patches@gcc.gnu.org, gofrontend-dev@googlegroups.com Subject: [gccgo] Adjust Go testsuite for libgo changes Date: Thu, 01 Jul 2010 13:52:39 -0700 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1 (gnu/linux) MIME-Version: 1.0 X-System-Of-Record: true X-IsSubscribed: yes Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org This patch brings in a few changes in the Go testsuite to correspond to the updated libgo I checked in recently. These changes are just copied from the master test suite. Committed to gccgo branch. Ian Index: go.test/test/mallocrep1.go =================================================================== --- go.test/test/mallocrep1.go (revision 160696) +++ go.test/test/mallocrep1.go (working copy) @@ -98,6 +98,7 @@ func atoi(s string) int { } func main() { + runtime.MemProfileRate = 0 // disable profiler flag.Parse() b = make([]*byte, 10000) if flag.NArg() > 0 { Index: go.test/test/const3.go =================================================================== --- go.test/test/const3.go (revision 160696) +++ go.test/test/const3.go (working copy) @@ -10,7 +10,7 @@ import "fmt" type T int -func (t T) String() string { return fmt.Sprintf("T%d", t) } +func (t T) String() string { return fmt.Sprintf("T%d", int(t)) } const ( A T = 1 << (1 << iota) Index: go.test/test/mallocrep.go =================================================================== --- go.test/test/mallocrep.go (revision 160696) +++ go.test/test/mallocrep.go (working copy) @@ -31,8 +31,9 @@ func bigger() { } func main() { - flag.Parse() + runtime.MemProfileRate = 0 // disable profiler runtime.MemStats.Alloc = 0 // ignore stacks + flag.Parse() for i := 0; i < 1<<7; i++ { for j := 1; j <= 1<<22; j <<= 1 { if i == 0 && *chatty { Index: go.test/test/hilbert.go =================================================================== --- go.test/test/hilbert.go (revision 161424) +++ go.test/test/hilbert.go (working copy) @@ -1,166 +0,0 @@ -// $G $D/$F.go && $L $F.$A && ./$A.out - -// Copyright 2009 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. - -// A little test program for rational arithmetics. -// Computes a Hilbert matrix, its inverse, multiplies them -// and verifies that the product is the identity matrix. - -package main - -import Big "bignum" -import Fmt "fmt" - - -func assert(p bool) { - if !p { - panic("assert failed"); - } -} - - -var ( - Zero = Big.Rat(0, 1); - One = Big.Rat(1, 1); -) - - -type Matrix struct { - n, m int; - a []*Big.Rational; -} - - -func (a *Matrix) at(i, j int) *Big.Rational { - assert(0 <= i && i < a.n && 0 <= j && j < a.m); - return a.a[i*a.m + j]; -} - - -func (a *Matrix) set(i, j int, x *Big.Rational) { - assert(0 <= i && i < a.n && 0 <= j && j < a.m); - a.a[i*a.m + j] = x; -} - - -func NewMatrix(n, m int) *Matrix { - assert(0 <= n && 0 <= m); - a := new(Matrix); - a.n = n; - a.m = m; - a.a = make([]*Big.Rational, n*m); - return a; -} - - -func NewUnit(n int) *Matrix { - a := NewMatrix(n, n); - for i := 0; i < n; i++ { - for j := 0; j < n; j++ { - x := Zero; - if i == j { - x = One; - } - a.set(i, j, x); - } - } - return a; -} - - -func NewHilbert(n int) *Matrix { - a := NewMatrix(n, n); - for i := 0; i < n; i++ { - for j := 0; j < n; j++ { - x := Big.Rat(1, int64(i + j + 1)); - a.set(i, j, x); - } - } - return a; -} - - -func MakeRat(x Big.Natural) *Big.Rational { - return Big.MakeRat(Big.MakeInt(false, x), Big.Nat(1)); -} - - -func NewInverseHilbert(n int) *Matrix { - a := NewMatrix(n, n); - for i := 0; i < n; i++ { - for j := 0; j < n; j++ { - x0 := One; - if (i+j)&1 != 0 { - x0 = x0.Neg(); - } - x1 := Big.Rat(int64(i + j + 1), 1); - x2 := MakeRat(Big.Binomial(uint(n+i), uint(n-j-1))); - x3 := MakeRat(Big.Binomial(uint(n+j), uint(n-i-1))); - x4 := MakeRat(Big.Binomial(uint(i+j), uint(i))); - x4 = x4.Mul(x4); - a.set(i, j, x0.Mul(x1).Mul(x2).Mul(x3).Mul(x4)); - } - } - return a; -} - - -func (a *Matrix) Mul(b *Matrix) *Matrix { - assert(a.m == b.n); - c := NewMatrix(a.n, b.m); - for i := 0; i < c.n; i++ { - for j := 0; j < c.m; j++ { - x := Zero; - for k := 0; k < a.m; k++ { - x = x.Add(a.at(i, k).Mul(b.at(k, j))); - } - c.set(i, j, x); - } - } - return c; -} - - -func (a *Matrix) Eql(b *Matrix) bool { - if a.n != b.n || a.m != b.m { - return false; - } - for i := 0; i < a.n; i++ { - for j := 0; j < a.m; j++ { - if a.at(i, j).Cmp(b.at(i,j)) != 0 { - return false; - } - } - } - return true; -} - - -func (a *Matrix) String() string { - s := ""; - for i := 0; i < a.n; i++ { - for j := 0; j < a.m; j++ { - s += Fmt.Sprintf("\t%s", a.at(i, j)); - } - s += "\n"; - } - return s; -} - - -func main() { - n := 10; - a := NewHilbert(n); - b := NewInverseHilbert(n); - I := NewUnit(n); - ab := a.Mul(b); - if !ab.Eql(I) { - Fmt.Println("a =", a); - Fmt.Println("b =", b); - Fmt.Println("a*b =", ab); - Fmt.Println("I =", I); - panic("FAILED"); - } -}