aboutsummaryrefslogtreecommitdiff
path: root/libphobos/src
diff options
context:
space:
mode:
authorIain Buclaw <ibuclaw@gdcproject.org>2018-11-28 17:54:07 +0000
committerIain Buclaw <ibuclaw@gcc.gnu.org>2018-11-28 17:54:07 +0000
commit85041a5b7755dc7b9d74b183e933d89152997886 (patch)
tree2967bb1b7ffbc8c178b109a75f117df37895e144 /libphobos/src
parent735352d2eede1e412cb89f45a5c3e0846bce39af (diff)
downloadgcc-85041a5b7755dc7b9d74b183e933d89152997886.zip
gcc-85041a5b7755dc7b9d74b183e933d89152997886.tar.gz
gcc-85041a5b7755dc7b9d74b183e933d89152997886.tar.bz2
Merge libphobos upstream version 2.076.1
Updated the library version to 76:3:0. libphobos/ChangeLog: 2018-11-28 Iain Buclaw <ibuclaw@gdcproject.org> * Makefile.in: Rebuild. * configure: Rebuild. * configure.ac (DRUNTIME_SOVERSION): Remove. (PHOBOS_SOVERSION): Remove. (libtool_VERSION): Add. * libdruntime/Makefile.am: Use libtool_VERSION. * libdruntime/Makefile.in: Rebuild. * src/Makefile.am: Use libtool_VERSION. * src/Makefile.in: Rebuild. * testsuite/Makefile.in: Rebuild. From-SVN: r266572
Diffstat (limited to 'libphobos/src')
-rw-r--r--libphobos/src/Makefile.am2
-rw-r--r--libphobos/src/Makefile.in5
-rw-r--r--libphobos/src/std/complex.d5
-rw-r--r--libphobos/src/std/math.d14
-rw-r--r--libphobos/src/std/random.d6
5 files changed, 20 insertions, 12 deletions
diff --git a/libphobos/src/Makefile.am b/libphobos/src/Makefile.am
index c5b36ae..3ced3ae 100644
--- a/libphobos/src/Makefile.am
+++ b/libphobos/src/Makefile.am
@@ -57,7 +57,7 @@ toolexeclib_DATA = libgphobos.spec
toolexeclib_LTLIBRARIES = libgphobos.la
libgphobos_la_SOURCES = $(ALL_PHOBOS_SOURCES) $(ZLIB_SRC)
libgphobos_la_LIBTOOLFLAGS =
-libgphobos_la_LDFLAGS = -Xcompiler -nophoboslib -version-info $(PHOBOS_SOVERSION)
+libgphobos_la_LDFLAGS = -Xcompiler -nophoboslib -version-info $(libtool_VERSION)
libgphobos_la_LIBADD = ../libdruntime/libgdruntime.la
libgphobos_la_DEPENDENCIES = libgphobos.spec
diff --git a/libphobos/src/Makefile.in b/libphobos/src/Makefile.in
index 08470ab..f0c8f87 100644
--- a/libphobos/src/Makefile.in
+++ b/libphobos/src/Makefile.in
@@ -507,7 +507,6 @@ DCFG_HAVE_LIBATOMIC = @DCFG_HAVE_LIBATOMIC@
DCFG_MINFO_BRACKETING = @DCFG_MINFO_BRACKETING@
DCFG_THREAD_MODEL = @DCFG_THREAD_MODEL@
DEFS = @DEFS@
-DRUNTIME_SOVERSION = @DRUNTIME_SOVERSION@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
@@ -552,7 +551,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PHOBOS_SOVERSION = @PHOBOS_SOVERSION@
RANLIB = @RANLIB@
SED = @SED@
SET_MAKE = @SET_MAKE@
@@ -599,6 +597,7 @@ libphobos_builddir = @libphobos_builddir@
libphobos_srcdir = @libphobos_srcdir@
libphobos_toolexecdir = @libphobos_toolexecdir@
libphobos_toolexeclibdir = @libphobos_toolexeclibdir@
+libtool_VERSION = @libtool_VERSION@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
@@ -698,7 +697,7 @@ toolexeclib_DATA = libgphobos.spec
toolexeclib_LTLIBRARIES = libgphobos.la
libgphobos_la_SOURCES = $(ALL_PHOBOS_SOURCES) $(ZLIB_SRC)
libgphobos_la_LIBTOOLFLAGS =
-libgphobos_la_LDFLAGS = -Xcompiler -nophoboslib -version-info $(PHOBOS_SOVERSION)
+libgphobos_la_LDFLAGS = -Xcompiler -nophoboslib -version-info $(libtool_VERSION)
libgphobos_la_LIBADD = ../libdruntime/libgdruntime.la
libgphobos_la_DEPENDENCIES = libgphobos.spec
diff --git a/libphobos/src/std/complex.d b/libphobos/src/std/complex.d
index 7763822..b078051 100644
--- a/libphobos/src/std/complex.d
+++ b/libphobos/src/std/complex.d
@@ -853,7 +853,10 @@ Complex!T cos(T)(Complex!T z) @safe pure nothrow @nogc
import std.math;
assert(cos(complex(0.0)) == 1.0);
assert(cos(complex(1.3L)) == std.math.cos(1.3L));
- assert(cos(complex(0, 5.2L)) == cosh(5.2L));
+ auto c1 = cos(complex(0, 5.2L));
+ auto c2 = cosh(5.2L);
+ assert(feqrel(c1.re, c2.re) >= real.mant_dig - 1 &&
+ feqrel(c1.im, c2.im) >= real.mant_dig - 1);
}
diff --git a/libphobos/src/std/math.d b/libphobos/src/std/math.d
index 84cf4a7..7bb4d7c 100644
--- a/libphobos/src/std/math.d
+++ b/libphobos/src/std/math.d
@@ -177,7 +177,7 @@ version (StaticallyHaveSSE)
{
private enum bool haveSSE = true;
}
-else
+else version (X86)
{
static import core.cpuid;
private alias haveSSE = core.cpuid.sse;
@@ -887,7 +887,7 @@ Lret: {}
-9.889929415807650724957118893791829849557E-1L
];
static immutable real[7] Q = [
- 8.650244186622719093893836740197250197602E10L
+ 8.650244186622719093893836740197250197602E10L,
-4.152206921457208101480801635640958361612E10L,
2.758476078803232151774723646710890525496E9L,
-5.733709132766856723608447733926138506824E7L,
@@ -3141,7 +3141,8 @@ float ldexp(float n, int exp) @safe pure nothrow @nogc { return ldexp(cast(real)
@safe pure nothrow @nogc unittest
{
- static if (floatTraits!(real).realFormat == RealFormat.ieeeExtended)
+ static if (floatTraits!(real).realFormat == RealFormat.ieeeExtended ||
+ floatTraits!(real).realFormat == RealFormat.ieeeQuadruple)
{
assert(ldexp(1.0L, -16384) == 0x1p-16384L);
assert(ldexp(1.0L, -16382) == 0x1p-16382L);
@@ -4453,6 +4454,7 @@ long lrint(real x) @trusted pure nothrow @nogc
const j = sign ? -OF : OF;
x = (j + x) - j;
+ const exp = (vu[F.EXPPOS_SHORT] & F.EXPMASK) - (F.EXPBIAS + 1);
const implicitOne = 1UL << 48;
auto vl = cast(ulong*)(&x);
vl[MANTISSA_MSB] &= implicitOne - 1;
@@ -4460,7 +4462,6 @@ long lrint(real x) @trusted pure nothrow @nogc
long result;
- const exp = (vu[F.EXPPOS_SHORT] & F.EXPMASK) - (F.EXPBIAS + 1);
if (exp < 0)
result = 0;
else if (exp <= 48)
@@ -5337,6 +5338,7 @@ private:
}
else version (AArch64)
{
+ ControlState cont;
asm pure nothrow @nogc
{
"mrs %0, FPCR;" : "=r" cont;
@@ -6668,6 +6670,10 @@ if (isFloatingPoint!(F) && isIntegral!(G))
{
pragma(msg, "test disabled on ARM, see bug 5628");
}
+ else version (GNU)
+ {
+ pragma(msg, "test disabled on GNU, see bug 5628");
+ }
else
{
assert(pow(xd, neg2) == 1 / (x * x));
diff --git a/libphobos/src/std/random.d b/libphobos/src/std/random.d
index b3116e18..f4c64d4 100644
--- a/libphobos/src/std/random.d
+++ b/libphobos/src/std/random.d
@@ -64,15 +64,15 @@ import std.traits;
// Generate a uniformly-distributed integer in the range [0, 14]
// If no random generator is passed, the global `rndGen` would be used
auto i = uniform(0, 15, rnd);
- assert(i == 12);
+ assert(i >= 0 && i < 15);
// Generate a uniformly-distributed real in the range [0, 100)
auto r = uniform(0.0L, 100.0L, rnd);
- assert(r == 79.65429843861011285);
+ assert(r >= 0 && r < 100);
// Generate a 32-bit random number
auto u = uniform!uint(rnd);
- assert(u == 4083286876);
+ static assert(is(typeof(u) == uint));
}
version (unittest)