From patchwork Tue Nov 5 17:04:21 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Iyer, Balaji V" X-Patchwork-Id: 288585 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]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 250382C032F for ; Wed, 6 Nov 2013 04:04:56 +1100 (EST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:cc:subject:date:message-id:content-type:mime-version; q=dns; s=default; b=M18vylJqfdq0PE2CPppSYX4yNaU5aFI9mfLauEKWg/ro8Ik5dd SAfH+Dmv8JugrPk0P6uX59p8X1U8Jp6mRdKVxUES9xSvBw07PU6B1gUbP4GvBQ7e 1ijXN3CGfAo2Q9nJvS92Ti76wwMI4HxbZtFwHa6hgcrhkavhicD64ip/s= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:cc:subject:date:message-id:content-type:mime-version; s= default; bh=yV2LwN/NGZXTaWf8gv4fArs35pA=; b=qEnJTAG7qlGStphrvECz rNFeeRxjhPhN4c3QRzZ08t6v1omAc+Q/v7TqJuV4CU4K8eg5HYsPMLxqUM6QeV6M 2ajthnsppz9m0Mxg9TppvJQvksWr5jc3d9+ENWFJRwx5+wugjx4W3VskUgDP8yLg Nh/9q8h0ERrYQBgrEfT0zSQ= Received: (qmail 31172 invoked by alias); 5 Nov 2013 17:04:41 -0000 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 Received: (qmail 31160 invoked by uid 89); 5 Nov 2013 17:04:40 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=0.8 required=5.0 tests=AWL, BAYES_50, RDNS_NONE, SPF_PASS, URIBL_BLOCKED autolearn=no version=3.3.2 X-HELO: mga02.intel.com Received: from Unknown (HELO mga02.intel.com) (134.134.136.20) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 05 Nov 2013 17:04:38 +0000 Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga101.jf.intel.com with ESMTP; 05 Nov 2013 09:04:23 -0800 X-ExtLoop1: 1 Received: from fmsmsx105.amr.corp.intel.com ([10.19.9.36]) by orsmga002.jf.intel.com with ESMTP; 05 Nov 2013 09:04:22 -0800 Received: from fmsmsx151.amr.corp.intel.com (10.19.17.220) by FMSMSX105.amr.corp.intel.com (10.19.9.36) with Microsoft SMTP Server (TLS) id 14.3.123.3; Tue, 5 Nov 2013 09:04:22 -0800 Received: from fmsmsx101.amr.corp.intel.com ([169.254.1.24]) by FMSMSX151.amr.corp.intel.com ([169.254.7.23]) with mapi id 14.03.0123.003; Tue, 5 Nov 2013 09:04:22 -0800 From: "Iyer, Balaji V" To: Jakub Jelinek CC: Iain Sandoe , "Joseph S. Myers" , Tobias Burnus , gcc patches Subject: [PATCH] RE: Testsuite / Cilk Plus: Include library path in compile flags in gcc.dg/cilk-plus/cilk-plus.exp Date: Tue, 5 Nov 2013 17:04:21 +0000 Message-ID: MIME-Version: 1.0 X-IsSubscribed: yes Hello Jakub et al., I went through all your emails and the patch above will fix the following issues: 1. Bug in the fib<>.c test case where it should recursively call fib_serial instead of fib() in the serial case. 2. Remove duplicate or unwanted test case flags (e.g. there were cases were -g and "-O0 -g" were both tested, so I took out one of them) 3. Called builtin_abort() instead of returning a non-zero return value for main in the test cases. 4. Reduce the iteration of fib -- the main reason why I had a larger iteration is that we wanted to force a steal, but I already have a test case that will do that. So, if there is any issue in that logic, that code should fail. Also, with all these changes, make check-gcc RUNTESTFLAGS='--target_board=unix/-m32 cilk-plus.exp' and make check-gcc RUNTESTFLAGS='--target_board=unix cilk-plus.exp' runs are significantly faster. Here are the ChangeLog entries: +2013-11-05 Balaji V. Iyer + + * c-c++-common/cilk-plus/CK/fib.c: Reduced the iteration from + 40 to 30. Replaced iteration variable with a #define. Instead of + returning non-zero value for error, called __builtin_abort (). Fixed + a bug of calling fib_serial in serial case instead of fib. + * c-c++-common/cilk-plus/CK/fib_init_expr_xy.c: Likewise. + * c-c++-common/cilk-plus/CK/fib_no_return.c: Likewise. + * c-c++-common/cilk-plus/CK/fib_no_sync.c: Likewise. + * gcc.dg/cilk-plus/cilk-plus.exp: Removed duplicate/un-necessary + compiler flag testing. + Is this Ok to check in? Thanks, Balaji V. Iyer. > -----Original Message----- > From: gcc-patches-owner@gcc.gnu.org [mailto:gcc-patches- > owner@gcc.gnu.org] On Behalf Of Jakub Jelinek > Sent: Tuesday, November 5, 2013 6:33 AM > To: Iyer, Balaji V > Cc: Iain Sandoe; Joseph S. Myers; Tobias Burnus; gcc patches > Subject: Re: Testsuite / Cilk Plus: Include library path in compile flags in > gcc.dg/cilk-plus/cilk-plus.exp > > On Tue, Nov 05, 2013 at 12:21:04PM +0100, Jakub Jelinek wrote: > > Tests that many seconds or more on fast machines, especially if you > > run them > > 25 times, are simply not appropriate for gcc testsuite, at least not > > by default. We have run_expensive_tests (from > GCC_RUN_EXPENSIVE_TESTS > > in environment), which can be used say for: > > /* { dg-additional-options "-DEXPENSIVE" { target run_expensive_tests > > } } */ or // { dg-additional-options "-DASAN_AVOID_EXPENSIVE_TESTS=1" > > { target { ! run_expensive_tests } } } or > > /* { dg-skip-if "" { ! run_expensive_tests } { "*" } { "-O2" } } */ > > (just grep for it), but still it shouldn't be prohibitively slow. > > Remember what is slow on fast machines might turn into days on really > > slow machines. Say, if all you are looking for is look for library > > synchronization issues, I guess all optimization levels still result > > in similar pattern of library calls, so even for run_expensive_tests > > you could use higher iteration count for a single optimization level > > (say -O2) and for all others just use smaller iteration count. > > Oh, another thing, runtime tests should abort () or __builtin_abort () on > failure, rather then just exit with non-zero status. > > Also, I wonder about the fib_* tests, fib_serial calls fib rather than fib_serial, > so effectively the only difference between calling fib_serial and fib is just the > outermost iteration. Also, are you really sure you have to call fib with all > values from 0 up to 40? Isn't it enough to just call fib (40) once and compare > that with precomputed fib (40) number? > Because, when a single test takes about 2 minutes to run, it is really too > much, and very much unnecessarily so. > > Jakub Index: gcc.dg/cilk-plus/cilk-plus.exp =================================================================== --- gcc.dg/cilk-plus/cilk-plus.exp (revision 204396) +++ gcc.dg/cilk-plus/cilk-plus.exp (working copy) @@ -33,52 +33,27 @@ dg-init dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O0 -fcilkplus" " " dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O1 -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O2 -ftree-vectorize -fcilkplus" " " +dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O2 -fcilkplus" " " dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O3 -fcilkplus" " " dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -g -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -g -O0 -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -g -O1 -fcilkplus" " " dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -g -O2 -ftree-vectorize -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -g -O3 -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O3 -ftree-vectorize -fcilkplus -g" " " dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus -std=c99" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus -O0 -std=c99" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus -O1 -std=c99" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus -O2 -ftree-vectorize -std=c99" " " +dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus -O2 -std=c99" " " dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus -O3 -std=c99" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus -g -std=c99" " " dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus -g -O0 -std=c99" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus -g -O1 -std=c99" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus -g -O2 -ftree-vectorize -std=c99" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus -g -O3 -std=c99" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O3 -ftree-vectorize -std=c99 -g -fcilkplus" " " dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -fcilkplus $ALWAYS_CFLAGS " " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O0 -fcilkplus $ALWAYS_CFLAGS" " " dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O1 -fcilkplus $ALWAYS_CFLAGS" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O2 -ftree-vectorize -fcilkplus $ALWAYS_CFLAGS" " " +dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O2 -fcilkplus $ALWAYS_CFLAGS" " " dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O3 -fcilkplus $ALWAYS_CFLAGS" " " dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -g -fcilkplus $ALWAYS_CFLAGS" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -g -O0 -fcilkplus $ALWAYS_CFLAGS" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -g -O1 -fcilkplus $ALWAYS_CFLAGS" " " dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -g -O2 -ftree-vectorize -fcilkplus $ALWAYS_CFLAGS" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -g -O3 -fcilkplus $ALWAYS_CFLAGS" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O3 -ftree-vectorize -fcilkplus -g $ALWAYS_CFLAGS" " " dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -fcilkplus -std=c99 $ALWAYS_CFLAGS" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -fcilkplus -O0 -std=c99 $ALWAYS_CFLAGS" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -fcilkplus -O1 -std=c99 $ALWAYS_CFLAGS" " " dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -fcilkplus -O2 -ftree-vectorize -std=c99 $ALWAYS_CFLAGS" " " dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -fcilkplus -O3 -std=c99 $ALWAYS_CFLAGS" " " dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -fcilkplus -g -std=c99 $ALWAYS_CFLAGS" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -fcilkplus -g -O0 -std=c99 $ALWAYS_CFLAGS" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -fcilkplus -g -O1 -std=c99 $ALWAYS_CFLAGS" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -fcilkplus -g -O2 -ftree-vectorize -std=c99 $ALWAYS_CFLAGS" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -fcilkplus -g -O3 -std=c99 $ALWAYS_CFLAGS" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O3 -ftree-vectorize -std=c99 -g -fcilkplus $ALWAYS_CFLAGS" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O0 -flto -g -fcilkplus $ALWAYS_CFLAGS" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O2 -flto -g -fcilkplus $ALWAYS_CFLAGS" " " +dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -fcilkplus -g -O2 -std=c99 $ALWAYS_CFLAGS" " " dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O3 -flto -g -fcilkplus $ALWAYS_CFLAGS" " " dg-finish Index: c-c++-common/cilk-plus/CK/fib.c =================================================================== --- c-c++-common/cilk-plus/CK/fib.c (revision 204396) +++ c-c++-common/cilk-plus/CK/fib.c (working copy) @@ -9,27 +9,31 @@ int fib (int); int fib_serial (int); +#define FIB_ITERATION 30 + int main(void) { int ii = 0, error = 0; - int fib_result[41], fib_serial_result[41]; + int fib_result[FIB_ITERATION+1], fib_serial_result[FIB_ITERATION+1]; #if HAVE_IO - for (ii = 0; ii <= 40; ii++) + for (ii = 0; ii <= 30; ii++) printf("fib (%2d) = %10d\n", ii, fib (ii)); #else - for (ii = 0; ii <= 40; ii++) + for (ii = 0; ii <= 30; ii++) { fib_result[ii] = fib (ii); fib_serial_result[ii] = fib_serial (ii); } - for (ii = 0; ii <= 40; ii++) + for (ii = 0; ii <= 30; ii++) { if (fib_result[ii] != fib_serial_result[ii]) error = 1; } #endif + if (error != 0) + __builtin_abort (); return error; } @@ -40,8 +44,8 @@ return n; else { - x = fib (n-1); - y = fib (n-2); + x = fib_serial (n-1); + y = fib_serial (n-2); return (x+y); } } Index: c-c++-common/cilk-plus/CK/fib_init_expr_xy.c =================================================================== --- c-c++-common/cilk-plus/CK/fib_init_expr_xy.c (revision 204396) +++ c-c++-common/cilk-plus/CK/fib_init_expr_xy.c (working copy) @@ -9,27 +9,31 @@ int fib (int); int fib_serial (int); +#define FIB_ITERATION 30 + int main(void) { int ii = 0, error = 0; - int fib_result[41], fib_serial_result[41]; + int fib_result[FIB_ITERATION+1], fib_serial_result[FIB_ITERATION+1]; #if HAVE_IO - for (ii = 0; ii <= 40; ii++) + for (ii = 0; ii <= FIB_ITERATION; ii++) printf("fib (%2d) = %10d\n", ii, fib (ii)); #else - for (ii = 0; ii <= 40; ii++) + for (ii = 0; ii <= FIB_ITERATION; ii++) { fib_result[ii] = fib (ii); fib_serial_result[ii] = fib_serial (ii); } - for (ii = 0; ii <= 40; ii++) + for (ii = 0; ii <= FIB_ITERATION; ii++) { if (fib_result[ii] != fib_serial_result[ii]) error = 1; } #endif + if (error != 0) + __builtin_abort (); return error; } @@ -40,8 +44,8 @@ return n; else { - x = fib (n-1); - y = fib (n-2); + x = fib_serial (n-1); + y = fib_serial (n-2); return (x+y); } } Index: c-c++-common/cilk-plus/CK/fib_no_sync.c =================================================================== --- c-c++-common/cilk-plus/CK/fib_no_sync.c (revision 204396) +++ c-c++-common/cilk-plus/CK/fib_no_sync.c (working copy) @@ -6,30 +6,34 @@ #include #endif +#define FIB_ITERATION 30 + int fib (int); int fib_serial (int); int main(void) { int ii = 0, error = 0; - int fib_result[41], fib_serial_result[41]; + int fib_result[FIB_ITERATION+1], fib_serial_result[FIB_ITERATION+1]; #if HAVE_IO - for (ii = 0; ii <= 40; ii++) + for (ii = 0; ii <= FIB_ITERATION; ii++) printf("fib (%2d) = %10d\n", ii, fib (ii)); #else - for (ii = 0; ii <= 40; ii++) + for (ii = 0; ii <= FIB_ITERATION; ii++) { fib_result[ii] = fib (ii); fib_serial_result[ii] = fib_serial (ii); } - for (ii = 0; ii <= 40; ii++) + for (ii = 0; ii <= FIB_ITERATION; ii++) { if (fib_result[ii] != fib_serial_result[ii]) error = 1; } #endif + if (error != 0) + __builtin_abort (); return error; } @@ -40,8 +44,8 @@ return n; else { - x = fib (n-1); - y = fib (n-2); + x = fib_serial (n-1); + y = fib_serial (n-2); return (x+y); } } Index: c-c++-common/cilk-plus/CK/fib_no_return.c =================================================================== --- c-c++-common/cilk-plus/CK/fib_no_return.c (revision 204396) +++ c-c++-common/cilk-plus/CK/fib_no_return.c (working copy) @@ -6,34 +6,39 @@ #include #endif +#define FIB_ITERATION 30 + void fib (int *, int); int fib_serial (int); int main(void) { int ii = 0, error = 0; - int fib_result[41], fib_serial_result[41]; + int fib_result[FIB_ITERATION+1], fib_serial_result[FIB_ITERATION+1]; #if HAVE_IO - for (ii = 0; ii <= 40; ii++) + for (ii = 0; ii <= FIB_ITERATION; ii++) { int result = 0; fib (&result, ii); printf("fib (%2d) = %10d\n", ii, result); } #else - for (ii = 0; ii <= 40; ii++) + for (ii = 0; ii <= FIB_ITERATION; ii++) { fib (&fib_result[ii], ii); fib_serial_result[ii] = fib_serial (ii); } - for (ii = 0; ii <= 40; ii++) + for (ii = 0; ii <= FIB_ITERATION; ii++) { if (fib_result[ii] != fib_serial_result[ii]) error = 1; } #endif + + if (error != 0) + __builtin_abort (); return error; } @@ -44,8 +49,8 @@ return n; else { - fib (&x, n-1); - fib (&y, n-2); + x = fib_serial (n-1); + y = fib_serial (n-2); return (x+y); } }