Daily bump.
[platform/upstream/gcc.git] / gcc / d / ChangeLog
1 2020-09-12  Iain Buclaw  <ibuclaw@gdcproject.org>
2
3         PR d/97002
4         * d-codegen.cc (d_build_call): Set input_location on CALL_EXPR.
5         * d-lang.cc: Include function.h.
6         (d_type_promotes_to): Do default conversions for C and C++ functions.
7         * intrinsics.cc (expand_intrinsic_vaarg): Use build1_loc to build
8         VA_ARG_EXPR.
9
10 2020-09-12  Iain Buclaw  <ibuclaw@gdcproject.org>
11
12         * d-builtins.cc (d_build_d_type_nodes): Call build_ctype() on all
13         basic front-end types.
14         * decl.cc (DeclVisitor::visit (EnumDeclaration *)): Always add decl to
15         current binding level.
16         (build_type_decl): Build TYPE_DECL as a typedef if not for an enum or
17         record type.
18         * types.cc (TypeVisitor::visit (TypeEnum *)): Set underlying type for
19         ENUMERAL_TYPEs.  Build TYPE_DECL for non-numeric enums.
20
21 2020-09-10  Iain Buclaw  <ibuclaw@gdcproject.org>
22
23         * lang.opt (Waddress): Enable warning by -Wextra.
24         (Wcast-result): Likewise.
25         (Wunknown-pragmas): Likewise.
26
27 2020-09-10  Iain Buclaw  <ibuclaw@gdcproject.org>
28
29         * decl.cc (DeclVisitor::visit (VarDeclaration *)): Don't warn about
30         variables initialized with 'void'.
31
32 2020-09-10  Iain Buclaw  <ibuclaw@gdcproject.org>
33
34         * d-convert.cc (convert_expr): Warn when casting from a D class to a
35         C++ class.
36
37 2020-09-04  Iain Buclaw  <ibuclaw@gdcproject.org>
38
39         PR d/96924
40         * expr.cc (ExprVisitor::visit (CatAssignExp *)): Don't force
41         temporaries needlessly.
42
43 2020-09-02  Iain Buclaw  <ibuclaw@gdcproject.org>
44
45         PR d/96869
46         * d-builtins.cc (build_frontend_type): Don't expose intrinsics that
47         use unsupported vector types.
48         * d-target.cc (Target::isVectorTypeSupported): Restrict to supporting
49         only if TARGET_VECTOR_MODE_SUPPORTED_P is true.  Don't allow complex
50         or boolean vector types.
51
52 2020-08-31  Iain Buclaw  <ibuclaw@gdcproject.org>
53
54         * d-target.cc (Target::_init): Don't set classinfosize.
55         * d-tree.h (base_vtable_offset): Move under typeinfo.cc section.
56         * decl.cc (base_vtable_offset): Move to...
57         * typeinfo.cc (base_vtable_offset): ...here.  Get base offset from
58         internal TypeInfo_Class type.
59         * intrinsics.cc (expand_intrinsic_bt): Use pointer TYPE_SIZE for
60         setting bitsize value.  Build integer constants of correct type.
61
62 2020-08-26  Iain Buclaw  <ibuclaw@gdcproject.org>
63
64         * dmd/MERGE: Merge upstream dmd e49192807
65
66 2020-08-26  Iain Buclaw  <ibuclaw@gdcproject.org>
67
68         PR d/96156
69         * d-frontend.cc (retStyle): Only return RETstack for struct and static
70         array types.
71         * decl.cc (DeclVisitor::visit (FuncDeclaration *)): Use NRVO return
72         for all TREE_ADDRESSABLE types.  Set shidden to the RESULT_DECL.
73         * expr.cc (ExprVisitor::visit (CallExp *)): Force TARGET_EXPR if the
74         'this' pointer reference is a CONSTRUCTOR.
75         (ExprVisitor::visit (StructLiteralExp *)): Generate assignment to the
76         symbol to initialize with literal.
77         * toir.cc (IRVisitor::visit (ReturnStatement *)): Detect returning
78         struct literals and write directly into the RESULT_DECL.
79         * dmd/MERGE: Merge upstream dmd fe5f388d8.
80
81 2020-08-26  Iain Buclaw  <ibuclaw@gdcproject.org>
82
83         * dmd/MERGE: Merge upstream dmd cb4a96fae
84
85 2020-08-26  Iain Buclaw  <ibuclaw@gdcproject.org>
86
87         * d-lang.cc (d_parse_file): Use read() to load contents from stdin,
88         allow the front-end to free the memory after parsing.
89         * dmd/MERGE: Merge upstream dmd 2cc25c219.
90
91 2020-08-26  Iain Buclaw  <ibuclaw@gdcproject.org>
92
93         PR d/96153
94         * d-codegen.cc (build_address): Create a temporary for CALL_EXPRs
95         returning trivial aggregates, pre-filling it with zeroes.
96         (build_memset_call): Use build_zero_cst if setting the entire object.
97
98 2020-08-26  Iain Buclaw  <ibuclaw@gdcproject.org>
99
100         PR d/96157
101         * d-codegen.cc (d_build_call): Handle TREE_ADDRESSABLE static arrays.
102         * types.cc (make_array_type): Propagate TREE_ADDRESSABLE from base
103         type to static array.
104
105 2020-08-26  Iain Buclaw  <ibuclaw@gdcproject.org>
106
107         * d-gimplify.cc (d_gimplify_expr): Move lowering of each tree node to
108         separate functions.
109         (d_gimplify_modify_expr): New function.
110         (d_gimplify_addr_expr): New function.
111         (d_gimplify_call_expr): New function.
112         (d_gimplify_unsigned_rshift_expr): New function.
113
114 2020-08-26  Iain Buclaw  <ibuclaw@gdcproject.org>
115
116         * Make-lang.in (D_OBJS): Add d-gimplify.o.
117         * d-lang.cc (empty_modify_p): Move to d-gimplify.cc.
118         (d_gimplify_expr): Likewise.
119         * d-tree.h (d_gimplify_expr): Declare.
120         * d-gimplify.cc: New file.
121
122 2020-08-20  Iain Buclaw  <ibuclaw@gdcproject.org>
123
124         * dmd/MERGE: Merge upstream dmd 1b5a53d01.
125
126 2020-08-18  Iain Buclaw  <ibuclaw@gdcproject.org>
127
128         PR d/96301
129         * decl.cc (DeclVisitor::visit (FuncDeclaration *)): Only return
130         non-trivial structs by invisible reference.
131
132 2020-08-04  Iain Buclaw  <ibuclaw@gdcproject.org>
133
134         PR d/96153
135         * d-tree.h (build_expr): Add literalp argument.
136         * expr.cc (ExprVisitor): Add literalp_ field.
137         (ExprVisitor::ExprVisitor): Initialize literalp_.
138         (ExprVisitor::visit (AssignExp *)): Call memset() on blits where RHS
139         is a struct literal.  Elide assignment if initializer is all zeroes.
140         (ExprVisitor::visit (CastExp *)): Forward literalp_ to generation of
141         subexpression.
142         (ExprVisitor::visit (AddrExp *)): Likewise.
143         (ExprVisitor::visit (ArrayLiteralExp *)): Use memset() to pre-fill
144         object with zeroes.  Set literalp in subexpressions.
145         (ExprVisitor::visit (StructLiteralExp *)): Likewise.
146         (ExprVisitor::visit (TupleExp *)): Set literalp in subexpressions.
147         (ExprVisitor::visit (VectorExp *)): Likewise.
148         (ExprVisitor::visit (VectorArrayExp *)): Likewise.
149         (build_expr): Forward literal_p to ExprVisitor.
150
151 2020-08-04  Iain Buclaw  <ibuclaw@gdcproject.org>
152
153         PR d/96429
154         * expr.cc (ExprVisitor::visit (BinExp*)): Use EXACT_DIV_EXPR for
155         pointer diff expressions.
156
157 2020-08-03  Iain Buclaw  <ibuclaw@gdcproject.org>
158
159         PR d/96254
160         * d-codegen.cc (error_no_frame_access): New.
161         (get_frame_for_symbol): Use fdparent name in error message.
162         (get_framedecl): Replace call to assert with error.
163         * d-tree.h (error_no_frame_access): Declare.
164         * decl.cc (get_decl_tree): Detect recursion and error.
165
166 2020-08-03  Iain Buclaw  <ibuclaw@gdcproject.org>
167
168         PR d/96250
169         * dmd/MERGE: Merge upstream dmd c2274e56a.
170
171 2020-07-31  Iain Buclaw  <ibuclaw@gdcproject.org>
172
173         PR d/96393
174         * intrinsics.cc (expand_intrinsic_bt): Don't generate BIT_NOT_EXPR for
175         btr32 intrinsic.
176
177 2020-07-30  Iain Buclaw  <ibuclaw@gdcproject.org>
178
179         PR d/96152
180         * d-codegen.cc (build_array_from_exprs): New function.
181         * d-tree.h (build_array_from_exprs): Declare.
182         * expr.cc (ExprVisitor::visit (AssocArrayLiteralExp *)): Use
183         build_array_from_exprs to generate key and value arrays.
184
185 2020-07-30  Iain Buclaw  <ibuclaw@gdcproject.org>
186
187         PR d/96154
188         * gdc.texi (Warnings): Document -Wvarargs.
189         * lang.opt: Add -Wvarargs
190
191 2020-07-30  Iain Buclaw  <ibuclaw@gdcproject.org>
192
193         PR d/96140
194         * intrinsics.cc (expand_intrinsic_vaarg): Handle ref parameters as
195         arguments to va_arg().
196         (expand_intrinsic_vastart): Handle ref parameters as arguments to
197         va_start().
198
199 2020-07-30  Iain Buclaw  <ibuclaw@gdcproject.org>
200
201         * expr.cc (ExprVisitor::visit (AssignExp *)): Inline bounds checking
202         for simple array assignments.
203
204 2020-07-30  Iain Buclaw  <ibuclaw@gdcproject.org>
205
206         * d-codegen.cc (build_memcmp_call): New function.
207         (build_memcpy_call): New function.
208         (build_memset_call): New function.
209         (build_float_identity): Call build_memcmp_call.
210         (lower_struct_comparison): Likewise.
211         (build_struct_comparison): Likewise.
212         * d-tree.h (build_memcmp_call): Declare.
213         (build_memcpy_call): Declare.
214         (build_memset_call): Declare.
215         * expr.cc (ExprVisitor::visit (EqualExp *)): Call build_memcmp_call.
216         (ExprVisitor::visit (AssignExp *)): Call build_memset_call.
217         (ExprVisitor::visit (ArrayLiteralExp *)): Call build_memcpy_call.
218         (ExprVisitor::visit (StructLiteralExp *)): Call build_memset_call.
219
220 2020-07-30  Iain Buclaw  <ibuclaw@gdcproject.org>
221
222         * expr.cc (needs_postblit): Move out of ExprVisitor as a static
223         function.  Update all callers.
224         (needs_dtor): Likewise.
225         (lvalue_p): Likewise.
226         (binary_op): Likewise.
227         (binop_assignment): Likewise.
228
229 2020-07-30  Iain Buclaw  <ibuclaw@gdcproject.org>
230
231         * intrinsics.cc (expand_intrinsic_rotate): Add function.
232         (maybe_expand_intrinsic): Handle rol and ror intrinsics.
233         * intrinsics.def (ROL): Add intrinsic.
234         (ROL_TIARG): Add intrinsic.
235         (ROR): Add intrinsic.
236         (ROR_TIARG): Add intrinsic.
237
238 2020-07-30  Iain Buclaw  <ibuclaw@gdcproject.org>
239
240         * d-tree.h (DEF_D_INTRINSIC): Rename second argument from A to B.
241         * intrinsics.cc (intrinsic_decl): Add built_in field.
242         (DEF_D_INTRINSIC): Rename second argument from ALIAS to BUILTIN.
243         (maybe_set_intrinsic): Handle new intrinsic codes.
244         (expand_intrinsic_bt): Likewise.
245         (expand_intrinsic_checkedint): Likewise.
246         (expand_intrinsic_bswap): Remove.
247         (expand_intrinsic_sqrt): Remove.
248         (maybe_expand_intrinsic): Group together intrinsic cases that map
249         directly to gcc built-ins.
250         * intrinsics.def (DEF_D_BUILTIN): Rename second argument from A to B.
251         Update all callers to pass equivalent DECL_FUNCTION_CODE.
252         (DEF_CTFE_BUILTIN): Likewise.
253         (STD_COS): Remove intrinsic.
254         (STD_FABS): Remove intrinsic.
255         (STD_LDEXP): Remove intrinsic.
256         (STD_RINT): Remove intrinsic.
257         (STD_RNDTOL): Remove intrinsic.
258         (STD_SIN): Remove intrinsic.
259         (STD_SQRTF): Remove intrinsic.
260         (STD_SQRT): Remove intrinsic.
261         (STD_SQRTL): Remove intrinsic.
262
263 2020-06-28  Iain Buclaw  <ibuclaw@gdcproject.org>
264
265         * dmd/MERGE: Merge upstream dmd 8508c4e68.
266
267 2020-06-25  Iain Buclaw  <ibuclaw@gdcproject.org>
268
269         * decl.cc (get_symbol_decl): Do not implicitly set
270         DECL_DECLARED_INLINE_P on member functions.
271
272 2020-06-25  Iain Buclaw  <ibuclaw@gdcproject.org>
273
274         * d-lang.cc (d_gimplify_expr_p): Make static.
275         (d_parse_file): Likewise.
276         (d_signed_or_unsigned_type): Move to types.cc.
277         (d_unsigned_type): Likewise.
278         (d_signed_type): Likewise.
279         * d-tree.h (d_unsigned_type): Change the location in file.
280         (d_signed_type): Likewise.
281         * types.cc (d_signed_or_unsigned_type): Moved from d-lang.cc.
282         (d_unsigned_type): Likewise.
283         (d_signed_type): Likewise.
284
285 2020-06-25  Iain Buclaw  <ibuclaw@gdcproject.org>
286
287         PR d/95075
288         * dmd/MERGE: Merge upstream dmd 4be011355.
289
290 2020-06-25  Iain Buclaw  <ibuclaw@gdcproject.org>
291
292         PR d/95250
293         * dmd/MERGE: Merge upstream dmd 90450f3ef.
294
295 2020-06-25  Iain Buclaw  <ibuclaw@gdcproject.org>
296
297         * d-lang.cc (d_parse_file): Replace OutBuffer with obstack.
298
299 2020-06-25  Iain Buclaw  <ibuclaw@gdcproject.org>
300
301         * dmd/MERGE: Merge upstream dmd 5fc1806cd.
302         * d-lang.cc (d_parse_file): Use peekChars to get string representation
303         of OutBuffer data.
304
305 2020-06-25  Iain Buclaw  <ibuclaw@gdcproject.org>
306
307         PR d/95173
308         * d-attribs.cc (uda_attribute_p): Don't search target attribute table
309         if NULL.
310
311 2020-06-25  Iain Buclaw  <ibuclaw@gdcproject.org>
312
313         * decl.cc (DeclVisitor::visit (VarDeclaration *)): Don't set
314         DECL_INITIAL if initializer is 'void'.
315
316 2020-06-25  Iain Buclaw  <ibuclaw@gdcproject.org>
317
318         * d-lang.cc (d_init_options): Turn on deprecation warnings by default.
319
320 2020-06-25  Iain Buclaw  <ibuclaw@gdcproject.org>
321
322         * dmd/MERGE: Merge upstream dmd 4f1046222.
323         * toir.cc (IRVisitor::visit (OnScopeGuardStatement *)): Rename to ...
324         (IRVisitor::visit (ScopeGuardStatement *)): ... this.
325
326 2020-06-16  Iain Buclaw  <ibuclaw@gdcproject.org>
327
328         * d-attribs.cc (handle_noreturn_attribute): Remove names of unused
329         function parameters.
330         (handle_leaf_attribute): Likewise.
331         (handle_const_attribute): Likewise.
332         (handle_malloc_attribute): Likewise.
333         (handle_pure_attribute): Likewise.
334         (handle_novops_attribute): Likewise.
335         (handle_nonnull_attribute): Likewise.
336         (handle_nothrow_attribute): Likewise.
337         (handle_type_generic_attribute): Likewise.
338         (handle_transaction_pure_attribute): Likewise.
339         (handle_returns_twice_attribute): Likewise.
340         (handle_fnspec_attribute): Likewise.
341         (handle_always_inline_attribute): Likewise.
342         (d_handle_noinline_attribute): Likewise.
343         (d_handle_forceinline_attribute): Likewise.
344         (d_handle_flatten_attribute): Likewise.
345         (d_handle_noclone_attribute): Likewise.
346         (d_handle_section_attribute): Likewise.
347         (d_handle_alias_attribute): Likewise.
348         (d_handle_weak_attribute): Likewise.
349
350 2020-06-16  Iain Buclaw  <ibuclaw@gdcproject.org>
351
352         * d-attribs.cc: Update code formatting in a consistant style.
353         * d-builtins.cc: Likewise.
354         * d-codegen.cc: Likewise.
355         * d-compiler.cc: Likewise.
356         * d-convert.cc: Likewise.
357         * d-diagnostic.cc: Likewise.
358         * d-frontend.cc: Likewise.
359         * d-lang.cc: Likewise.
360         * d-longdouble.cc: Likewise.
361         * d-port.cc: Likewise.
362         * d-spec.cc: Likewise.
363         * d-tree.h: Likewise.
364         * decl.cc: Likewise.
365         * expr.cc: Likewise.
366         * longdouble.h: Likewise.
367         * modules.cc: Likewise.
368         * toir.cc: Likewise.
369         * typeinfo.cc: Likewise.
370
371 2020-06-16  Iain Buclaw  <ibuclaw@gdcproject.org>
372
373         * d-builtins.cc: Update quotation formatting of comments.
374         * d-codegen.cc: Likewise.
375         * d-lang.cc: Likewise.
376         * decl.cc: Likewise.
377         * expr.cc: Likewise.
378         * imports.cc: Likewise.
379         * runtime.cc: Likewise.
380         * toir.cc: Likewise.
381         * typeinfo.cc: Likewise.
382         * types.cc: Likewise.
383
384 2020-06-16  Iain Buclaw  <ibuclaw@gdcproject.org>
385
386         * d-diagnostic.cc (expand_d_format): Replace OutBuffer with obstack.
387         (d_diagnostic_report_diagnostic): Don't free xformat.
388         * d-lang.cc (struct d_option_data): Change deps_target type from
389         OutBuffer to vec <const char *>.
390         (deps_add_target): Update to push each target to deps_target.
391         (deps_write_string): New function.
392         (deps_write): Change buffer type to obstack* and remove colmax.
393         (d_init_options): Update initialization of deps_target.
394         (d_parse_file): Replace OutBuffer with obstack.
395
396 2020-06-16  Iain Buclaw  <ibuclaw@gdcproject.org>
397
398         * d-lang.cc (d_parse_file): Replace uses of File with FILE.
399
400 2020-06-16  Iain Buclaw  <ibuclaw@gdcproject.org>
401
402         * d-codegen.cc (build_array_bounds_call): New function.
403         (build_bounds_condition): Use build_array_bounds_call.
404         * d-lang.cc (d_init_options): Explicitly set default check action to
405         CHECKACTION_D.
406         (d_post_options): Set check action to CHECKACTION_C if the flag
407         -fno-druntime was seen.
408         * d-tree.h (build_array_bounds_call): Declare.
409         * expr.cc (ExprVisitor::visit (AssertExp *)): Use
410         build_array_bounds_call.
411
412 2020-06-16  Iain Buclaw  <ibuclaw@gdcproject.org>
413
414         * d-attribs.cc (build_attributes): Use toStringExp instead of cast.
415         * toir.cc (IRVisitor::visit): Likewise.
416
417 2020-06-16  Iain Buclaw  <ibuclaw@gdcproject.org>
418
419         * d-attribs.cc (build_attributes): Use isXxxxExp helpers instead of
420         explicit casts.
421         * d-codegen.cc (d_build_call): Likewise.
422         * d-compiler.cc (Compiler::paintAsType): Likewise.
423         * decl.cc (ExprVisitor::visit): Likewise.
424         (layout_class_initializer): Likewise.
425         * expr.cc (ExprVisitor::lvalue_p): Likewise
426         (ExprVisitor::visit): Likewise.
427         * types.cc (layout_aggregate_members): Likewise.
428
429 2020-06-16  Iain Buclaw  <ibuclaw@gdcproject.org>
430
431         * d-frontend.cc (eval_builtin): Use toTypeFunction instead of cast.
432         * decl.cc (DeclVisitor::visit): Likewise.
433         * toir.cc (IRVisitor::visit): Likewise.
434         * typeinfo.cc (TypeInfoVisitor::visit): Likewise.
435
436 2020-06-16  Iain Buclaw  <ibuclaw@gdcproject.org>
437
438         * d-builtins.cc (d_eval_constant_expression): Use isTypeXxxx helpers
439         instead of explicit casts.
440         (d_build_builtins_module): Likewise.
441         * d-codegen.cc (get_array_length): Likewise.
442         (identity_compare_p): Likewise.
443         (lower_struct_comparison): Likewise.
444         (build_array_from_val): Likewise.
445         (array_bounds_check): Likewise.
446         (get_function_type): Likewise.
447         (d_build_call): Likewise.
448         * d-compiler.cc (Compiler::paintAsType): Likewise.
449         * d-convert.cc (convert_expr): Likewise.
450         (convert_for_assignment): Likewise.
451         * d-lang.cc (d_classify_record): Likewise.
452         (d_build_eh_runtime_type): Likewise.
453         * decl.cc (DeclVisitor::visit): Likewise.
454         * expr.cc (ExprVisitor::needs_postblit): Likewise.
455         (ExprVisitor::needs_dtor): Likewise.
456         (ExprVisitor::visit): Likewise.
457         * imports.cc (ImportVisitor::visit): Likewise.
458         * typeinfo.cc (get_typeinfo_kind): Likewise.
459         (TypeInfoVisitor::visit): Likewise.
460         (TypeDeclInfoVisitor::visit): Likewise.
461         * types.cc (merge_aggregate_types): Likewise.
462         (TypeVisitor::visit): Likewise.
463
464 2020-06-14  Iain Buclaw  <ibuclaw@gdcproject.org>
465
466         * expr.cc (ExprVisitor::visit (AssocArrayLiteralExp *)): Fix line
467         lengths, no functional change.
468         * typeinfo.cc (TypeInfoVisitor::layout_interfaces): Likewise.
469         (layout_classinfo_interfaces): Likewise.
470
471 2020-06-09  Iain Buclaw  <ibuclaw@gdcproject.org>
472
473         * dmd/MERGE: Merge upstream dmd 13d67c575.
474         * d-builtins.cc (build_frontend_type): Update call to
475         TypeVector::create.
476         * d-frontend.cc (Global::_init): Move setting of errorLimit to ...
477         * d-lang.cc (d_init_options): ... here.  Update for new field
478         location of errorLimit.
479         (d_post_options): Likewise.
480         * d-port.cc (Port::readwordLE): Update signature.
481         (Port::readwordBE): Likewise.
482         (Port::readlongLE): Likewise.
483         (Port::readlongBE): Likewise.
484         * decl.cc (get_symbol_decl): Update for new field types.
485
486 2020-06-08  Iain Buclaw  <ibuclaw@gdcproject.org>
487
488         PR d/95573
489         * dmd/MERGE: Merge upstream dmd 5041e56f1.
490
491 2020-06-08  Iain Buclaw  <ibuclaw@gdcproject.org>
492
493         * dmd/MERGE: Merge upstream dmd 955b8b36f.
494         * expr.cc (ExprVisitor::visit (AndAndExp *)): Rename type to ...
495         (ExprVisitor::visit (LogicalExp *)): ... this.  Handle both 'and if'
496         and 'or if' expression nodes.
497         (ExprVisitor::visit (OrOrExp *)): Remove.
498
499 2020-06-07  Iain Buclaw  <ibuclaw@gdcproject.org>
500
501         * dmd/MERGE: Merge upstream dmd 73d8e2fec.
502         * decl.cc (get_symbol_decl): Use new Prot::Kind enum.
503         * modules.cc (get_internal_fn): Likewise.
504
505 2020-06-07  Iain Buclaw  <ibuclaw@gdcproject.org>
506
507         * dmd/MERGE: Merge upstream dmd 108ca1bcd.
508         * d-diagnostic.cc (expand_d_format): Adjust to use extractChars().
509         * d-frontend.cc (Loc::toChars): Likewise.
510         * d-lang.cc (deps_write): Likewise.
511         (d_parse_file): Likewise.
512         * decl.cc (d_mangle_decl): Likewise.
513         * intrinsics.cc (maybe_set_intrinsic): Likewise.
514
515 2020-06-07  Iain Buclaw  <ibuclaw@gdcproject.org>
516
517         * dmd/MERGE: Merge upstream dmd b0df0e982.
518         * d-builtins.cc (build_frontend_type): Use VarArg for varargs_p.
519         * d-codegen.cc (declaration_type): Call TypeFunction::create with
520         argument VARARGnone.
521         (parameter_type): Likewise.
522         (d_build_call): Use new field names and member functions.
523         * d-target.cc (Target::cppParameterType): Call TypeFunction::create
524         with argument VARARGnone.
525         * types.cc (TypeVisitor::visit (TypeFunction *): Use new field names
526         and member functions.
527
528 2020-06-07  Iain Buclaw  <ibuclaw@gdcproject.org>
529
530         * dmd/MERGE: Merge upstream dmd 1831b24ff.
531         * d-lang.cc (d_init_options): Remove initialization of updated fields.
532         (d_handle_option): Adjust for new field types.
533
534 2020-06-07  Iain Buclaw  <ibuclaw@gdcproject.org>
535
536         * dmd/MERGE: Merge upstream dmd cef1e7991.
537         * d-lang.cc (d_parse_file): Adjust for new field types.
538
539 2020-06-05  Iain Buclaw  <ibuclaw@gdcproject.org>
540
541         * dmd/MERGE: Merge upstream dmd 740f3d1ea.
542         * d-lang.cc (d_handle_option): Use new fields to save debug and
543         version levels passed over command-line.
544         (d_post_options): Add them to front-end here.
545
546 2020-06-05  Iain Buclaw  <ibuclaw@gdcproject.org>
547
548         * dmd/MERGE: Merge upstream dmd f5638c7b8.
549         * d-builtins.cc (d_init_versions): Use new CHECKENABLE enum.
550         * d-codegen.cc (array_bounds_check): Likewise.
551         (build_frame_type): Likewise.
552         (get_frameinfo): Likewise.
553         * d-lang.cc (d_init_options): Likewise.
554         (d_init_options_struct): Don't initialize x_flag_bounds_check.
555         (d_handle_option): Use new CHECKENABLE enum.
556         (d_post_options): Likewise.  Set flag_bounds_check here.
557         * expr.cc (ExprVisitor::visit(AssertExp *)): Use new CHECKENABLE enum.
558
559 2020-06-05  Iain Buclaw  <ibuclaw@gdcproject.org>
560
561         * dmd/MERGE: Merge upstream dmd 56f0a65c4.
562         * d-builtins.cc (build_frontend_type): Remove static.
563         (d_build_builtins_module): Use target.va_listType() to get front-end
564         type for va_list.
565         (d_init_builtins): Move creation of va_list to Target::va_listType.
566         * d-codegen.cc (build_interface_binfo): Use new target global.
567         (build_vindex_ref): Likewise.
568         (identity_compare_p): Likewise.
569         * d-ctfloat.cc (CTFloat::parse): Likewise.
570         * d-lang.cc (d_init): Likewise.
571         * d-port.cc (Port::isFloat32LiteralOutOfRange): Likewise.
572         (Port::isFloat64LiteralOutOfRange): Likewise.
573         * d-target.cc (define_float_constants): Initialize constants through a
574         reference, instead of setting globals.
575         (Target::_init): Initialize new fields instead of setting globals.
576         (Target::va_listType): Build front-end type from va_list_type_node.
577         (Target::toCppMangle): Renamed to ...
578         (TargetCPP::toMangle): ... this.
579         (Target::cppTypeInfoMangle): Renamed to ...
580         (TargetCPP::typeInfoMangle): ... this.
581         (Target::cppTypeMangle): Renamed to ...
582         (TargetCPP::typeMangle): this.
583         (Target::cppParameterType): Renamed to ...
584         (TargetCPP::parameterType): ... this.  Use target.va_listType() to get
585         front-end type for va_list.
586         (Target::cppFundamentalType): Renamed to ...
587         (TargetCPP::fundamentalType): ... this.
588         * d-tree.h (build_frontend_type): Declare.
589         * decl.cc (base_vtable_offset): Use new target global.
590         * typeinfo.cc (layout_classinfo_interfaces): Likewise.
591         (layout_cpp_typeinfo): Likewise.
592         * types.cc (valist_array_p): Use target.va_listType() to get front-end
593         type for va_list.
594         (layout_aggregate_type): Use new target global.
595
596 2020-06-05  Iain Buclaw  <ibuclaw@gdcproject.org>
597
598         * dmd/MERGE: Merge upstream dmd 6d5bffa54.
599         * d-builtins.cc (maybe_set_builtin_1): Update call to
600         Condition::include().
601         * decl.cc (DeclVisitor::visit(AttribDeclaration *)): Likewise.
602         * types.cc (layout_aggregate_members): Likewise.
603
604 2020-06-04  Iain Buclaw  <ibuclaw@gdcproject.org>
605
606         * dmd/MERGE: Merge upstream dmd 48d704f08.
607         * d-attribs.cc (build_attributes): Use new field name.
608         * d-builtins.cc (build_frontend_type): Likewise.
609         (maybe_set_builtin_1): Likewise.
610         (d_maybe_set_builtin): Likewise.
611         * d-codegen.cc (build_interface_binfo): Likewise.
612         (identity_compare_p): Likewise.
613         (lower_struct_comparison): Likewise.
614         (build_struct_comparison): Likewise.
615         (d_build_call): Likewise.
616         (build_frame_type): Likewise.
617         (build_closure): Likewise.
618         * d-compiler.cc (Compiler::paintAsType): Likewise.
619         (Compiler::loadModule): Likewise.
620         * d-incpath.cc (add_globalpaths): Likewise.
621         (add_filepaths): Likewise.
622         (add_import_paths): Likewise.
623         * d-lang.cc (deps_write): Likewise.
624         (d_parse_file): Likewise.
625         * decl.cc (gcc_attribute_p): Likewise.
626         (base_vtable_offset): Likewise.
627         (get_vtable_decl): Likewise.
628         (build_class_instance): Likewise.
629         * expr.cc (class ExprVisitor): Likewise.
630         * modules.cc (layout_moduleinfo_fields): Likewise.
631         (layout_moduleinfo): Likewise.
632         (build_module_tree): Likewise.
633         * toir.cc (class IRVisitor): Likewise.
634         * typeinfo.cc (class TypeInfoVisitor): Likewise.
635         (layout_classinfo_interfaces): Likewise.
636         * types.cc (layout_aggregate_members): Likewise.
637         (layout_aggregate_type): Likewise.
638
639 2020-06-04  Iain Buclaw  <ibuclaw@gdcproject.org>
640
641         * dmd/MERGE: Merge upstream dmd 47ed0330f.
642
643 2020-06-04  Iain Buclaw  <ibuclaw@gdcproject.org>
644
645         * Make-lang.in (D_OBJS): Add d-compiler.o, d-ctfloat.o, d-port.o.
646         * d-frontend.cc (Port::memicmp): Move to d-port.cc.
647         (Port::strupr): Likewise.
648         (Port::isFloat32LiteralOutOfRange): Likewise.
649         (Port::isFloat64LiteralOutOfRange): Likewise.
650         (Port::readwordLE): Likewise.
651         (Port::readwordBE): Likewise.
652         (Port::readlongLE): Likewise.
653         (Port::readlongBE): Likewise.
654         (Port::valcpy): Likewise.
655         (CTFloat::fabs): Move to d-ctfloat.cc.
656         (CTFloat::ldexp): Likewise.
657         (CTFloat::isIdentical): Likewise.
658         (CTFloat::isNaN): Likewise.
659         (CTFloat::isSNaN): Likewise.
660         (CTFloat::isInfinity): Likewise.
661         (CTFloat::parse): Likewise.
662         (CTFloat::sprint): Likewise.
663         (CTFloat::hash): Likewise.
664         (Compiler::genCmain): Move to d-compiler.cc.
665         (Compiler::paintAsType): Likewise.
666         (Compiler::loadModule): Likewise.
667         * d-compiler.cc: New file.
668         * d-ctfloat.cc: New file.
669         * d-port.cc: New file.
670
671 2020-06-02  Iain Buclaw  <ibuclaw@gdcproject.org>
672
673         * decl.cc (DeclVisitor::build_dsymbol): New function.
674         (DeclVisitor::visit (TupleDeclaration *)): Use build_dsymbol to
675         traverse AST instead of accept.
676         (DeclVisitor::visit (AttribDeclaration *)): Likewise.
677         (DeclVisitor::visit (Nspace *)): Likewise.
678         (DeclVisitor::visit (TemplateDeclaration *)): Likewise.
679         (DeclVisitor::visit (TemplateInstance *)): Likewise.
680         (DeclVisitor::visit (TemplateMixin *)): Likewise.
681         (DeclVisitor::visit (StructDeclaration *)): Likewise.
682         (DeclVisitor::visit (ClassDeclaration *)): Likewise.
683         (DeclVisitor::visit (InterfaceDeclaration *)): Likewise.
684         (DeclVisitor::visit (VarDeclaration *)): Likewise.
685         (build_decl_tree): Likewise.
686
687 2020-06-02  Iain Buclaw  <ibuclaw@gdcproject.org>
688
689         * d-builtins.cc (build_frontend_type): Handle struct fields with NULL
690         DECL_NAME.  Use byte_position to get the real field offset.
691
692 2020-05-06  Iain Buclaw  <ibuclaw@gdcproject.org>
693
694         PR d/94970
695         * d-codegen.cc (force_target_expr): Move create_temporary_var
696         implementation inline here.
697         (create_temporary_var): Remove.
698         (maybe_temporary_var): Remove.
699         (bind_expr): Remove.
700         * d-convert.cc (d_array_convert): Use build_local_temp to generate
701         temporaries, and generate its assignment.
702         * d-tree.h (create_temporary_var): Remove.
703         (maybe_temporary_var): Remove.
704         (d_array_convert): Remove vars argument.
705         * expr.cc (ExprVisitor::visit (CatExp *)): Use build_local_temp to
706         generate temporaries, don't wrap them in a BIND_EXPR.
707         (ExprVisitor::visit (NewExp *)): Likewise.
708
709 2020-04-30  Iain Buclaw  <ibuclaw@gdcproject.org>
710
711         * gdc.texi (Options for Linking): Clarify usage of -defaultlib= and
712         -debuglib= options.
713
714 2020-04-29  Iain Buclaw  <ibuclaw@gdcproject.org>
715
716         * d-codegen.cc (d_decl_context): Don't include module in the name of
717         class and struct types that aren't extern(D).
718
719 2020-04-27  Iain Buclaw  <ibuclaw@gdcproject.org>
720
721         PR d/94777
722         * d-builtins.cc (build_frontend_type): Set parent for generated
723         fields of built-in types.
724         * d-codegen.cc (argument_reference_p): Rename to ...
725         (parameter_reference_p): ... this.
726         (type_passed_as): Rename to ...
727         (parameter_type): ... this.  Make TREE_ADDRESSABLE types restrict.
728         (d_build_call): Move handling of non-POD types here from ...
729         * d-convert.cc (convert_for_argument): ... here.
730         * d-tree.h (argument_reference_p): Rename declaration to ...
731         (parameter_reference_p): ... this.
732         (type_passed_as): Rename declaration to ...
733         (parameter_type): ... this.
734         * types.cc (TypeVisitor::visit (TypeFunction *)): Update caller.
735
736 2020-04-26  Iain Buclaw  <ibuclaw@gdcproject.org>
737
738         * decl.cc (get_symbol_decl): Set DECL_DECLARED_INLINE_P or
739         DECL_UNINLINABLE for declarations with pragma(inline).
740         * toir.cc (IRVisitor::visit (GccAsmStatement *)): Set ASM_INLINE_P if
741         in function decorated with pragma(inline).
742
743 2020-04-25  Iain Buclaw  <ibuclaw@gdcproject.org>
744
745         * intrinsics.cc (expand_intrinsic_toprec): New function.
746         (maybe_expand_intrinsic): Handle toPrec intrinsics.
747         * intrinsics.def (TOPRECF, TOPREC, TOPRECL): Add toPrec intrinsics.
748
749 2020-04-24  Iain Buclaw  <ibuclaw@gdcproject.org>
750
751         * d-spec.cc (need_phobos): Remove.
752         (lang_specific_driver): Replace need_phobos with phobos_library.
753         Reorder -debuglib and -defaultlib to have precedence over libphobos.
754         (lang_specific_pre_link): Remove test for need_phobos.
755
756 2020-04-19  Iain Buclaw  <ibuclaw@gdcproject.org>
757
758         PR d/94609
759         * d-codegen.cc (argument_reference_p): Don't check TREE_ADDRESSABLE.
760         (type_passed_as): Build reference type if TREE_ADDRESSABLE.
761         * d-convert.cc (convert_for_argument): Build explicit TARGET_EXPR if
762         needed for arguments passed by invisible reference.
763         * types.cc (TypeVisitor::visit (TypeStruct *)): Mark all structs that
764         are not POD as TREE_ADDRESSABLE.
765
766 2020-04-13  Iain Buclaw  <ibuclaw@gdcproject.org>
767
768         * Make-lang.in (D_FRONTEND_OBJS): Remove d/argtypes.o.
769         * d-target.cc (Target::toArgTypes): New function.
770
771 2020-04-10  Iain Buclaw  <ibuclaw@gdcproject.org>
772
773         * d-spec.cc (LIBDRUNTIME): Remove.
774         (LIBDRUNTIME_PROFILE): Remove.
775         (lang_specific_driver): Don't link in libgdruntime.
776
777 2020-04-07  Iain Buclaw  <ibuclaw@gdcproject.org>
778
779         PR d/94425
780         * toir.cc (IRVisitor::visit (GccAsmStatement *)): Set ASM_VOLATILE_P
781         on all asm statements.
782
783 2020-04-01  Iain Buclaw  <ibuclaw@gdcproject.org>
784
785         PR d/90136
786         * d-attribs.cc: Include dmd/attrib.h.
787         (build_attributes): Redeclare as static.
788         (apply_user_attributes): New function.
789         * d-tree.h (class UserAttributeDeclaration): Remove.
790         (build_attributes): Remove.
791         (apply_user_attributes): Declare.
792         (finish_aggregate_type): Remove attrs argument.
793         * decl.cc (get_symbol_decl): Merge declaration prototypes with
794         definitions.  Use apply_user_attributes.
795         * modules.cc (layout_moduleinfo_fields): Remove last argument to
796         finish_aggregate_type.
797         * typeinfo.cc (layout_classinfo_interfaces): Likewise.
798         * types.cc (layout_aggregate_members): Likewise.
799         (finish_aggregate_type): Remove attrs argument.
800         (TypeVisitor::visit (TypeEnum *)): Use apply_user_attributes.
801         (TypeVisitor::visit (TypeStruct *)): Remove last argument to
802         finish_aggregate_type.  Use apply_user_attributes.
803         (TypeVisitor::visit (TypeClass *)): Likewise.
804
805 2020-03-31  Iain Buclaw  <ibuclaw@gdcproject.org>
806
807         * d-attribs.cc (d_langhook_common_attribute_table): Add always_inline.
808         (handle_always_inline_attribute): New function.
809
810 2020-03-31  Iain Buclaw  <ibuclaw@gdcproject.org>
811
812         PR d/94424
813         * d-codegen.cc (build_alignment_field): Remove.
814         (build_struct_literal): Don't insert alignment padding.
815         * expr.cc (ExprVisitor::visit (AssignExp *)): Call memset before
816         assigning struct literals.
817
818 2020-03-31  Iain Buclaw  <ibuclaw@gdcproject.org>
819
820         * typeinfo.cc (TypeInfoVisitor::internal_reference): Call
821         d_comdat_linkage on generated decl.
822
823 2020-03-22  Iain Buclaw  <ibuclaw@gdcproject.org>
824
825         PR d/93038
826         * d-lang.cc (deps_write): Generate phony targets for content imported
827         files.
828
829 2020-03-22  Iain Buclaw  <ibuclaw@gdcproject.org>
830
831         PR d/93038
832         * d-lang.cc (deps_write): Add content imported files to the make
833         dependency list.
834
835 2020-03-21  Iain Buclaw  <ibuclaw@gdcproject.org>
836
837         PR d/94240
838         * typeinfo.cc (class TypeInfoVisitor): Replace type_ field with decl_.
839         (TypeInfoVisitor::TypeInfoVisitor): Set decl_.
840         (TypeInfoVisitor::result): Update.
841         (TypeInfoVisitor::internal_reference): New function.
842         (TypeInfoVisitor::layout_string): Use internal_reference.
843         (TypeInfoVisitor::visit (TypeInfoTupleDeclaration *)): Likewise.
844         (layout_typeinfo): Construct TypeInfoVisitor with typeinfo decl.
845         (layout_classinfo): Likewise.
846
847 2020-03-20  Iain Buclaw  <ibuclaw@gdcproject.org>
848
849         PR lto/91027
850         * d-tree.h (struct GTY): Add daggregate field.
851         (IDENTIFIER_DAGGREGATE): Define.
852         (d_mangle_decl): Add declaration.
853         * decl.cc (mangle_decl): Remove static linkage, rename to...
854         (d_mangle_decl): ...this, update all callers.
855         * types.cc (merge_aggregate_types): New function.
856         (TypeVisitor::visit (TypeStruct *)): Call merge_aggregate_types, set
857         IDENTIFIER_DAGGREGATE and TYPE_CXX_ODR_P.
858         (TypeVisitor::visit (TypeClass *)): Likewise.
859
860 2020-03-18  Jakub Jelinek  <jakub@redhat.com>
861
862         * expr.cc (ExprVisitor::visit (CatAssignExp *)): Fix up duplicated
863         word issue in a comment.
864         * d-target.cc (Target::FPTypeProperties<T>::max): Likewise.
865
866 2020-03-16  Iain Buclaw  <ibuclaw@gdcproject.org>
867
868         PR d/92309
869         * types.cc (fixup_anonymous_offset): Don't set DECL_FIELD_OFFSET on
870         anonymous fields.
871
872 2020-03-16  Iain Buclaw  <ibuclaw@gdcproject.org>
873
874         PR d/92216
875         * decl.cc (make_thunk): Don't set TREE_PUBLIC on thunks if the target
876         function is external to the current compilation.
877
878 2020-01-01  Jakub Jelinek  <jakub@redhat.com>
879
880         Update copyright years.
881
882         * gdc.texi: Bump @copyrights-d year.
883 \f
884 Copyright (C) 2020 Free Software Foundation, Inc.
885
886 Copying and distribution of this file, with or without modification,
887 are permitted in any medium without royalty provided the copyright
888 notice and this notice are preserved.