2017-12-23  Iain Buclaw  <ibuclaw@gdcproject.org>

	* intrinsics.def (INTRINSIC_MULUI): Declare.

2017-12-19  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codegen.cc (build_target_expr): Update signature.
	(force_target_expr): New function.
	(build_address): Use force_target_expr to store temporary.
	(d_build_call): Likewise.
	* d-lang.cc (d_gimplify_expr): Likewise.
	* d-tree.h (language_function): Update type for vars_in_scope from
	vec<VarDeclaration*> to vec<tree>.
	(force_target_expr): Declare.
	* decl.cc (DeclVisitor::visit(VarDeclaration)): Put vars with scope
	destructors into a TARGET_EXPR, setting its cleanup.
	(declare_local_var): Don't push vars with scope destructors into the
	function binding level.
	* expr.cc (ExprVisitor::visit(DeclarationExp)): Don't handle scope
	destructors.
	(ExprVisitor::visit(CallExp)): Handle calling constructors using
	temporary objects.
	(build_dtor_list): Remove function.
	(build_expr_dtor): Put result into a CLEANUP_POINT_EXPR if any new
	temporaries needing destruction were added to scope.
	(build_return_dtor): Likewise.
	* toir.cc (add_stmt): Set CLEANUP_POINT_EXPR type as void.

2017-12-19  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-attribs.c (attr_noreturn_exclusions): New array.
	(attr_returns_twice_exclusions, attr_const_pure_exclusions): Likewise.
	(attr_inline_exclusions, attr_noinline_exclusions): Likewise.
	(d_langhook_common_attribute_table): Swap affects_identity and handler
	fields.  Initialize new member of struct attribute_spec.
	(d_langhook_attribute_table): Likewise.
	(handle_weakref_attribute): Remove function.

2017-12-17  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codegen.cc (stabilize_expr): Handle assignment expressions.
	(get_frame_for_symbol): Adjust the 'this' field of frames of
	overridden interface functions.
	* d-diagnostic.cc (expand_format): Rewrite '%X' format as '%x'.
	* decl.cc (DeclVisitor::visit(ClassDeclaration)): Handle future
	attribute.
	* expr.cc (ExprVisitor::binop_assignment): Ensure RHS is evaluated
	before LHS.
	(ExprVisitor::visit(SliceExp)): Always save lower bounds if upper has
	any side effects.
	* typeinfo.cc (TypeInfoVisitor::TypeInfoClassDeclaration): Use
	ClassDeclaration::isAbstract.
	(TypeInfoVisitor::visit(TypeInfoTupleDeclaration)): Mark internal
	reference as public and hidden.

2017-12-10  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codegen.cc (build_alignment_field): Set DECL_PADDING_P and
	DECL_FIELD_CONTEXT on generated fields.
	(build_struct_literal): Use build_zero_cst to generate padding.
	* decl.cc (build_type_decl): Set public and decl assembler name.

2017-12-10  Iain Buclaw  <ibuclaw@gdcproject.org>

	* types.cc (TypeVisitor::visit(TypeClass)): Check for duplicate
	declarations before adding method.

2017-12-09  Iain Buclaw  <ibuclaw@gdcproject.org>

	* expr.cc (ExprVisitor::visit(AddrExp)): Build internal struct literal
	symbol before generating its initializer.

2017-12-09  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-lang.cc (d_parse_file): Set first_global_object_name.

2017-12-09  Iain Buclaw  <ibuclaw@gdcproject.org>

	* lang.opt (fmodule-filepath=): Rename to fmodule-file.
	* d-lang.cc (d_handle_option): Update case for OPT_fmodule_file_.

2017-12-09  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-tree.h (CALL_EXPR_ARGS_ORDERED): Define.
	* d-codegen.cc (d_build_call): Set CALL_EXPR_ARGS_ORDERED for
	functions with D linkage.
	* d-lang.cc (d_gimplify_expr): Handle CALL_EXPR_ARGS_ORDERED.

2017-12-09  Eugene Wissner  <belka@caraus.de>

	* toir.cc (IRVisitor::visit(SwitchStatement)): Set SWITCH_ALL_CASES_P on
	switch statements. Set SWITCH_BREAK_LABEL_P on the artificial label
	created for break statements from a switch.

2017-12-04  Eugene Wissner  <belka@caraus.de>

	* toir.cc (IRVisitor::visit(SwitchStatement)): Build SWITCH_EXPR using build2 instead
	of build3.

2017-11-14  Eugene Wissner  <belka@caraus.de>

	* decl.cc (finish_thunk): Drop frequency argument from
	symbol_table::create_edge.
	* d-lang.cc (d_post_options): Set default value of
	-Wreturn-type to false.

2017-11-11  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codegen.cc (build_float_cst): Remove float rounding check.
	* d-longdouble.cc (longdouble::to_int): Don't round floats before int
	conversion.
	* expr.cc (ExprVisitor::binary_op): Handle excess precision.
	(ExprVisitor::visit(NegExp)): Likwise.

2017-10-31  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codegen.cc (build_address): Store CST nodes into a TARGET_EXPR
	before taking its address.

2017-10-08  Iain Buclaw  <ibuclaw@gdcproject.org>

	* Make-lang.in (D_FRONTEND_OBJS): Remove newdelete.o.
	* d-incpath.cc (add_globalpaths): Handle NULL target path.

2017-10-01  Iain Buclaw  <ibuclaw@gdcproject.org>

	* typeinfo.cc (TypeInfoVisitor::visit(TypeInfoClassDeclaration)):
	Properly check base classes for pointers.

2017-09-28  Iain Buclaw  <ibuclaw@gdcproject.org>

	* expr.cc (ExprVisitor::visit(StringExp)): Add extra null terminator
	onto string type, not the literal.

2017-09-26  Iain Buclaw  <ibuclaw@gdcproject.org>

	* types.cc (make_array_type): Move checking of void static arrays
	here.

