Hi, This patch merges the D front-end/run-time library with upstream dmd d579c467c1, and standard library with phobos 88aa69b14. D front-end changes: - Throwing from contracts of `nothrow' functions has been deprecated, as this breaks the guarantees of `nothrow'. - Added language support for initializing the interior pointer of associative arrays using `new' keyword. Phobos changes: - The std.digest.digest module has been removed. - The std.xml module has been removed. Bootstrapped and regression tested on x86_64-linux-gnu/-m32/-mx32, committed to mainline. Regards, Iain. --- gcc/d/ChangeLog: * dmd/MERGE: Merge upstream dmd d579c467c1. * decl.cc (layout_struct_initializer): Update for new front-end interface. * expr.cc (ExprVisitor::visit (AssignExp *)): Remove lowering of array assignments. (ExprVisitor::visit (NewExp *)): Add new lowering of new'ing associative arrays to an _aaNew() library call. * runtime.def (ARRAYSETASSIGN): Remove. (AANEW): Define. libphobos/ChangeLog: * libdruntime/MERGE: Merge upstream druntime d579c467c1. * libdruntime/Makefile.am (DRUNTIME_DSOURCES): Remove rt/arrayassign.d. * libdruntime/Makefile.in: Regenerate. * src/MERGE: Merge upstream phobos 88aa69b14. * src/Makefile.am (PHOBOS_DSOURCES): Remove std/digest/digest.d, std/xml.d. * src/Makefile.in: Regenerate. --- gcc/d/decl.cc | 2 +- gcc/d/dmd/MERGE | 2 +- gcc/d/dmd/aggregate.d | 13 +- gcc/d/dmd/aggregate.h | 2 +- gcc/d/dmd/apply.d | 25 +- gcc/d/dmd/arrayop.d | 12 +- gcc/d/dmd/attrib.d | 4 +- gcc/d/dmd/canthrow.d | 6 +- gcc/d/dmd/chkformat.d | 600 +--- gcc/d/dmd/clone.d | 6 +- gcc/d/dmd/cparse.d | 19 +- gcc/d/dmd/dcast.d | 4 +- gcc/d/dmd/declaration.h | 4 +- gcc/d/dmd/dimport.d | 7 +- gcc/d/dmd/dinterpret.d | 12 +- gcc/d/dmd/dmangle.d | 17 + gcc/d/dmd/doc.d | 4 +- gcc/d/dmd/dsymbol.d | 6 + gcc/d/dmd/dsymbol.h | 2 +- gcc/d/dmd/dsymbolsem.d | 48 +- gcc/d/dmd/dtemplate.d | 71 +- gcc/d/dmd/escape.d | 5 +- gcc/d/dmd/expression.d | 20 + gcc/d/dmd/expression.h | 22 +- gcc/d/dmd/expressionsem.d | 92 +- gcc/d/dmd/func.d | 19 +- gcc/d/dmd/iasmgcc.d | 8 +- gcc/d/dmd/id.d | 2 + gcc/d/dmd/init.d | 1 + gcc/d/dmd/init.h | 1 + gcc/d/dmd/initsem.d | 553 +-- gcc/d/dmd/lexer.d | 9 +- gcc/d/dmd/module.h | 2 +- gcc/d/dmd/mtype.d | 649 ++-- gcc/d/dmd/mtype.h | 4 +- gcc/d/dmd/opover.d | 9 +- gcc/d/dmd/parse.d | 102 +- gcc/d/dmd/root/object.h | 2 +- gcc/d/dmd/semantic3.d | 40 +- gcc/d/dmd/transitivevisitor.d | 73 +- gcc/d/dmd/typesem.d | 18 +- gcc/d/expr.cc | 33 +- gcc/d/runtime.def | 5 +- .../gdc.test/compilable/commontype.d | 20 +- .../gdc.test/compilable/imports/cimports2a.i | 4 + .../gdc.test/compilable/imports/cimports2b.i | 4 + .../gdc.test/compilable/imports/format23327.d | 7 + .../compilable/imports/format23327/write.d | 0 .../gdc.test/compilable/segfaultgolf.d | 50 + .../gdc.test/compilable/statictemplatethis.d | 45 + gcc/testsuite/gdc.test/compilable/test13123.d | 38 + gcc/testsuite/gdc.test/compilable/test21243.d | 21 + gcc/testsuite/gdc.test/compilable/test21956.d | 16 + gcc/testsuite/gdc.test/compilable/test22674.d | 10 + gcc/testsuite/gdc.test/compilable/test23173.d | 6 + gcc/testsuite/gdc.test/compilable/test23258.d | 21 + gcc/testsuite/gdc.test/compilable/test23306.d | 7 + gcc/testsuite/gdc.test/compilable/test23327.d | 3 + gcc/testsuite/gdc.test/compilable/vararg.d | 20 + .../gdc.test/fail_compilation/diag10169.d | 2 +- .../gdc.test/fail_compilation/diag10783.d | 2 +- .../gdc.test/fail_compilation/diag13528.d | 6 +- .../gdc.test/fail_compilation/diag14145.d | 2 +- .../gdc.test/fail_compilation/diag15713.d | 2 +- .../gdc.test/fail_compilation/diag23355.d | 16 + .../gdc.test/fail_compilation/diag3438.d | 5 +- .../gdc.test/fail_compilation/diag3438b.d | 9 - .../gdc.test/fail_compilation/diag8894.d | 8 +- .../gdc.test/fail_compilation/dip22a.d | 8 +- .../gdc.test/fail_compilation/e15876_1.d | 15 +- .../gdc.test/fail_compilation/e15876_3.d | 30 +- .../gdc.test/fail_compilation/e15876_4.d | 26 +- .../gdc.test/fail_compilation/fail10968.d | 31 +- .../gdc.test/fail_compilation/fail121.d | 4 +- .../gdc.test/fail_compilation/fail13123.d | 21 + .../gdc.test/fail_compilation/fail17646.d | 5 +- .../gdc.test/fail_compilation/fail18892.d | 4 +- .../gdc.test/fail_compilation/fail18970.d | 4 +- .../gdc.test/fail_compilation/fail18979.d | 2 +- .../gdc.test/fail_compilation/fail19103.d | 4 +- .../gdc.test/fail_compilation/fail19687.d | 2 +- .../gdc.test/fail_compilation/fail19913.d | 2 +- .../gdc.test/fail_compilation/fail21243.d | 19 + .../gdc.test/fail_compilation/fail23109.d | 4 +- .../gdc.test/fail_compilation/fail7372.d | 13 + .../fail_compilation/faildottypeinfo.d | 2 +- .../gdc.test/fail_compilation/failoffset.d | 2 +- .../gdc.test/fail_compilation/ice10938.d | 2 +- .../gdc.test/fail_compilation/ice12174.d | 2 +- .../gdc.test/fail_compilation/ice15855.d | 24 +- .../gdc.test/fail_compilation/ice18469.d | 2 +- .../gdc.test/fail_compilation/ice19755.d | 2 +- .../fail_compilation/imports/fail7372.d | 9 + .../fail_compilation/misc_parser_err_cov1.d | 1 - .../gdc.test/fail_compilation/mixinprop.d | 13 + .../gdc.test/fail_compilation/test15785.d | 2 +- .../gdc.test/fail_compilation/test15897.d | 2 +- .../gdc.test/fail_compilation/test16188.d | 2 +- .../gdc.test/fail_compilation/test17380spec.d | 2 +- .../gdc.test/fail_compilation/test21096.d | 6 +- .../gdc.test/fail_compilation/test22680.d | 17 + gcc/testsuite/gdc.test/runnable/newaa.d | 23 + gcc/testsuite/gdc.test/runnable/test23234.d | 22 + gcc/testsuite/gdc.test/runnable/testassign.d | 16 + libphobos/libdruntime/MERGE | 2 +- libphobos/libdruntime/Makefile.am | 10 +- libphobos/libdruntime/Makefile.in | 21 +- libphobos/libdruntime/__builtins.di | 2 +- libphobos/libdruntime/core/demangle.d | 250 +- .../core/internal/array/arrayassign.d | 148 + libphobos/libdruntime/core/internal/dassert.d | 2 +- libphobos/libdruntime/core/internal/utf.d | 21 +- libphobos/libdruntime/core/simd.d | 2 +- libphobos/libdruntime/core/stdc/fenv.d | 2 +- libphobos/libdruntime/core/stdc/math.d | 11 +- .../libdruntime/core/sys/darwin/mach/loader.d | 2 +- libphobos/libdruntime/core/sys/linux/fcntl.d | 2 +- libphobos/libdruntime/core/sys/posix/dlfcn.d | 4 +- libphobos/libdruntime/core/sys/posix/mqueue.d | 4 +- libphobos/libdruntime/core/sys/posix/setjmp.d | 16 + libphobos/libdruntime/core/sys/posix/stdlib.d | 20 +- .../libdruntime/core/sys/posix/sys/types.d | 12 + .../libdruntime/core/sys/windows/stacktrace.d | 3 +- libphobos/libdruntime/core/time.d | 2 +- libphobos/libdruntime/object.d | 3 +- libphobos/libdruntime/rt/arrayassign.d | 60 - libphobos/libdruntime/rt/lifetime.d | 60 - libphobos/src/MERGE | 2 +- libphobos/src/Makefile.am | 8 +- libphobos/src/Makefile.in | 14 +- libphobos/src/index.dd | 4 - libphobos/src/std/algorithm/comparison.d | 20 +- libphobos/src/std/algorithm/iteration.d | 17 + libphobos/src/std/algorithm/searching.d | 76 +- libphobos/src/std/algorithm/sorting.d | 4 +- libphobos/src/std/compiler.d | 2 +- libphobos/src/std/concurrency.d | 7 +- libphobos/src/std/container/array.d | 31 +- libphobos/src/std/container/dlist.d | 2 +- libphobos/src/std/conv.d | 15 +- libphobos/src/std/datetime/stopwatch.d | 2 +- libphobos/src/std/datetime/timezone.d | 3 +- libphobos/src/std/digest/crc.d | 8 +- libphobos/src/std/digest/digest.d | 3 - .../building_blocks/affix_allocator.d | 4 +- .../building_blocks/aligned_block_list.d | 10 +- .../building_blocks/allocator_list.d | 20 +- .../building_blocks/fallback_allocator.d | 14 +- .../allocator/building_blocks/free_list.d | 4 +- .../allocator/building_blocks/free_tree.d | 4 +- .../allocator/building_blocks/quantizer.d | 8 +- .../allocator/building_blocks/region.d | 1111 +++--- .../building_blocks/scoped_allocator.d | 6 +- .../allocator/building_blocks/segregator.d | 8 +- .../building_blocks/stats_collector.d | 8 +- .../src/std/experimental/allocator/package.d | 14 +- libphobos/src/std/file.d | 2 +- libphobos/src/std/format/package.d | 2 +- .../src/std/internal/math/gammafunction.d | 2 +- libphobos/src/std/logger/core.d | 21 +- libphobos/src/std/net/curl.d | 8 +- libphobos/src/std/numeric.d | 4 +- libphobos/src/std/path.d | 29 +- libphobos/src/std/range/primitives.d | 13 +- libphobos/src/std/socket.d | 4 +- libphobos/src/std/stdio.d | 5 +- libphobos/src/std/sumtype.d | 47 - libphobos/src/std/typecons.d | 40 + libphobos/src/std/uni/package.d | 2 +- libphobos/src/std/utf.d | 2 +- libphobos/src/std/xml.d | 3113 ----------------- 171 files changed, 3282 insertions(+), 5304 deletions(-) create mode 100644 gcc/testsuite/gdc.test/compilable/imports/cimports2a.i create mode 100644 gcc/testsuite/gdc.test/compilable/imports/cimports2b.i create mode 100644 gcc/testsuite/gdc.test/compilable/imports/format23327.d create mode 100644 gcc/testsuite/gdc.test/compilable/imports/format23327/write.d create mode 100644 gcc/testsuite/gdc.test/compilable/segfaultgolf.d create mode 100644 gcc/testsuite/gdc.test/compilable/statictemplatethis.d create mode 100644 gcc/testsuite/gdc.test/compilable/test13123.d create mode 100644 gcc/testsuite/gdc.test/compilable/test21243.d create mode 100644 gcc/testsuite/gdc.test/compilable/test21956.d create mode 100644 gcc/testsuite/gdc.test/compilable/test22674.d create mode 100644 gcc/testsuite/gdc.test/compilable/test23173.d create mode 100644 gcc/testsuite/gdc.test/compilable/test23258.d create mode 100644 gcc/testsuite/gdc.test/compilable/test23306.d create mode 100644 gcc/testsuite/gdc.test/compilable/test23327.d create mode 100644 gcc/testsuite/gdc.test/compilable/vararg.d create mode 100644 gcc/testsuite/gdc.test/fail_compilation/diag23355.d delete mode 100644 gcc/testsuite/gdc.test/fail_compilation/diag3438b.d create mode 100644 gcc/testsuite/gdc.test/fail_compilation/fail13123.d create mode 100644 gcc/testsuite/gdc.test/fail_compilation/fail21243.d create mode 100644 gcc/testsuite/gdc.test/fail_compilation/fail7372.d create mode 100644 gcc/testsuite/gdc.test/fail_compilation/imports/fail7372.d create mode 100644 gcc/testsuite/gdc.test/fail_compilation/mixinprop.d create mode 100644 gcc/testsuite/gdc.test/fail_compilation/test22680.d create mode 100644 gcc/testsuite/gdc.test/runnable/newaa.d create mode 100644 gcc/testsuite/gdc.test/runnable/test23234.d delete mode 100644 libphobos/libdruntime/rt/arrayassign.d delete mode 100644 libphobos/src/std/digest/digest.d delete mode 100644 libphobos/src/std/xml.d