1 /* Test fesetenv (FE_DFL_ENV) and fesetenv (FE_NOMASK_ENV) clear
2 exceptions (bug 19181).
3 Copyright (C) 2015-2016 Free Software Foundation, Inc.
4 This file is part of the GNU C Library.
6 The GNU C Library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Lesser General Public
8 License as published by the Free Software Foundation; either
9 version 2.1 of the License, or (at your option) any later version.
11 The GNU C Library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Lesser General Public License for more details.
16 You should have received a copy of the GNU Lesser General Public
17 License along with the GNU C Library; if not, see
18 <http://www.gnu.org/licenses/>. */
24 volatile float fa
= 1.0f
, fb
= 0.0f
, fc
= FLT_MAX
, fr
;
25 volatile long double lda
= 1.0L, ldb
= 0.0L, ldc
= LDBL_MAX
, ldr
;
28 raise_exceptions (void)
30 /* Raise exceptions both with feraiseexcept and arithmetic to allow
31 for case of multiple floating-point units with separate
33 feraiseexcept (FE_ALL_EXCEPT
);
41 ldr
= lda
/ ldc
/ ldc
;
44 static __attribute__ ((noinline
)) int
49 if (fesetenv (FE_DFL_ENV
) == 0)
51 puts ("PASS: fesetenv (FE_DFL_ENV)");
52 if (fetestexcept (FE_ALL_EXCEPT
) == 0)
53 puts ("PASS: fesetenv (FE_DFL_ENV) clearing exceptions");
56 puts ("FAIL: fesetenv (FE_DFL_ENV) clearing exceptions");
62 puts ("FAIL: fesetenv (FE_DFL_ENV)");
67 if (fesetenv (FE_NOMASK_ENV
) == 0)
69 if (fetestexcept (FE_ALL_EXCEPT
) == 0)
70 puts ("PASS: fesetenv (FE_NOMASK_ENV) clearing exceptions");
73 puts ("FAIL: fesetenv (FE_NOMASK_ENV) clearing exceptions");
78 puts ("fesetenv (FE_NOMASK_ENV) failed, cannot test");
90 #define TEST_FUNCTION do_test ()
91 #include "../test-skeleton.c"