2017-09-24  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-attribs.c: Add include for attribs.h.
	* d-codegen.cc (copy_aggregate_type): Remove TYPE_METHODS.
	(lower_struct_comparison): Use opt_scalar_int_mode.
	* d-target.cc (Target::_init): Use TYPE_MAX_VALUE instead of
	TYPE_MAXVAL.
	(Target::isVectorTypeSupported):  Update call to
	scalar_mode_supported_p.
	* decl.cc (DeclVisitor::visit(Import)): Pass false as new argument to
	the imported_module_or_decl hook.
	* types.cc (TypeVisitor::visit(TypeClass)): Remove TYPE_METHODS.

2017-09-14  Iain Buclaw  <ibuclaw@gdcproject.org>

	* Make-lang.in (D_FRONTEND_OBJS): Add blockexit.o, initsem.o,
	inlinecost.o, safe.o, staticcond.o, and typesem.o.
	* d-attribs.c (uda_attribute_p): Use get_identifier to compare
	strings.
	(build_attributes): Handle empty string expressions.
	* d-builtins.cc (build_frontend_type): Use static create methods to
	'new' front-end types, expressions, and declarations.
	(d_eval_constant_expression): Likewise.
	(build_alias_declaration): Likewise.
	(d_build_builtins_module): Likewise.
	* d-codegen.cc (declaration_type): Likewise.
	(type_passed_as): Likewise.
	(get_frame_for_symbol): Remove dependency on id.h.
	(get_frameinfo): Don't overwrite FRAMEINFO_CREATES_FRAME if function
	has nested frame references.
	* d-convert.cc (convert_for_assignment): Allow static arrays to be
	initialized with a zero integer value.
	* d-frontend.cc (genCmain): Remove dependency on id.h.
	* d-frontend.h (initializerToExpression): Add declaration.
	(gendocfile): Add declaration.
	(initTraitsStringTable): Remove.
	* d-lang.cc (deps_write): Remove dependency on id.h.
	(deps_add_target): Don't call StringTables's destructor.
	(d_init): Remove calls to deleted front-end initialize functions.
	* decl.cc (DeclVisitor::visit(PragmaDeclaration)): Remove dependency
	on id.h.
	(DeclVisitor::visit(VarDeclaration)): Call initializerToExpression to
	get the initializer of decl.
	(build_decl_tree): Remove dependency on id.h.
	(layout_class_initializer): Use static create method to 'new'
	front-end expression.
	* expr.cc (ExprVisitor::visit(AssignExp)): Handle static array
	assignment where RHS is integer zero.
	(ExprVisitor::visit(VarExp)): Remove dependency on id.h.
	(ExprVisitor::visit(StringExp)): Handle empty string expressions.
	* modules.cc (get_internal_fn): Use FuncDeclaration::genCfunc to
	create function decl.
	(build_module_tree): Remove dependency on id.h.
	* toir.cc (IRVisitor::visit(ExtAsmStatement)): Handle empty string
	expressions.
	* typeinfo.cc (make_frontend_typeinfo): Use static create methods to
	'new' front-end declarations.
	(create_tinfo_types): Remove dependency on id.h.
	(get_cpp_typeinfo_decl): Likewise.
	(create_typeinfo): Likewise.

2017-08-23  Johannes Pfau  <johannespfau@gmail.com>

	* typeinfo.cc (TypeInfoVisitor::visit(TypeInfoStructDeclaration)): Do
	not send member functions to backend here.

2017-08-19  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-convert.cc (convert_expr): Use build_zero_cst for casts from
	typeof(null).

2017-08-13  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-target.cc (Target::isVectorOpSupported): Disallow vectors in
	conditional and logical operators.

2017-08-08  Iain Buclaw  <ibuclaw@gdcproject.org>

	* intrinsics.cc (maybe_expand_intrinsic): Handle isNaN(), isInfinity()
	and isFinite() intrinsics.
	* intrinsics.def: Add INTRINSIC_ISNAN, INTRINSIC_ISINFINITY, and
	INTRINSIC_ISFINITE.

2017-08-08  Iain Buclaw  <ibuclaw@gdcproject.org>

	* intrinsics.cc (expand_intrinsic_popcnt): New function.
	(maybe_expand_intrinsic): Handle INTRINSIC_POPCNT.
	* intrinsics.def (INTRINSIC_POPCNT): Declare.

2017-08-06  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-frontend.cc (isBuiltin): Remove restriction on builtins.
	(eval_builtin): Check DECL_INTRINSIC_CODE.
	* d-tree.h (intrinsic_code): Add enum declaration.
	(lang_decl): Add intrinsic field.
	(DECL_INTRINSIC_CODE): New macro.
	(DECL_BUILT_IN_CTFE): New macro.
	* decls.cc (get_symbol_decl): Initialize DECL_INTRINSIC_CODE.
	* intrinsics.cc (intrinsic_decl): Add ctfeonly field.
	(maybe_set_intrinsic): Set frontend builtin flag only if the function
	is CTFE-able.  Set BUILT_IN_FRONTEND if function has no body.
	(clear_intrinsic_flag): Clear DECL_INTRINSIC_CODE instead of frontend
	builtin flag.
	(maybe_expand_intrinsic): Handle INTRINSIC_TAN intrinsics.
	Call clear_intrinsic_flag on CTFE built-ins if semantic has finished.
	* intrinsics.def: Add INTRINSIC_TAN.
	(DEF_D_BUILTIN): New macro.
	(DEF_CTFE_BUILTIN): New macro.

