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