RISC-V: Make dynamic LMUL cost model more accurate for conversion codes
[official-gcc.git] / gcc / d / ChangeLog-2022
blob7630f24840156811bad76f2ea4399991cee0400a
1 2022-12-12  Iain Buclaw  <ibuclaw@gdcproject.org>
3         PR d/108055
4         * decl.cc (function_defined_in_root_p): Check all enclosing template
5         instances for definition in a root module.
6         (function_needs_inline_definition_p): Replace call to
7         function_defined_in_root_p with test for outer module `isRoot'.
9 2022-12-11  Iain Buclaw  <ibuclaw@gdcproject.org>
11         PR d/108050
12         * decl.cc (DeclVisitor::visit (Import *)): Handle build_import_decl
13         returning a TREE_LIST.
14         * imports.cc (ImportVisitor::visit (OverloadSet *)): New override.
16 2022-12-11  Iain Buclaw  <ibuclaw@gdcproject.org>
18         * dmd/MERGE: Merge upstream dmd c8ae4adb2e.
19         * typeinfo.cc (check_typeinfo_type): Update for new front-end
20         interface.
21         (TypeInfoVisitor::visit (TypeInfoStructDeclaration *)): Remove warning
22         that toHash() must be declared 'nothrow @safe`.
24 2022-12-11  Iain Buclaw  <ibuclaw@gdcproject.org>
26         * intrinsics.cc (expand_intrinsic_bsf): Fix comment.
27         (expand_intrinsic_bsr): Use BIT_XOR_EXPR instead of MINUS_EXPR.
29 2022-11-30  Iain Buclaw  <ibuclaw@gdcproject.org>
31         * Make-lang.in (D_TEXI_FILES): Add d/implement-d.texi.
32         * gdc.texi: Adjust introduction, include implement-d.texi.
33         * implement-d.texi: New file.
35 2022-11-30  Iain Buclaw  <ibuclaw@gdcproject.org>
37         * Make-lang.in: Only include doc/include when building documentation.
38         (d.html): Rename html directory to $(build_htmldir)/gdc.
40 2022-11-30  Iain Buclaw  <ibuclaw@gdcproject.org>
42         * gdc.texi: Separate indices into options and keywords.
44 2022-11-30  Iain Buclaw  <ibuclaw@gdcproject.org>
46         * gdc.texi: Update gdc option documentation.
47         * lang.opt (frevert=intpromote): Correct documentation.
49 2022-11-30  Iain Buclaw  <ibuclaw@gdcproject.org>
51         PR d/107592
52         * toir.cc (IRVisitor::push_unrolled_continue_label): New method.
53         (IRVisitor::pop_unrolled_continue_label): New method.
54         (IRVisitor::visit (UnrolledLoopStatement *)): Use them instead of
55         push_continue_label and pop_continue_label.
57 2022-11-23  Martin Liska  <mliska@suse.cz>
59         * Make-lang.in: Use it as $DO_LINK_MUTEX.
61 2022-11-23  Marek Polacek  <polacek@redhat.com>
63         Revert:
64         2022-11-23  Marek Polacek  <polacek@redhat.com>
66         * Make-lang.in: Remove NO_PIE_CFLAGS.
68 2022-11-23  Marek Polacek  <polacek@redhat.com>
70         * Make-lang.in: Remove NO_PIE_CFLAGS.
72 2022-11-14  Martin Liska  <mliska@suse.cz>
74         Revert:
75         2022-11-14  Martin Liska  <mliska@suse.cz>
77         * doc/conf.py: New file.
78         * doc/copyright.rst: New file.
79         * doc/general-public-license-3.rst: New file.
80         * doc/gnu-free-documentation-license.rst: New file.
81         * doc/index.rst: New file.
82         * doc/indices-and-tables.rst: New file.
83         * doc/invoking-gdc.rst: New file.
84         * doc/invoking-gdc/code-generation.rst: New file.
85         * doc/invoking-gdc/developer-options.rst: New file.
86         * doc/invoking-gdc/input-and-output-files.rst: New file.
87         * doc/invoking-gdc/options-for-directory-search.rst: New file.
88         * doc/invoking-gdc/options-for-linking.rst: New file.
89         * doc/invoking-gdc/runtime-options.rst: New file.
90         * doc/invoking-gdc/warnings.rst: New file.
92 2022-11-14  Martin Liska  <mliska@suse.cz>
94         Revert:
95         2022-11-14  Martin Liska  <mliska@suse.cz>
97         * d-target.def: Port to RST.
99 2022-11-14  Martin Liska  <mliska@suse.cz>
101         Revert:
102         2022-11-14  Martin Liska  <mliska@suse.cz>
104         * Make-lang.in: Support Sphinx based documentation.
106 2022-11-14  Martin Liska  <mliska@suse.cz>
108         Revert:
109         2022-11-09  Martin Liska  <mliska@suse.cz>
111         * gdc.texi: Removed.
113 2022-11-14  Martin Liska  <mliska@suse.cz>
115         Revert:
116         2022-11-14  Martin Liska  <mliska@suse.cz>
118         * Make-lang.in: Support --with-sphinx-build.
120 2022-11-14  Martin Liska  <mliska@suse.cz>
122         Revert:
123         2022-11-14  Martin Liska  <mliska@suse.cz>
125         * Make-lang.in:
126         Support installation if sphinx-build is missing.
128 2022-11-14  Martin Liska  <mliska@suse.cz>
130         Revert:
131         2022-11-14  Martin Liska  <mliska@suse.cz>
133         * doc/copyright.rst:
134         Add trailing newline.
135         * doc/general-public-license-3.rst:
136         Add trailing newline.
137         * doc/gnu-free-documentation-license.rst:
138         Add trailing newline.
139         * doc/index.rst:
140         Add trailing newline.
141         * doc/indices-and-tables.rst:
142         Add trailing newline.
143         * doc/invoking-gdc.rst:
144         Add trailing newline.
145         * doc/invoking-gdc/code-generation.rst:
146         Add trailing newline.
147         * doc/invoking-gdc/developer-options.rst:
148         Add trailing newline.
149         * doc/invoking-gdc/input-and-output-files.rst:
150         Add trailing newline.
151         * doc/invoking-gdc/options-for-directory-search.rst:
152         Add trailing newline.
153         * doc/invoking-gdc/options-for-linking.rst:
154         Add trailing newline.
155         * doc/invoking-gdc/runtime-options.rst:
156         Add trailing newline.
157         * doc/invoking-gdc/warnings.rst:
158         Add trailing newline.
160 2022-11-14  Martin Liska  <mliska@suse.cz>
162         Revert:
163         2022-11-10  Martin Liska  <mliska@suse.cz>
165         * doc/conf.py: Add newline at last line.
167 2022-11-10  Martin Liska  <mliska@suse.cz>
169         * doc/conf.py: Add newline at last line.
171 2022-11-09  Martin Liska  <mliska@suse.cz>
173         * doc/copyright.rst:
174         Add trailing newline.
175         * doc/general-public-license-3.rst:
176         Add trailing newline.
177         * doc/gnu-free-documentation-license.rst:
178         Add trailing newline.
179         * doc/index.rst:
180         Add trailing newline.
181         * doc/indices-and-tables.rst:
182         Add trailing newline.
183         * doc/invoking-gdc.rst:
184         Add trailing newline.
185         * doc/invoking-gdc/code-generation.rst:
186         Add trailing newline.
187         * doc/invoking-gdc/developer-options.rst:
188         Add trailing newline.
189         * doc/invoking-gdc/input-and-output-files.rst:
190         Add trailing newline.
191         * doc/invoking-gdc/options-for-directory-search.rst:
192         Add trailing newline.
193         * doc/invoking-gdc/options-for-linking.rst:
194         Add trailing newline.
195         * doc/invoking-gdc/runtime-options.rst:
196         Add trailing newline.
197         * doc/invoking-gdc/warnings.rst:
198         Add trailing newline.
200 2022-11-09  Martin Liska  <mliska@suse.cz>
202         * Make-lang.in:
203         Support installation if sphinx-build is missing.
205 2022-11-09  Martin Liska  <mliska@suse.cz>
207         * Make-lang.in: Support --with-sphinx-build.
209 2022-11-09  Martin Liska  <mliska@suse.cz>
211         * gdc.texi: Removed.
213 2022-11-09  Martin Liska  <mliska@suse.cz>
215         * Make-lang.in: Support Sphinx based documentation.
217 2022-11-09  Martin Liska  <mliska@suse.cz>
219         * d-target.def: Port to RST.
221 2022-11-09  Martin Liska  <mliska@suse.cz>
223         * doc/conf.py: New file.
224         * doc/copyright.rst: New file.
225         * doc/general-public-license-3.rst: New file.
226         * doc/gnu-free-documentation-license.rst: New file.
227         * doc/index.rst: New file.
228         * doc/indices-and-tables.rst: New file.
229         * doc/invoking-gdc.rst: New file.
230         * doc/invoking-gdc/code-generation.rst: New file.
231         * doc/invoking-gdc/developer-options.rst: New file.
232         * doc/invoking-gdc/input-and-output-files.rst: New file.
233         * doc/invoking-gdc/options-for-directory-search.rst: New file.
234         * doc/invoking-gdc/options-for-linking.rst: New file.
235         * doc/invoking-gdc/runtime-options.rst: New file.
236         * doc/invoking-gdc/warnings.rst: New file.
238 2022-11-05  Iain Buclaw  <ibuclaw@gdcproject.org>
240         * d-target.cc (Target::isVectorOpSupported): Remove cases for
241         comparison operators.
242         * intrinsics.cc (maybe_set_intrinsic): Remove cases for vector
243         comparison intrinsics.
244         (maybe_warn_intrinsic_mismatch): Likewise.
245         (expand_intrinsic_vec_cond): Remove.
246         (maybe_expand_intrinsic): Remove cases for vector comparison
247         intrinsics.
248         * intrinsics.def (INTRINSIC_EQUALMASK): Remove.
249         (INTRINSIC_NOTEQUALMASK): Remove.
250         (INTRINSIC_GREATERMASK): Remove.
251         (INTRINSIC_GREATEREQUALMASK): Remove.
253 2022-10-29  Iain Buclaw  <ibuclaw@gdcproject.org>
255         * d-attribs.cc (apply_user_attributes): Update for new front-end
256         interface.
257         * d-builtins.cc (d_init_versions): Predefine `D_Optimized' with
258         compiling with optimizations enabled.
259         * d-lang.cc (d_handle_option): Update for new front-end interface.
260         Handle new option `-fpreview=systemvariables'.
261         * dmd/MERGE: Merge upstream dmd e4f8919591.
262         * dmd/VERSION: Bump version to v2.101.0-beta.1.
263         * expr.cc (ExprVisitor::visit (AssignExp *)): Treat construction of
264         static arrays from a call expression as a simple assignment.
265         (ExprVisitor::visit (ArrayLiteralExp *)): Handle array literals with
266         `scope' storage.
267         * gdc.texi: Update documentation of `-fpreview=' options.
268         * lang.opt (fpreview=shortenedmethods): Remove.
269         (fpreview=systemvariables):  New option.
271 2022-10-29  Iain Buclaw  <ibuclaw@gdcproject.org>
273         * d-target.def (d_minfo_section): Expand documentation of hook.
274         Default initialize to "minfo".
275         (d_minfo_start_name): Rename to ...
276         (d_minfo_section_start): ... this.  Default initialize to
277         "__start_minfo".
278         (d_minfo_end_name): Rename to ...
279         (d_minfo_section_end): ... this. Default initialize to "__stop_minfo".
280         * modules.cc (register_moduleinfo): Use new targetdm hook names.
282 2022-09-27  Iain Buclaw  <ibuclaw@gdcproject.org>
284         * dmd/MERGE: Merge upstream dmd d579c467c1.
285         * decl.cc (layout_struct_initializer): Update for new front-end
286         interface.
287         * expr.cc (ExprVisitor::visit (AssignExp *)): Remove lowering of array
288         assignments.
289         (ExprVisitor::visit (NewExp *)): Add new lowering of new'ing
290         associative arrays to an _aaNew() library call.
291         * runtime.def (ARRAYSETASSIGN): Remove.
292         (AANEW): Define.
294 2022-09-15  Richard Biener  <rguenther@suse.de>
296         * d-builtins.cc (d_build_c_type_nodes): Do not initialize
297         void_list_node.
299 2022-08-27  Iain Buclaw  <ibuclaw@gdcproject.org>
301         * dmd/MERGE: Merge upstream dmd 817610b16d.
302         * d-ctfloat.cc (CTFloat::parse): Update for new front-end interface.
303         * d-lang.cc (d_parse_file): Likewise.
304         * expr.cc (ExprVisitor::visit (AssignExp *)): Remove handling of array
305         assignments to non-trivial static and dynamic arrays.
306         * runtime.def (ARRAYASSIGN): Remove.
307         (ARRAYASSIGN_L): Remove.
308         (ARRAYASSIGN_R): Remove.
310 2022-08-16  Iain Buclaw  <ibuclaw@gdcproject.org>
312         PR d/106638
313         * gdc.texi: Update DIP links to point at upstream dlang/DIPs
314         repository.
316 2022-08-15  Iain Buclaw  <ibuclaw@gdcproject.org>
318         * d-tree.h (d_defer_declaration): Declare.
319         * decl.cc (function_needs_inline_definition_p): Defer checking
320         DECL_UNINLINABLE and DECL_DECLARED_INLINE_P.
321         (maybe_build_decl_tree): Call d_defer_declaration instead of
322         build_decl_tree.
323         * modules.cc (deferred_inline_declarations): New variable.
324         (build_module_tree): Set deferred_inline_declarations and a handle
325         declarations pushed to it.
326         (d_defer_declaration): New function.
328 2022-08-15  Iain Buclaw  <ibuclaw@gdcproject.org>
330         PR d/106623
331         * d-codegen.cc (underlying_complex_expr): New function.
332         (d_build_call): Handle passing native complex objects as the
333         library-defined equivalent.
334         * d-tree.h (underlying_complex_expr): Declare.
335         * expr.cc (ExprVisitor::visit (DotVarExp *)): Call
336         underlying_complex_expr instead of build_vconvert.
338 2022-08-15  Iain Buclaw  <ibuclaw@gdcproject.org>
340         * d-compiler.cc (Compiler::onParseModule): Call create_tinfo_types
341         when module name is object.
342         * typeinfo.cc (create_tinfo_types): Add guard for multiple
343         invocations.
345 2022-08-15  Iain Buclaw  <ibuclaw@gdcproject.org>
347         * d-codegen.cc (build_delegate_cst): Give anonymous delegate field
348         names same as per ABI spec.
350 2022-08-09  Iain Buclaw  <ibuclaw@gdcproject.org>
352         PR d/106563
353         * decl.cc (DeclVisitor::visit (FuncDeclaration *)): Set semanticRun
354         before generating its symbol.
355         (function_defined_in_root_p): New function.
356         (function_needs_inline_definition_p): New function.
357         (maybe_build_decl_tree): New function.
358         (get_symbol_decl): Call maybe_build_decl_tree before returning symbol.
359         (start_function): Use function_defined_in_root_p instead of inline
360         test for locally defined symbols.
361         (set_linkage_for_decl): Check for inline functions before private or
362         protected symbols.
364 2022-08-08  Iain Buclaw  <ibuclaw@gdcproject.org>
366         PR d/106555
367         * d-target.cc (Target::isReturnOnStack): Check for return type size.
369 2022-08-03  Iain Buclaw  <ibuclaw@gdcproject.org>
371         * dmd/MERGE: Merge upstream dmd d7772a2369.
372         * dmd/VERSION: Bump version to v2.100.1.
373         * d-codegen.cc (get_frameinfo): Check whether decision to generate
374         closure changed since semantic finished.
375         * d-lang.cc (d_handle_option): Remove handling of -fdebug=level and
376         -fversion=level.
377         * decl.cc (DeclVisitor::visit (VarDeclaration *)): Generate evaluation
378         of noreturn variable initializers before throw.
379         * expr.cc (ExprVisitor::visit (AssignExp *)): Don't generate
380         assignment for noreturn types, only evaluate for side effects.
381         * lang.opt (fdebug=): Undocument -fdebug=level.
382         (fversion=): Undocument -fversion=level.
384 2022-07-06  Iain Buclaw  <ibuclaw@gdcproject.org>
386         * dmd/MERGE: Merge upstream dmd 56589f0f4.
388 2022-07-06  Iain Buclaw  <ibuclaw@gdcproject.org>
390         * Make-lang.in (NOEXCEPTION_DFLAGS): Define.
391         (ALL_DFLAGS): Add NO_EXCEPTION_DFLAGS.
393 2022-06-29  Iain Buclaw  <ibuclaw@gdcproject.org>
395         PR d/106139
396         * d-convert.cc (convert_expr): Handle casting from array to vector.
397         (convert_for_rvalue): Rewrite vector to array casts of the same
398         element type into a constructor.
399         (convert_for_assignment): Return calling convert_for_rvalue.
400         * expr.cc (ExprVisitor::visit (VectorExp *)): Handle generating a
401         vector expression from a static array.
402         * toir.cc (IRVisitor::visit (ReturnStatement *)): Call
403         convert_for_rvalue on return value.
405 2022-06-29  Iain Buclaw  <ibuclaw@gdcproject.org>
407         * intrinsics.cc (build_shuffle_mask_type): Use to_constant when
408         getting the number of subparts from a vector type.
409         (expand_intrinsic_vec_shufflevector): Likewise.
411 2022-06-29  Iain Buclaw  <ibuclaw@gdcproject.org>
413         * intrinsics.cc: Include diagnostic.h, langhooks.h,
414         vec-perm-indices.h.
415         (maybe_set_intrinsic): Add cases for new simd intrinsics.
416         (warn_mismatched_return_type): New function.
417         (warn_mismatched_argument): New function.
418         (build_shuffle_mask_type): New function.
419         (maybe_warn_intrinsic_mismatch): New function.
420         (expand_intrinsic_vec_cond): New function.
421         (expand_intrinsic_vec_convert): New function.
422         (expand_intrinsic_vec_blend): New function.
423         (expand_intrinsic_vec_shuffle): New function.
424         (expand_intrinsic_vec_shufflevector): New function.
425         (expand_intrinsic_vec_load_unaligned): New function.
426         (expand_intrinsic_vec_store_unaligned): New function.
427         (maybe_expand_intrinsic): Check signature of intrinsic before handing
428         off to front-end lowering.  Add cases for new simd intrinsics.
429         * intrinsics.def (INTRINSIC_LOADUNALIGNED): Define intrinsic.
430         (INTRINSIC_STOREUNALIGNED): Define intrinsic.
431         (INTRINSIC_SHUFFLE): Define intrinsic.
432         (INTRINSIC_SHUFFLEVECTOR): Define intrinsic.
433         (INTRINSIC_CONVERTVECTOR): Define intrinsic.
434         (INTRINSIC_BLENDVECTOR): Define intrinsic.
435         (INTRINSIC_EQUALMASK): Define intrinsic.
436         (INTRINSIC_NOTEQUALMASK): Define intrinsic.
437         (INTRINSIC_GREATERMASK): Define intrinsic.
438         (INTRINSIC_GREATEREQUALMASK): Define intrinsic.
440 2022-06-28  Iain Buclaw  <ibuclaw@gdcproject.org>
442         * d-codegen.cc: Include gimple-expr.h.
443         (force_target_expr): Use create_tmp_var_raw.
444         * decl.cc: Inlucde gimple-expr.h.
445         (build_local_temp): Use create_tmp_var_raw.
446         * intrinsics.cc (expand_intrinsic_rotate): Use get_callee_fndecl.
447         (maybe_expand_intrinsic): Likewise.
449 2022-06-28  Iain Buclaw  <ibuclaw@gdcproject.org>
451         * d-attribs.cc (handle_omp_declare_simd_attribute): New function.
452         (d_handle_simd_attribute): New function.
453         (d_langhook_common_attribute_table): Add 'omp declare simd' attribute.
454         (d_langhook_attribute_table): Add simd attribute.
456 2022-06-24  Iain Buclaw  <ibuclaw@gdcproject.org>
458         * d-attribs.cc (d_handle_section_attribute): Update error message.
459         (d_handle_symver_attribute): Likewise.
460         (d_handle_no_sanitize_attribute): Likewise.
461         (d_handle_visibility_attribute): Likewise.
463 2022-06-24  Iain Buclaw  <ibuclaw@gdcproject.org>
465         PR d/105413
466         * d-attribs.cc (d_handle_register_attribute): New function.
467         (d_langhook_attribute_table): Add register attribute.
468         * d-codegen.cc (d_mark_addressable): Error if taken address of
469         register variable.
470         (build_frame_type): Error if register variable has non-local
471         references.
472         * d-tree.h (d_mark_addressable): Add complain parameter.
473         * decl.cc (get_symbol_decl): Mark register varibles DECL_REGISTER.
474         Error when register variable declared thread-local or extern.
475         * expr.cc (ExprVisitor::visit (IndexExp *)): Don't complain about
476         marking register vectors as addressable in an ARRAY_REF.
478 2022-06-24  Iain Buclaw  <ibuclaw@gdcproject.org>
480         * d-codegen.cc (build_array_index): Rename to...
481         (build_pointer_index): ...this.
482         * d-tree.h (build_array_index): Rename declaration to...
483         (build_pointer_index): ...this.
484         * expr.cc (ExprVisitor::visit (IndexExp *)): Construct indexes of
485         ARRAY_TYPE using ARRAY_REF.
486         (ExprVisitor::visit (SliceExp *)): Update.
487         * intrinsics.cc (expand_intrinsic_bt): Update.
489 2022-06-24  Iain Buclaw  <ibuclaw@gdcproject.org>
491         * dmd/MERGE: Merge upstream dmd 529110f66.
492         * decl.cc (DeclVisitor::visit (TupleDeclaration *)): Update for new
493         front-end interface.
494         * types.cc (layout_aggregate_members): Likewise.
496 2022-06-22  Iain Buclaw  <ibuclaw@gdcproject.org>
498         * dmd/MERGE: Merge upstream dmd 6203135dc.
499         * typeinfo.cc (TypeInfoVisitor::visit (TypeInfoStructDeclaration *)):
500         Update for new front-end interface.
501         (SpeculativeTypeVisitor::visit (TypeStruct *)): Likewise.
503 2022-06-15  Iain Buclaw  <ibuclaw@gdcproject.org>
505         * d-attribs.cc (d_langhook_attribute_table): Add no_sanitize.
506         (d_handle_no_sanitize_attribute): New function.
508 2022-06-15  Iain Buclaw  <ibuclaw@gdcproject.org>
510         * d-attribs.cc (d_langhook_attribute_table): Add visibility.
511         (insert_type_attribute): Use decl_attributes instead of
512         merge_attributes.
513         (insert_decl_attribute): Likewise.
514         (apply_user_attributes): Do nothing when no UDAs applied.
515         (d_handle_visibility_attribute): New function.
516         * d-gimplify.cc (d_gimplify_binary_expr): Adjust.
517         * d-tree.h (set_visibility_for_decl): Declare.
518         * decl.cc (get_symbol_decl): Move setting of visibility flags to...
519         (set_visibility_for_decl): ... here.  New function.
520         * types.cc (TypeVisitor::visit (TypeStruct *)): Call
521         set_visibility_for_decl().
522         (TypeVisitor::visit (TypeClass *)): Likewise.
524 2022-06-15  Iain Buclaw  <ibuclaw@gdcproject.org>
526         * typeinfo.cc (make_internal_typeinfo): Set TYPE_ARTIFICIAL.
528 2022-06-15  Iain Buclaw  <ibuclaw@gdcproject.org>
530         * d-attribs.cc (apply_user_attributes): Set ATTR_FLAG_TYPE_IN_PLACE
531         only on incomplete types.
532         * d-codegen.cc (copy_aggregate_type): Set TYPE_STUB_DECL after copy.
533         * d-compiler.cc (Compiler::onParseModule): Adjust.
534         * d-tree.h (AGGREGATE_OR_ENUM_TYPE_CHECK): Define.
535         (TYPE_FORWARD_REFERENCES): Define.
536         * decl.cc (gcc_attribute_p): Update documentation.
537         (DeclVisitor::visit (StructDeclaration *)): Exit before building type
538         node if gcc.attributes symbol.
539         (DeclVisitor::visit (ClassDeclaration *)): Build type node and add
540         TYPE_NAME to current binding level before emitting anything else.
541         (DeclVisitor::visit (InterfaceDeclaration *)): Likewise.
542         (DeclVisitor::visit (EnumDeclaration *)): Likewise.
543         (build_type_decl): Move rest_of_decl_compilation() call to
544         finish_aggregate_type().
545         * types.cc (insert_aggregate_field): Move layout_decl() call to
546         finish_aggregate_type().
547         (insert_aggregate_bitfield): Likewise.
548         (layout_aggregate_members): Adjust.
549         (finish_incomplete_fields): New function.
550         (finish_aggregate_type): Handle forward referenced field types.  Call
551         rest_of_type_compilation() after completing the aggregate.
552         (TypeVisitor::visit (TypeEnum *)): Don't set size and alignment until
553         after apply_user_attributes().  Call rest_of_type_compilation() after
554         completing the enumeral.
555         (TypeVisitor::visit (TypeStruct *)): Call build_type_decl() before
556         apply_user_attributes().  Don't set size, alignment, and mode until
557         after apply_user_attributes().
558         (TypeVisitor::visit (TypeClass *)): Call build_type_decl() before
559         applly_user_attributes().
561 2022-06-13  Iain Buclaw  <ibuclaw@gdcproject.org>
563         * d-builtins.cc: Include builtins.h.
564         (gcc_builtins_libfuncs): Remove.
565         (strip_type_modifiers): New function.
566         (matches_builtin_type): New function.
567         (covariant_with_builtin_type_p): New function.
568         (maybe_set_builtin_1): Set front-end built-in if identifier matches
569         gcc built-in name.  Apply user-specified attributes and assembler name
570         overrides to the built-in.  Warn about built-in declaration mismatches.
571         (d_builtin_function): Set IDENTIFIER_DECL_TREE of built-in functions.
572         * d-compiler.cc (Compiler::onParseModule): Scan all modules for any
573         identifiers that match built-in function names.
574         * lang.opt (Wbuiltin-declaration-mismatch): New option.
576 2022-06-13  Iain Buclaw  <ibuclaw@gdcproject.org>
578         * d-tree.h (check_typeinfo_type): Add Expression* parameter.
579         (build_typeinfo): Likewise.  Declare new override.
580         * expr.cc (ExprVisitor): Call build_typeinfo with Expression*.
581         * typeinfo.cc (check_typeinfo_type): Include expression in the
582         diagnostic message.
583         (build_typeinfo): New override.
585 2022-06-13  Iain Buclaw  <ibuclaw@gdcproject.org>
587         * dmd/MERGE: Merge upstream dmd 821ed393d.
588         * expr.cc (ExprVisitor::visit (NewExp *)): Remove handled of
589         allocating `@nogc' throwable object.
590         * runtime.def (NEWTHROW): Remove.
592 2022-06-02  David Malcolm  <dmalcolm@redhat.com>
594         * d-lang.cc (d_get_sarif_source_language): New.
595         (LANG_HOOKS_GET_SARIF_SOURCE_LANGUAGE): Redefine.
597 2022-05-31  Jason Merrill  <jason@redhat.com>
599         * Make-lang.in (d.tags): Just look at *.cc.
601 2022-05-31  Iain Buclaw  <ibuclaw@gdcproject.org>
603         PR d/105544
604         * d-lang.cc (d_parse_file): Zero padding past the end of the stdin
605         buffer so the D lexer has a sentinel to stop parsing at.
607 2022-05-27  Iain Buclaw  <ibuclaw@gdcproject.org>
609         * dmd/MERGE: Merge upstream dmd 4d07f22f2
610         * d-lang.cc (d_handle_option): Handle OPT_fpreview_fiximmutableconv.
611         * lang.opt (fpreview=fiximmutableconv): New option.
612         * runtime.def (ARRAYAPPENDT): Remove.
614 2022-05-25  Iain Buclaw  <ibuclaw@gdcproject.org>
616         * expr.cc: Add "final" and "override" to all "visit" vfunc decls
617         as appropriate.
618         * imports.cc: Likewise.
619         * typeinfo.cc: Likewise.
621 2022-05-24  David Malcolm  <dmalcolm@redhat.com>
623         * decl.cc: Add "final" and "override" to all "visit" vfunc decls
624         as appropriate.
625         * expr.cc: Likewise.
626         * toir.cc: Likewise.
627         * typeinfo.cc: Likewise.
628         * types.cc: Likewise.
630 2022-05-16  Iain Buclaw  <ibuclaw@gdcproject.org>
632         * dmd/MERGE: Merge upstream dmd 60bfa0ee7.
633         * dmd/VERSION: Update version to v2.100.0.
634         * d-builtins.cc (d_init_versions): Update for new front-end interface.
635         * d-codegen.cc (d_decl_context): Use resolvedLinkage to get
636         declaration linkage.
637         (build_struct_literal): Track offset in bits.
638         * d-gimplify.cc (d_gimplify_modify_expr): Check both operands for a
639         bit-field reference.
640         * d-lang.cc (d_handle_option): Handle -fpreview=bitfields, remove
641         -frevert=markdown and -ftransition=vmarkdown.
642         (d_post_options): Set flag_rtti and flag_exceptions if -fno-druntime
643         was seen on command-line.
644         (d_parse_file): Update for new front-end interface.
645         (d_type_promotes_to): Use resolvedLinkage to get declaration linkage.
646         * decl.cc (make_thunk): Likewise.
647         * expr.cc (ExprVisitor::visit (CatAssignExp *)): Remove lowering for
648         appending of an element or array to another array.
649         * lang.opt (fpreview=bitfields): New option.
650         (frevert=markdown): Remove.
651         (ftransition=vmarkdown): Remove.
652         * types.cc (layout_aggregate_members): Ignore anonymous fields in
653         total count.
655 2022-04-28  Iain Buclaw  <ibuclaw@gdcproject.org>
657         * dmd/MERGE: Merge upstream dmd 313d28b3d.
658         * d-port.cc (Port::memicmp): Use d_size_t instead of size_t.
659         (Port::valcpy): Likewise.
661 2022-04-21  Iain Buclaw  <ibuclaw@gdcproject.org>
663         * dmd/MERGE: Merge upstream dmd eb7bee331.
664         * dmd/VERSION: Update version to v2.100.0-beta.1.
665         * d-lang.cc (d_handle_option): Handle OPT_frevert_dip1000.
666         * lang.opt (frevert=dip1000): New option.
668 2022-04-13  Iain Buclaw  <ibuclaw@gdcproject.org>
670         * Make-lang.in (D_FRONTEND_OBJS): Add d/common-bitfields.o,
671         d/mustuse.o.
672         * d-ctfloat.cc (CTFloat::isIdentical): Don't treat NaN values as
673         identical.
674         * dmd/MERGE: Merge upstream dmd 4d1bfcf14.
675         * expr.cc (ExprVisitor::visit (VoidInitExp *)): New.
677 2022-04-03  Iain Buclaw  <ibuclaw@gdcproject.org>
679         * d-lang.cc: Include dmd/template.h.
680         (d_parse_file): Call printTemplateStats when vtemplates is set.
681         * decl.cc (start_function): Remove OPT_Wtemplates warning.
682         * lang.opt (Wtemplates): Remove.
684 2022-04-02  Iain Buclaw  <ibuclaw@gdcproject.org>
686         * dmd/MERGE: Merge upstream dmd 47871363d.
687         * d-builtins.cc (d_init_versions): Add predefined version identifiers
688         D_PreConditions, D_PostConditions, and D_Invariants.
689         * d-codegen.cc (d_build_call): Update for new front-end interface.
690         (build_frame_type): Generate reference field for NRVO variables with
691         nested references.
692         (build_closure): Generate assignment of return address to closure.
693         * d-tree.h (DECL_INSTANTIATED): Use DECL_LANG_FLAG_2.
694         (bind_expr): Remove.
695         * decl.cc (DeclVisitor::visit (FuncDeclaration *)): Update for new
696         front-end interface.
697         (get_symbol_decl): Likewise.
698         (get_decl_tree): Check DECL_LANG_FRAME_FIELD before DECL_LANG_NRVO.
699         Dereference the field when both are set.
700         * expr.cc (ExprVisitor::visit (DeleteExp *)): Update for new front-end
701         interface.
702         * modules.cc (get_internal_fn): Likewise.
703         * toir.cc (IRVisitor::visit (ReturnStatement *)): Likewise.
705 2022-03-21  Iain Buclaw  <ibuclaw@gdcproject.org>
707         PR d/105004
708         * d-codegen.cc (build_struct_literal): Use complex_expr to build
709         complex expressions from __c_complex types.
711 2022-03-21  Iain Buclaw  <ibuclaw@gdcproject.org>
713         PR d/104911
714         * dmd/MERGE: Merge upstream dmd 2503f17e5.
715         * d-convert.cc (convert_expr): Replace d_uns64 with dinteger_t.
716         * d-lang.cc: Remove dmd/root/file.h include.
717         (d_handle_option): Update for new front-end interface.
718         (d_parse_file): Likewise.
720 2022-03-13  Iain Buclaw  <ibuclaw@gdcproject.org>
722         * dmd/MERGE: Merge upstream dmd 02a3fafc6.
723         * dmd/VERSION: Update version to v2.099.0.
724         * imports.cc (ImportVisitor::visit (EnumDeclaration *)): Don't cache
725         decl in front-end AST node.
726         (ImportVisitor::visit (AggregateDeclaration *)): Likewise.
727         (ImportVisitor::visit (ClassDeclaration *)): Likewise.
729 2022-03-11  Iain Buclaw  <ibuclaw@gdcproject.org>
731         * imports.cc (imported_decls): Define.
732         (class ImportVisitor): Add result_ field.
733         (ImportVisitor::result): New method.
734         (ImportVisitor::visit (Module *)): Store decl to result_.
735         (ImportVisitor::visit (Import *)): Likewise.
736         (ImportVisitor::visit (AliasDeclaration *)): Don't cache decl in
737         front-end AST node.
738         (ImportVisitor::visit (OverDeclaration *)): Likewise.
739         (ImportVisitor::visit (FuncDeclaration *)): Likewise.
740         (ImportVisitor::visit (Declaration *)): Likewise.
741         (build_import_decl): Use imported_decls to cache and lookup built
742         declarations.
744 2022-03-11  Iain Buclaw  <ibuclaw@gdcproject.org>
746         PR translation/104552
747         * lang.opt (fdump-cxx-spec=): Fix typo in argument handle.
748         (fpreview=fixaliasthis): Quote `alias this' as code.
750 2022-03-02  Iain Buclaw  <ibuclaw@gdcproject.org>
752         * dmd/MERGE: Merge upstream dmd 423f19b41.
754 2022-02-28  Iain Buclaw  <ibuclaw@gdcproject.org>
756         * d-target.cc (Target::_init): Initialize C type size fields.
757         * dmd/MERGE: Merge upstream dmd cf63dd8e5.
758         * dmd/VERSION: Update version to v2.099.0-rc.1.
760 2022-02-20  Iain Buclaw  <ibuclaw@gdcproject.org>
762         * expr.cc (ExprVisitor::visit (DeleteExp *)): Remove handling of
763         deleting GC allocated classes.
764         * runtime.def (DELCLASS): Remove.
765         (DELINTERFACE): Remove.
767 2022-02-20  Iain Buclaw  <ibuclaw@gdcproject.org>
769         * dmd/MERGE: Merge upstream dmd cb49e99f8.
770         * dmd/VERSION: Update version to v2.099.0-beta.1.
771         * decl.cc (layout_class_initializer): Update call to NewExp::create.
772         * expr.cc (ExprVisitor::visit (DeleteExp *)): Remove handling of
773         deleting arrays and pointers.
774         (ExprVisitor::visit (DotVarExp *)): Convert complex types to the
775         front-end library type representing them.
776         (ExprVisitor::visit (StringExp *)): Use getCodeUnit instead of charAt
777         to get the value of each index in a string expression.
778         * runtime.def (DELMEMORY): Remove.
779         (DELARRAYT): Remove.
780         * types.cc (TypeVisitor::visit (TypeEnum *)): Handle anonymous enums.
782 2022-02-16  Iain Buclaw  <ibuclaw@gdcproject.org>
784         * d-builtins.cc (d_build_builtins_module): Set purity of DECL_PURE_P
785         functions to PURE::const_.
786         * d-gimplify.cc (bit_field_ref): New function.
787         (d_gimplify_modify_expr): Handle implicit casting for assignments to
788         bit-fields.
789         (d_gimplify_unary_expr): New function.
790         (d_gimplify_binary_expr): New function.
791         (d_gimplify_expr): Handle UNARY_CLASS_P and BINARY_CLASS_P.
792         * d-target.cc (Target::_init): Initialize bitFieldStyle.
793         (TargetCPP::parameterType): Update signature.
794         (Target::supportsLinkerDirective): New function.
795         * dmd/MERGE: Merge upstream dmd 52844d4b1.
796         * expr.cc (ExprVisitor::visit (ThrowExp *)): New function.
797         * types.cc (d_build_bitfield_integer_type): New function.
798         (insert_aggregate_bitfield): New function.
799         (layout_aggregate_members): Handle inserting bit-fields into an
800         aggregate type.
802 2022-01-31  Martin Liska  <mliska@suse.cz>
804         PR d/104287
805         * decl.cc (d_finish_decl): Remove trailing dot.
807 2022-01-28  Martin Liska  <mliska@suse.cz>
809         * decl.cc (d_finish_decl): Do not use leading capital letter.
811 2022-01-17  Martin Liska  <mliska@suse.cz>
813         * d-gimplify.cc: Rename .c names to .cc.
814         * d-incpath.cc: Likewise.
815         * lang-specs.h: Likewise.
817 2022-01-03  Iain Buclaw  <ibuclaw@gdcproject.org>
819         PR d/103840
820         * dmd/MERGE: Merge upstream dmd 001bfd97b.
821         * Make-lang.in (D_FRONTEND_OBJS): Rename d/complex.o to
822         d/root-complex.o, and d/utf.o to d/root/utf.o.
824 2022-01-03  Jakub Jelinek  <jakub@redhat.com>
826         * gdc.texi: Bump @copyrights-d year.
829 Copyright (C) 2022 Free Software Foundation, Inc.
831 Copying and distribution of this file, with or without modification,
832 are permitted in any medium without royalty provided the copyright
833 notice and this notice are preserved.