2017-08-06  Iain Buclaw  <ibuclaw@gdcproject.org>

	* decl.cc (DeclVisitor::visit): Don't set input_location.
	(build_decl_tree): Handle set and restore of input_location.
	(declare_local_var): Don't set input_location.
	* expr.cc (build_expr): Handle set and restore of input_location.
	* imports.cc (build_import_decl): Likewise.
	* modules.cc (get_dso_registry_fn): Use UNKNOWN_LOCATION for
	declaration of _d_dso_registry.
	* runtime.cc (build_libcall_decl): Use UNKNOWN_LOCATION for
	declaration of library functions.
	* toir.cc (IRVisitor::visit): Don't set input_location.
	(IRVisitor::build_stmt): New function.
	(IRVisitor::do_jump): Update signature.
	(build_function_body): Use IRVisitor::build_stmt.
	* typeinfo.cc (layout_classinfo_interfaces): Don't set input_location.
	* types.cc (layout_aggregate_members): Likewise.
	(layout_aggregate_type): Likewise.

2017-08-05  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codegen.cc (build_boolop): Handle VECTOR_TYPE comparisons.
	* d-target.cc (Target::checkVectorType): Rename to
	Target::isVectorTypeSupported.
	(Target::isVectorOpSupported): New function.
	* expr.cc (ExprVisitor::visit(IdentityExp)): Don't memcmp floating
	point vectors.
	(ExprVisitor::visit(CmpExp)): Handle always true or always false
	vector comparisons.

2017-08-02  Iain Buclaw  <ibuclaw@gdcproject.org>

	* typeinfo.cc (SpeculativeTypeVisitor::visit(TypeClass)): Don't emit
	typeinfo for speculative class types.

2017-07-29  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-lang.cc (build_lang_decl): Handle compiler generated typeinfo that
	also appear in code.
	* d-tree.h (lang_identifier): Add decl_tree.
	(IDENTIFIER_DECL_TREE): New macro.
	* decl.cc (declare_extern_var): Re-use already generated decl if
	called with the same identifier twice.

2017-07-29  Iain Buclaw  <ibuclaw@gdcproject.org>

	* decl.cc (d_finish_decl): Replace ENABLE_TREE_CHECKING macro with
	flag_checking.

2017-07-28  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-tree.h (D_DECL_ONE_ONLY): Remove macro accessor.
	* decl.cc (DeclVisitor::visit(StructDeclaration)): Move call to
	d_comdat_linkage here.
	(DeclVisitor::visit(ClassDeclaration)): Likewise.
	(DeclVisitor::visit(InterfaceDeclaration)): Likewise.
	(DeclVisitor::visit(EnumDeclaration)): Likewise.
	(get_symbol_decl): Move call to mark_needed here.
	(declare_extern_var): Mark compiler generated symbols as needed.
	(make_thunk): Remove copy of D_DECL_ONE_ONLY.
	(get_vtable_decl): Don't call d_comdat_linkage.
	(aggregate_initializer_decl): Likewise.
	(enum_initializer_decl): Likewise.
	* modules.cc (d_finish_compilation): Don't call mark_needed.
	* typeinfo.cc (get_classinfo_decl): Don't call d_comdat_linkage.

2017-07-28  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-spec.c (lang_specific_driver): Always add `-o' option when
	compiling D sources.

2017-07-28  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-frontend.cc (genCmain): Don't error if entrypoint not found.

2017-07-18  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-lang.cc (d_types_compatible_p): Check that both types are
	RECORD_TYPE before using record-specific flag comparison.

2017-07-15  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-builtins.cc (d_build_d_type_nodes): Set TYPE_DYNAMIC_ARRAY on
	array_type_node.
	* d-codegen.cc (build_delegate_cst): Set TYPE_DELEGATE on internal
	delegate constant types.
	* d-frontend.h (cppTypeInfoMangle): Remove declaration.
	(toCppMangleItanium): Add declaration.
	(cppTypeInfoMangleItanium): Add declaration.
	* d-lang.cc (d_types_compatible_p): Use type flags to determine
	compatibility.  Return false instead of doing size comparison.
	* d-target.cc (Target::toCppMangle): New function.
	(Target::cppTypeInfoMangle): New function.
	(Target::cppTypeMangle): New function.
	(Target::systemLinkage): New function.
	* d-tree.h (TYPE_DYNAMIC_ARRAY): New macro.
	(TYPE_DELEGATE): New macro.
	(TYPE_ASSOCIATIVE_ARRAY): New macro.
	* typeinfo.cc (layout_cpp_typeinfo): Use Target::cppTypeInfoMangle.
	* types.cc (TypeVisitor::visit(TypeDArray)): Set TYPE_DYNAMIC_ARRAY.
	(TypeVisitor::visit(TypeAArray)): Set TYPE_ASSOCIATIVE_ARRAY.
	(TypeVisitor::visit(TypeDelegate)): Set TYPE_DELEGATE.

2017-07-11  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-target.cc (Target::loadModule): Check module identifier if a
	declaration doesn't exist.
	* typeinfo.cc (make_frontend_typeinfo): Use module location instead if
	a declaration doesn't exist.

2017-06-28  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-frontend.cc (CTFloat::hash): New function.

2017-06-25  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codegen.cc (d_array_string): Remove function.
	(d_assert_call): Inline implementation of d_array_string here.
	* d-tree.h (d_array_string): Remove declaration.
	* typeinfo.cc (TypeInfoVisitor::layout_string): New function.
	(TypeInfoVisitor::visit): Update calls to d_array_string to use
	layout_string instead.

2017-06-25  Iain Buclaw  <ibuclaw@gdcproject.org>

	* toir.cc (IRVisitor::visit(ExtAsmStatement)): Set ASM_VOLATILE_P only
	if statement is not marked with pure attribute.

2017-06-25  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-lang.cc (d_parse_file): Print all predefined version identifiers
	if verbose.

2017-06-24  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-frontend.cc (Global::_init): Remove memset for global.params.

2017-06-24  Iain Buclaw  <ibuclaw@gdcproject.org>

	* Make-lang.in (D_ALL_OBJS): Add D_TARGET_OBJS.
	* d-builtins.cc (d_add_builtin_version): Move here from d-lang.cc.
	(d_init_versions): New function.
	* d-lang.cc (d_init): Call d_init_versions.
	* d-target-def.h: New file.
	* d-target.cc (Target::critsecsize): Replace with call to
	targetdm.critsec_size.
	* d-target.def: New file.
	* d-target.h: New file.
	* d-tree.h (d_init_versions): Add declaration.

2017-06-20  Iain Buclaw  <ibuclaw@gdcproject.org>

	* expr.cc (ExprVisitor::visit(BinAssignExp)): Strip promotions from
	both signed and unsigned rshift assignments.

2017-06-17  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-diagnostic.cc (expand_format): New function.
	(d_diagnostic_report_diagnostic): New function.
	(error, verror): Update format attributes.  Use function
	d_diagnostic_report_diagnostic instead of xvasprintf.
	(errorSupplemental, verrorSupplemental): Likewise.
	(warning, vwarning): Likewise.
	(warningSupplemental, vwarningSupplemental): Likewise.
	(deprecation, vdeprecation): Likewise.
	(deprecationSupplemental, vdeprecationSupplemental): Likewise.

2017-06-15  Iain Buclaw  <ibuclaw@gdcproject.org>

	* expr.cc (ExprVisitor::visit(AssertExp)): Don't call invariant on
	interface objects.

2017-06-12  Iain Buclaw  <ibuclaw@gdcproject.org>

	* expr.cc (ExprVisitor::visit(DelegateExp)): Convert object to right
	type before using it.

2017-06-12  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-decls.cc (get_decl_tree): Find the first parent member function
	before constructing non-local `this' decl.

