Hi, This patch merges the D front-end with upstream dmd 817610b16d, and standard library with phobos b578dfad9. D front-end changes: - Import latest bug fixes to mainline. Phobos changes: - Import latest bug fixes to mainline. - std.logger module has been moved out of experimental. - Removed std.experimental.typecons module. Bootstrapped and regression tested on x86_64-linux-gnu/-m32/-mx32, committed to mainline. Regards, Iain. --- gcc/d/ChangeLog: * dmd/MERGE: Merge upstream dmd 817610b16d. * d-ctfloat.cc (CTFloat::parse): Update for new front-end interface. * d-lang.cc (d_parse_file): Likewise. * expr.cc (ExprVisitor::visit (AssignExp *)): Remove handling of array assignments to non-trivial static and dynamic arrays. * runtime.def (ARRAYASSIGN): Remove. (ARRAYASSIGN_L): Remove. (ARRAYASSIGN_R): Remove. libphobos/ChangeLog: * libdruntime/MERGE: Merge upstream druntime 817610b16d. * libdruntime/Makefile.am (DRUNTIME_DSOURCES): Add core/internal/array/arrayassign.d. * libdruntime/Makefile.in: Regenerate. * src/MERGE: Merge upstream phobos b578dfad9. * src/Makefile.am (PHOBOS_DSOURCES): Remove std/experimental/typecons.d. Add std/logger package. * src/Makefile.in: Regenerate. --- gcc/d/d-ctfloat.cc | 5 +- gcc/d/d-lang.cc | 1 - gcc/d/dmd/MERGE | 2 +- gcc/d/dmd/README.md | 282 +- gcc/d/dmd/astenums.d | 1 - gcc/d/dmd/canthrow.d | 4 +- gcc/d/dmd/common/README.md | 8 +- gcc/d/dmd/common/outbuffer.d | 78 +- gcc/d/dmd/ctfeexpr.d | 20 +- gcc/d/dmd/declaration.d | 22 +- gcc/d/dmd/declaration.h | 9 +- gcc/d/dmd/dimport.d | 11 +- gcc/d/dmd/dinterpret.d | 35 +- gcc/d/dmd/dmacro.d | 42 +- gcc/d/dmd/dmodule.d | 22 +- gcc/d/dmd/doc.d | 80 +- gcc/d/dmd/dsymbolsem.d | 162 +- gcc/d/dmd/dtemplate.d | 9 +- gcc/d/dmd/escape.d | 185 +- gcc/d/dmd/expression.d | 2 +- gcc/d/dmd/expressionsem.d | 95 +- gcc/d/dmd/func.d | 2 - gcc/d/dmd/globals.d | 47 +- gcc/d/dmd/globals.h | 37 +- gcc/d/dmd/hdrgen.d | 16 +- gcc/d/dmd/id.d | 3 + gcc/d/dmd/identifier.d | 2 +- gcc/d/dmd/lexer.d | 2 +- gcc/d/dmd/module.h | 1 - gcc/d/dmd/mtype.d | 38 +- gcc/d/dmd/parse.d | 80 +- gcc/d/dmd/root/README.md | 44 +- gcc/d/dmd/root/array.d | 18 + gcc/d/dmd/root/ctfloat.d | 2 +- gcc/d/dmd/root/ctfloat.h | 2 +- gcc/d/dmd/semantic3.d | 3 - gcc/d/dmd/traits.d | 5 + gcc/d/dmd/typesem.d | 5 + gcc/d/expr.cc | 30 +- gcc/d/runtime.def | 9 +- .../gdc.test/compilable/aliasassign.d | 105 +- .../compilable/scope_infer_array_assign.d | 28 + gcc/testsuite/gdc.test/compilable/test21197.d | 25 + gcc/testsuite/gdc.test/compilable/uda.d | 6 + .../gdc.test/fail_compilation/aliasassign2.d | 33 + .../gdc.test/fail_compilation/diag23295.d | 40 + .../gdc.test/fail_compilation/fail10968.d | 29 +- .../gdc.test/fail_compilation/fail14669.d | 4 +- .../gdc.test/fail_compilation/ice8795.d | 2 +- .../fail_compilation/imports/import15525.d | 3 + .../gdc.test/fail_compilation/issue12652.d | 24 + .../gdc.test/fail_compilation/retscope6.d | 2 + .../gdc.test/fail_compilation/shared.d | 11 + .../gdc.test/fail_compilation/test15525.d | 17 + .../gdc.test/fail_compilation/test17423.d | 3 +- .../gdc.test/fail_compilation/test17764.d | 21 + .../gdc.test/fail_compilation/test20245.d | 19 +- .../gdc.test/fail_compilation/test20809.d | 44 + .../gdc.test/fail_compilation/test23073.d | 35 + .../gdc.test/fail_compilation/testsemi.d | 46 + gcc/testsuite/gdc.test/runnable/test20365.d | 21 + gcc/testsuite/gdc.test/runnable/test20809.d | 14 + libphobos/libdruntime/MERGE | 2 +- libphobos/libdruntime/Makefile.am | 23 +- libphobos/libdruntime/Makefile.in | 26 +- libphobos/libdruntime/core/demangle.d | 2 +- libphobos/libdruntime/core/exception.d | 10 +- .../core/internal/array/arrayassign.d | 304 ++ .../core/internal/array/equality.d | 27 + .../libdruntime/core/sys/posix/sys/socket.d | 36 +- libphobos/libdruntime/object.d | 91 +- libphobos/libdruntime/rt/arrayassign.d | 165 - libphobos/src/MERGE | 2 +- libphobos/src/Makefile.am | 13 +- libphobos/src/Makefile.in | 33 +- libphobos/src/index.dd | 25 +- libphobos/src/std/algorithm/iteration.d | 15 +- libphobos/src/std/algorithm/searching.d | 2 +- libphobos/src/std/array.d | 6 +- libphobos/src/std/bigint.d | 2 +- libphobos/src/std/complex.d | 25 + libphobos/src/std/container/rbtree.d | 2 +- libphobos/src/std/experimental/logger/core.d | 3058 +---------------- .../src/std/experimental/logger/filelogger.d | 281 +- .../src/std/experimental/logger/multilogger.d | 209 +- .../src/std/experimental/logger/nulllogger.d | 50 +- .../src/std/experimental/logger/package.d | 179 +- libphobos/src/std/experimental/typecons.d | 1083 ------ libphobos/src/std/getopt.d | 2 +- libphobos/src/std/json.d | 28 +- libphobos/src/std/logger/core.d | 3049 ++++++++++++++++ libphobos/src/std/logger/filelogger.d | 272 ++ libphobos/src/std/logger/multilogger.d | 200 ++ libphobos/src/std/logger/nulllogger.d | 41 + libphobos/src/std/logger/package.d | 168 + libphobos/src/std/meta.d | 32 +- libphobos/src/std/package.d | 1 + libphobos/src/std/random.d | 2 +- libphobos/src/std/regex/package.d | 54 +- libphobos/src/std/string.d | 9 +- libphobos/src/std/typecons.d | 4 +- 101 files changed, 5812 insertions(+), 5674 deletions(-) create mode 100644 gcc/testsuite/gdc.test/compilable/scope_infer_array_assign.d create mode 100644 gcc/testsuite/gdc.test/compilable/test21197.d create mode 100644 gcc/testsuite/gdc.test/fail_compilation/aliasassign2.d create mode 100644 gcc/testsuite/gdc.test/fail_compilation/diag23295.d create mode 100644 gcc/testsuite/gdc.test/fail_compilation/imports/import15525.d create mode 100644 gcc/testsuite/gdc.test/fail_compilation/issue12652.d create mode 100644 gcc/testsuite/gdc.test/fail_compilation/test15525.d create mode 100644 gcc/testsuite/gdc.test/fail_compilation/test17764.d create mode 100644 gcc/testsuite/gdc.test/fail_compilation/test20809.d create mode 100644 gcc/testsuite/gdc.test/fail_compilation/test23073.d create mode 100644 gcc/testsuite/gdc.test/fail_compilation/testsemi.d create mode 100644 gcc/testsuite/gdc.test/runnable/test20365.d create mode 100644 gcc/testsuite/gdc.test/runnable/test20809.d create mode 100644 libphobos/libdruntime/core/internal/array/arrayassign.d delete mode 100644 libphobos/src/std/experimental/typecons.d create mode 100644 libphobos/src/std/logger/core.d create mode 100644 libphobos/src/std/logger/filelogger.d create mode 100644 libphobos/src/std/logger/multilogger.d create mode 100644 libphobos/src/std/logger/nulllogger.d create mode 100644 libphobos/src/std/logger/package.d