Mark math.h and cmath tests as xfail on linux.

These tests were marked as failing because the libc implementation does not
use the proper return type on certain math functions. There is other weirdness
that prevents us from defining our own version of these functions.

The failing tests in cmake were separated into their own files so that the rest
failures in the rest of the cmath tests were not hidden.

This was not done for the math.h test since we don't actually supply math.h


git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@215275 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Eric Fiselier
2014-08-09 02:39:03 +00:00
parent 095c3dd23e
commit 2af66e9851
4 changed files with 65 additions and 26 deletions

View File

@@ -9,6 +9,9 @@
// <cmath>
// NOTE: isinf and isnan are tested separately because they are expected to fail
// on linux. We don't want their expected failure to hide other failures in this file.
#include <cmath>
#include <type_traits>
#include <cassert>
@@ -475,30 +478,6 @@ void test_isfinite()
assert(std::isfinite(-1.0) == true);
}
void test_isinf()
{
#ifdef isinf
#error isinf defined
#endif
static_assert((std::is_same<decltype(std::isinf((float)0)), bool>::value), "");
static_assert((std::is_same<decltype(std::isinf((double)0)), bool>::value), "");
static_assert((std::is_same<decltype(std::isinf(0)), bool>::value), "");
static_assert((std::is_same<decltype(std::isinf((long double)0)), bool>::value), "");
assert(std::isinf(-1.0) == false);
}
void test_isnan()
{
#ifdef isnan
#error isnan defined
#endif
static_assert((std::is_same<decltype(std::isnan((float)0)), bool>::value), "");
static_assert((std::is_same<decltype(std::isnan((double)0)), bool>::value), "");
static_assert((std::is_same<decltype(std::isnan(0)), bool>::value), "");
static_assert((std::is_same<decltype(std::isnan((long double)0)), bool>::value), "");
assert(std::isnan(-1.0) == false);
}
void test_isnormal()
{
#ifdef isnormal
@@ -1318,8 +1297,6 @@ int main()
test_signbit();
test_fpclassify();
test_isfinite();
test_isinf();
test_isnan();
test_isnormal();
test_isgreater();
test_isgreaterequal();