2017-06-10  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-builtins.cc (build_frontend_type): Allow all vector types to be
	included in builtins module.

2017-06-09  Iain Buclaw  <ibuclaw@gdcproject.org>

	* types.cc (TypeVisitor::visit(TypeStruct)): Let struct alignment
	override the alignsize.

2017-06-09  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codegen.cc (d_decl_context): Use origin template declaration as
	context for instantiated type symbols.

2017-06-08  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-attribs.c (d_handle_weak_attribute): Use quoted string format.
	* decls.cc (finish_thunk): Update call to create_edge for new API.

2017-06-08  Iain Buclaw  <ibuclaw@gdcproject.org>

	* expr.cc (ExprVisitor::visit(StringExp)): Create string type that is
	same length as string value literal.

2017-05-27  Iain Buclaw  <ibuclaw@gdcproject.org>

	* Make-lang.in (D_FRONTEND_OBJS): Rename object.o to rootobject.o.

2017-05-26  Iain Buclaw  <ibuclaw@gdcproject.org>

	* decl.cc: Remove include for dumpfile.h.
	(finish_function): Use dump_function to for dumping original ASTs.

2017-05-24  Iain Buclaw  <ibuclaw@gdcproject.org>

	* config-lang.in (gtfiles): Add typeinfo.cc.
	* d-codegen.cc (d_build_call_list): Remove function.
	(d_build_call_nary): Remove function.
	(build_binary_op): Remove function.
	(build_binop_assignment): Remove function.
	(build_vthis_type): Rename to build_vthis_function.
	(create_field_decl): Move to decl.cc.
	* d-lang.cc (genCmain): Moved to d-frontend.cc.
	(builtin_modules): Declare static.
	(d_add_builtin_module): New function.
	(d_add_entrypoint_module): New function.
	* expr.cc (ExprVisitor::binary_op): New function.
	(ExprVisitor::binop_assignment): New function.
	* intrinsic.cc (expand_intrinsic): Rename to maybe_expand_intrinsic.
	* runtime.cc (build_libcall): Updated signature.
	* types.cc (make_two_field_type): Remove function.
	(make_struct_type): New function.

2017-05-22  Iain Buclaw  <ibuclaw@gdcproject.org>

	* Make-lang.in (D_OBJS): Add intrinsics.o and runtime.o.
	* d-codegen.h: Remove file.
	* intrinsics.cc: New file.
	* runtime.cc: New file.

2017-05-21  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codegen.cc: Remove include for d-dmd-gcc.h.
	* d-dmd-gcc.h: Rename to d-frontend.h.  Update all includes.
	* d-frontend.cc (Global::_init): Remove unnecessary initialization.
	* expr.cc: Remove include for d-dmd-gcc.h.

2017-05-21  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-attribs.c (handle_sentinel_attribute): Remove function.
	(ignore_attribute): Remove function.
	(d_langhook_common_attribute_table): Remove sentinel and tm regparm
	from common attribute table.
	(d_langhook_format_attribute_table): Remove variable.
	* d-lang.cc (LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE): Remove macro.
	(LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE): Remove macro.
	(d_post_options): Don't set flag_unit_at_a_time.
	(d_nametype): Remove function.
	* types.cc (TypeVisitor::visit(TypeBasic)): Set TYPE_NAME.
	(TypeVisitor::visit(TypeVector)): Likewise.

2017-05-20  Iain Buclaw  <ibuclaw@gdcproject.org>

	* Make-lang.in (D_OBJS): Remove d-objfile.o.  Add modules.o.
	* d-codegen.cc (get_linemap): Move function here.
	* d-objfile.cc: Remove file.
	* d-objfile.h: Remove header.
	* d-tree.h (GDC_PREFIX): New macro.
	* decl.cc (make_internal_name): Rename to mangle_internal_decl.
	(DeclVisitor): Move class here.
	(gcc_attribute_p): Move function here.
	(build_decl_tree): Likewise.
	(d_finish_decl): Likewise.
	(start_function): Likewise.
	(finish_function): Likewise.
	(mark_needed): Likewise.
	(base_vtable_offset): Likewise.
	(build_artificial_decl): Likewise.
	(build_type_decl): Likewise.
	(d_comdat_group): Likewise.
	(d_comdat_linkage): Likewise.
	(add_moduleinfo_field): Move to modules.cc
	(layout_moduleinfo_fields): Likewise.
	(get_moduleinfo_decl): Likewise.
	* modules.cc: New file.

