Mercurial > hg > CbC > CbC_llvm
comparison lib/Support/IsInf.cpp @ 3:9ad51c7bc036
1st commit. remove git dir and add all files.
author | Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 15 May 2013 06:43:32 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 3:9ad51c7bc036 |
---|---|
1 //===-- IsInf.cpp - Platform-independent wrapper around C99 isinf() -------===// | |
2 // | |
3 // The LLVM Compiler Infrastructure | |
4 // | |
5 // This file is distributed under the University of Illinois Open Source | |
6 // License. See LICENSE.TXT for details. | |
7 // | |
8 //===----------------------------------------------------------------------===// | |
9 // | |
10 // Platform-independent wrapper around C99 isinf() | |
11 // | |
12 //===----------------------------------------------------------------------===// | |
13 | |
14 #include "llvm/Config/config.h" | |
15 | |
16 #if HAVE_ISINF_IN_MATH_H | |
17 # include <math.h> | |
18 #elif HAVE_ISINF_IN_CMATH | |
19 # include <cmath> | |
20 #elif HAVE_STD_ISINF_IN_CMATH | |
21 # include <cmath> | |
22 using std::isinf; | |
23 #elif HAVE_FINITE_IN_IEEEFP_H | |
24 // A handy workaround I found at http://www.unixguide.net/sun/faq ... | |
25 // apparently this has been a problem with Solaris for years. | |
26 # include <ieeefp.h> | |
27 static int isinf(double x) { return !finite(x) && x==x; } | |
28 #elif defined(_MSC_VER) | |
29 #include <float.h> | |
30 #define isinf(X) (!_finite(X)) | |
31 #elif defined(_AIX) && defined(__GNUC__) | |
32 // GCC's fixincludes seems to be removing the isinf() declaration from the | |
33 // system header /usr/include/math.h | |
34 # include <math.h> | |
35 static int isinf(double x) { return !finite(x) && x==x; } | |
36 #elif defined(__hpux) | |
37 // HP-UX is "special" | |
38 #include <math.h> | |
39 static int isinf(double x) { return ((x) == INFINITY) || ((x) == -INFINITY); } | |
40 #else | |
41 # error "Don't know how to get isinf()" | |
42 #endif | |
43 | |
44 namespace llvm { | |
45 | |
46 int IsInf(float f) { return isinf(f); } | |
47 int IsInf(double d) { return isinf(d); } | |
48 | |
49 } // end namespace llvm; |