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