From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2116) id D9DA33858D35; Fri, 16 Jun 2023 19:30:14 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org D9DA33858D35 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1686943814; bh=oaiZMB7fQM5ZqnmO1Gu7+BkKkvbjr6eRDLZ1yplNsuY=; h=From:To:Subject:Date:From; b=hIK9MBjsibIEF0GHFFdUevejRR+7Zf8WS8sT2qSM/tgm2aHj24wGgpSnOPiEKNdAD V5qFjd7AXhfFJiMDwWoiFu0s/8qkmX/ZN5sy6URBRN1S11iQoFijAvlx3dD1l6CHD5 +xq0Y73xhAOxb646YDakG0YeeL/nrxeAcNb8+HSw= MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Ian Lance Taylor To: gcc-cvs@gcc.gnu.org Subject: [gcc r14-1897] libgo/testsuite: add benchmarks and examples to list X-Act-Checkin: gcc X-Git-Author: Ian Lance Taylor X-Git-Refname: refs/heads/master X-Git-Oldrev: 2b4e0415ad664cdb3ce87d1f7eee5ca26911a05b X-Git-Newrev: bc6bd0d608da1609c1caeb04ab795a83720add55 Message-Id: <20230616193014.D9DA33858D35@sourceware.org> Date: Fri, 16 Jun 2023 19:30:14 +0000 (GMT) List-Id: https://gcc.gnu.org/g:bc6bd0d608da1609c1caeb04ab795a83720add55 commit r14-1897-gbc6bd0d608da1609c1caeb04ab795a83720add55 Author: Ian Lance Taylor Date: Fri Jun 16 10:45:15 2023 -0700 libgo/testsuite: add benchmarks and examples to list In CL 384695 I simplified the code that built lists of benchmarks, examples, and fuzz tests, and managed to break it. This CL corrects the code to once again make the benchmarks available, and to run the examples with output and the fuzz targets. Doing this revealed a test failure in internal/fuzz on 32-bit x86: a signalling NaN is turned into a quiet NaN on the 387 floating-point stack that GCC uses by default. This CL skips the test. Fixes golang/go#60826 Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/503798 Diff: --- gcc/go/gofrontend/MERGE | 2 +- libgo/go/internal/fuzz/encoding_test.go | 9 +++++++++ libgo/testsuite/gotest | 10 ++++++---- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE index 702257009d2..1191a8d663d 100644 --- a/gcc/go/gofrontend/MERGE +++ b/gcc/go/gofrontend/MERGE @@ -1,4 +1,4 @@ -737de90a63002d4872b19772a7116404ee5815b4 +a3a3c3a2d1bc6a8ca51b302d08c94ef27cdd8f0f The first line of this file holds the git revision number of the last merge done from the gofrontend repository. diff --git a/libgo/go/internal/fuzz/encoding_test.go b/libgo/go/internal/fuzz/encoding_test.go index 8e3800eb77f..53fc5b8dc71 100644 --- a/libgo/go/internal/fuzz/encoding_test.go +++ b/libgo/go/internal/fuzz/encoding_test.go @@ -6,6 +6,7 @@ package fuzz import ( "math" + "runtime" "strconv" "testing" "unicode" @@ -330,6 +331,14 @@ func FuzzFloat64RoundTrip(f *testing.F) { f.Add(math.Float64bits(math.Inf(-1))) f.Fuzz(func(t *testing.T, u1 uint64) { + // The signaling NaN test fails on 32-bit x86 with gccgo, + // which uses the 387 floating-point stack by default. + // Converting a signaling NaN in and out of the stack + // changes the NaN to a quiet NaN. + if runtime.GOARCH == "386" && u1 == 0x7FF0000000000001 { + t.Skip("skipping signalling NaN test on 386 with gccgo") + } + x1 := math.Float64frombits(u1) b := marshalCorpusFile(x1) diff --git a/libgo/testsuite/gotest b/libgo/testsuite/gotest index 0a0a7e14d74..33c98d804d6 100755 --- a/libgo/testsuite/gotest +++ b/libgo/testsuite/gotest @@ -577,13 +577,13 @@ symtogo() { # Find Go benchmark/fuzz/example functions. # The argument is the function name prefix. findfuncs() { - pattern='$1([^a-z].*)?' + pattern="$1([^a-z].*)?" syms=$($NM -p -v _gotest_.o | egrep " $text .*\."$pattern'$' | fgrep -v ' __go_' | egrep -v '\.\.\w+$' | sed 's/.* //') if $havex; then xsyms=$($NM -p -v $xofile | egrep " $text .*\."$pattern'$' | fgrep -v ' __go_' | egrep -v '\.\.\w+$' | sed 's/.* //') syms="$syms $xsyms" fi - $(symtogo "$benchmarksyms") + symtogo "$syms" } # Takes an example name and puts any output into the file example.txt. @@ -643,11 +643,13 @@ exampleoutput() { fi if $havex; then needxtest=false - if test -n "$testxsyms" -o -n "$benchmarkxsyms"; then + if test -n "$testxsyms"; then + needxtest=true + elif echo "$benchmarks" | grep '_test\.' >/dev/null; then needxtest=true else # Check whether any example has output. - for i in $(symtogo "$examplexsyms"); do + for i in $(echo "$examples" | grep '_test\.'); do exampleoutput $i if test -f example.txt; then rm -f example.txt