Hello community, here is the log from the commit of package dmd for openSUSE:Factory checked in at 2018-02-12 10:15:55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/dmd (Old) and /work/SRC/openSUSE:Factory/.dmd.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "dmd" Mon Feb 12 10:15:55 2018 rev:8 rq:575415 version:2.078.2 Changes: -------- --- /work/SRC/openSUSE:Factory/dmd/dmd.changes 2018-01-25 12:41:26.632133318 +0100 +++ /work/SRC/openSUSE:Factory/.dmd.new/dmd.changes 2018-02-12 10:15:56.731925683 +0100 @@ -1,0 +2,12 @@ +Sun Feb 11 15:03:55 UTC 2018 - [email protected] + +- Update to 2.078.2 + - DMD Compiler regressions + * [REG 2.078] dmd can't generate 64-bit binaries on Windows 10 with VS 2015 + * [Reg 2.078] Building fails with VC 2015 Build Tools + - DMD Compiler bugs + * wrong code for int.min > 0 + - Druntime regressions + * [Reg 2.078] comparison of arrays of associative arrays no longer compiles + +------------------------------------------------------------------- Old: ---- dmd-2.078.1.tar.gz druntime-2.078.1.tar.gz phobos-2.078.1.tar.gz New: ---- dmd-2.078.2.tar.gz druntime-2.078.2.tar.gz phobos-2.078.2.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ dmd.spec ++++++ --- /var/tmp/diff_new_pack.tUpVJi/_old 2018-02-12 10:15:58.651856497 +0100 +++ /var/tmp/diff_new_pack.tUpVJi/_new 2018-02-12 10:15:58.651856497 +0100 @@ -20,7 +20,7 @@ %define bootstrap_version 2.078.0 %define sover 0_78 Name: dmd -Version: 2.078.1 +Version: 2.078.2 Release: 0 Summary: D Programming Language 2.0 License: BSL-1.0 ++++++ dmd-2.078.1.tar.gz -> dmd-2.078.2.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dmd-2.078.1/VERSION new/dmd-2.078.2/VERSION --- old/dmd-2.078.1/VERSION 2018-01-21 23:30:35.000000000 +0100 +++ new/dmd-2.078.2/VERSION 2018-02-07 11:17:05.000000000 +0100 @@ -1 +1 @@ -v2.078.1 +v2.078.2 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dmd-2.078.1/src/dmd/backend/cod4.c new/dmd-2.078.2/src/dmd/backend/cod4.c --- old/dmd-2.078.1/src/dmd/backend/cod4.c 2018-01-21 23:30:35.000000000 +0100 +++ new/dmd-2.078.2/src/dmd/backend/cod4.c 2018-02-07 11:17:05.000000000 +0100 @@ -2064,16 +2064,20 @@ goto oplt; case OPgt: cdb.gen2(0xF7,grex | modregrmx(3,3,reg)); // NEG reg -#if TARGET_WINDOS - // What does the Windows platform do? - // lower INT_MIN by 1? See test exe9.c - // BUG: fix later + /* Flips the sign bit unless the value is 0 or int.min. + Also sets the carry bit when the value is not 0. */ code_orflag(cdb.last(), CFpsw); cdb.genc2(0x81,grex | modregrmx(3,3,reg),0); // SBB reg,0 -#endif + /* Subtracts the carry bit. This turns int.min into + int.max, flipping the sign bit. + For other negative and positive values, subtracting 1 + doesn't affect the sign bit. + For 0, the carry bit is not set, so this does nothing + and the sign bit is not affected. */ goto oplt; case OPlt: oplt: + // Get the sign bit, i.e. 1 if the value is negative. if (!I16) cdb.genc2(0xC1,grex | modregrmx(3,5,reg),sz * 8 - 1); // SHR reg,31 else diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dmd-2.078.1/src/dmd/link.d new/dmd-2.078.2/src/dmd/link.d --- old/dmd-2.078.1/src/dmd/link.d 2018-01-21 23:30:35.000000000 +0100 +++ new/dmd-2.078.2/src/dmd/link.d 2018-02-07 11:17:05.000000000 +0100 @@ -960,21 +960,23 @@ const(char)* linkOptions(bool x64) { OutBuffer cmdbuf; - if (auto p = getVCDir(VCDir.Lib, x64)) + if (auto vclibdir = getVCDir(VCDir.Lib, x64)) { cmdbuf.writestring(" /LIBPATH:\""); - cmdbuf.writestring(p); + cmdbuf.writestring(vclibdir); cmdbuf.writeByte('\"'); - } - if (VisualStudioVersion && strcmp(VisualStudioVersion, "14") >= 0) - { - if (auto p = getUCRTLibPath(x64)) + + if (FileName.exists(FileName.combine(vclibdir, "legacy_stdio_definitions.lib"))) { - cmdbuf.writestring(" /LIBPATH:\""); - cmdbuf.writestring(p); - cmdbuf.writeByte('\"'); + // VS2015 or later use UCRT + cmdbuf.writestring(" legacy_stdio_definitions.lib"); + if (auto p = getUCRTLibPath(x64)) + { + cmdbuf.writestring(" /LIBPATH:\""); + cmdbuf.writestring(p); + cmdbuf.writeByte('\"'); + } } - cmdbuf.writestring(" legacy_stdio_definitions.lib"); } const(char)* windowssdkdir = getenv("WindowsSdkDir"); if (auto p = getSDKLibPath(x64)) @@ -1046,7 +1048,7 @@ if (WindowsSdkDir is null) { WindowsSdkDir = GetRegistryString(r"Microsoft\Windows Kits\Installed Roots", "KitsRoot10"); - if (WindowsSdkDir && !FileName.exists(FileName.combine(WindowsSdkDir, "Lib"))) + if (WindowsSdkDir && !findLatestSDKDir(FileName.combine(WindowsSdkDir, "Include"), r"um\windows.h")) WindowsSdkDir = null; } if (WindowsSdkDir is null) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dmd-2.078.1/test/runnable/mars1.d new/dmd-2.078.2/test/runnable/mars1.d --- old/dmd-2.078.1/test/runnable/mars1.d 2018-01-21 23:30:35.000000000 +0100 +++ new/dmd-2.078.2/test/runnable/mars1.d 2018-02-07 11:17:05.000000000 +0100 @@ -1725,6 +1725,17 @@ //////////////////////////////////////////////////////////////////////// +void test18315() // https://issues.dlang.org/show_bug.cgi?id=18315 +{ + int i = int.min; + bool b = i > 0; + assert(!b); + b = 0 < i; + assert(!b); +} + +//////////////////////////////////////////////////////////////////////// + int main() { testgoto(); @@ -1785,6 +1796,7 @@ testeqeqranges(); testdivcmp(); test16997(); + test18315(); printf("Success\n"); return 0; } ++++++ druntime-2.078.1.tar.gz -> druntime-2.078.2.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/druntime-2.078.1/src/object.d new/druntime-2.078.2/src/object.d --- old/druntime-2.078.1/src/object.d 2018-01-12 18:35:35.000000000 +0100 +++ new/druntime-2.078.2/src/object.d 2018-01-24 22:41:10.000000000 +0100 @@ -3456,6 +3456,11 @@ if (at(lhs, u) != at(rhs, u)) return false; } + else static if (__traits(isAssociativeArray, U1)) + { + if (at(lhs, u) != at(rhs, u)) + return false; + } else { if (at(lhs, u).tupleof != at(rhs, u).tupleof) @@ -3508,6 +3513,21 @@ assert(arr2 == arr3); } +// https://issues.dlang.org/show_bug.cgi?id=18252 +unittest +{ + string[int][] a1, a2; + assert(__equals(a1, a2)); + assert(a1 == a2); + a1 ~= [0: "zero"]; + a2 ~= [0: "zero"]; + assert(__equals(a1, a2)); + assert(a1 == a2); + a2[0][1] = "one"; + assert(!__equals(a1, a2)); + assert(a1 != a2); +} + // Compare class and interface objects for ordering. private int __cmp(Obj)(Obj lhs, Obj rhs) if (is(Obj : Object)) ++++++ phobos-2.078.1.tar.gz -> phobos-2.078.2.tar.gz ++++++
