blob: 0da4c9d86b2d08159a4c0dbdbb0efa55f53b3960 [file] [log] [blame]
Howard Hinnant3e519522010-05-11 19:42:16 +00001//===----------------------------------------------------------------------===//
2//
Howard Hinnant5b08a8a2010-05-11 21:36:01 +00003// The LLVM Compiler Infrastructure
Howard Hinnant3e519522010-05-11 19:42:16 +00004//
Howard Hinnant412dbeb2010-11-16 22:09:02 +00005// This file is dual licensed under the MIT and the University of Illinois Open
6// Source Licenses. See LICENSE.TXT for details.
Howard Hinnant3e519522010-05-11 19:42:16 +00007//
8//===----------------------------------------------------------------------===//
Jonathan Roelofs9df08f02014-12-11 15:37:22 +00009//
10// XFAIL: newlib
Howard Hinnant3e519522010-05-11 19:42:16 +000011
12// <fenv.h>
13
14#include <fenv.h>
15#include <type_traits>
16
17#ifndef FE_DIVBYZERO
18#error FE_DIVBYZERO not defined
19#endif
20
21#ifndef FE_INEXACT
22#error FE_INEXACT not defined
23#endif
24
25#ifndef FE_INVALID
26#error FE_INVALID not defined
27#endif
28
29#ifndef FE_OVERFLOW
30#error FE_OVERFLOW not defined
31#endif
32
33#ifndef FE_UNDERFLOW
34#error FE_UNDERFLOW not defined
35#endif
36
37#ifndef FE_ALL_EXCEPT
38#error FE_ALL_EXCEPT not defined
39#endif
40
41#ifndef FE_DOWNWARD
42#error FE_DOWNWARD not defined
43#endif
44
45#ifndef FE_TONEAREST
46#error FE_TONEAREST not defined
47#endif
48
49#ifndef FE_TOWARDZERO
50#error FE_TOWARDZERO not defined
51#endif
52
53#ifndef FE_UPWARD
54#error FE_UPWARD not defined
55#endif
56
57#ifndef FE_DFL_ENV
58#error FE_DFL_ENV not defined
59#endif
60
61int main()
62{
Eric Fiselier76af4162016-05-02 20:08:16 +000063 fenv_t fenv = {};
Howard Hinnant3e519522010-05-11 19:42:16 +000064 fexcept_t fex = 0;
65 static_assert((std::is_same<decltype(feclearexcept(0)), int>::value), "");
66 static_assert((std::is_same<decltype(fegetexceptflag(&fex, 0)), int>::value), "");
67 static_assert((std::is_same<decltype(feraiseexcept(0)), int>::value), "");
68 static_assert((std::is_same<decltype(fesetexceptflag(&fex, 0)), int>::value), "");
69 static_assert((std::is_same<decltype(fetestexcept(0)), int>::value), "");
70 static_assert((std::is_same<decltype(fegetround()), int>::value), "");
71 static_assert((std::is_same<decltype(fesetround(0)), int>::value), "");
72 static_assert((std::is_same<decltype(fegetenv(&fenv)), int>::value), "");
73 static_assert((std::is_same<decltype(feholdexcept(&fenv)), int>::value), "");
74 static_assert((std::is_same<decltype(fesetenv(&fenv)), int>::value), "");
75 static_assert((std::is_same<decltype(feupdateenv(&fenv)), int>::value), "");
76}