blob: f2fcf4914cfd4fe1223b538a6f7cb0acbc8d2fc4 [file] [log] [blame]
Howard Hinnantbc8d3f92010-05-11 19:42:16 +00001//===----------------------------------------------------------------------===//
2//
Howard Hinnantf5256e12010-05-11 21:36:01 +00003// The LLVM Compiler Infrastructure
Howard Hinnantbc8d3f92010-05-11 19:42:16 +00004//
Howard Hinnantb64f8b02010-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 Hinnantbc8d3f92010-05-11 19:42:16 +00007//
8//===----------------------------------------------------------------------===//
Jonathan Roelofsf2bd5a02014-12-11 15:37:22 +00009//
10// XFAIL: newlib
Howard Hinnantbc8d3f92010-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{
Dan Albert1d4a1ed2016-05-25 22:36:09 -070063 fenv_t fenv = {0};
Howard Hinnantbc8d3f92010-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}