xref: /netbsd/external/gpl3/gcc/dist/gcc/d/ChangeLog-2017 (revision 81418a27)
1*81418a27Smrg2017-12-23  Iain Buclaw  <ibuclaw@gdcproject.org>
2*81418a27Smrg
3*81418a27Smrg	* intrinsics.def (INTRINSIC_MULUI): Declare.
4*81418a27Smrg
5*81418a27Smrg2017-12-19  Iain Buclaw  <ibuclaw@gdcproject.org>
6*81418a27Smrg
7*81418a27Smrg	* d-codegen.cc (build_target_expr): Update signature.
8*81418a27Smrg	(force_target_expr): New function.
9*81418a27Smrg	(build_address): Use force_target_expr to store temporary.
10*81418a27Smrg	(d_build_call): Likewise.
11*81418a27Smrg	* d-lang.cc (d_gimplify_expr): Likewise.
12*81418a27Smrg	* d-tree.h (language_function): Update type for vars_in_scope from
13*81418a27Smrg	vec<VarDeclaration*> to vec<tree>.
14*81418a27Smrg	(force_target_expr): Declare.
15*81418a27Smrg	* decl.cc (DeclVisitor::visit(VarDeclaration)): Put vars with scope
16*81418a27Smrg	destructors into a TARGET_EXPR, setting its cleanup.
17*81418a27Smrg	(declare_local_var): Don't push vars with scope destructors into the
18*81418a27Smrg	function binding level.
19*81418a27Smrg	* expr.cc (ExprVisitor::visit(DeclarationExp)): Don't handle scope
20*81418a27Smrg	destructors.
21*81418a27Smrg	(ExprVisitor::visit(CallExp)): Handle calling constructors using
22*81418a27Smrg	temporary objects.
23*81418a27Smrg	(build_dtor_list): Remove function.
24*81418a27Smrg	(build_expr_dtor): Put result into a CLEANUP_POINT_EXPR if any new
25*81418a27Smrg	temporaries needing destruction were added to scope.
26*81418a27Smrg	(build_return_dtor): Likewise.
27*81418a27Smrg	* toir.cc (add_stmt): Set CLEANUP_POINT_EXPR type as void.
28*81418a27Smrg
29*81418a27Smrg2017-12-19  Iain Buclaw  <ibuclaw@gdcproject.org>
30*81418a27Smrg
31*81418a27Smrg	* d-attribs.c (attr_noreturn_exclusions): New array.
32*81418a27Smrg	(attr_returns_twice_exclusions, attr_const_pure_exclusions): Likewise.
33*81418a27Smrg	(attr_inline_exclusions, attr_noinline_exclusions): Likewise.
34*81418a27Smrg	(d_langhook_common_attribute_table): Swap affects_identity and handler
35*81418a27Smrg	fields.  Initialize new member of struct attribute_spec.
36*81418a27Smrg	(d_langhook_attribute_table): Likewise.
37*81418a27Smrg	(handle_weakref_attribute): Remove function.
38*81418a27Smrg
39*81418a27Smrg2017-12-17  Iain Buclaw  <ibuclaw@gdcproject.org>
40*81418a27Smrg
41*81418a27Smrg	* d-codegen.cc (stabilize_expr): Handle assignment expressions.
42*81418a27Smrg	(get_frame_for_symbol): Adjust the 'this' field of frames of
43*81418a27Smrg	overridden interface functions.
44*81418a27Smrg	* d-diagnostic.cc (expand_format): Rewrite '%X' format as '%x'.
45*81418a27Smrg	* decl.cc (DeclVisitor::visit(ClassDeclaration)): Handle future
46*81418a27Smrg	attribute.
47*81418a27Smrg	* expr.cc (ExprVisitor::binop_assignment): Ensure RHS is evaluated
48*81418a27Smrg	before LHS.
49*81418a27Smrg	(ExprVisitor::visit(SliceExp)): Always save lower bounds if upper has
50*81418a27Smrg	any side effects.
51*81418a27Smrg	* typeinfo.cc (TypeInfoVisitor::TypeInfoClassDeclaration): Use
52*81418a27Smrg	ClassDeclaration::isAbstract.
53*81418a27Smrg	(TypeInfoVisitor::visit(TypeInfoTupleDeclaration)): Mark internal
54*81418a27Smrg	reference as public and hidden.
55*81418a27Smrg
56*81418a27Smrg2017-12-10  Iain Buclaw  <ibuclaw@gdcproject.org>
57*81418a27Smrg
58*81418a27Smrg	* d-codegen.cc (build_alignment_field): Set DECL_PADDING_P and
59*81418a27Smrg	DECL_FIELD_CONTEXT on generated fields.
60*81418a27Smrg	(build_struct_literal): Use build_zero_cst to generate padding.
61*81418a27Smrg	* decl.cc (build_type_decl): Set public and decl assembler name.
62*81418a27Smrg
63*81418a27Smrg2017-12-10  Iain Buclaw  <ibuclaw@gdcproject.org>
64*81418a27Smrg
65*81418a27Smrg	* types.cc (TypeVisitor::visit(TypeClass)): Check for duplicate
66*81418a27Smrg	declarations before adding method.
67*81418a27Smrg
68*81418a27Smrg2017-12-09  Iain Buclaw  <ibuclaw@gdcproject.org>
69*81418a27Smrg
70*81418a27Smrg	* expr.cc (ExprVisitor::visit(AddrExp)): Build internal struct literal
71*81418a27Smrg	symbol before generating its initializer.
72*81418a27Smrg
73*81418a27Smrg2017-12-09  Iain Buclaw  <ibuclaw@gdcproject.org>
74*81418a27Smrg
75*81418a27Smrg	* d-lang.cc (d_parse_file): Set first_global_object_name.
76*81418a27Smrg
77*81418a27Smrg2017-12-09  Iain Buclaw  <ibuclaw@gdcproject.org>
78*81418a27Smrg
79*81418a27Smrg	* lang.opt (fmodule-filepath=): Rename to fmodule-file.
80*81418a27Smrg	* d-lang.cc (d_handle_option): Update case for OPT_fmodule_file_.
81*81418a27Smrg
82*81418a27Smrg2017-12-09  Iain Buclaw  <ibuclaw@gdcproject.org>
83*81418a27Smrg
84*81418a27Smrg	* d-tree.h (CALL_EXPR_ARGS_ORDERED): Define.
85*81418a27Smrg	* d-codegen.cc (d_build_call): Set CALL_EXPR_ARGS_ORDERED for
86*81418a27Smrg	functions with D linkage.
87*81418a27Smrg	* d-lang.cc (d_gimplify_expr): Handle CALL_EXPR_ARGS_ORDERED.
88*81418a27Smrg
89*81418a27Smrg2017-12-09  Eugene Wissner  <belka@caraus.de>
90*81418a27Smrg
91*81418a27Smrg	* toir.cc (IRVisitor::visit(SwitchStatement)): Set SWITCH_ALL_CASES_P on
92*81418a27Smrg	switch statements. Set SWITCH_BREAK_LABEL_P on the artificial label
93*81418a27Smrg	created for break statements from a switch.
94*81418a27Smrg
95*81418a27Smrg2017-12-04  Eugene Wissner  <belka@caraus.de>
96*81418a27Smrg
97*81418a27Smrg	* toir.cc (IRVisitor::visit(SwitchStatement)): Build SWITCH_EXPR using build2 instead
98*81418a27Smrg	of build3.
99*81418a27Smrg
100*81418a27Smrg2017-11-14  Eugene Wissner  <belka@caraus.de>
101*81418a27Smrg
102*81418a27Smrg	* decl.cc (finish_thunk): Drop frequency argument from
103*81418a27Smrg	symbol_table::create_edge.
104*81418a27Smrg	* d-lang.cc (d_post_options): Set default value of
105*81418a27Smrg	-Wreturn-type to false.
106*81418a27Smrg
107*81418a27Smrg2017-11-11  Iain Buclaw  <ibuclaw@gdcproject.org>
108*81418a27Smrg
109*81418a27Smrg	* d-codegen.cc (build_float_cst): Remove float rounding check.
110*81418a27Smrg	* d-longdouble.cc (longdouble::to_int): Don't round floats before int
111*81418a27Smrg	conversion.
112*81418a27Smrg	* expr.cc (ExprVisitor::binary_op): Handle excess precision.
113*81418a27Smrg	(ExprVisitor::visit(NegExp)): Likwise.
114*81418a27Smrg
115*81418a27Smrg2017-10-31  Iain Buclaw  <ibuclaw@gdcproject.org>
116*81418a27Smrg
117*81418a27Smrg	* d-codegen.cc (build_address): Store CST nodes into a TARGET_EXPR
118*81418a27Smrg	before taking its address.
119*81418a27Smrg
120*81418a27Smrg2017-10-08  Iain Buclaw  <ibuclaw@gdcproject.org>
121*81418a27Smrg
122*81418a27Smrg	* Make-lang.in (D_FRONTEND_OBJS): Remove newdelete.o.
123*81418a27Smrg	* d-incpath.cc (add_globalpaths): Handle NULL target path.
124*81418a27Smrg
125*81418a27Smrg2017-10-01  Iain Buclaw  <ibuclaw@gdcproject.org>
126*81418a27Smrg
127*81418a27Smrg	* typeinfo.cc (TypeInfoVisitor::visit(TypeInfoClassDeclaration)):
128*81418a27Smrg	Properly check base classes for pointers.
129*81418a27Smrg
130*81418a27Smrg2017-09-28  Iain Buclaw  <ibuclaw@gdcproject.org>
131*81418a27Smrg
132*81418a27Smrg	* expr.cc (ExprVisitor::visit(StringExp)): Add extra null terminator
133*81418a27Smrg	onto string type, not the literal.
134*81418a27Smrg
135*81418a27Smrg2017-09-26  Iain Buclaw  <ibuclaw@gdcproject.org>
136*81418a27Smrg
137*81418a27Smrg	* types.cc (make_array_type): Move checking of void static arrays
138*81418a27Smrg	here.
139*81418a27Smrg
140*81418a27Smrg2017-09-24  Iain Buclaw  <ibuclaw@gdcproject.org>
141*81418a27Smrg
142*81418a27Smrg	* d-attribs.c: Add include for attribs.h.
143*81418a27Smrg	* d-codegen.cc (copy_aggregate_type): Remove TYPE_METHODS.
144*81418a27Smrg	(lower_struct_comparison): Use opt_scalar_int_mode.
145*81418a27Smrg	* d-target.cc (Target::_init): Use TYPE_MAX_VALUE instead of
146*81418a27Smrg	TYPE_MAXVAL.
147*81418a27Smrg	(Target::isVectorTypeSupported):  Update call to
148*81418a27Smrg	scalar_mode_supported_p.
149*81418a27Smrg	* decl.cc (DeclVisitor::visit(Import)): Pass false as new argument to
150*81418a27Smrg	the imported_module_or_decl hook.
151*81418a27Smrg	* types.cc (TypeVisitor::visit(TypeClass)): Remove TYPE_METHODS.
152*81418a27Smrg
153*81418a27Smrg2017-09-14  Iain Buclaw  <ibuclaw@gdcproject.org>
154*81418a27Smrg
155*81418a27Smrg	* Make-lang.in (D_FRONTEND_OBJS): Add blockexit.o, initsem.o,
156*81418a27Smrg	inlinecost.o, safe.o, staticcond.o, and typesem.o.
157*81418a27Smrg	* d-attribs.c (uda_attribute_p): Use get_identifier to compare
158*81418a27Smrg	strings.
159*81418a27Smrg	(build_attributes): Handle empty string expressions.
160*81418a27Smrg	* d-builtins.cc (build_frontend_type): Use static create methods to
161*81418a27Smrg	'new' front-end types, expressions, and declarations.
162*81418a27Smrg	(d_eval_constant_expression): Likewise.
163*81418a27Smrg	(build_alias_declaration): Likewise.
164*81418a27Smrg	(d_build_builtins_module): Likewise.
165*81418a27Smrg	* d-codegen.cc (declaration_type): Likewise.
166*81418a27Smrg	(type_passed_as): Likewise.
167*81418a27Smrg	(get_frame_for_symbol): Remove dependency on id.h.
168*81418a27Smrg	(get_frameinfo): Don't overwrite FRAMEINFO_CREATES_FRAME if function
169*81418a27Smrg	has nested frame references.
170*81418a27Smrg	* d-convert.cc (convert_for_assignment): Allow static arrays to be
171*81418a27Smrg	initialized with a zero integer value.
172*81418a27Smrg	* d-frontend.cc (genCmain): Remove dependency on id.h.
173*81418a27Smrg	* d-frontend.h (initializerToExpression): Add declaration.
174*81418a27Smrg	(gendocfile): Add declaration.
175*81418a27Smrg	(initTraitsStringTable): Remove.
176*81418a27Smrg	* d-lang.cc (deps_write): Remove dependency on id.h.
177*81418a27Smrg	(deps_add_target): Don't call StringTables's destructor.
178*81418a27Smrg	(d_init): Remove calls to deleted front-end initialize functions.
179*81418a27Smrg	* decl.cc (DeclVisitor::visit(PragmaDeclaration)): Remove dependency
180*81418a27Smrg	on id.h.
181*81418a27Smrg	(DeclVisitor::visit(VarDeclaration)): Call initializerToExpression to
182*81418a27Smrg	get the initializer of decl.
183*81418a27Smrg	(build_decl_tree): Remove dependency on id.h.
184*81418a27Smrg	(layout_class_initializer): Use static create method to 'new'
185*81418a27Smrg	front-end expression.
186*81418a27Smrg	* expr.cc (ExprVisitor::visit(AssignExp)): Handle static array
187*81418a27Smrg	assignment where RHS is integer zero.
188*81418a27Smrg	(ExprVisitor::visit(VarExp)): Remove dependency on id.h.
189*81418a27Smrg	(ExprVisitor::visit(StringExp)): Handle empty string expressions.
190*81418a27Smrg	* modules.cc (get_internal_fn): Use FuncDeclaration::genCfunc to
191*81418a27Smrg	create function decl.
192*81418a27Smrg	(build_module_tree): Remove dependency on id.h.
193*81418a27Smrg	* toir.cc (IRVisitor::visit(ExtAsmStatement)): Handle empty string
194*81418a27Smrg	expressions.
195*81418a27Smrg	* typeinfo.cc (make_frontend_typeinfo): Use static create methods to
196*81418a27Smrg	'new' front-end declarations.
197*81418a27Smrg	(create_tinfo_types): Remove dependency on id.h.
198*81418a27Smrg	(get_cpp_typeinfo_decl): Likewise.
199*81418a27Smrg	(create_typeinfo): Likewise.
200*81418a27Smrg
201*81418a27Smrg2017-08-23  Johannes Pfau  <johannespfau@gmail.com>
202*81418a27Smrg
203*81418a27Smrg	* typeinfo.cc (TypeInfoVisitor::visit(TypeInfoStructDeclaration)): Do
204*81418a27Smrg	not send member functions to backend here.
205*81418a27Smrg
206*81418a27Smrg2017-08-19  Iain Buclaw  <ibuclaw@gdcproject.org>
207*81418a27Smrg
208*81418a27Smrg	* d-convert.cc (convert_expr): Use build_zero_cst for casts from
209*81418a27Smrg	typeof(null).
210*81418a27Smrg
211*81418a27Smrg2017-08-13  Iain Buclaw  <ibuclaw@gdcproject.org>
212*81418a27Smrg
213*81418a27Smrg	* d-target.cc (Target::isVectorOpSupported): Disallow vectors in
214*81418a27Smrg	conditional and logical operators.
215*81418a27Smrg
216*81418a27Smrg2017-08-08  Iain Buclaw  <ibuclaw@gdcproject.org>
217*81418a27Smrg
218*81418a27Smrg	* intrinsics.cc (maybe_expand_intrinsic): Handle isNaN(), isInfinity()
219*81418a27Smrg	and isFinite() intrinsics.
220*81418a27Smrg	* intrinsics.def: Add INTRINSIC_ISNAN, INTRINSIC_ISINFINITY, and
221*81418a27Smrg	INTRINSIC_ISFINITE.
222*81418a27Smrg
223*81418a27Smrg2017-08-08  Iain Buclaw  <ibuclaw@gdcproject.org>
224*81418a27Smrg
225*81418a27Smrg	* intrinsics.cc (expand_intrinsic_popcnt): New function.
226*81418a27Smrg	(maybe_expand_intrinsic): Handle INTRINSIC_POPCNT.
227*81418a27Smrg	* intrinsics.def (INTRINSIC_POPCNT): Declare.
228*81418a27Smrg
229*81418a27Smrg2017-08-06  Iain Buclaw  <ibuclaw@gdcproject.org>
230*81418a27Smrg
231*81418a27Smrg	* d-frontend.cc (isBuiltin): Remove restriction on builtins.
232*81418a27Smrg	(eval_builtin): Check DECL_INTRINSIC_CODE.
233*81418a27Smrg	* d-tree.h (intrinsic_code): Add enum declaration.
234*81418a27Smrg	(lang_decl): Add intrinsic field.
235*81418a27Smrg	(DECL_INTRINSIC_CODE): New macro.
236*81418a27Smrg	(DECL_BUILT_IN_CTFE): New macro.
237*81418a27Smrg	* decls.cc (get_symbol_decl): Initialize DECL_INTRINSIC_CODE.
238*81418a27Smrg	* intrinsics.cc (intrinsic_decl): Add ctfeonly field.
239*81418a27Smrg	(maybe_set_intrinsic): Set frontend builtin flag only if the function
240*81418a27Smrg	is CTFE-able.  Set BUILT_IN_FRONTEND if function has no body.
241*81418a27Smrg	(clear_intrinsic_flag): Clear DECL_INTRINSIC_CODE instead of frontend
242*81418a27Smrg	builtin flag.
243*81418a27Smrg	(maybe_expand_intrinsic): Handle INTRINSIC_TAN intrinsics.
244*81418a27Smrg	Call clear_intrinsic_flag on CTFE built-ins if semantic has finished.
245*81418a27Smrg	* intrinsics.def: Add INTRINSIC_TAN.
246*81418a27Smrg	(DEF_D_BUILTIN): New macro.
247*81418a27Smrg	(DEF_CTFE_BUILTIN): New macro.
248*81418a27Smrg
249*81418a27Smrg2017-08-06  Iain Buclaw  <ibuclaw@gdcproject.org>
250*81418a27Smrg
251*81418a27Smrg	* decl.cc (DeclVisitor::visit): Don't set input_location.
252*81418a27Smrg	(build_decl_tree): Handle set and restore of input_location.
253*81418a27Smrg	(declare_local_var): Don't set input_location.
254*81418a27Smrg	* expr.cc (build_expr): Handle set and restore of input_location.
255*81418a27Smrg	* imports.cc (build_import_decl): Likewise.
256*81418a27Smrg	* modules.cc (get_dso_registry_fn): Use UNKNOWN_LOCATION for
257*81418a27Smrg	declaration of _d_dso_registry.
258*81418a27Smrg	* runtime.cc (build_libcall_decl): Use UNKNOWN_LOCATION for
259*81418a27Smrg	declaration of library functions.
260*81418a27Smrg	* toir.cc (IRVisitor::visit): Don't set input_location.
261*81418a27Smrg	(IRVisitor::build_stmt): New function.
262*81418a27Smrg	(IRVisitor::do_jump): Update signature.
263*81418a27Smrg	(build_function_body): Use IRVisitor::build_stmt.
264*81418a27Smrg	* typeinfo.cc (layout_classinfo_interfaces): Don't set input_location.
265*81418a27Smrg	* types.cc (layout_aggregate_members): Likewise.
266*81418a27Smrg	(layout_aggregate_type): Likewise.
267*81418a27Smrg
268*81418a27Smrg2017-08-05  Iain Buclaw  <ibuclaw@gdcproject.org>
269*81418a27Smrg
270*81418a27Smrg	* d-codegen.cc (build_boolop): Handle VECTOR_TYPE comparisons.
271*81418a27Smrg	* d-target.cc (Target::checkVectorType): Rename to
272*81418a27Smrg	Target::isVectorTypeSupported.
273*81418a27Smrg	(Target::isVectorOpSupported): New function.
274*81418a27Smrg	* expr.cc (ExprVisitor::visit(IdentityExp)): Don't memcmp floating
275*81418a27Smrg	point vectors.
276*81418a27Smrg	(ExprVisitor::visit(CmpExp)): Handle always true or always false
277*81418a27Smrg	vector comparisons.
278*81418a27Smrg
279*81418a27Smrg2017-08-02  Iain Buclaw  <ibuclaw@gdcproject.org>
280*81418a27Smrg
281*81418a27Smrg	* typeinfo.cc (SpeculativeTypeVisitor::visit(TypeClass)): Don't emit
282*81418a27Smrg	typeinfo for speculative class types.
283*81418a27Smrg
284*81418a27Smrg2017-07-29  Iain Buclaw  <ibuclaw@gdcproject.org>
285*81418a27Smrg
286*81418a27Smrg	* d-lang.cc (build_lang_decl): Handle compiler generated typeinfo that
287*81418a27Smrg	also appear in code.
288*81418a27Smrg	* d-tree.h (lang_identifier): Add decl_tree.
289*81418a27Smrg	(IDENTIFIER_DECL_TREE): New macro.
290*81418a27Smrg	* decl.cc (declare_extern_var): Re-use already generated decl if
291*81418a27Smrg	called with the same identifier twice.
292*81418a27Smrg
293*81418a27Smrg2017-07-29  Iain Buclaw  <ibuclaw@gdcproject.org>
294*81418a27Smrg
295*81418a27Smrg	* decl.cc (d_finish_decl): Replace ENABLE_TREE_CHECKING macro with
296*81418a27Smrg	flag_checking.
297*81418a27Smrg
298*81418a27Smrg2017-07-28  Iain Buclaw  <ibuclaw@gdcproject.org>
299*81418a27Smrg
300*81418a27Smrg	* d-tree.h (D_DECL_ONE_ONLY): Remove macro accessor.
301*81418a27Smrg	* decl.cc (DeclVisitor::visit(StructDeclaration)): Move call to
302*81418a27Smrg	d_comdat_linkage here.
303*81418a27Smrg	(DeclVisitor::visit(ClassDeclaration)): Likewise.
304*81418a27Smrg	(DeclVisitor::visit(InterfaceDeclaration)): Likewise.
305*81418a27Smrg	(DeclVisitor::visit(EnumDeclaration)): Likewise.
306*81418a27Smrg	(get_symbol_decl): Move call to mark_needed here.
307*81418a27Smrg	(declare_extern_var): Mark compiler generated symbols as needed.
308*81418a27Smrg	(make_thunk): Remove copy of D_DECL_ONE_ONLY.
309*81418a27Smrg	(get_vtable_decl): Don't call d_comdat_linkage.
310*81418a27Smrg	(aggregate_initializer_decl): Likewise.
311*81418a27Smrg	(enum_initializer_decl): Likewise.
312*81418a27Smrg	* modules.cc (d_finish_compilation): Don't call mark_needed.
313*81418a27Smrg	* typeinfo.cc (get_classinfo_decl): Don't call d_comdat_linkage.
314*81418a27Smrg
315*81418a27Smrg2017-07-28  Iain Buclaw  <ibuclaw@gdcproject.org>
316*81418a27Smrg
317*81418a27Smrg	* d-spec.c (lang_specific_driver): Always add `-o' option when
318*81418a27Smrg	compiling D sources.
319*81418a27Smrg
320*81418a27Smrg2017-07-28  Iain Buclaw  <ibuclaw@gdcproject.org>
321*81418a27Smrg
322*81418a27Smrg	* d-frontend.cc (genCmain): Don't error if entrypoint not found.
323*81418a27Smrg
324*81418a27Smrg2017-07-18  Iain Buclaw  <ibuclaw@gdcproject.org>
325*81418a27Smrg
326*81418a27Smrg	* d-lang.cc (d_types_compatible_p): Check that both types are
327*81418a27Smrg	RECORD_TYPE before using record-specific flag comparison.
328*81418a27Smrg
329*81418a27Smrg2017-07-15  Iain Buclaw  <ibuclaw@gdcproject.org>
330*81418a27Smrg
331*81418a27Smrg	* d-builtins.cc (d_build_d_type_nodes): Set TYPE_DYNAMIC_ARRAY on
332*81418a27Smrg	array_type_node.
333*81418a27Smrg	* d-codegen.cc (build_delegate_cst): Set TYPE_DELEGATE on internal
334*81418a27Smrg	delegate constant types.
335*81418a27Smrg	* d-frontend.h (cppTypeInfoMangle): Remove declaration.
336*81418a27Smrg	(toCppMangleItanium): Add declaration.
337*81418a27Smrg	(cppTypeInfoMangleItanium): Add declaration.
338*81418a27Smrg	* d-lang.cc (d_types_compatible_p): Use type flags to determine
339*81418a27Smrg	compatibility.  Return false instead of doing size comparison.
340*81418a27Smrg	* d-target.cc (Target::toCppMangle): New function.
341*81418a27Smrg	(Target::cppTypeInfoMangle): New function.
342*81418a27Smrg	(Target::cppTypeMangle): New function.
343*81418a27Smrg	(Target::systemLinkage): New function.
344*81418a27Smrg	* d-tree.h (TYPE_DYNAMIC_ARRAY): New macro.
345*81418a27Smrg	(TYPE_DELEGATE): New macro.
346*81418a27Smrg	(TYPE_ASSOCIATIVE_ARRAY): New macro.
347*81418a27Smrg	* typeinfo.cc (layout_cpp_typeinfo): Use Target::cppTypeInfoMangle.
348*81418a27Smrg	* types.cc (TypeVisitor::visit(TypeDArray)): Set TYPE_DYNAMIC_ARRAY.
349*81418a27Smrg	(TypeVisitor::visit(TypeAArray)): Set TYPE_ASSOCIATIVE_ARRAY.
350*81418a27Smrg	(TypeVisitor::visit(TypeDelegate)): Set TYPE_DELEGATE.
351*81418a27Smrg
352*81418a27Smrg2017-07-11  Iain Buclaw  <ibuclaw@gdcproject.org>
353*81418a27Smrg
354*81418a27Smrg	* d-target.cc (Target::loadModule): Check module identifier if a
355*81418a27Smrg	declaration doesn't exist.
356*81418a27Smrg	* typeinfo.cc (make_frontend_typeinfo): Use module location instead if
357*81418a27Smrg	a declaration doesn't exist.
358*81418a27Smrg
359*81418a27Smrg2017-06-28  Iain Buclaw  <ibuclaw@gdcproject.org>
360*81418a27Smrg
361*81418a27Smrg	* d-frontend.cc (CTFloat::hash): New function.
362*81418a27Smrg
363*81418a27Smrg2017-06-25  Iain Buclaw  <ibuclaw@gdcproject.org>
364*81418a27Smrg
365*81418a27Smrg	* d-codegen.cc (d_array_string): Remove function.
366*81418a27Smrg	(d_assert_call): Inline implementation of d_array_string here.
367*81418a27Smrg	* d-tree.h (d_array_string): Remove declaration.
368*81418a27Smrg	* typeinfo.cc (TypeInfoVisitor::layout_string): New function.
369*81418a27Smrg	(TypeInfoVisitor::visit): Update calls to d_array_string to use
370*81418a27Smrg	layout_string instead.
371*81418a27Smrg
372*81418a27Smrg2017-06-25  Iain Buclaw  <ibuclaw@gdcproject.org>
373*81418a27Smrg
374*81418a27Smrg	* toir.cc (IRVisitor::visit(ExtAsmStatement)): Set ASM_VOLATILE_P only
375*81418a27Smrg	if statement is not marked with pure attribute.
376*81418a27Smrg
377*81418a27Smrg2017-06-25  Iain Buclaw  <ibuclaw@gdcproject.org>
378*81418a27Smrg
379*81418a27Smrg	* d-lang.cc (d_parse_file): Print all predefined version identifiers
380*81418a27Smrg	if verbose.
381*81418a27Smrg
382*81418a27Smrg2017-06-24  Iain Buclaw  <ibuclaw@gdcproject.org>
383*81418a27Smrg
384*81418a27Smrg	* d-frontend.cc (Global::_init): Remove memset for global.params.
385*81418a27Smrg
386*81418a27Smrg2017-06-24  Iain Buclaw  <ibuclaw@gdcproject.org>
387*81418a27Smrg
388*81418a27Smrg	* Make-lang.in (D_ALL_OBJS): Add D_TARGET_OBJS.
389*81418a27Smrg	* d-builtins.cc (d_add_builtin_version): Move here from d-lang.cc.
390*81418a27Smrg	(d_init_versions): New function.
391*81418a27Smrg	* d-lang.cc (d_init): Call d_init_versions.
392*81418a27Smrg	* d-target-def.h: New file.
393*81418a27Smrg	* d-target.cc (Target::critsecsize): Replace with call to
394*81418a27Smrg	targetdm.critsec_size.
395*81418a27Smrg	* d-target.def: New file.
396*81418a27Smrg	* d-target.h: New file.
397*81418a27Smrg	* d-tree.h (d_init_versions): Add declaration.
398*81418a27Smrg
399*81418a27Smrg2017-06-20  Iain Buclaw  <ibuclaw@gdcproject.org>
400*81418a27Smrg
401*81418a27Smrg	* expr.cc (ExprVisitor::visit(BinAssignExp)): Strip promotions from
402*81418a27Smrg	both signed and unsigned rshift assignments.
403*81418a27Smrg
404*81418a27Smrg2017-06-17  Iain Buclaw  <ibuclaw@gdcproject.org>
405*81418a27Smrg
406*81418a27Smrg	* d-diagnostic.cc (expand_format): New function.
407*81418a27Smrg	(d_diagnostic_report_diagnostic): New function.
408*81418a27Smrg	(error, verror): Update format attributes.  Use function
409*81418a27Smrg	d_diagnostic_report_diagnostic instead of xvasprintf.
410*81418a27Smrg	(errorSupplemental, verrorSupplemental): Likewise.
411*81418a27Smrg	(warning, vwarning): Likewise.
412*81418a27Smrg	(warningSupplemental, vwarningSupplemental): Likewise.
413*81418a27Smrg	(deprecation, vdeprecation): Likewise.
414*81418a27Smrg	(deprecationSupplemental, vdeprecationSupplemental): Likewise.
415*81418a27Smrg
416*81418a27Smrg2017-06-15  Iain Buclaw  <ibuclaw@gdcproject.org>
417*81418a27Smrg
418*81418a27Smrg	* expr.cc (ExprVisitor::visit(AssertExp)): Don't call invariant on
419*81418a27Smrg	interface objects.
420*81418a27Smrg
421*81418a27Smrg2017-06-12  Iain Buclaw  <ibuclaw@gdcproject.org>
422*81418a27Smrg
423*81418a27Smrg	* expr.cc (ExprVisitor::visit(DelegateExp)): Convert object to right
424*81418a27Smrg	type before using it.
425*81418a27Smrg
426*81418a27Smrg2017-06-12  Iain Buclaw  <ibuclaw@gdcproject.org>
427*81418a27Smrg
428*81418a27Smrg	* d-decls.cc (get_decl_tree): Find the first parent member function
429*81418a27Smrg	before constructing non-local `this' decl.
430*81418a27Smrg
431*81418a27Smrg2017-06-10  Iain Buclaw  <ibuclaw@gdcproject.org>
432*81418a27Smrg
433*81418a27Smrg	* d-builtins.cc (build_frontend_type): Allow all vector types to be
434*81418a27Smrg	included in builtins module.
435*81418a27Smrg
436*81418a27Smrg2017-06-09  Iain Buclaw  <ibuclaw@gdcproject.org>
437*81418a27Smrg
438*81418a27Smrg	* types.cc (TypeVisitor::visit(TypeStruct)): Let struct alignment
439*81418a27Smrg	override the alignsize.
440*81418a27Smrg
441*81418a27Smrg2017-06-09  Iain Buclaw  <ibuclaw@gdcproject.org>
442*81418a27Smrg
443*81418a27Smrg	* d-codegen.cc (d_decl_context): Use origin template declaration as
444*81418a27Smrg	context for instantiated type symbols.
445*81418a27Smrg
446*81418a27Smrg2017-06-08  Iain Buclaw  <ibuclaw@gdcproject.org>
447*81418a27Smrg
448*81418a27Smrg	* d-attribs.c (d_handle_weak_attribute): Use quoted string format.
449*81418a27Smrg	* decls.cc (finish_thunk): Update call to create_edge for new API.
450*81418a27Smrg
451*81418a27Smrg2017-06-08  Iain Buclaw  <ibuclaw@gdcproject.org>
452*81418a27Smrg
453*81418a27Smrg	* expr.cc (ExprVisitor::visit(StringExp)): Create string type that is
454*81418a27Smrg	same length as string value literal.
455*81418a27Smrg
456*81418a27Smrg2017-05-27  Iain Buclaw  <ibuclaw@gdcproject.org>
457*81418a27Smrg
458*81418a27Smrg	* Make-lang.in (D_FRONTEND_OBJS): Rename object.o to rootobject.o.
459*81418a27Smrg
460*81418a27Smrg2017-05-26  Iain Buclaw  <ibuclaw@gdcproject.org>
461*81418a27Smrg
462*81418a27Smrg	* decl.cc: Remove include for dumpfile.h.
463*81418a27Smrg	(finish_function): Use dump_function to for dumping original ASTs.
464*81418a27Smrg
465*81418a27Smrg2017-05-24  Iain Buclaw  <ibuclaw@gdcproject.org>
466*81418a27Smrg
467*81418a27Smrg	* config-lang.in (gtfiles): Add typeinfo.cc.
468*81418a27Smrg	* d-codegen.cc (d_build_call_list): Remove function.
469*81418a27Smrg	(d_build_call_nary): Remove function.
470*81418a27Smrg	(build_binary_op): Remove function.
471*81418a27Smrg	(build_binop_assignment): Remove function.
472*81418a27Smrg	(build_vthis_type): Rename to build_vthis_function.
473*81418a27Smrg	(create_field_decl): Move to decl.cc.
474*81418a27Smrg	* d-lang.cc (genCmain): Moved to d-frontend.cc.
475*81418a27Smrg	(builtin_modules): Declare static.
476*81418a27Smrg	(d_add_builtin_module): New function.
477*81418a27Smrg	(d_add_entrypoint_module): New function.
478*81418a27Smrg	* expr.cc (ExprVisitor::binary_op): New function.
479*81418a27Smrg	(ExprVisitor::binop_assignment): New function.
480*81418a27Smrg	* intrinsic.cc (expand_intrinsic): Rename to maybe_expand_intrinsic.
481*81418a27Smrg	* runtime.cc (build_libcall): Updated signature.
482*81418a27Smrg	* types.cc (make_two_field_type): Remove function.
483*81418a27Smrg	(make_struct_type): New function.
484*81418a27Smrg
485*81418a27Smrg2017-05-22  Iain Buclaw  <ibuclaw@gdcproject.org>
486*81418a27Smrg
487*81418a27Smrg	* Make-lang.in (D_OBJS): Add intrinsics.o and runtime.o.
488*81418a27Smrg	* d-codegen.h: Remove file.
489*81418a27Smrg	* intrinsics.cc: New file.
490*81418a27Smrg	* runtime.cc: New file.
491*81418a27Smrg
492*81418a27Smrg2017-05-21  Iain Buclaw  <ibuclaw@gdcproject.org>
493*81418a27Smrg
494*81418a27Smrg	* d-codegen.cc: Remove include for d-dmd-gcc.h.
495*81418a27Smrg	* d-dmd-gcc.h: Rename to d-frontend.h.  Update all includes.
496*81418a27Smrg	* d-frontend.cc (Global::_init): Remove unnecessary initialization.
497*81418a27Smrg	* expr.cc: Remove include for d-dmd-gcc.h.
498*81418a27Smrg
499*81418a27Smrg2017-05-21  Iain Buclaw  <ibuclaw@gdcproject.org>
500*81418a27Smrg
501*81418a27Smrg	* d-attribs.c (handle_sentinel_attribute): Remove function.
502*81418a27Smrg	(ignore_attribute): Remove function.
503*81418a27Smrg	(d_langhook_common_attribute_table): Remove sentinel and tm regparm
504*81418a27Smrg	from common attribute table.
505*81418a27Smrg	(d_langhook_format_attribute_table): Remove variable.
506*81418a27Smrg	* d-lang.cc (LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE): Remove macro.
507*81418a27Smrg	(LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE): Remove macro.
508*81418a27Smrg	(d_post_options): Don't set flag_unit_at_a_time.
509*81418a27Smrg	(d_nametype): Remove function.
510*81418a27Smrg	* types.cc (TypeVisitor::visit(TypeBasic)): Set TYPE_NAME.
511*81418a27Smrg	(TypeVisitor::visit(TypeVector)): Likewise.
512*81418a27Smrg
513*81418a27Smrg2017-05-20  Iain Buclaw  <ibuclaw@gdcproject.org>
514*81418a27Smrg
515*81418a27Smrg	* Make-lang.in (D_OBJS): Remove d-objfile.o.  Add modules.o.
516*81418a27Smrg	* d-codegen.cc (get_linemap): Move function here.
517*81418a27Smrg	* d-objfile.cc: Remove file.
518*81418a27Smrg	* d-objfile.h: Remove header.
519*81418a27Smrg	* d-tree.h (GDC_PREFIX): New macro.
520*81418a27Smrg	* decl.cc (make_internal_name): Rename to mangle_internal_decl.
521*81418a27Smrg	(DeclVisitor): Move class here.
522*81418a27Smrg	(gcc_attribute_p): Move function here.
523*81418a27Smrg	(build_decl_tree): Likewise.
524*81418a27Smrg	(d_finish_decl): Likewise.
525*81418a27Smrg	(start_function): Likewise.
526*81418a27Smrg	(finish_function): Likewise.
527*81418a27Smrg	(mark_needed): Likewise.
528*81418a27Smrg	(base_vtable_offset): Likewise.
529*81418a27Smrg	(build_artificial_decl): Likewise.
530*81418a27Smrg	(build_type_decl): Likewise.
531*81418a27Smrg	(d_comdat_group): Likewise.
532*81418a27Smrg	(d_comdat_linkage): Likewise.
533*81418a27Smrg	(add_moduleinfo_field): Move to modules.cc
534*81418a27Smrg	(layout_moduleinfo_fields): Likewise.
535*81418a27Smrg	(get_moduleinfo_decl): Likewise.
536*81418a27Smrg	* modules.cc: New file.
537*81418a27Smrg
538*81418a27Smrg2017-05-10  Iain Buclaw  <ibuclaw@gdcproject.org>
539*81418a27Smrg
540*81418a27Smrg	* imports.cc (ImportVisitor::visit(Import)): New function.
541*81418a27Smrg
542*81418a27Smrg2017-05-06  Iain Buclaw  <ibuclaw@gdcproject.org>
543*81418a27Smrg
544*81418a27Smrg	* d-objfile.cc (DeclVisitor::visit(Module)): Set input_location before
545*81418a27Smrg	walking module members.
546*81418a27Smrg	(get_linemap): Return input_location if no filename set.
547*81418a27Smrg	(set_input_location): Remove function.  Update all callers to set
548*81418a27Smrg	input_location directly.
549*81418a27Smrg	(set_decl_location): Remove function.  Update all callers to pass
550*81418a27Smrg	get_linemap to build_decl, or use input_location.
551*81418a27Smrg	* types.cc (insert_aggregate_field): Update signature.
552*81418a27Smrg
553*81418a27Smrg2017-04-30  Iain Buclaw  <ibuclaw@gdcproject.org>
554*81418a27Smrg
555*81418a27Smrg	* d-objfile.cc (start_function): Update signature.
556*81418a27Smrg	(finish_function): Update signature.
557*81418a27Smrg	(DeclVisitor::visit(FuncDeclaration)): Move function construction to
558*81418a27Smrg	start_function.  Move function finalization to finish_function.
559*81418a27Smrg	(set_function_end_locus): Remove function.
560*81418a27Smrg	(d_finish_function): Remove function.
561*81418a27Smrg	(build_simple_function_decl): Don't set frontend body.
562*81418a27Smrg	(build_simple_function): Update signature.  Use start/finish function
563*81418a27Smrg	to compile the body.
564*81418a27Smrg	(emit_dso_registry_cdtor): Likewise.
565*81418a27Smrg	* expr.cc (ExprVisitor::visit(WrappedExp)): Remove function.
566*81418a27Smrg
567*81418a27Smrg2017-04-29  Iain Buclaw  <ibuclaw@gdcproject.org>
568*81418a27Smrg
569*81418a27Smrg	* d-diagnostic.cc (verror): Use xvasprintf.
570*81418a27Smrg	(verrorSupplemental): Likewise.
571*81418a27Smrg	(vwarning): Likewise.
572*81418a27Smrg	(vwarningSupplemental): Likewise.
573*81418a27Smrg	(vdeprecation): Likewise.
574*81418a27Smrg	(vdeprecationSupplemental): Likewise.
575*81418a27Smrg
576*81418a27Smrg2017-04-24  Iain Buclaw  <ibuclaw@gdcproject.org>
577*81418a27Smrg
578*81418a27Smrg	* d-tree.h (d_tree_index): Add DTI_VTABLE_ENTRY_TYPE,
579*81418a27Smrg	DTI_VTBL_INTERFACE_TYPE, DTI_ARRAY_TYPE, and DTI_NULL_ARRAY.
580*81418a27Smrg	(vtable_entry_type): New macro.
581*81418a27Smrg	(vtbl_interface_type_node): New macro.
582*81418a27Smrg	(array_type_node): New macro.
583*81418a27Smrg	(null_array_node): New macro.
584*81418a27Smrg	* d-builtins.cc (d_build_d_type_nodes): Initialize new trees.
585*81418a27Smrg	* d-codegen.cc (build_struct_literal): Allow NULL index when
586*81418a27Smrg	looking for next field to initialize.
587*81418a27Smrg	(copy_aggregate_type): New function.
588*81418a27Smrg	* d-target.cc (Target::loadModule): Look for object module,
589*81418a27Smrg	call create_tinfo_types.
590*81418a27Smrg	* decl.cc (TypeInfoDeclVisitor): Move to typeinfo.cc.
591*81418a27Smrg	(get_typeinfo_decl): Likewise.
592*81418a27Smrg	(copy_struct): Remove function.  Updated callers to use
593*81418a27Smrg	copy_aggregate_type.
594*81418a27Smrg	(layout_classinfo_interfaces): Move to typeinfo.cc.
595*81418a27Smrg	(get_classinfo_decl): Likewise.
596*81418a27Smrg	(get_cpp_typeinfo_decl): Likewise.
597*81418a27Smrg	* typeinfo.cc (tinfo_kind): New enum.
598*81418a27Smrg	(tinfo_types): New static variable.
599*81418a27Smrg	(get_typeinfo_kind): New function.
600*81418a27Smrg	(make_internal_typeinfo): New function.
601*81418a27Smrg	(make_frontend_typeinfo): New function.
602*81418a27Smrg	(create_tinfo_types): New function.
603*81418a27Smrg	(TypeInfoVisitor::set_field): Remove function.
604*81418a27Smrg	Update all callers to use layout_field.
605*81418a27Smrg	(TypeInfoVisitor::layout_vtable): Remove function.
606*81418a27Smrg	Update all callers to use layout_base.
607*81418a27Smrg	(TypeInfoVisitor::layout_field): New function.
608*81418a27Smrg	(TypeInfoVisitor::layout_base): New function.
609*81418a27Smrg	(builtin_typeinfo_p): New function.
610*81418a27Smrg	(genTypeInfo): Rename to create_typeinfo.
611*81418a27Smrg	(isSpeculativeType): Rename to speculative_type_p.
612*81418a27Smrg
613*81418a27Smrg2017-04-23  Iain Buclaw  <ibuclaw@gdcproject.org>
614*81418a27Smrg
615*81418a27Smrg	* d-tree.h (d_function_chain): Declare macro.  Update all uses of
616*81418a27Smrg	`cfun->language' to use it.
617*81418a27Smrg
618*81418a27Smrg2017-04-22  Iain Buclaw  <ibuclaw@gdcproject.org>
619*81418a27Smrg
620*81418a27Smrg	* d-decls.cc: Rename to decl.cc.
621*81418a27Smrg	(get_symbol_decl): Handle typeinfo declarations.
622*81418a27Smrg	(declare_extern_var): New function.
623*81418a27Smrg	(declare_local_var): New function.
624*81418a27Smrg	(get_moduleinfo_decl): Call declare_extern_var.
625*81418a27Smrg	(get_classinfo_decl): Likewise.
626*81418a27Smrg	(get_vtable_decl): Likewise.
627*81418a27Smrg	(get_cpp_typeinfo_decl): Likewise.
628*81418a27Smrg	(aggregate_initializer_decl): Likewise.
629*81418a27Smrg	(enum_initializer_decl): Likewise.
630*81418a27Smrg	* Make-lang.in (D_OBJS): Update.
631*81418a27Smrg	* d-codegen.cc (build_local_var): Remove function.
632*81418a27Smrg	Updated all callers to use declare_local_var.
633*81418a27Smrg	(build_local_temp): Move to decl.cc.
634*81418a27Smrg	(get_decl_tree): Likewise.
635*81418a27Smrg	(expand_decl): Remove function.
636*81418a27Smrg	(build_closure): Inline expand_decl here.
637*81418a27Smrg
638*81418a27Smrg2017-04-20  Iain Buclaw  <ibuclaw@gdcproject.org>
639*81418a27Smrg
640*81418a27Smrg	* d-codegen.cc (pop_binding_label): Move to toir.cc.
641*81418a27Smrg	(pop_label): Likewise.
642*81418a27Smrg	(push_binding_level): Likewise
643*81418a27Smrg	(pop_binding_level): Likewise.
644*81418a27Smrg	(push_stmt_list): Likewise.
645*81418a27Smrg	(add_stmt): Likewise.
646*81418a27Smrg	(check_goto): Move to toir.cc, make it a member of IRVisitor.
647*81418a27Smrg	(check_previous_goto): Likewise.
648*81418a27Smrg	(lookup_label): Likewise.
649*81418a27Smrg	(lookup_bc_label): Likewise.
650*81418a27Smrg	(define_label): Likewise.
651*81418a27Smrg	* toir.cc (build_ir): Rename to build_function_body.
652*81418a27Smrg
653*81418a27Smrg2017-04-19  Iain Buclaw  <ibuclaw@gdcproject.org>
654*81418a27Smrg
655*81418a27Smrg	* d-target.cc: Update includes.
656*81418a27Smrg
657*81418a27Smrg2017-04-19  Iain Buclaw  <ibuclaw@gdcproject.org>
658*81418a27Smrg
659*81418a27Smrg	* lang-specs.h: Remove capitalized D source suffixes.
660*81418a27Smrg
661*81418a27Smrg2017-04-19  Iain Buclaw  <ibuclaw@gdcproject.org>
662*81418a27Smrg
663*81418a27Smrg	* lang-specs.h: Add rule for forwarding -iprefix and -imultilib to the
664*81418a27Smrg	compiler proper.
665*81418a27Smrg
666*81418a27Smrg2017-04-19  Iain Buclaw  <ibuclaw@gdcproject.org>
667*81418a27Smrg
668*81418a27Smrg	* lang-specs.h: Remove cc1d spec.
669*81418a27Smrg
670*81418a27Smrg2017-04-19  Iain Buclaw  <ibuclaw@gdcproject.org>
671*81418a27Smrg
672*81418a27Smrg	* lang-specs.h: Remove +e handling.
673*81418a27Smrg
674*81418a27Smrg2017-04-18  Iain Buclaw  <ibuclaw@gdcproject.org>
675*81418a27Smrg
676*81418a27Smrg	* d-diagnostic.cc: New file.
677*81418a27Smrg	* d-frontend.cc: New file.
678*81418a27Smrg	* d-glue.cc: Remove file.
679*81418a27Smrg	* d-port.cc: Remove file.
680*81418a27Smrg	* d-longdouble.h (template<typename T> operator): Remove operators.
681*81418a27Smrg
682*81418a27Smrg2017-04-17  Iain Buclaw  <ibuclaw@gdcproject.org>
683*81418a27Smrg
684*81418a27Smrg	* d-incpath.cc (add_env_var_paths): Rename to add_environment_paths.
685*81418a27Smrg	(make_absolute): Remove function.
686*81418a27Smrg	(add_import_path): Rename to add_globalpaths.
687*81418a27Smrg	(add_fileimp_path): Rename to add_filepaths.
688*81418a27Smrg
689*81418a27Smrg2017-04-17  Iain Buclaw  <ibuclaw@gdcproject.org>
690*81418a27Smrg
691*81418a27Smrg	* d-codegen.h (d_types_same): Renamed to same_type_p.
692*81418a27Smrg	Moved to types.cc.
693*81418a27Smrg	(build_object_type): Renamed to get_object_type.  Moved to types.cc.
694*81418a27Smrg	* d-codegen.cc (type_va_array): Renamed to valist_array_p.
695*81418a27Smrg	Moved to types.cc.
696*81418a27Smrg	(d_array_type): Renamed to make_array_type.  Moved to types.cc.
697*81418a27Smrg	(insert_type_modifiers): Moved to types.cc.
698*81418a27Smrg	(build_two_field_type): Likewise.
699*81418a27Smrg	(empty_aggregate_p): Likewise.
700*81418a27Smrg	(fixup_anonymous_offset): Likewise.
701*81418a27Smrg	(layout_aggregate_members): Likewise.
702*81418a27Smrg	(layout_aggregate_type): Likewise.
703*81418a27Smrg	(insert_aggregate_field): Likewise.
704*81418a27Smrg	(finish_aggregate_type): Likewise.
705*81418a27Smrg
706*81418a27Smrg2017-04-17  Iain Buclaw  <ibuclaw@gdcproject.org>
707*81418a27Smrg
708*81418a27Smrg	* Make-lang.in (D_FRONTEND_OBJS): Update to match new source names.
709*81418a27Smrg
710*81418a27Smrg2017-04-11  Iain Buclaw  <ibuclaw@gdcproject.org>
711*81418a27Smrg
712*81418a27Smrg	* gdc.texi: Rewrite documentation for manpages.
713*81418a27Smrg
714*81418a27Smrg2017-04-08  Iain Buclaw  <ibuclaw@gdcproject.org>
715*81418a27Smrg
716*81418a27Smrg	* d-objfile.cc (DeclVisitor::visit(FuncDeclaration)): Remove logic
717*81418a27Smrg	that parent needs to be compiled before nested.
718*81418a27Smrg
719*81418a27Smrg2017-04-08  Iain Buclaw  <ibuclaw@gdcproject.org>
720*81418a27Smrg
721*81418a27Smrg	* d-lang.cc (d_post_options): Don't overwrite in_fnames.
722*81418a27Smrg	(d_parse_file): Don't error about not being able to use stdin.
723*81418a27Smrg	Implement support for reading source code from stdin.
724*81418a27Smrg
725*81418a27Smrg2017-04-08  Iain Buclaw  <ibuclaw@gdcproject.org>
726*81418a27Smrg
727*81418a27Smrg	* d-lang.cc (d_parse_file): Remove invalid file name checks.
728*81418a27Smrg
729*81418a27Smrg2017-04-08  Iain Buclaw  <ibuclaw@gdcproject.org>
730*81418a27Smrg
731*81418a27Smrg	* d-glue.cc (Global::_init): Set global.stdmsg to stderr.
732*81418a27Smrg
733*81418a27Smrg2017-04-07  Iain Buclaw  <ibuclaw@gdcproject.org>
734*81418a27Smrg
735*81418a27Smrg	* d-codgen.h (current_module_decl): Moved to d-objfile.cc.
736*81418a27Smrg	* d-objfile.h (current_module_info): Likewise.
737*81418a27Smrg	(ModuleInfoFlags): Likewise.
738*81418a27Smrg	(ModuleInfo): Likewise.
739*81418a27Smrg	* d-objfile.cc (start_function): Move updating ModuleInfo structure to
740*81418a27Smrg	...
741*81418a27Smrg	(DeclVisitor::visit(FuncDeclaration)): ... here.  Set it after
742*81418a27Smrg	finishing off the function.
743*81418a27Smrg
744*81418a27Smrg2017-04-07  Iain Buclaw  <ibuclaw@gdcproject.org>
745*81418a27Smrg
746*81418a27Smrg	* d-objfile.cc (DeclVisitor::visit(FuncDeclaration)): Use
747*81418a27Smrg	push_function_decl for storing current state when switching to nested
748*81418a27Smrg	functions.  Remove handling of deferred functions.
749*81418a27Smrg	* d-tree.h (language_function): Remove deferred_fns.
750*81418a27Smrg	* expr.cc (ExprVisitor::visit(DelegateExp)): Don't defer compiling
751*81418a27Smrg	the delegate lambda.
752*81418a27Smrg	(ExprVisitor::visit(FuncExp)): Likewise for function literals.
753*81418a27Smrg	(ExprVisitor::visit(VarExp)): Likewise.
754*81418a27Smrg
755*81418a27Smrg2017-04-07  Iain Buclaw  <ibuclaw@gdcproject.org>
756*81418a27Smrg
757*81418a27Smrg	* d-codegen.cc (start_function): Move to d-objfile.cc, make it static.
758*81418a27Smrg	(end_function): Likewise.  Renamed to finish_function.
759*81418a27Smrg
760*81418a27Smrg2017-04-05  Iain Buclaw  <ibuclaw@gdcproject.org>
761*81418a27Smrg
762*81418a27Smrg	* d-codegen.cc (d_convert): Move to d-convert.cc.
763*81418a27Smrg	(convert_expr): Likewise.
764*81418a27Smrg	(convert_for_assignment): Likewise.
765*81418a27Smrg	(convert_for_argument): Likewise.
766*81418a27Smrg	(convert_for_condition): Likewise.
767*81418a27Smrg	(d_array_convert): Likewise.
768*81418a27Smrg
769*81418a27Smrg2017-04-04  Iain Buclaw  <ibuclaw@gdcproject.org>
770*81418a27Smrg
771*81418a27Smrg	* d-builtins.c (d_global_trees): Move to d-lang.cc.
772*81418a27Smrg	(build_dtype): Rename to build_frontend_type.
773*81418a27Smrg	Updated all callers.
774*81418a27Smrg	(build_expression): Rename to d_eval_constant_expression.
775*81418a27Smrg	Updated all callers.
776*81418a27Smrg	(build_alias_declaration): New function.
777*81418a27Smrg	(d_build_c_type_nodes): New function.
778*81418a27Smrg	(d_build_d_type_nodes): New function.
779*81418a27Smrg	(d_define_builtins): New function.
780*81418a27Smrg
781*81418a27Smrg2017-04-04  Iain Buclaw  <ibuclaw@gdcproject.org>
782*81418a27Smrg
783*81418a27Smrg	* d-attribs.c (insert_type_attribute): Use
784*81418a27Smrg	build_type_attribute_variant.
785*81418a27Smrg	(insert_decl_attribute): Use build_decl_attribute_variant.
786*81418a27Smrg	(uda_attribute_p): Remove string table, use Identifier comparison for
787*81418a27Smrg	looking up table attributes.
788*81418a27Smrg	(build_attributes): Make unknown attribute a warning, use quoted
789*81418a27Smrg	strings in diagnostic messages.
790*81418a27Smrg
791*81418a27Smrg2017-04-01  Iain Buclaw  <ibuclaw@gdcproject.org>
792*81418a27Smrg
793*81418a27Smrg	* d-lang.cc (d_handle_option): Handle -fdump-d-original.
794*81418a27Smrg	(d_parse_file): Likewise.
795*81418a27Smrg	* d-target.cc (Target::maxStaticDataSize): New variable.
796*81418a27Smrg	(Target::_init): Initialize maxStaticDataSize.
797*81418a27Smrg	* lang.opt (fdump-d-original): Declare.
798*81418a27Smrg
799*81418a27Smrg2017-04-01  Iain Buclaw  <ibuclaw@gdcproject.org>
800*81418a27Smrg
801*81418a27Smrg	* Make-lang.in (D_GLUE_OBJS): Remove d-todt.cc.
802*81418a27Smrg	* d-objfile.cc (build_moduleinfo_symbol): Build initializer for
803*81418a27Smrg	ModuleInfo directly from inferred type fields.
804*81418a27Smrg	(d_finish_symbol): Remove handling of DECL_LANG_INITIAL.
805*81418a27Smrg	* d-todt.cc: Remove file.
806*81418a27Smrg	* d-tree.h (lang_decl): Remove initial field.
807*81418a27Smrg	(DECL_LANG_INITIAL): Remove macro.
808*81418a27Smrg
809*81418a27Smrg2017-03-31  Iain Buclaw  <ibuclaw@gdcproject.org>
810*81418a27Smrg
811*81418a27Smrg	* d-objfile.cc (DeclVisitor::visit(VarDeclaration)): Use build_expr to
812*81418a27Smrg	generate the static initializer.
813*81418a27Smrg	* d-todt.cc (Initializer::toDt): Remove function and all overrides.
814*81418a27Smrg	* expr.cc (ExprVisitor::visit(VarExp)): Use build_expr to get the
815*81418a27Smrg	constant initializer of a constant variable.
816*81418a27Smrg
817*81418a27Smrg2017-03-29  Iain Buclaw  <ibuclaw@gdcproject.org>
818*81418a27Smrg
819*81418a27Smrg	* d-decls.cc (aggregate_initializer): Renamed to
820*81418a27Smrg	aggregate_initializer_decl.  Updated all callers.
821*81418a27Smrg	(enum_initializer): Renamed to enum_initializer_decl.
822*81418a27Smrg	Updated all callers.
823*81418a27Smrg	(layout_class_initializer): New function.
824*81418a27Smrg	(layout_struct_initializer): New function.
825*81418a27Smrg	* d-todt.cc (ClassDeclaration::toDt): Remove function.
826*81418a27Smrg	(StructDeclaration::toDt): Remove function.
827*81418a27Smrg
828*81418a27Smrg2017-03-27  Iain Buclaw  <ibuclaw@gdcproject.org>
829*81418a27Smrg
830*81418a27Smrg	* d-objfile.cc (DeclVisitor::visit(Module)): New function.
831*81418a27Smrg	(Module::genobjfile): Remove function.
832*81418a27Smrg	Updated all callers to use build_decl_tree.
833*81418a27Smrg	(layout_moduleinfo): New function.
834*81418a27Smrg	(Module::genmoduleinfo): Remove function.
835*81418a27Smrg	Update all callers to use layout_moduleinfo.
836*81418a27Smrg
837*81418a27Smrg2017-03-26  Iain Buclaw  <ibuclaw@gdcproject.org>
838*81418a27Smrg
839*81418a27Smrg	* d-objfile.cc (base_vtable_offset): New function.
840*81418a27Smrg	(ClassDeclaration::baseVtblOffset): Remove function.
841*81418a27Smrg	Updated all callers to use base_vtable_offset.
842*81418a27Smrg
843*81418a27Smrg2017-03-26  Iain Buclaw  <ibuclaw@gdcproject.org>
844*81418a27Smrg
845*81418a27Smrg	* d-objfile.cc (DeclVisitor): New visitor interface to supercede the
846*81418a27Smrg	toObjFile methods.
847*81418a27Smrg	(build_decl_tree): New function.
848*81418a27Smrg	(Dsymbol::toObjFile): Remove function and overrides.
849*81418a27Smrg	Updated all callers to use build_decl_tree.
850*81418a27Smrg
851*81418a27Smrg2017-03-20  Iain Buclaw  <ibuclaw@gdcproject.org>
852*81418a27Smrg
853*81418a27Smrg	* d-decls.cc (get_cpp_typeinfo_decl): New function.
854*81418a27Smrg	* d-lang.cc (d_build_eh_type_type): Return classinfo for
855*81418a27Smrg	__cpp_type_info_ptr when generating catch for C++ classes.
856*81418a27Smrg	* runtime.def (CXA_BEGIN_CATCH): Define.
857*81418a27Smrg	(CXA_END_CATCH): Define.
858*81418a27Smrg	* toir.cc (IRVisitor::visit(TryCatchStatement)): Support catching
859*81418a27Smrg	classes thrown from C++.
860*81418a27Smrg	* typeinfo.cc (layout_cpp_typeinfo): New function.
861*81418a27Smrg
862*81418a27Smrg2017-03-20  Iain Buclaw  <ibuclaw@gdcproject.org>
863*81418a27Smrg
864*81418a27Smrg	* d-builtins.cc (d_build_builtins_module): Always mark gcc builtins as
865*81418a27Smrg	nothrow functions.
866*81418a27Smrg
867*81418a27Smrg2017-03-11  Iain Buclaw  <ibuclaw@gdcproject.org>
868*81418a27Smrg
869*81418a27Smrg	* d-longdouble.cc (CTFloat::zero): New variable.
870*81418a27Smrg	(CTFloat::one): New variable.
871*81418a27Smrg	(CTFloat::minusone): New variable.
872*81418a27Smrg	(CTFloat::half): New variable.
873*81418a27Smrg	(longdouble::set): Remove float and double overloads.
874*81418a27Smrg	(longdouble::operator float): Remove function.
875*81418a27Smrg	(longdouble::operator double): Remove function.
876*81418a27Smrg	* d-target.cc (Target::_init): Initialize floating point constants.
877*81418a27Smrg
878*81418a27Smrg2017-03-11  Iain Buclaw  <ibuclaw@gdcproject.org>
879*81418a27Smrg
880*81418a27Smrg	* d-lang.cc (d_init): Replace calls to init with _init.
881*81418a27Smrg	* d-glue.cc (Global::init): Renamed to Global::_init.
882*81418a27Smrg	* d-target.cc (Target::init): Renamed to Target::_init.
883*81418a27Smrg
884*81418a27Smrg2017-03-11  Iain Buclaw  <ibuclaw@gdcproject.org>
885*81418a27Smrg
886*81418a27Smrg	* d-longdouble.cc (longdouble::format): Remove function.
887*81418a27Smrg	(longdouble::formatHex): Remove function.
888*81418a27Smrg	(longdouble::dump): Remove function.
889*81418a27Smrg	(CTFloat::sprint): Inline implementation of format and formatHex here.
890*81418a27Smrg
891*81418a27Smrg2017-03-11  Iain Buclaw  <ibuclaw@gdcproject.org>
892*81418a27Smrg
893*81418a27Smrg	* d-lang.cc (d_init): Remove calls to Port::init and longdouble::init.
894*81418a27Smrg	* d-longdouble.cc (real_limits): Remove variable.
895*81418a27Smrg	(longdouble::init): Remove function.
896*81418a27Smrg	(CTFloat::parse): Update to use Target::RealProperties.
897*81418a27Smrg	* d-port.cc (Port::ldbl_nan): Remove variable.
898*81418a27Smrg	(Port::snan): Remove variable.
899*81418a27Smrg	(Port::ldbl_infinity): Remove variable.
900*81418a27Smrg	(Port::ldbl_max): Remove variable.
901*81418a27Smrg	(Port::init): Remove function.
902*81418a27Smrg	(Port::isFloat32LiteralOutOfRange): Update to use
903*81418a27Smrg	Target::RealProperties.
904*81418a27Smrg	(Port::isFloat64LiteralOutOfRange): Likewise.
905*81418a27Smrg	* d-target.cc (Target::FPTypeProperties<T>::max): Define.
906*81418a27Smrg	(Target::FPTypeProperties<T>::min_normal): Define.
907*81418a27Smrg	(Target::FPTypeProperties<T>::nan): Define.
908*81418a27Smrg	(Target::FPTypeProperties<T>::snan): Define.
909*81418a27Smrg	(Target::FPTypeProperties<T>::infinity): Define.
910*81418a27Smrg	(Target::FPTypeProperties<T>::epsilon): Define.
911*81418a27Smrg	(Target::FPTypeProperties<T>::dig): Define.
912*81418a27Smrg	(Target::FPTypeProperties<T>::mant_dig): Define.
913*81418a27Smrg	(Target::FPTypeProperties<T>::max_exp): Define.
914*81418a27Smrg	(Target::FPTypeProperties<T>::min_exp): Define.
915*81418a27Smrg	(Target::FPTypeProperties<T>::max_10_exp): Define.
916*81418a27Smrg	(Target::FPTypeProperties<T>::min_10_exp): Define.
917*81418a27Smrg	(define_float_constants): New function.
918*81418a27Smrg	(Target::init): Initialize compile-time floating point properties.
919*81418a27Smrg	* longdouble.h (Mode): Remove type declaration.
920*81418a27Smrg	(real_properties): Remove type declaration.
921*81418a27Smrg
922*81418a27Smrg2017-03-10  Iain Buclaw  <ibuclaw@gdcproject.org>
923*81418a27Smrg
924*81418a27Smrg	* d-longdouble.cc (CTFloat::fabs): New function.
925*81418a27Smrg	(CTFloat::isIdentical): New function.
926*81418a27Smrg	(CTFloat::isNaN): New function.
927*81418a27Smrg	(CTFloat::isSNaN): New function.
928*81418a27Smrg	(CTFloat::isInfinity): New function.
929*81418a27Smrg	(CTFloat::parse): New function.
930*81418a27Smrg	(CTFloat::sprint): New function.
931*81418a27Smrg	* d-port.cc (Port::isNan): Remove function.
932*81418a27Smrg	(Port::isSignallingNan): Remove function.
933*81418a27Smrg	(Port::isInfinity): Remove function.
934*81418a27Smrg	(Port::fequal): Remove function.
935*81418a27Smrg	(Port::strtof): Remove function.
936*81418a27Smrg	(Port::strtod): Remove function.
937*81418a27Smrg	(Port::strtold): Remove function.
938*81418a27Smrg	(Port::isFloat32LiteralOutOfRange): New function.
939*81418a27Smrg	(Port::isFloat64LiteralOutOfRange): New function.
940*81418a27Smrg	* longdouble.h (ld_sprint): Remove function.
941*81418a27Smrg
942*81418a27Smrg2017-03-06  Iain Buclaw  <ibuclaw@gdcproject.org>
943*81418a27Smrg
944*81418a27Smrg	* d-glue.cc (verror): Update to handle -Wspeculative.
945*81418a27Smrg	(verrorSupplemental): Likewise.
946*81418a27Smrg	* d-lang.cc (d_init_options): Initialize module alias array.
947*81418a27Smrg	(d_init_options): Handle -fmodule-filepath= and -Wspeculative.
948*81418a27Smrg	* d-port.cc (Port::stricmp): Remove function.
949*81418a27Smrg	(Port::writelongLE): New function.
950*81418a27Smrg	(Port::writelongBE): New function.
951*81418a27Smrg	* lang.opt (Wspeculative): Declare.
952*81418a27Smrg	(fmodule-filepath=): Declare.
953*81418a27Smrg
954*81418a27Smrg2017-03-06  Iain Buclaw  <ibuclaw@gdcproject.org>
955*81418a27Smrg
956*81418a27Smrg	* d-lang.cc (d_handle_option): Handle -ftransition=dip1000
957*81418a27Smrg	* lang.opt (ftransition=dip1000): Declare.
958*81418a27Smrg	(ftransition=safe): Make alias for -ftransition=dip1000
959*81418a27Smrg
960*81418a27Smrg2017-03-04  Iain Buclaw  <ibuclaw@gdcproject.org>
961*81418a27Smrg
962*81418a27Smrg	* d-codegen.cc (get_decl_tree): Handle chaining over many levels of
963*81418a27Smrg	nesting functions to get to the right parent for the 'this' field.
964*81418a27Smrg
965*81418a27Smrg2017-03-04  Iain Buclaw  <ibuclaw@gdcproject.org>
966*81418a27Smrg
967*81418a27Smrg	* d-decls.cc (get_symbol_decl): Move generation of DECL_ARGUMENTS for
968*81418a27Smrg	empty body declarations to ...
969*81418a27Smrg	(make_thunk): ... here.  Also set-up DECL_RESULT.
970*81418a27Smrg	(finish_thunk): Mark DECL_UNINLINEABLE on external functions.
971*81418a27Smrg
972*81418a27Smrg2017-03-04  Iain Buclaw  <ibuclaw@gdcproject.org>
973*81418a27Smrg
974*81418a27Smrg	* d-decls.cc (make_thunk): Don't build thunks for functions that
975*81418a27Smrg	failed to compile.
976*81418a27Smrg
977*81418a27Smrg2017-03-04  Iain Buclaw  <ibuclaw@gdcproject.org>
978*81418a27Smrg
979*81418a27Smrg	* d-objfile.cc (emit_dso_registry_hooks): Set DECL_PRESERVE_P.
980*81418a27Smrg
981*81418a27Smrg2017-02-26  Iain Buclaw  <ibuclaw@gdcproject.org>
982*81418a27Smrg
983*81418a27Smrg	* d-codegen.cc (build_frame_type): Update condition for scope
984*81418a27Smrg	destruction error.
985*81418a27Smrg	* d-port.cc (Port::valcpy): New function.
986*81418a27Smrg	* expr.cc (ExprVisitor::visit(CallExp)): Generate cast of 'this'
987*81418a27Smrg	object to the right handle type before indexing.
988*81418a27Smrg
989*81418a27Smrg2017-02-24  Iain Buclaw  <ibuclaw@gdcproject.org>
990*81418a27Smrg
991*81418a27Smrg	* d-glue.cc (warningSupplemental): New function.
992*81418a27Smrg	(vwarningSupplemental): New function.
993*81418a27Smrg	(deprecationSupplemental): New function.
994*81418a27Smrg	(vdeprecationSupplemental): New function.
995*81418a27Smrg
996*81418a27Smrg2017-02-23  Iain Buclaw  <ibuclaw@gdcproject.org>
997*81418a27Smrg
998*81418a27Smrg	* imports.cc (ImportVisitor::visit(OverDeclaration)): New function.
999*81418a27Smrg	(ImportVisitor::visit(FuncAliasDeclaration)): New function.
1000*81418a27Smrg
1001*81418a27Smrg2017-02-21  Iain Buclaw  <ibuclaw@gdcproject.org>
1002*81418a27Smrg
1003*81418a27Smrg	* d-lang.cc (d_handle_option): Handle -X and -Xf options.
1004*81418a27Smrg	(d_parse_file): Update.
1005*81418a27Smrg	* lang-specs.h: Add rules for -X style options.
1006*81418a27Smrg	* lang.opt (X): Declare.
1007*81418a27Smrg	(Xf): Declare.
1008*81418a27Smrg	(fXf=): Make alias for -Xf.
1009*81418a27Smrg
1010*81418a27Smrg2017-02-21  Iain Buclaw  <ibuclaw@gdcproject.org>
1011*81418a27Smrg
1012*81418a27Smrg	* lang.opt (fd-vgc): Comment out help test.
1013*81418a27Smrg	(fd-verbose): Likewise.
1014*81418a27Smrg	(fd-vtls): Likewise.
1015*81418a27Smrg	(femit-modules): Likewise.
1016*81418a27Smrg
1017*81418a27Smrg2017-02-20  Iain Buclaw  <ibuclaw@gdcproject.org>
1018*81418a27Smrg
1019*81418a27Smrg	* d-target.cc (Target::fieldalign): Adjust.
1020*81418a27Smrg
1021*81418a27Smrg2017-02-19  Iain Buclaw  <ibuclaw@gdcproject.org>
1022*81418a27Smrg
1023*81418a27Smrg	* d-lang.cc (d_option_data): Add fields to support other -M options.
1024*81418a27Smrg	(d_init_options): Initialize them.
1025*81418a27Smrg	(deps_add_target): New function.
1026*81418a27Smrg	(deps_write): Support multiple targets and phony rules.
1027*81418a27Smrg	(d_handle_option): Handle gcc -M style options.
1028*81418a27Smrg	(d_parse_file): Likewise.
1029*81418a27Smrg	* lang-specs.h: Add rules for -M style options.
1030*81418a27Smrg	* lang.opt: Declare -M style options.
1031*81418a27Smrg
1032*81418a27Smrg2017-02-19  Iain Buclaw  <ibuclaw@gdcproject.org>
1033*81418a27Smrg
1034*81418a27Smrg	* d-lang.cc (is_system_module): Remove.
1035*81418a27Smrg	(deps_write): Always ignore entrypoint module.
1036*81418a27Smrg
1037*81418a27Smrg2017-02-19  Iain Buclaw  <ibuclaw@gdcproject.org>
1038*81418a27Smrg
1039*81418a27Smrg	* d-lang.cc (write_one_dep): Remove.
1040*81418a27Smrg	(deps_write): Update signature.
1041*81418a27Smrg
1042*81418a27Smrg2017-02-19  Iain Buclaw  <ibuclaw@gdcproject.org>
1043*81418a27Smrg
1044*81418a27Smrg	* d-lang.cc (iprefix_dir): Remove.
1045*81418a27Smrg	(imultilib_dir): Remove.
1046*81418a27Smrg	(std_inc): Remove.
1047*81418a27Smrg	(d_option_data): New struct.
1048*81418a27Smrg	(d_option): Declare.
1049*81418a27Smrg	(d_init_options): Initialize d_option.
1050*81418a27Smrg	(d_init): Update to use d_option.
1051*81418a27Smrg	(d_handle_option): Likewise.
1052*81418a27Smrg	(d_parse_file): Likewise.
1053*81418a27Smrg	(deps_write): Update signature.
1054*81418a27Smrg
1055*81418a27Smrg2017-02-19  Iain Buclaw  <ibuclaw@gdcproject.org>
1056*81418a27Smrg
1057*81418a27Smrg	* d-lang.cc (d_handle_option): Call D_handle_option_auto.
1058*81418a27Smrg	* lang.opt (Wunknown-pragmas): Turn on warning with -Wall.
1059*81418a27Smrg
1060*81418a27Smrg2017-02-18  Iain Buclaw  <ibuclaw@gdcproject.org>
1061*81418a27Smrg
1062*81418a27Smrg	* d-lang.cc (d_handle_option): Replace -fin with -fpreconditions;
1063*81418a27Smrg	-fout with -fpostconditions.  Handle -fswitch-errors.
1064*81418a27Smrg	(d_post_options): Move setting of release code flags here.
1065*81418a27Smrg	* lang.opt (fassert): Declare flag_assert.
1066*81418a27Smrg	(fin): Make alias for -fpreconditions.
1067*81418a27Smrg	(finvariants): Declare flag_invariants.
1068*81418a27Smrg	(fout): Make alias for -fpostconditions.
1069*81418a27Smrg	(fpostconditions): Declare.
1070*81418a27Smrg	(fpreconditions): Declare.
1071*81418a27Smrg	(fswitch-errors): Declare.
1072*81418a27Smrg
1073*81418a27Smrg2017-02-18  Iain Buclaw  <ibuclaw@gdcproject.org>
1074*81418a27Smrg
1075*81418a27Smrg	* d-objfile.cc (PragmaDeclaration::toObjFile): Warn about unknown
1076*81418a27Smrg	pragmas only if -Wunknown-pragmas.
1077*81418a27Smrg
1078*81418a27Smrg2017-02-18  Iain Buclaw  <ibuclaw@gdcproject.org>
1079*81418a27Smrg
1080*81418a27Smrg	* d-glue.cc (Global::init): Initialize errorLimit to flag_max_errors.
1081*81418a27Smrg	(verror): Don't halt program after invocation limit.
1082*81418a27Smrg	* d-lang.cc (d_handle_option): Remove handling -fmax-error-messages.
1083*81418a27Smrg	* lang.opt (fmax-error-messages): Remove option.
1084*81418a27Smrg
1085*81418a27Smrg2017-02-18  Iain Buclaw  <ibuclaw@gdcproject.org>
1086*81418a27Smrg
1087*81418a27Smrg	* d-decls.cc (get_symbol_decl): Handle -Wtemplates.
1088*81418a27Smrg	* d-lang.cc (d_init_options): Remove setting flag_emit_templates.
1089*81418a27Smrg	(d_handle_option): Replace handling -femit-templates with
1090*81418a27Smrg	-fall-instantiations.
1091*81418a27Smrg	(d_pushdecl): Remove checking for flag_emit_templates.
1092*81418a27Smrg	* d-tree.h (D_DECL_IS_TEMPLATE): Remove macro.
1093*81418a27Smrg	* lang.opt (flag_emit_templates): Remove variable.
1094*81418a27Smrg	(fall-instantiations): Declare.
1095*81418a27Smrg	(femit-templates): Make alias for -fall-instantiations.
1096*81418a27Smrg	(Wtemplates): Declare.
1097*81418a27Smrg
1098*81418a27Smrg2017-02-18  Iain Buclaw  <ibuclaw@gdcproject.org>
1099*81418a27Smrg
1100*81418a27Smrg	* lang.opt (fassert): Update help text.
1101*81418a27Smrg	(fin): Likewise.
1102*81418a27Smrg	(finvariants): Likewise.
1103*81418a27Smrg	(fout): Likewise.
1104*81418a27Smrg
1105*81418a27Smrg2017-02-11  Iain Buclaw  <ibuclaw@gdcproject.org>
1106*81418a27Smrg
1107*81418a27Smrg	* d-objfile.cc (VarDeclaration::toObjFile): Error if a variable covers
1108*81418a27Smrg	more than half the address space.
1109*81418a27Smrg
1110*81418a27Smrg2017-02-04  Iain Buclaw  <ibuclaw@gdcproject.org>
1111*81418a27Smrg
1112*81418a27Smrg	* d-objfile.cc (Module::genmoduleinfo): Ignore symbol visibility when
1113*81418a27Smrg	looking up module DSO symbols.
1114*81418a27Smrg
1115*81418a27Smrg2017-01-29  Iain Buclaw  <ibuclaw@gdcproject.org>
1116*81418a27Smrg
1117*81418a27Smrg	* d-lang.cc (d_handle_option): Handle -ftransition=all.
1118*81418a27Smrg	* lang.opt (ftransition=all): Add compiler option.
1119*81418a27Smrg
1120*81418a27Smrg2017-01-29  Iain Buclaw  <ibuclaw@gdcproject.org>
1121*81418a27Smrg
1122*81418a27Smrg	* d-lang.cc (d_handle_option): Handle -ftransition=checkimports.
1123*81418a27Smrg	* lang.opt (ftransition=checkimports): Add compiler option.
1124*81418a27Smrg
1125*81418a27Smrg2017-01-28  Iain Buclaw  <ibuclaw@gdcproject.org>
1126*81418a27Smrg
1127*81418a27Smrg	* d-lang.cc (d_handle_option): Handle -ftransition=import.
1128*81418a27Smrg	* lang.opt (ftransition=import): Add compiler option.
1129*81418a27Smrg
1130*81418a27Smrg2017-01-25  Iain Buclaw  <ibuclaw@gdcproject.org>
1131*81418a27Smrg
1132*81418a27Smrg	* imports.cc (ImportVisitor::visit(EnumDeclaration)): New function.
1133*81418a27Smrg	(ImportVisitor::visit(AggregateDeclaration)): New function.
1134*81418a27Smrg	(ImportVisitor::visit(ClassDeclaration)): New function.
1135*81418a27Smrg	(ImportVisitor::make_import): New function.
1136*81418a27Smrg	(ImportVisitor::visit(AliasDeclaration)): Get decl for type alias.
1137*81418a27Smrg
1138*81418a27Smrg2017-01-22  Iain Buclaw  <ibuclaw@gdcproject.org>
1139*81418a27Smrg
1140*81418a27Smrg	* expr.cc (ExprVisitor::visit(EqualExp)): Don't use memcmp on arrays
1141*81418a27Smrg	of structs that define xopEquals.
1142*81418a27Smrg
1143*81418a27Smrg2017-01-15  Iain Buclaw  <ibuclaw@gdcproject.org>
1144*81418a27Smrg
1145*81418a27Smrg	* d-spec.cc (lang_specific_driver): Add missing break.
1146*81418a27Smrg
1147*81418a27Smrg2017-01-13  Iain Buclaw  <ibuclaw@gdcproject.org>
1148*81418a27Smrg
1149*81418a27Smrg	* d-codegen.cc (build_class_instance): Don't check for void
1150*81418a27Smrg	initialized fields.
1151*81418a27Smrg	* expr.cc (ExprVisitor::visit(StructLiteralExp)): Likewise.
1152*81418a27Smrg
1153*81418a27Smrg2017-01-11  Iain Buclaw  <ibuclaw@gdcproject.org>
1154*81418a27Smrg
1155*81418a27Smrg	* typeinfo.cc (layout_classinfo): Use placement new to initialize
1156*81418a27Smrg	typeinfo class declaration.
1157*81418a27Smrg
1158*81418a27Smrg2017-01-02  Iain Buclaw  <ibuclaw@gdcproject.org>
1159*81418a27Smrg
1160*81418a27Smrg	* d-codegen,cc (get_frame_for_symbol): Use fully qualified name in
1161*81418a27Smrg	error message.
1162*81418a27Smrg	(build_frame_type): Always add parameters to closure vars if the
1163*81418a27Smrg	function has a contract function.
1164*81418a27Smrg	(get_frameinfo): Likewise, always create a frame.
1165*81418a27Smrg	* expr.cc (ExprVisitor::needs_dtor): New function.
1166*81418a27Smrg	(ExprVisitor::lvalue_p): New function.
1167*81418a27Smrg	(ExprVisitor::visit(AssignExp)): Check for dtor in array assignments.
1168*81418a27Smrg	(ExprVisitor::visit(TypeidExp)): Cast result to expression type.
1169*81418a27Smrg
1170*81418a27Smrg
1171*81418a27SmrgCopyright (C) 2017 Free Software Foundation, Inc.
1172*81418a27Smrg
1173*81418a27SmrgCopying and distribution of this file, with or without modification,
1174*81418a27Smrgare permitted in any medium without royalty provided the copyright
1175*81418a27Smrgnotice and this notice are preserved.
1176