From patchwork Mon Jan 9 18:28:51 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joseph Myers X-Patchwork-Id: 712896 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)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3ty3bR687Lz9sCX for ; Tue, 10 Jan 2017 05:29:39 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.b="XNsVUVuc"; dkim-atps=neutral DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:date:from:to:subject:message-id:mime-version :content-type; q=dns; s=default; b=futyDMpnJSTH492XEF1cwQr2xkaQU qy/2oaqoI4mLSvhD2RLB20IO9s9HsWO2bKFA31858INaGHtF2sIzKGAvuGnFL7Oh SVU4XD4Z7OQmT3A/Y3eKzKh7wrBsFLEeLv94odUAOzKx5hr3OWojld9GxhfWkiC8 cCn1Mr3JdDxu5s= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:date:from:to:subject:message-id:mime-version :content-type; s=default; bh=DVSE4gL9KlGORDfq59pai1O5j/s=; b=XNs VUVucoKlfcyKhRk2JHEoROq/Oy9jJhL5O4NX7LbHaB5fpb3kfmMul7lEkououC/k xSdXPpa1LIUNiajqw1Yq1sbRvBlypEXl1Rkt31qFSMs9HMANYEmgp7eM2ZfzGvkI b4N8D3y1X5fVcZz9jz5UL3jpn9V8ylQYu53VIO/4= Received: (qmail 11470 invoked by alias); 9 Jan 2017 18:29:14 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 11211 invoked by uid 89); 9 Jan 2017 18:29:13 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=AWL, BAYES_00, RCVD_IN_DNSWL_NONE, SPF_PASS, URIBL_RED autolearn=ham version=3.3.2 spammy=7309, 6809, raised X-HELO: relay1.mentorg.com Date: Mon, 9 Jan 2017 18:28:51 +0000 From: Joseph Myers To: Subject: Fix math/test-fenv for no-exceptions / no-rounding-modes configurations [committed] Message-ID: User-Agent: Alpine 2.20 (DEB 67 2015-01-07) MIME-Version: 1.0 X-ClientProxiedBy: svr-ies-mbx-01.mgc.mentorg.com (139.181.222.1) To svr-ies-mbx-01.mgc.mentorg.com (139.181.222.1) This patch fixes math/test-fenv.c to check EXCEPTION_TESTS and ROUNDING_TESTS to avoid failing in cases where some exceptions or rounding modes are defined but not supported at runtime. Tested for mips64 soft float and for x86_64. Committed. 2017-01-09 Joseph Myers * math/test-fenv.c (fe_tests): Skip most tests when exceptions not supported. (feholdexcept_tests): Skip tests requiring exceptions or rounding modes support if not supported. diff --git a/math/test-fenv.c b/math/test-fenv.c index d698ec3..b24b3a1 100644 --- a/math/test-fenv.c +++ b/math/test-fenv.c @@ -208,6 +208,9 @@ fe_tests (void) test_exceptions ("feclearexcept (FE_ALL_EXCEPT) clears all exceptions", NO_EXC, 0); + /* Skip further tests here if exceptions not supported. */ + if (!EXCEPTION_TESTS (float) && FE_ALL_EXCEPT != 0) + return; /* raise all exceptions and test if all are raised */ feraiseexcept (FE_ALL_EXCEPT); test_exceptions ("feraiseexcept (FE_ALL_EXCEPT) raises all exceptions", @@ -657,8 +660,9 @@ feholdexcept_tests (void) #ifdef FE_DIVBYZERO feraiseexcept (FE_DIVBYZERO); #endif - test_exceptions ("feholdexcept_tests FE_DIVBYZERO test", - DIVBYZERO_EXC, 0); + if (EXCEPTION_TESTS (float)) + test_exceptions ("feholdexcept_tests FE_DIVBYZERO test", + DIVBYZERO_EXC, 0); res = feholdexcept (&saved); if (res != 0) { @@ -667,7 +671,7 @@ feholdexcept_tests (void) } #if defined FE_TONEAREST && defined FE_TOWARDZERO res = fesetround (FE_TOWARDZERO); - if (res != 0) + if (res != 0 && ROUNDING_TESTS (float, FE_TOWARDZERO)) { printf ("fesetround failed: %d\n", res); ++count_errors; @@ -676,8 +680,9 @@ feholdexcept_tests (void) test_exceptions ("feholdexcept_tests 0 test", NO_EXC, 0); #ifdef FE_INVALID feraiseexcept (FE_INVALID); - test_exceptions ("feholdexcept_tests FE_INVALID test", - INVALID_EXC, 0); + if (EXCEPTION_TESTS (float)) + test_exceptions ("feholdexcept_tests FE_INVALID test", + INVALID_EXC, 0); #endif res = feupdateenv (&saved); if (res != 0) @@ -693,15 +698,16 @@ feholdexcept_tests (void) ++count_errors; } #endif - test_exceptions ("feholdexcept_tests FE_DIVBYZERO|FE_INVALID test", - DIVBYZERO_EXC | INVALID_EXC, 0); + if (EXCEPTION_TESTS (float)) + test_exceptions ("feholdexcept_tests FE_DIVBYZERO|FE_INVALID test", + DIVBYZERO_EXC | INVALID_EXC, 0); feclearexcept (FE_ALL_EXCEPT); #ifdef FE_INVALID feraiseexcept (FE_INVALID); #endif #if defined FE_TONEAREST && defined FE_UPWARD res = fesetround (FE_UPWARD); - if (res != 0) + if (res != 0 && ROUNDING_TESTS (float, FE_UPWARD)) { printf ("fesetround failed: %d\n", res); ++count_errors; @@ -724,8 +730,9 @@ feholdexcept_tests (void) test_exceptions ("feholdexcept_tests 0 2nd test", NO_EXC, 0); #ifdef FE_INEXACT feraiseexcept (FE_INEXACT); - test_exceptions ("feholdexcept_tests FE_INEXACT test", - INEXACT_EXC, 0); + if (EXCEPTION_TESTS (float)) + test_exceptions ("feholdexcept_tests FE_INEXACT test", + INEXACT_EXC, 0); #endif res = feupdateenv (&saved2); if (res != 0) @@ -735,15 +742,16 @@ feholdexcept_tests (void) } #if defined FE_TONEAREST && defined FE_UPWARD res = fegetround (); - if (res != FE_UPWARD) + if (res != FE_UPWARD && ROUNDING_TESTS (float, FE_UPWARD)) { printf ("feupdateenv didn't restore rounding mode: %d\n", res); ++count_errors; } fesetround (FE_TONEAREST); #endif - test_exceptions ("feholdexcept_tests FE_INEXACT|FE_INVALID test", - INVALID_EXC | INEXACT_EXC, 0); + if (EXCEPTION_TESTS (float)) + test_exceptions ("feholdexcept_tests FE_INEXACT|FE_INVALID test", + INVALID_EXC | INEXACT_EXC, 0); feclearexcept (FE_ALL_EXCEPT); }