12020-12-31  Iain Buclaw  <ibuclaw@gdcproject.org>
2
3	* dmd/MERGE: Merge upstream dmd 2bd4fc3fe.
4
52020-12-30  Iain Buclaw  <ibuclaw@gdcproject.org>
6
7	* d-lang.cc (deps_add_target): Handle quoting ':' character.
8	Reimplement backslash tracking.
9
102020-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
192020-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
262020-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
332020-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
412020-11-29  Iain Buclaw  <ibuclaw@gdcproject.org>
42
43	PR d/87788
44	* dmd/MERGE: Merge upsream dmd 45fa6cfd2.
45
462020-11-27  Iain Buclaw  <ibuclaw@gdcproject.org>
47
48	* dmd/MERGE: Merge upstream dmd db0df3f7e.
49	* types.cc (TypeVisitor::visit (TypeFunction *)): Remove LINKpascal.
50
512020-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
622020-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
682020-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
752020-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
812020-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
892020-11-18  Iain Buclaw  <ibuclaw@gdcproject.org>
90
91	PR d/97842
92	* dmd/MERGE: Merge upstream dmd b6a779e49
93
942020-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
992020-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
1092020-11-10  Strager Neds  <strager.nds@gmail.com>
110
111	* decl.cc (finish_thunk): Use new overload of
112	set_decl_section_name
113
1142020-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
1202020-10-27  Iain Buclaw  <ibuclaw@gdcproject.org>
121
122	* dmd/MERGE: Merge upstream dmd 0fcdaab32
123
1242020-10-23  Jan Hubicka  <hubicka@ucw.cz>
125
126	* decl.cc (finish_thunk): Update for new thunk api.
127
1282020-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
1332020-10-12  Iain Buclaw  <ibuclaw@gdcproject.org>
134
135	* dmd/MERGE: Merge upstream dmd 70aabfb51
136
1372020-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
1432020-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
1522020-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
1632020-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
1692020-09-10  Iain Buclaw  <ibuclaw@gdcproject.org>
170
171	* decl.cc (DeclVisitor::visit (VarDeclaration *)): Don't warn about
172	variables initialized with 'void'.
173
1742020-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
1792020-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
1852020-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
1942020-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
2042020-08-26  Iain Buclaw  <ibuclaw@gdcproject.org>
205
206	* dmd/MERGE: Merge upstream dmd e49192807
207
2082020-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
2232020-08-26  Iain Buclaw  <ibuclaw@gdcproject.org>
224
225	* dmd/MERGE: Merge upstream dmd cb4a96fae
226
2272020-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
2332020-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
2402020-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
2472020-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
2562020-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
2642020-08-20  Iain Buclaw  <ibuclaw@gdcproject.org>
265
266	* dmd/MERGE: Merge upstream dmd 1b5a53d01.
267
2682020-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
2742020-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
2932020-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
2992020-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
3082020-08-03  Iain Buclaw  <ibuclaw@gdcproject.org>
309
310	PR d/96250
311	* dmd/MERGE: Merge upstream dmd c2274e56a.
312
3132020-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
3192020-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
3272020-07-30  Iain Buclaw  <ibuclaw@gdcproject.org>
328
329	PR d/96154
330	* gdc.texi (Warnings): Document -Wvarargs.
331	* lang.opt: Add -Wvarargs
332
3332020-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
3412020-07-30  Iain Buclaw  <ibuclaw@gdcproject.org>
342
343	* expr.cc (ExprVisitor::visit (AssignExp *)): Inline bounds checking
344	for simple array assignments.
345
3462020-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
3622020-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
3712020-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
3802020-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
4052020-06-28  Iain Buclaw  <ibuclaw@gdcproject.org>
406
407	* dmd/MERGE: Merge upstream dmd 8508c4e68.
408
4092020-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
4142020-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
4272020-06-25  Iain Buclaw  <ibuclaw@gdcproject.org>
428
429	PR d/95075
430	* dmd/MERGE: Merge upstream dmd 4be011355.
431
4322020-06-25  Iain Buclaw  <ibuclaw@gdcproject.org>
433
434	PR d/95250
435	* dmd/MERGE: Merge upstream dmd 90450f3ef.
436
4372020-06-25  Iain Buclaw  <ibuclaw@gdcproject.org>
438
439	* d-lang.cc (d_parse_file): Replace OutBuffer with obstack.
440
4412020-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
4472020-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
4532020-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
4582020-06-25  Iain Buclaw  <ibuclaw@gdcproject.org>
459
460	* d-lang.cc (d_init_options): Turn on deprecation warnings by default.
461
4622020-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
4682020-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
4922020-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
5132020-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
5262020-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
5382020-06-16  Iain Buclaw  <ibuclaw@gdcproject.org>
539
540	* d-lang.cc (d_parse_file): Replace uses of File with FILE.
541
5422020-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
5542020-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
5592020-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
5712020-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
5782020-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
6062020-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
6132020-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
6282020-06-08  Iain Buclaw  <ibuclaw@gdcproject.org>
629
630	PR d/95573
631	* dmd/MERGE: Merge upstream dmd 5041e56f1.
632
6332020-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
6412020-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
6472020-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
6572020-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
6702020-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
6762020-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
6812020-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
6882020-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
7012020-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
7382020-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
7462020-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
7812020-06-04  Iain Buclaw  <ibuclaw@gdcproject.org>
782
783	* dmd/MERGE: Merge upstream dmd 47ed0330f.
784
7852020-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
8132020-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
8292020-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
8342020-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
8512020-04-30  Iain Buclaw  <ibuclaw@gdcproject.org>
852
853	* gdc.texi (Options for Linking): Clarify usage of -defaultlib= and
854	-debuglib= options.
855
8562020-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
8612020-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
8782020-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
8852020-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
8912020-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
8982020-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
9082020-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
9132020-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
9192020-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
9252020-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
9472020-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
9522020-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
9602020-03-31  Iain Buclaw  <ibuclaw@gdcproject.org>
961
962	* typeinfo.cc (TypeInfoVisitor::internal_reference): Call
963	d_comdat_linkage on generated decl.
964
9652020-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
9712020-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
9772020-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
9892020-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
10022020-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
10082020-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
10142020-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
10202020-01-01  Jakub Jelinek  <jakub@redhat.com>
1021
1022	Update copyright years.
1023
1024	* gdc.texi: Bump @copyrights-d year.
1025
1026Copyright (C) 2020 Free Software Foundation, Inc.
1027
1028Copying and distribution of this file, with or without modification,
1029are permitted in any medium without royalty provided the copyright
1030notice and this notice are preserved.
1031