X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FSupport%2FIsInf.cpp;h=d6da0c99e8d8d64e65fbaa80f1c68e8c82d6201f;hb=9c23685dd25370a9a255052e44fa609b8ce455c0;hp=4142b911e2cbc04bb85ccdc68cb6951cd274e3f7;hpb=418f73cbaa77470f3546c0acc64cefccedfba991;p=oota-llvm.git diff --git a/lib/Support/IsInf.cpp b/lib/Support/IsInf.cpp index 4142b911e2c..d6da0c99e8d 100644 --- a/lib/Support/IsInf.cpp +++ b/lib/Support/IsInf.cpp @@ -1,17 +1,18 @@ -//===-- IsInf.cpp ---------------------------------------------------------===// -// +//===-- IsInf.cpp - Platform-independent wrapper around C99 isinf() -------===// +// // The LLVM Compiler Infrastructure // -// This file was developed by the LLVM research group and is distributed under -// the University of Illinois Open Source License. See LICENSE.TXT for details. -// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// //===----------------------------------------------------------------------===// // -// Platform-independent wrapper around C99 isinf(). +// Platform-independent wrapper around C99 isinf() // //===----------------------------------------------------------------------===// -#include "Config/config.h" +#include "llvm/Config/config.h" + #if HAVE_ISINF_IN_MATH_H # include #elif HAVE_ISINF_IN_CMATH @@ -19,13 +20,30 @@ #elif HAVE_STD_ISINF_IN_CMATH # include using std::isinf; +#elif HAVE_FINITE_IN_IEEEFP_H +// A handy workaround I found at http://www.unixguide.net/sun/faq ... +// apparently this has been a problem with Solaris for years. +# include +static int isinf(double x) { return !finite(x) && x==x; } +#elif defined(_MSC_VER) +#include +#define isinf(X) (!_finite(X)) +#elif defined(_AIX) && defined(__GNUC__) +// GCC's fixincludes seems to be removing the isinf() declaration from the +// system header /usr/include/math.h +# include +static int isinf(double x) { return !finite(x) && x==x; } +#elif defined(__hpux) +// HP-UX is "special" +#include +static int isinf(double x) { return ((x) == INFINITY) || ((x) == -INFINITY); } #else # error "Don't know how to get isinf()" #endif namespace llvm { -int IsInf (float f) { return isinf (f); } -int IsInf (double d) { return isinf (d); } +int IsInf(float f) { return isinf(f); } +int IsInf(double d) { return isinf(d); } -}; // end namespace llvm; +} // end namespace llvm;