diff options
Diffstat (limited to 'packages/mpfr/3.1.2/130-clang-divby0.patch')
-rw-r--r-- | packages/mpfr/3.1.2/130-clang-divby0.patch | 129 |
1 files changed, 0 insertions, 129 deletions
diff --git a/packages/mpfr/3.1.2/130-clang-divby0.patch b/packages/mpfr/3.1.2/130-clang-divby0.patch deleted file mode 100644 index 8e0cd8e0..00000000 --- a/packages/mpfr/3.1.2/130-clang-divby0.patch +++ /dev/null @@ -1,129 +0,0 @@ -diff -Naurd mpfr-3.1.2-a/PATCHES mpfr-3.1.2-b/PATCHES ---- mpfr-3.1.2-a/PATCHES 2013-10-09 13:34:21.000000000 +0000 -+++ mpfr-3.1.2-b/PATCHES 2013-10-09 13:34:21.000000000 +0000 -@@ -0,0 +1 @@ -+clang-divby0 -diff -Naurd mpfr-3.1.2-a/VERSION mpfr-3.1.2-b/VERSION ---- mpfr-3.1.2-a/VERSION 2013-09-26 10:52:52.000000000 +0000 -+++ mpfr-3.1.2-b/VERSION 2013-10-09 13:34:21.000000000 +0000 -@@ -1 +1 @@ --3.1.2-p2 -+3.1.2-p3 -diff -Naurd mpfr-3.1.2-a/src/mpfr-impl.h mpfr-3.1.2-b/src/mpfr-impl.h ---- mpfr-3.1.2-a/src/mpfr-impl.h 2013-03-13 15:37:36.000000000 +0000 -+++ mpfr-3.1.2-b/src/mpfr-impl.h 2013-10-09 13:34:21.000000000 +0000 -@@ -468,8 +468,16 @@ - #define MPFR_LIMBS_PER_FLT ((IEEE_FLT_MANT_DIG-1)/GMP_NUMB_BITS+1) - - /* Visual C++ doesn't support +1.0/0.0, -1.0/0.0 and 0.0/0.0 -- at compile time. */ --#if defined(_MSC_VER) && defined(_WIN32) && (_MSC_VER >= 1200) -+ at compile time. -+ Clang with -fsanitize=undefined is a bit similar due to a bug: -+ http://llvm.org/bugs/show_bug.cgi?id=17381 -+ but even without its sanitizer, it may be better to use the -+ double_zero version until IEEE 754 division by zero is properly -+ supported: -+ http://llvm.org/bugs/show_bug.cgi?id=17000 -+*/ -+#if (defined(_MSC_VER) && defined(_WIN32) && (_MSC_VER >= 1200)) || \ -+ defined(__clang__) - static double double_zero = 0.0; - # define DBL_NAN (double_zero/double_zero) - # define DBL_POS_INF ((double) 1.0/double_zero) -@@ -501,6 +509,8 @@ - (with Xcode 2.4.1, i.e. the latest one). */ - #define LVALUE(x) (&(x) == &(x) || &(x) != &(x)) - #define DOUBLE_ISINF(x) (LVALUE(x) && ((x) > DBL_MAX || (x) < -DBL_MAX)) -+/* The DOUBLE_ISNAN(x) macro is also valid on long double x -+ (assuming that the compiler isn't too broken). */ - #ifdef MPFR_NANISNAN - /* Avoid MIPSpro / IRIX64 / gcc -ffast-math (incorrect) optimizations. - The + must not be replaced by a ||. With gcc -ffast-math, NaN is -diff -Naurd mpfr-3.1.2-a/src/mpfr.h mpfr-3.1.2-b/src/mpfr.h ---- mpfr-3.1.2-a/src/mpfr.h 2013-09-26 10:52:52.000000000 +0000 -+++ mpfr-3.1.2-b/src/mpfr.h 2013-10-09 13:34:21.000000000 +0000 -@@ -27,7 +27,7 @@ - #define MPFR_VERSION_MAJOR 3 - #define MPFR_VERSION_MINOR 1 - #define MPFR_VERSION_PATCHLEVEL 2 --#define MPFR_VERSION_STRING "3.1.2-p2" -+#define MPFR_VERSION_STRING "3.1.2-p3" - - /* Macros dealing with MPFR VERSION */ - #define MPFR_VERSION_NUM(a,b,c) (((a) << 16L) | ((b) << 8) | (c)) -diff -Naurd mpfr-3.1.2-a/src/version.c mpfr-3.1.2-b/src/version.c ---- mpfr-3.1.2-a/src/version.c 2013-09-26 10:52:52.000000000 +0000 -+++ mpfr-3.1.2-b/src/version.c 2013-10-09 13:34:21.000000000 +0000 -@@ -25,5 +25,5 @@ - const char * - mpfr_get_version (void) - { -- return "3.1.2-p2"; -+ return "3.1.2-p3"; - } -diff -Naurd mpfr-3.1.2-a/tests/tget_flt.c mpfr-3.1.2-b/tests/tget_flt.c ---- mpfr-3.1.2-a/tests/tget_flt.c 2013-03-13 15:37:44.000000000 +0000 -+++ mpfr-3.1.2-b/tests/tget_flt.c 2013-10-09 13:34:21.000000000 +0000 -@@ -28,9 +28,17 @@ - main (void) - { - mpfr_t x, y; -- float f, g, infp; -+ float f, g; - int i; -+#if !defined(MPFR_ERRDIVZERO) -+ float infp; -+#endif -+ -+ tests_start_mpfr (); - -+#if !defined(MPFR_ERRDIVZERO) -+ /* The definition of DBL_POS_INF involves a division by 0. This makes -+ "clang -O2 -fsanitize=undefined -fno-sanitize-recover" fail. */ - infp = (float) DBL_POS_INF; - if (infp * 0.5 != infp) - { -@@ -38,8 +46,7 @@ - fprintf (stderr, "(this is probably a compiler bug, please report)\n"); - exit (1); - } -- -- tests_start_mpfr (); -+#endif - - mpfr_init2 (x, 24); - mpfr_init2 (y, 24); -@@ -353,6 +360,7 @@ - printf ("expected %.8e, got %.8e\n", g, f); - exit (1); - } -+#if !defined(MPFR_ERRDIVZERO) - f = mpfr_get_flt (x, MPFR_RNDN); /* first round to 2^128 (even rule), - thus we should get +Inf */ - g = infp; -@@ -376,6 +384,7 @@ - printf ("expected %.8e, got %.8e\n", g, f); - exit (1); - } -+#endif - - mpfr_clear (x); - mpfr_clear (y); -diff -Naurd mpfr-3.1.2-a/tests/tset_ld.c mpfr-3.1.2-b/tests/tset_ld.c ---- mpfr-3.1.2-a/tests/tset_ld.c 2013-03-13 15:37:44.000000000 +0000 -+++ mpfr-3.1.2-b/tests/tset_ld.c 2013-10-09 13:34:21.000000000 +0000 -@@ -47,8 +47,11 @@ - static int - Isnan_ld (long double d) - { -- double e = (double) d; -- if (DOUBLE_ISNAN (e)) -+ /* Do not convert d to double as this can give an overflow, which -+ may confuse compilers without IEEE 754 support (such as clang -+ -fsanitize=undefined), or trigger a trap if enabled. -+ The DOUBLE_ISNAN macro should work fine on long double. */ -+ if (DOUBLE_ISNAN (d)) - return 1; - LONGDOUBLE_NAN_ACTION (d, goto yes); - return 0; |