2017-05-10  Iain Buclaw  <ibuclaw@gdcproject.org>

	* imports.cc (ImportVisitor::visit(Import)): New function.

2017-05-06  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-objfile.cc (DeclVisitor::visit(Module)): Set input_location before
	walking module members.
	(get_linemap): Return input_location if no filename set.
	(set_input_location): Remove function.  Update all callers to set
	input_location directly.
	(set_decl_location): Remove function.  Update all callers to pass
	get_linemap to build_decl, or use input_location.
	* types.cc (insert_aggregate_field): Update signature.

2017-04-30  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-objfile.cc (start_function): Update signature.
	(finish_function): Update signature.
	(DeclVisitor::visit(FuncDeclaration)): Move function construction to
	start_function.  Move function finalization to finish_function.
	(set_function_end_locus): Remove function.
	(d_finish_function): Remove function.
	(build_simple_function_decl): Don't set frontend body.
	(build_simple_function): Update signature.  Use start/finish function
	to compile the body.
	(emit_dso_registry_cdtor): Likewise.
	* expr.cc (ExprVisitor::visit(WrappedExp)): Remove function.

2017-04-29  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-diagnostic.cc (verror): Use xvasprintf.
	(verrorSupplemental): Likewise.
	(vwarning): Likewise.
	(vwarningSupplemental): Likewise.
	(vdeprecation): Likewise.
	(vdeprecationSupplemental): Likewise.

2017-04-24  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-tree.h (d_tree_index): Add DTI_VTABLE_ENTRY_TYPE,
	DTI_VTBL_INTERFACE_TYPE, DTI_ARRAY_TYPE, and DTI_NULL_ARRAY.
	(vtable_entry_type): New macro.
	(vtbl_interface_type_node): New macro.
	(array_type_node): New macro.
	(null_array_node): New macro.
	* d-builtins.cc (d_build_d_type_nodes): Initialize new trees.
	* d-codegen.cc (build_struct_literal): Allow NULL index when
	looking for next field to initialize.
	(copy_aggregate_type): New function.
	* d-target.cc (Target::loadModule): Look for object module,
	call create_tinfo_types.
	* decl.cc (TypeInfoDeclVisitor): Move to typeinfo.cc.
	(get_typeinfo_decl): Likewise.
	(copy_struct): Remove function.  Updated callers to use
	copy_aggregate_type.
	(layout_classinfo_interfaces): Move to typeinfo.cc.
	(get_classinfo_decl): Likewise.
	(get_cpp_typeinfo_decl): Likewise.
	* typeinfo.cc (tinfo_kind): New enum.
	(tinfo_types): New static variable.
	(get_typeinfo_kind): New function.
	(make_internal_typeinfo): New function.
	(make_frontend_typeinfo): New function.
	(create_tinfo_types): New function.
	(TypeInfoVisitor::set_field): Remove function.
	Update all callers to use layout_field.
	(TypeInfoVisitor::layout_vtable): Remove function.
	Update all callers to use layout_base.
	(TypeInfoVisitor::layout_field): New function.
	(TypeInfoVisitor::layout_base): New function.
	(builtin_typeinfo_p): New function.
	(genTypeInfo): Rename to create_typeinfo.
	(isSpeculativeType): Rename to speculative_type_p.

