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