Hi, This patch merges the D front-end and runtime library with upstream dmd e770945277, and the standard runtime library with phobos 6d6e0b9b9. Synchronizing with the upstream release candidate as of 2024-01-27. D front-end changes: - Import latest fixes from dmd v2.107.0-beta.1. - Hex strings can now be cast to integer arrays. - Add support for Interpolated Expression Sequences. D runtime changes: - Import latest fixes from druntime v2.107.0-beta.1. - New core.interpolation module to provide run-time support for D interpolated expression sequence literals. Phobos changes: - Import latest fixes from phobos v2.107.0-beta.1. - `std.range.primitives.isBidirectionalRange', and `std.range.primitives.isRandomAccessRange' now take an optional element type. Bootstrapped and regression tested on x86_64-linux-gnu/-m32, committed to mainline. Regards, Iain. --- gcc/d/ChangeLog: * dmd/MERGE: Merge upstream dmd e770945277. * Make-lang.in (D_FRONTEND_OBJS): Add d/basicmangle.o, d/enumsem.o, d/funcsem.o, d/templatesem.o. * d-builtins.cc (build_frontend_type): Update for new front-end interface. * d-codegen.cc (declaration_type): Likewise. (parameter_type): Likewise. * d-incpath.cc (add_globalpaths): Likewise. (add_filepaths): Likewise. (add_import_paths): Likewise. * d-lang.cc (d_init_options): Likewise. (d_handle_option): Likewise. (d_parse_file): Likewise. * decl.cc (DeclVisitor::finish_vtable): Likewise. (DeclVisitor::visit (FuncDeclaration *)): Likewise. (get_symbol_decl): Likewise. * expr.cc (ExprVisitor::visit (StringExp *)): Likewise. Implement support for 8-byte hexadecimal strings. * typeinfo.cc (create_tinfo_types): Update internal TypeInfo representation. (TypeInfoVisitor::visit (TypeInfoConstDeclaration *)): Update for new front-end interface. (TypeInfoVisitor::visit (TypeInfoInvariantDeclaration *)): Likewise. (TypeInfoVisitor::visit (TypeInfoSharedDeclaration *)): Likewise. (TypeInfoVisitor::visit (TypeInfoWildDeclaration *)): Likewise. (TypeInfoVisitor::visit (TypeInfoClassDeclaration *)): Move data for TypeInfo_Class.nameSig to the end of the object. (create_typeinfo): Update for new front-end interface. libphobos/ChangeLog: * libdruntime/MERGE: Merge upstream druntime e770945277. * libdruntime/Makefile.am (DRUNTIME_SOURCES): Add core/interpolation.d. * libdruntime/Makefile.in: Regenerate. * src/MERGE: Merge upstream phobos 6d6e0b9b9. --- gcc/d/Make-lang.in | 4 + gcc/d/d-builtins.cc | 2 +- gcc/d/d-codegen.cc | 4 +- gcc/d/d-incpath.cc | 41 +- gcc/d/d-lang.cc | 34 +- gcc/d/decl.cc | 37 +- gcc/d/dmd/MERGE | 2 +- gcc/d/dmd/README.md | 4 + gcc/d/dmd/aggregate.h | 3 +- gcc/d/dmd/basicmangle.d | 109 ++ gcc/d/dmd/clone.d | 9 +- gcc/d/dmd/common/outbuffer.d | 27 + gcc/d/dmd/cond.d | 19 +- gcc/d/dmd/constfold.d | 6 +- gcc/d/dmd/ctfeexpr.d | 10 +- gcc/d/dmd/dclass.d | 2 + gcc/d/dmd/declaration.h | 7 +- gcc/d/dmd/denum.d | 85 - gcc/d/dmd/dinterpret.d | 68 +- gcc/d/dmd/dmangle.d | 144 +- gcc/d/dmd/dmodule.d | 6 +- gcc/d/dmd/doc.d | 3 +- gcc/d/dmd/dstruct.d | 2 +- gcc/d/dmd/dsymbolsem.d | 574 +----- gcc/d/dmd/dtemplate.d | 1646 +---------------- gcc/d/dmd/enum.h | 2 - gcc/d/dmd/enumsem.d | 714 +++++++ gcc/d/dmd/expression.d | 44 +- gcc/d/dmd/expression.h | 15 +- gcc/d/dmd/expressionsem.d | 103 +- gcc/d/dmd/func.d | 199 +- gcc/d/dmd/funcsem.d | 219 +++ gcc/d/dmd/globals.d | 12 +- gcc/d/dmd/globals.h | 12 +- gcc/d/dmd/hdrgen.d | 84 + gcc/d/dmd/id.d | 6 + gcc/d/dmd/json.d | 14 +- gcc/d/dmd/lexer.d | 166 +- gcc/d/dmd/mtype.d | 56 +- gcc/d/dmd/mtype.h | 2 +- gcc/d/dmd/parse.d | 9 + gcc/d/dmd/parsetimevisitor.d | 1 + gcc/d/dmd/res/default_ddoc_theme.ddoc | 8 +- gcc/d/dmd/root/filename.d | 67 +- gcc/d/dmd/root/filename.h | 2 +- gcc/d/dmd/semantic3.d | 3 +- gcc/d/dmd/statementsem.d | 3 +- gcc/d/dmd/templatesem.d | 1497 +++++++++++++++ gcc/d/dmd/tokens.d | 33 +- gcc/d/dmd/tokens.h | 9 +- gcc/d/dmd/traits.d | 3 +- gcc/d/dmd/typesem.d | 26 +- gcc/d/dmd/typinf.d | 1 + gcc/d/dmd/visitor.h | 2 + gcc/d/expr.cc | 18 +- gcc/d/typeinfo.cc | 35 +- gcc/testsuite/gdc.test/compilable/test13281.d | 33 +- .../gdc.test/fail_compilation/b19523.d | 11 +- .../gdc.test/fail_compilation/b20011.d | 23 +- .../gdc.test/fail_compilation/bug15613.d | 15 +- .../gdc.test/fail_compilation/bug16165.d | 6 +- .../gdc.test/fail_compilation/bug9631.d | 26 +- .../gdc.test/fail_compilation/callconst.d | 5 +- .../fail_compilation/constraints_aggr.d | 4 +- .../fail_compilation/constraints_func1.d | 26 +- .../fail_compilation/constraints_func2.d | 28 +- .../fail_compilation/constraints_func3.d | 12 +- .../fail_compilation/constraints_func4.d | 12 +- .../gdc.test/fail_compilation/diag13942.d | 2 +- .../gdc.test/fail_compilation/diag16977.d | 2 +- .../gdc.test/fail_compilation/diag20268.d | 2 +- .../gdc.test/fail_compilation/diag23355.d | 4 +- .../gdc.test/fail_compilation/diag8101.d | 53 +- .../gdc.test/fail_compilation/diag8648.d | 6 +- .../gdc.test/fail_compilation/diag9004.d | 2 +- .../gdc.test/fail_compilation/diagin.d | 9 +- .../gdc.test/fail_compilation/fail12744.d | 4 +- .../gdc.test/fail_compilation/fail136.d | 2 +- .../gdc.test/fail_compilation/fail14669.d | 2 +- .../gdc.test/fail_compilation/fail162.d | 2 +- .../gdc.test/fail_compilation/fail19948.d | 5 +- .../gdc.test/fail_compilation/fail20183.d | 3 +- .../gdc.test/fail_compilation/fail20730b.d | 2 +- .../gdc.test/fail_compilation/fail20800.d | 9 +- .../gdc.test/fail_compilation/fail22202.d | 5 +- .../gdc.test/fail_compilation/fail236.d | 2 +- .../gdc.test/fail_compilation/fail24301.d | 5 +- .../gdc.test/fail_compilation/fail263.d | 9 +- .../gdc.test/fail_compilation/fail322.d | 14 +- .../gdc.test/fail_compilation/fail332.d | 50 +- .../gdc.test/fail_compilation/fail58.d | 14 +- .../gdc.test/fail_compilation/fail8009.d | 2 +- .../gdc.test/fail_compilation/fail95.d | 2 +- .../gdc.test/fail_compilation/hexstring.d | 57 +- .../gdc.test/fail_compilation/ice10922.d | 5 +- .../gdc.test/fail_compilation/ice11856_1.d | 6 +- .../gdc.test/fail_compilation/ice12501.d | 16 +- .../gdc.test/fail_compilation/ice14130.d | 2 +- .../gdc.test/fail_compilation/ice14907.d | 6 +- .../gdc.test/fail_compilation/ice14923.d | 11 +- .../gdc.test/fail_compilation/ice23097.d | 9 +- .../gdc.test/fail_compilation/ice6538.d | 2 +- .../gdc.test/fail_compilation/ice9284.d | 2 +- .../gdc.test/fail_compilation/ice9540.d | 11 +- .../fail_compilation/iconv_interface_array.d | 51 + .../interpolatedexpressionsequence_postfix.d | 13 + .../fail_compilation/named_arguments_error.d | 37 +- .../gdc.test/fail_compilation/previewin.d | 13 +- .../gdc.test/fail_compilation/pull12941.d | 6 +- .../gdc.test/fail_compilation/test19107.d | 2 +- .../gdc.test/fail_compilation/test19971.d | 7 +- .../gdc.test/fail_compilation/test21008.d | 9 +- .../gdc.test/fail_compilation/test21025.d | 2 +- .../gdc.test/fail_compilation/test21807.d | 3 +- .../gdc.test/fail_compilation/ufcs.d | 23 +- .../gdc.test/fail_compilation/vararg2.d | 10 +- .../runnable/interpolatedexpressionsequence.d | 51 + gcc/testsuite/gdc.test/runnable/literal.d | 22 + libphobos/libdruntime/MERGE | 2 +- libphobos/libdruntime/Makefile.am | 53 +- libphobos/libdruntime/Makefile.in | 100 +- .../core/internal/array/construction.d | 15 +- .../core/internal/array/duplication.d | 10 +- .../libdruntime/core/internal/array/utils.d | 1 - .../core/internal/gc/impl/conservative/gc.d | 4 +- libphobos/libdruntime/core/interpolation.d | 156 ++ libphobos/libdruntime/core/lifetime.d | 2 +- libphobos/libdruntime/core/stdc/string.d | 2 + libphobos/libdruntime/core/sys/posix/string.d | 2 - libphobos/libdruntime/core/thread/osthread.d | 5 +- .../libdruntime/core/thread/threadbase.d | 10 +- libphobos/libdruntime/object.d | 5 +- libphobos/libdruntime/rt/cast_.d | 17 +- libphobos/src/MERGE | 2 +- libphobos/src/std/bitmanip.d | 6 +- libphobos/src/std/range/primitives.d | 99 +- 136 files changed, 4389 insertions(+), 3104 deletions(-) create mode 100644 gcc/d/dmd/basicmangle.d create mode 100644 gcc/d/dmd/enumsem.d create mode 100644 gcc/d/dmd/funcsem.d create mode 100644 gcc/d/dmd/templatesem.d create mode 100644 gcc/testsuite/gdc.test/fail_compilation/iconv_interface_array.d create mode 100644 gcc/testsuite/gdc.test/fail_compilation/interpolatedexpressionsequence_postfix.d create mode 100644 gcc/testsuite/gdc.test/runnable/interpolatedexpressionsequence.d create mode 100644 libphobos/libdruntime/core/interpolation.d