2017-04-23  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-tree.h (d_function_chain): Declare macro.  Update all uses of
	`cfun->language' to use it.

2017-04-22  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-decls.cc: Rename to decl.cc.
	(get_symbol_decl): Handle typeinfo declarations.
	(declare_extern_var): New function.
	(declare_local_var): New function.
	(get_moduleinfo_decl): Call declare_extern_var.
	(get_classinfo_decl): Likewise.
	(get_vtable_decl): Likewise.
	(get_cpp_typeinfo_decl): Likewise.
	(aggregate_initializer_decl): Likewise.
	(enum_initializer_decl): Likewise.
	* Make-lang.in (D_OBJS): Update.
	* d-codegen.cc (build_local_var): Remove function.
	Updated all callers to use declare_local_var.
	(build_local_temp): Move to decl.cc.
	(get_decl_tree): Likewise.
	(expand_decl): Remove function.
	(build_closure): Inline expand_decl here.

2017-04-20  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codegen.cc (pop_binding_label): Move to toir.cc.
	(pop_label): Likewise.
	(push_binding_level): Likewise
	(pop_binding_level): Likewise.
	(push_stmt_list): Likewise.
	(add_stmt): Likewise.
	(check_goto): Move to toir.cc, make it a member of IRVisitor.
	(check_previous_goto): Likewise.
	(lookup_label): Likewise.
	(lookup_bc_label): Likewise.
	(define_label): Likewise.
	* toir.cc (build_ir): Rename to build_function_body.

2017-04-19  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-target.cc: Update includes.

2017-04-19  Iain Buclaw  <ibuclaw@gdcproject.org>

	* lang-specs.h: Remove capitalized D source suffixes.

2017-04-19  Iain Buclaw  <ibuclaw@gdcproject.org>

	* lang-specs.h: Add rule for forwarding -iprefix and -imultilib to the
	compiler proper.

2017-04-19  Iain Buclaw  <ibuclaw@gdcproject.org>

	* lang-specs.h: Remove cc1d spec.

2017-04-19  Iain Buclaw  <ibuclaw@gdcproject.org>

	* lang-specs.h: Remove +e handling.

2017-04-18  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-diagnostic.cc: New file.
	* d-frontend.cc: New file.
	* d-glue.cc: Remove file.
	* d-port.cc: Remove file.
	* d-longdouble.h (template<typename T> operator): Remove operators.

2017-04-17  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-incpath.cc (add_env_var_paths): Rename to add_environment_paths.
	(make_absolute): Remove function.
	(add_import_path): Rename to add_globalpaths.
	(add_fileimp_path): Rename to add_filepaths.

2017-04-17  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codegen.h (d_types_same): Renamed to same_type_p.
	Moved to types.cc.
	(build_object_type): Renamed to get_object_type.  Moved to types.cc.
	* d-codegen.cc (type_va_array): Renamed to valist_array_p.
	Moved to types.cc.
	(d_array_type): Renamed to make_array_type.  Moved to types.cc.
	(insert_type_modifiers): Moved to types.cc.
	(build_two_field_type): Likewise.
	(empty_aggregate_p): Likewise.
	(fixup_anonymous_offset): Likewise.
	(layout_aggregate_members): Likewise.
	(layout_aggregate_type): Likewise.
	(insert_aggregate_field): Likewise.
	(finish_aggregate_type): Likewise.

2017-04-17  Iain Buclaw  <ibuclaw@gdcproject.org>

	* Make-lang.in (D_FRONTEND_OBJS): Update to match new source names.

2017-04-11  Iain Buclaw  <ibuclaw@gdcproject.org>

	* gdc.texi: Rewrite documentation for manpages.

2017-04-08  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-objfile.cc (DeclVisitor::visit(FuncDeclaration)): Remove logic
	that parent needs to be compiled before nested.

2017-04-08  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-lang.cc (d_post_options): Don't overwrite in_fnames.
	(d_parse_file): Don't error about not being able to use stdin.
	Implement support for reading source code from stdin.

2017-04-08  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-lang.cc (d_parse_file): Remove invalid file name checks.

2017-04-08  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-glue.cc (Global::_init): Set global.stdmsg to stderr.

2017-04-07  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codgen.h (current_module_decl): Moved to d-objfile.cc.
	* d-objfile.h (current_module_info): Likewise.
	(ModuleInfoFlags): Likewise.
	(ModuleInfo): Likewise.
	* d-objfile.cc (start_function): Move updating ModuleInfo structure to
	...
	(DeclVisitor::visit(FuncDeclaration)): ... here.  Set it after
	finishing off the function.

2017-04-07  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-objfile.cc (DeclVisitor::visit(FuncDeclaration)): Use
	push_function_decl for storing current state when switching to nested
	functions.  Remove handling of deferred functions.
	* d-tree.h (language_function): Remove deferred_fns.
	* expr.cc (ExprVisitor::visit(DelegateExp)): Don't defer compiling
	the delegate lambda.
	(ExprVisitor::visit(FuncExp)): Likewise for function literals.
	(ExprVisitor::visit(VarExp)): Likewise.

2017-04-07  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codegen.cc (start_function): Move to d-objfile.cc, make it static.
	(end_function): Likewise.  Renamed to finish_function.

2017-04-05  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codegen.cc (d_convert): Move to d-convert.cc.
	(convert_expr): Likewise.
	(convert_for_assignment): Likewise.
	(convert_for_argument): Likewise.
	(convert_for_condition): Likewise.
	(d_array_convert): Likewise.

2017-04-04  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-builtins.c (d_global_trees): Move to d-lang.cc.
	(build_dtype): Rename to build_frontend_type.
	Updated all callers.
	(build_expression): Rename to d_eval_constant_expression.
	Updated all callers.
	(build_alias_declaration): New function.
	(d_build_c_type_nodes): New function.
	(d_build_d_type_nodes): New function.
	(d_define_builtins): New function.

2017-04-04  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-attribs.c (insert_type_attribute): Use
	build_type_attribute_variant.
	(insert_decl_attribute): Use build_decl_attribute_variant.
	(uda_attribute_p): Remove string table, use Identifier comparison for
	looking up table attributes.
	(build_attributes): Make unknown attribute a warning, use quoted
	strings in diagnostic messages.

2017-04-01  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-lang.cc (d_handle_option): Handle -fdump-d-original.
	(d_parse_file): Likewise.
	* d-target.cc (Target::maxStaticDataSize): New variable.
	(Target::_init): Initialize maxStaticDataSize.
	* lang.opt (fdump-d-original): Declare.

2017-04-01  Iain Buclaw  <ibuclaw@gdcproject.org>

	* Make-lang.in (D_GLUE_OBJS): Remove d-todt.cc.
	* d-objfile.cc (build_moduleinfo_symbol): Build initializer for
	ModuleInfo directly from inferred type fields.
	(d_finish_symbol): Remove handling of DECL_LANG_INITIAL.
	* d-todt.cc: Remove file.
	* d-tree.h (lang_decl): Remove initial field.
	(DECL_LANG_INITIAL): Remove macro.

2017-03-31  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-objfile.cc (DeclVisitor::visit(VarDeclaration)): Use build_expr to
	generate the static initializer.
	* d-todt.cc (Initializer::toDt): Remove function and all overrides.
	* expr.cc (ExprVisitor::visit(VarExp)): Use build_expr to get the
	constant initializer of a constant variable.

2017-03-29  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-decls.cc (aggregate_initializer): Renamed to
	aggregate_initializer_decl.  Updated all callers.
	(enum_initializer): Renamed to enum_initializer_decl.
	Updated all callers.
	(layout_class_initializer): New function.
	(layout_struct_initializer): New function.
	* d-todt.cc (ClassDeclaration::toDt): Remove function.
	(StructDeclaration::toDt): Remove function.

2017-03-27  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-objfile.cc (DeclVisitor::visit(Module)): New function.
	(Module::genobjfile): Remove function.
	Updated all callers to use build_decl_tree.
	(layout_moduleinfo): New function.
	(Module::genmoduleinfo): Remove function.
	Update all callers to use layout_moduleinfo.

2017-03-26  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-objfile.cc (base_vtable_offset): New function.
	(ClassDeclaration::baseVtblOffset): Remove function.
	Updated all callers to use base_vtable_offset.

2017-03-26  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-objfile.cc (DeclVisitor): New visitor interface to supercede the
	toObjFile methods.
	(build_decl_tree): New function.
	(Dsymbol::toObjFile): Remove function and overrides.
	Updated all callers to use build_decl_tree.

2017-03-20  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-decls.cc (get_cpp_typeinfo_decl): New function.
	* d-lang.cc (d_build_eh_type_type): Return classinfo for
	__cpp_type_info_ptr when generating catch for C++ classes.
	* runtime.def (CXA_BEGIN_CATCH): Define.
	(CXA_END_CATCH): Define.
	* toir.cc (IRVisitor::visit(TryCatchStatement)): Support catching
	classes thrown from C++.
	* typeinfo.cc (layout_cpp_typeinfo): New function.

2017-03-20  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-builtins.cc (d_build_builtins_module): Always mark gcc builtins as
	nothrow functions.

2017-03-11  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-longdouble.cc (CTFloat::zero): New variable.
	(CTFloat::one): New variable.
	(CTFloat::minusone): New variable.
	(CTFloat::half): New variable.
	(longdouble::set): Remove float and double overloads.
	(longdouble::operator float): Remove function.
	(longdouble::operator double): Remove function.
	* d-target.cc (Target::_init): Initialize floating point constants.

2017-03-11  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-lang.cc (d_init): Replace calls to init with _init.
	* d-glue.cc (Global::init): Renamed to Global::_init.
	* d-target.cc (Target::init): Renamed to Target::_init.

2017-03-11  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-longdouble.cc (longdouble::format): Remove function.
	(longdouble::formatHex): Remove function.
	(longdouble::dump): Remove function.
	(CTFloat::sprint): Inline implementation of format and formatHex here.

2017-03-11  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-lang.cc (d_init): Remove calls to Port::init and longdouble::init.
	* d-longdouble.cc (real_limits): Remove variable.
	(longdouble::init): Remove function.
	(CTFloat::parse): Update to use Target::RealProperties.
	* d-port.cc (Port::ldbl_nan): Remove variable.
	(Port::snan): Remove variable.
	(Port::ldbl_infinity): Remove variable.
	(Port::ldbl_max): Remove variable.
	(Port::init): Remove function.
	(Port::isFloat32LiteralOutOfRange): Update to use
	Target::RealProperties.
	(Port::isFloat64LiteralOutOfRange): Likewise.
	* d-target.cc (Target::FPTypeProperties<T>::max): Define.
	(Target::FPTypeProperties<T>::min_normal): Define.
	(Target::FPTypeProperties<T>::nan): Define.
	(Target::FPTypeProperties<T>::snan): Define.
	(Target::FPTypeProperties<T>::infinity): Define.
	(Target::FPTypeProperties<T>::epsilon): Define.
	(Target::FPTypeProperties<T>::dig): Define.
	(Target::FPTypeProperties<T>::mant_dig): Define.
	(Target::FPTypeProperties<T>::max_exp): Define.
	(Target::FPTypeProperties<T>::min_exp): Define.
	(Target::FPTypeProperties<T>::max_10_exp): Define.
	(Target::FPTypeProperties<T>::min_10_exp): Define.
	(define_float_constants): New function.
	(Target::init): Initialize compile-time floating point properties.
	* longdouble.h (Mode): Remove type declaration.
	(real_properties): Remove type declaration.

2017-03-10  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-longdouble.cc (CTFloat::fabs): New function.
	(CTFloat::isIdentical): New function.
	(CTFloat::isNaN): New function.
	(CTFloat::isSNaN): New function.
	(CTFloat::isInfinity): New function.
	(CTFloat::parse): New function.
	(CTFloat::sprint): New function.
	* d-port.cc (Port::isNan): Remove function.
	(Port::isSignallingNan): Remove function.
	(Port::isInfinity): Remove function.
	(Port::fequal): Remove function.
	(Port::strtof): Remove function.
	(Port::strtod): Remove function.
	(Port::strtold): Remove function.
	(Port::isFloat32LiteralOutOfRange): New function.
	(Port::isFloat64LiteralOutOfRange): New function.
	* longdouble.h (ld_sprint): Remove function.

2017-03-06  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-glue.cc (verror): Update to handle -Wspeculative.
	(verrorSupplemental): Likewise.
	* d-lang.cc (d_init_options): Initialize module alias array.
	(d_init_options): Handle -fmodule-filepath= and -Wspeculative.
	* d-port.cc (Port::stricmp): Remove function.
	(Port::writelongLE): New function.
	(Port::writelongBE): New function.
	* lang.opt (Wspeculative): Declare.
	(fmodule-filepath=): Declare.

2017-03-06  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-lang.cc (d_handle_option): Handle -ftransition=dip1000
	* lang.opt (ftransition=dip1000): Declare.
	(ftransition=safe): Make alias for -ftransition=dip1000

2017-03-04  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codegen.cc (get_decl_tree): Handle chaining over many levels of
	nesting functions to get to the right parent for the 'this' field.

2017-03-04  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-decls.cc (get_symbol_decl): Move generation of DECL_ARGUMENTS for
	empty body declarations to ...
	(make_thunk): ... here.  Also set-up DECL_RESULT.
	(finish_thunk): Mark DECL_UNINLINEABLE on external functions.

2017-03-04  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-decls.cc (make_thunk): Don't build thunks for functions that
	failed to compile.

2017-03-04  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-objfile.cc (emit_dso_registry_hooks): Set DECL_PRESERVE_P.

2017-02-26  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codegen.cc (build_frame_type): Update condition for scope
	destruction error.
	* d-port.cc (Port::valcpy): New function.
	* expr.cc (ExprVisitor::visit(CallExp)): Generate cast of 'this'
	object to the right handle type before indexing.

2017-02-24  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-glue.cc (warningSupplemental): New function.
	(vwarningSupplemental): New function.
	(deprecationSupplemental): New function.
	(vdeprecationSupplemental): New function.

2017-02-23  Iain Buclaw  <ibuclaw@gdcproject.org>

	* imports.cc (ImportVisitor::visit(OverDeclaration)): New function.
	(ImportVisitor::visit(FuncAliasDeclaration)): New function.

2017-02-21  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-lang.cc (d_handle_option): Handle -X and -Xf options.
	(d_parse_file): Update.
	* lang-specs.h: Add rules for -X style options.
	* lang.opt (X): Declare.
	(Xf): Declare.
	(fXf=): Make alias for -Xf.

2017-02-21  Iain Buclaw  <ibuclaw@gdcproject.org>

	* lang.opt (fd-vgc): Comment out help test.
	(fd-verbose): Likewise.
	(fd-vtls): Likewise.
	(femit-modules): Likewise.

2017-02-20  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-target.cc (Target::fieldalign): Adjust.

2017-02-19  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-lang.cc (d_option_data): Add fields to support other -M options.
	(d_init_options): Initialize them.
	(deps_add_target): New function.
	(deps_write): Support multiple targets and phony rules.
	(d_handle_option): Handle gcc -M style options.
	(d_parse_file): Likewise.
	* lang-specs.h: Add rules for -M style options.
	* lang.opt: Declare -M style options.

2017-02-19  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-lang.cc (is_system_module): Remove.
	(deps_write): Always ignore entrypoint module.

2017-02-19  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-lang.cc (write_one_dep): Remove.
	(deps_write): Update signature.

2017-02-19  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-lang.cc (iprefix_dir): Remove.
	(imultilib_dir): Remove.
	(std_inc): Remove.
	(d_option_data): New struct.
	(d_option): Declare.
	(d_init_options): Initialize d_option.
	(d_init): Update to use d_option.
	(d_handle_option): Likewise.
	(d_parse_file): Likewise.
	(deps_write): Update signature.

2017-02-19  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-lang.cc (d_handle_option): Call D_handle_option_auto.
	* lang.opt (Wunknown-pragmas): Turn on warning with -Wall.

2017-02-18  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-lang.cc (d_handle_option): Replace -fin with -fpreconditions;
	-fout with -fpostconditions.  Handle -fswitch-errors.
	(d_post_options): Move setting of release code flags here.
	* lang.opt (fassert): Declare flag_assert.
	(fin): Make alias for -fpreconditions.
	(finvariants): Declare flag_invariants.
	(fout): Make alias for -fpostconditions.
	(fpostconditions): Declare.
	(fpreconditions): Declare.
	(fswitch-errors): Declare.

2017-02-18  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-objfile.cc (PragmaDeclaration::toObjFile): Warn about unknown
	pragmas only if -Wunknown-pragmas.

2017-02-18  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-glue.cc (Global::init): Initialize errorLimit to flag_max_errors.
	(verror): Don't halt program after invocation limit.
	* d-lang.cc (d_handle_option): Remove handling -fmax-error-messages.
	* lang.opt (fmax-error-messages): Remove option.

2017-02-18  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-decls.cc (get_symbol_decl): Handle -Wtemplates.
	* d-lang.cc (d_init_options): Remove setting flag_emit_templates.
	(d_handle_option): Replace handling -femit-templates with
	-fall-instantiations.
	(d_pushdecl): Remove checking for flag_emit_templates.
	* d-tree.h (D_DECL_IS_TEMPLATE): Remove macro.
	* lang.opt (flag_emit_templates): Remove variable.
	(fall-instantiations): Declare.
	(femit-templates): Make alias for -fall-instantiations.
	(Wtemplates): Declare.

2017-02-18  Iain Buclaw  <ibuclaw@gdcproject.org>

	* lang.opt (fassert): Update help text.
	(fin): Likewise.
	(finvariants): Likewise.
	(fout): Likewise.

2017-02-11  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-objfile.cc (VarDeclaration::toObjFile): Error if a variable covers
	more than half the address space.

2017-02-04  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-objfile.cc (Module::genmoduleinfo): Ignore symbol visibility when
	looking up module DSO symbols.

2017-01-29  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-lang.cc (d_handle_option): Handle -ftransition=all.
	* lang.opt (ftransition=all): Add compiler option.

2017-01-29  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-lang.cc (d_handle_option): Handle -ftransition=checkimports.
	* lang.opt (ftransition=checkimports): Add compiler option.

2017-01-28  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-lang.cc (d_handle_option): Handle -ftransition=import.
	* lang.opt (ftransition=import): Add compiler option.

2017-01-25  Iain Buclaw  <ibuclaw@gdcproject.org>

	* imports.cc (ImportVisitor::visit(EnumDeclaration)): New function.
	(ImportVisitor::visit(AggregateDeclaration)): New function.
	(ImportVisitor::visit(ClassDeclaration)): New function.
	(ImportVisitor::make_import): New function.
	(ImportVisitor::visit(AliasDeclaration)): Get decl for type alias.

2017-01-22  Iain Buclaw  <ibuclaw@gdcproject.org>

	* expr.cc (ExprVisitor::visit(EqualExp)): Don't use memcmp on arrays
	of structs that define xopEquals.

2017-01-15  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-spec.cc (lang_specific_driver): Add missing break.

2017-01-13  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codegen.cc (build_class_instance): Don't check for void
	initialized fields.
	* expr.cc (ExprVisitor::visit(StructLiteralExp)): Likewise.

2017-01-11  Iain Buclaw  <ibuclaw@gdcproject.org>

	* typeinfo.cc (layout_classinfo): Use placement new to initialize
	typeinfo class declaration.

2017-01-02  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codegen,cc (get_frame_for_symbol): Use fully qualified name in
	error message.
	(build_frame_type): Always add parameters to closure vars if the
	function has a contract function.
	(get_frameinfo): Likewise, always create a frame.
	* expr.cc (ExprVisitor::needs_dtor): New function.
	(ExprVisitor::lvalue_p): New function.
	(ExprVisitor::visit(AssignExp)): Check for dtor in array assignments.
	(ExprVisitor::visit(TypeidExp)): Cast result to expression type.


Copyright (C) 2017 Free Software Foundation, Inc.

Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.
