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