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