Windows: Add support for unicode command lines
[oota-llvm.git] / lib / Support / IsInf.cpp
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;