2015-10-07  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-decls.cc (StructLiteralExp::toSymbol): Use letter prefix for
	anonymous name.  Don't set TREE_READONLY.
	(ClassReferenceExp::toSymbol): Likewise.

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

	* d-codegen.cc (build_struct_literal): New function.
	(layout_aggregate_members): Handle variables that are really tuples.
	* d-elem.cc (StructLiteralExp::toElem): Handle slicing void arrays.
	Use build_struct_literal to handle anonymous records.
	* d-lang.h (d_unknown_type_node): Rename to unknown_type_node, update
	in all files.

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

	* d-codegen.cc (build_two_field_type): Use DECL_FIELD_CONTEXT to access
	field context decl.
	(build_frame_type): Likewise.
	(lookup_anon_field): New function.
	(component_ref): Use it.
	(fixup_anonymous_offset): New function.
	(layout_aggregate_members): New function.
	(layout_aggregate_type): Move generation of fields into
	layout_aggregate_members.
	(insert_aggregate_field): Update signature, update all callers.
	(finish_aggregate_type): Likewise.
	* d-todt.cc (dt_container2): Use DECL_FIELD_CONTEXT to access field
	context decl.
	* types.cc (TypeVisitor::visit (TypeStruct)): Likewise.
	(TypeVisitor::visit (TypeClass)): Likewise.
	* d-tree.h (ANON_AGGR_TYPE_P): New type macro.

2015-08-25  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-builtins.cc (maybe_set_builtin_1): Remove va_list handling.
	(d_init_builtins): Don't represent static array va_list as reference.
	* d-codegen.cc (convert_for_argument): Handle va_list as a static array.
	(declaration_type): Likewise.
	(type_passed_as): Likewise.
	(decl_reference_p): Renamed to declaration_type_kind, update to return
	how type is represented internally, updated all callers.
	(arg_reference_p): Renamed to argument_type_kind, update to return how
	type is represented internally, updated all callers.
	* d-codegen.h (type_kind): Declare.

2015-08-22  Iain Buclaw  <ibuclaw@gdcproject.org>

	* toir.cc (IRVisitor::visit (TryCatchStatement)): Always emit call to
	LIBCALL_BEGIN_CATCH at the start of the catch.
	* d-elem.cc (AssertExp::toElem): Stabilize reference to class object
	before passing it to _d_invariant.

2015-08-20  Iain Buclaw  <ibuclaw@gdcproject.org>

	* toir.cc (IRVisitor::visit): Set input location in all visitors that
	either throw an ICE or sorry message.

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

	* Make-lang.in: Replace uses of $(target_alias) with
	$(target_noncanonical).

2015-08-17  Iain Buclaw  <ibuclaw@gdcproject.org>

	* types.cc (TypeVisitor::visit (TypeEnum)): Set ENUM_IS_SCOPED on all
	enumeral types.
	* d-lang.cc (d_init_options_struct): Remove setting
	flag_evaluation_order.

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

	* d-elem.cc (HaltExp::toElem): Use __builtin_trap to halt execution,
	rather than the library abort() call.

2015-08-07  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codegen.cc (build_closure): Update signature, update all callers.
	(build_vthis): Likewise.
	(get_frame_for_symbol): Likewise.
	(build_local_var): Likewise.
	(get_decl_tree): Likewise.
	(start_function): Likewise.
	* d-irstate.h (IRState): Move func, mod, sthis, deferred,
	statementList, and varsInScope fields to...
	* d-tree.h (language_function): Here, updated all uses.
	* d-irstate.h: Remove file.
	(IRState): Remove all uses everywhere.

2015-08-07  Iain Buclaw  <ibuclaw@gdcproject.org>

	* Make-lang.in (D_GLUE_OBJS): Remove d-irstate.o.
	* d-tree.h (d_label_use_entry): New structure.
	(d_label_entry): New structure.
	(binding_level): Add level_kind field.
	(language_function): Add hash table field for labels.
	(D_LABEL_VARIABLE_CASE): New macro.
	* d-codegen.cc (pop_binding_label): New function.
	(pop_label): New function.
	(push_binding_level): Update signature.
	(pop_binding_level): Update signature.  Handle declared or used labels.
	(build_array_set): Update for push/pop binding changes.
	(check_goto): New function.
	(check_previous_goto): New function.
	(d_lookup_label): Remove function.
	(lookup_label): New function.
	(lookup_bc_label): New function.
	(define_label): New function.
	* d-objfile.cc (FuncDeclaration::toObjFile): Update for push/pop binding
	changes.
	* toir.cc (IRVisitor): Add break and continue label fields.
	(IRVisitor::IRVisitor): Initialize here.
	(IRVisitor::start_scope): Update signature.
	(IRVisitor::end_scope): Return the finished scope, updated all callers.
	(IRVisitor::push_break_label): New function.
	(IRVisitor::pop_break_label): New function.
	(IRVisitor::push_continue_label): New function.
	(IRVisitor::pop_continue_label): New function.
	(IRVisitor::start_condition): Remove function.
	(IRVisitor::start_else): Remove function.
	(IRVisitor::end_condition): Remove function.
	(IRVisitor::start_catches): Remove function.
	(IRVisitor::start_catch): Remove function.
	(IRVisitor::end_catch): Remove function.
	(IRVisitor::end_catches): Remove function.
	(IRVisitor::start_finally): Remove function.
	(IRVisitor::end_finally): Remove function.
	(IRVisitor::start_case): Remove function.
	(IRVisitor::end_case): Remove function.
	* d-irstate.cc: Remove.

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

	* config-lang.in (gtfiles): Replace d-lang.h for d-tree.h
	* d-lang.h: Move all GTY structures to d-tree.h, updated all source
	header dependencies.
	* d-tree.h: New file.

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

	* toir.cc (IRVisitor::start_condition): Don't cache condition.
	(IRVisitor::start_else): Return the then body, updated all callers.
	(IRVisitor::end_condition): Update signature.
	(IRVisitor::start_catches): Return the try body, updated all callers.
	(IRVisitor::start_catch): Don't cache catch type.
	(IRVisitor::end_catch): Update signature.
	(IRVisitor::end_catches): Update signature.
	(IRVisitor::start_finally): Return the try body, updated all callers.
	(IRVisitor::end_finally): Update signature.
	(IRVisitor::start_case): Don't cache the condition.
	(IRVisitor::end_case): Update signature.
	* d-codegen.cc (convert_for_assignment): Use size_type_node for index.
	* d-irstate.cc (IRState::beginFlow): Remove call to push_stmt_list.

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

	* d-codegen.cc (push_stmt_list): New function.
	(pop_stmt_list): New function.
	(add_stmt): New function.
	(start_function): New function.
	(end_function): New function.
	(expand_decl): Update to use new interface.
	(build_closure): Likewise.
	(push_binding_level): Moved from d-lang.cc.
	(pop_binding_level): Likewise.
	* d-lang.cc (d_init): Inline call to init_global_binding_level.
	(alloc_binding_level): Remove function.
	(push_binding_level): Remove function.
	(pop_binding_level): Remove function.
	(init_global_binding_level): Remove function.
	(set_decl_binding_chain): Remove function.
	* d-elem.cc (DeclarationExp::toElem): Likewise.
	* d-objfile.cc (VarDeclaration::toObjFile): Likewise.
	(FuncDeclaration::toObjFile): Likewise.
	* toir.cc (IRVisitor::start_scope): Moved from d-irstate.cc, updated
	all callers in IRVisitor.
	(IRVisitor::end_scope): Likewise.
	(IRVisitor::is_return_label): Likewise.
	(IRVisitor::do_label): Likewise.
	(IRVisitor::do_jump): Likewise.
	(IRVisitor::start_condition): Likewise.
	(IRVisitor::start_else): Likewise.
	(IRVisitor::end_condition): Likewise.
	(IRVisitor::start_catches): Likewise.
	(IRVisitor::start_catch): Likewise.
	(IRVisitor::end_catch): Likewise.
	(IRVisitor::end_catches): Likewise.
	(IRVisitor::start_finally): Likewise.
	(IRVisitor::end_finally): Likewise.
	(IRVisitor::end_loop): Likewise.
	(IRVisitor::start_case): Likewise.
	(IRVisitor::end_case): Likewise.
	(build_ir): Update signature.

2015-08-01  Iain Buclaw  <ibuclaw@gdcproject.org>

	* Make-lang.in (DMD_COMPILE): Declare as COMPILE with WARN_CXXFLAGS
	replaced with DMD_WARN_CXXFLAGS.
	(DMDGEN_COMPILE): Declare as DMD_COMPILE but with COMPILER replaced
	with COMPILER_FOR_BUILD.
	(d/idgen): Use LINKER_FOR_BUILD.
	(d/impcvgen): Likewise.
	(d/%.o): Use DMD_COMPILE and POSTCOMPILE.
	(d/%.dmdgen.o): Use DMDGEN_COMPILE and POSTCOMPILE.

2015-07-27  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codegen.cc (current_irstate): Remove.
	(d_build_call): Check cfun before dereferencing.
	* d-codegen.h (current_irstate): Redefine as macro.
	* d-irstate.cc (IRState::IRState): Remove.
	(IRState::startFunction): Initialize language-specific cfun field.
	(IRState::endFunction): Free language-specific cfun field.
	* d-lang.cc (d_parse_file): Don't initialize current_irstate.
	* d-lang.h (language_function): Add irs field.
	* d-objfile.cc (Dsymbol::toObjFile): Check cfun.
	(FuncDeclaration::toObjFile): Adjust start and end calls.

2015-07-26  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-irstate.cc (IRState::doArraySet): Remove function.
	* d-codegen.cc (build_array_set): New function.
	* d-elem.cc (AssignExp::toElem): Use build_array_set.
	(StructLiteralExp::toElem): Likewise.

	* d-codegen.cc (build_array_set): Don't set this_block, update call to
	pop_binding_level.
	* d-irstate.cc (IRState::endFunction): Update assert.
	(IRState::startScope): Move IRState::startBindings here, clean-up.
	(IRState::endScope): Move IRState::endBindings here, clean-up.
	(IRState::startBindings): Remove function.
	(IRState::endBindings): Likewise.
	(IRState::currentScope): Likewise.
	(IRState::scopes_): Remove.
	* d-lang.cc (pop_binding_level): Update signature, clean-up.
	(d_pushdecl): Don't set names_end.
	(binding_level::names_end): Remove.
	(binding_level::this_block): Remove.
	(FuncDeclaration::toObjFile): Clean-up.

2015-07-24  Sebastien Alaiwan  <sebastien.alaiwan@gmail.com>

	* d-lang.cc (deps_write): Use StringTable instead of hash_set of string
	pointers.

2015-07-23  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-attribs.h: Adjust includes.
	* d-builtins.cc: Likewise.
	* d-codegen.cc: Likewise.
	* d-convert.cc: Likewise.
	* d-decls.cc: Likewise.
	* d-elem.cc: Likewise.
	* d-glue.cc: Likewise.
	* d-incpath.cc: Likewise.
	* d-irstate.cc: Likewise.
	* d-lang.cc: Likewise.
	* d-longdouble.cc: Likewise.
	* d-objfile.cc: Likewise.
	* d-port.cc: Likewise.
	* d-target.cc: Likewise.
	* d-todt.cc: Likewise.
	* toir.cc: Likewise.
	* types.cc: Likewise.

2015-07-22  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codegen.cc (convert_expr): Warn about casts between imaginary
	and non-imaginary types.
	* d-convert (d_convert_basic): Rename to convert, handle conversions
	between complex and imaginary types.
	(convert): Remove.
	(d_build_truthvalue_op): Update to call convert.
	(d_truthvalue_conversion): Likewise.

	* d-builtins.cc (d_init_builtins): Build imaginary types as distinct
	floating point type nodes.
	* d-codegen.cc (build_float_modulus): Update to handle imaginary types.
	(d_array_type): Use the front-end equivalent of sizetype to represent
	the index type of arrays.
	(build_array_index): Likewise.
	(build_offset_op): Likewise.
	(expand_intrinsic): Only get the inner callee if it's an address.

	* d-codegen.h (component_ref, modify_expr, vmodify_expr, build_vinit)
	(build_nop, build_vconvert, build_boolop, compound_expr)
	(vcompound_expr, real_part, imaginary_part): Move to d-codegen.cc,
	use fold build functions for codegen.
	* d-codeden.cc (build_address): Use build_fold_addr_expr_with_type,
	remove special handling of taking an address of an indirect ref.
	(return_expr): New function.
	(complex_expr): New function.
	(indirect_ref): Use fold build functions for codegen.
	(build_deref): Likewise.
	(build_array_index): Likewise.
	(build_offset_op): Likewise.
	(void_okay_p): Likewise.
	(build_binary_op): Likewise.
	(build_float_modulus): Likewise.
	* d-objfile.cc (FuncDeclaration::toObjFile): Likewise.
	* d-elem.cc (MinExp::toElem): Likewise.
	(AddExp::toElem): Likewise.
	(NotExp::toElem): Likewise.
	(ComExp::toElem): Likwise.
	(NegExp::toElem): Likewise.
	* d-irstate.cc (IRState::doLabel): Likewise.
	(IRState::doReturn): Likewise.
	(IRState::doJump): Likewise.

	* d-attribs.c: Adjust includes for flags.h changes.
	* d-builtins.cc: Likewise.
	* d-codegen.cc: Likewise.
	* d-convert.cc: Likewise.
	* d-elem.cc: Likewise.
	* d-decls.cc: Likewise.
	* d-glue.cc: Likewise.
	* d-incpath.cc: Likewise.
	* d-irstate.cc: Likewise.
	* d-lang.cc: Likewise.
	* d-longdouble.cc: Likewise.
	* d-objfile.cc: Likewise.
	* d-port.cc: Likewise.
	* d-target.cc: Likewise.
	* d-todt.cc: Likewise.
	* toir.cc: Likewise.
	* types.cc: Likewise.

2015-07-20  Sebastien Alaiwan  <sebastien.alaiwan@gmail.com>

	* d-lang.cc (is_system_module): Extract function.
	(write_one_dep): Extract function.
	(deps_write): Eliminate duplicated dependencies, include
	indirect and private dependencies.

2015-07-19  Sebastien Alaiwan  <sebastien.alaiwan@gmail.com>

	* d-lang.cc (d_parse_file): Set ref flag on the module and make deps
	file handle.

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

	* d-codegen.cc (convert_for_assignment): Remove handling of zero
	initialising a structure using memset.
	(d_build_call): Removing handling of setting of return slot
	optimisation on in call expression.
	* d-elem.cc (AssignExp::toElem): Emit a memset to zero initialise
	structures here.  Set return slot optimisation on construction of
	static arrays and structs only.

2015-07-07  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codegen.cc (expand_intrinsic_arith): Use build_deref to handle
	ref parameters being used for the 'overflow' parameter.

2015-07-03  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-elem.cc (StringExp::toElem): Zero-terminate all string literals
	types, except for static arrays.
	* d-objfile.cc (build_type_decl): Add TYPE_DECLs to global declarations,
	don't call rest_of_decl_declaration.
	(d_finish_compilation): Call rest_of_decl_declaration on TYPE_DECLs.
	(Dsymbol::toObjFile): Don't try to handle tuples when emitting import
	declarations to debug.
	* d-builtins.cc (builtin_sym): Use StructDeclaration for decl field.
	(build_dtype): Don't handle anonymous structs.  Create a stub parent
	module for the declaration symbol.
	(d_build_builtins_module): Always override the parent module of
	converted struct declarations.
	(maybe_set_builtin_1): Convert all static array parameters to ref
	parameters, not just va_list.

2015-07-01  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-attribs.c (d_handle_section_attribute): Use VAR_P throughout.
	(d_handle_weak_attribute): Use VAR_OR_FUNCTION_DECL_P.
	* d-codegen.cc (convert_for_assignment): Use VAR_P.
	* d-lang.cc (pop_binding_level): Likewise.
	(d_types_compatible_p): Likewise.
	* d-objfile.cc (setup_symbol_storage): Likewise.
	(mark_needed): Likewise.
	(d_finish_compilation): Likewise.

2015-06-30  Iain Buclaw  <ibuclaw@gdcproject.org>

	* intrinsics.def: Added ADDS, ADDSL, ADDU, ADDUL, SUBS, SUBSL, NEGS,
	NEGSL, MULS, MULSL, MULU, and MULUL intrinsic definitions.
	* d-codegen.cc (expand_intrinsic_arith): New function.
	(expand_intrinsic): Add cases for core.checkedint functions adds, addu,
	subs, subu, negs, muls, and mulu intrinsics.

2015-06-27  Iain Buclaw  <ibuclaw@gdcproject.org>

	* Make-lang.in (D_DMD_H): Remove.
	(D_TREE_H): Likewise.
	(CFLAGS-d/d-spec.o): Declare extra CFLAGS for building driver.
	(d-warn): Declare default warning flags for compiler.
	(D_DMD_OBJS): Remove 'dmd' from the object file suffix.
	(D_GLUE_OBJS): Remove 'cglue' and 'glue' from object file suffix.
	(D_GENERATED_OBJS): Remove 'gen' from the object file suffix.
	(D_BORROWED_C_OBJS): Remove.
	(CFLAGS-d/id.o): Declare extra CFLAGS for building generated sources.
	(CFLAGS-d/impcnvtab.o): Likewise.
	* types.cc (TypeVisitor::visit (TypeClass)): Build a pointer type for
	classes, not a reference type.
	* types.cc (TypeVisitor::visit (TypeDelegate)): Don't build a
	METHOD_TYPE for delegates, as that requires knowing the underlying
	record type for the 'this' object parameter.
	(TypeVisitor::visit (TypeEnum): Don't call rest_of_type_compilation.
	(TypeVisitor::visit (TypeClass): Likewise.
	(TypeVisitor::visit (TypeStruct): Likewise.
	* d-decls.cc (TypeInfoDeclaration::toSymbol): Assert class is a pointer
	type, not a reference type.
	(FuncDeclaration::toSymbol): Don't convert nested functions into a
	METHOD_TYPE to be strictly compatible with delegates.
	* d-codegen.cc (convert_for_argument): Use correct accessors for array
	.ptr and .length properties.
	(expand_intrinsic_vaarg): Don't remove the va_list pointer reference,
	as the backend now assumes this is what the front-end sets up.
	(d_build_call): Remove assert as delegates and nested functions are no
	longer represented as METHOD_TYPE.
	(build_vthis_type): New function.
	(d_decl_context): Don't set static/__gshared declaration context as
	anything other than the enclosing module of the declaration.
	* toir.cc (IRVisitor::visit (ExtAsmStatement)): Support named labels by
	calling resolve_asm_operand_names.
	* d-builtins.cc (d_backend_init): Remove.
	(d_backend_term): Remove.
	* d-lang.cc (d_write_global_declarations): Remove langhook.
	(d_init): Move d_backend_init implementation here.
	(d_parse_file): Move d_write_global_declarations implementation here.
	(d_finish_compilation): Remove calls to finalize_compilation_unit,
	check_global_declarations, and emit_debug_global_declarations.
	(d-system.h): Remove file.  Move all includes into local sources.

2015-06-22  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codegen.cc (d_build_call): Only apply CALL_EXPR_RETURN_SLOT_OPT to
	calls returning an aggregate.
	(expand_intrinsic): Use CALL_EXPR_FN and CALL_EXPR_ARG directly.
	(layout_aggregate_type): Update signature.
	(insert_aggregate_field): Likewise.
	(finish_aggregate_type): Likewise.
	* d-codegen.h (AggLayout): Remove helper class.
	(AddrOfExpr): Remove helper class.
	(CallExpr): Remove helper class.
	* d-elem.cc (InExp::toElem): Use build_address directly.
	(CatAssignExp::toElem): Likewise.
	(IndexExp::toElem): Likewise.
	(RemoveExp::toElem): Likewise.
	* types.cc (TypeVisitor::visit (TypeFunction)): Only apply
	TREE_ADDRESSABLE to function types returning an aggregate.
	(TypeVisitor::visit (TypeStruct)): Update for layout_aggregate_type and
	finish_aggregate_type changes.
	(TypeVisitor::visit (TypeClass)): Likewise.

2015-06-21  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-objfile.cc (setup_symbol_storage): Mark declarations as private or
	protected for the benefit of debug code.
	* d-elem.cc (ArrayLiteralExp::toElem): Only set a value at the given
	index in the array constructor if it is non-zero.
	(AssignExp::toElem): Use memset it assigning/initialising an array with
	all zeroes.
	(IndexExp::toElem): Simplify codegen to use a placeholder variable for
	the dollar length.
	(SliceExp::toElem): Likewise.
	* d-codegen.cc (ArrayScope): Remove helper class.
	* Make-lang.in (cc1d$(exeext)): Use link mutex.

2015-05-03  Iain Buclaw  <ibuclaw@gdcproject.org>

	* Make-lang.in (D_GLUE_OBJS): Rename d-ctype.cc to types.cc.
	(d-spec.o): Rename d-spec.cc to d-spec.c
	* types.cc (build_ctype): New function.
	(Type::toCtype): Convert toCtype methods to use Visitor interface.

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

	* Make-lang.in (D_GLUE_OBJS): Add d-attribs.o.  Remove d-gt.o.
	* d-attribs.c: New file.
	* d-builtins.cc: Move attribute handler functions to d-attribs.c
	* d-lang.cc: Likewise.  Added include for gtype-d.h from d-gt.cc.
	* d-gt.cc: Remove file.

2015-04-27  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-builtins.cc, d-convert.cc, d-ctype.cc, d-decls.cc, d-elem.cc,
	d-glue.cc, d-incpath.cc, d-irstate.cc, d-longdouble.cc, d-port.cc,
	d-target.cc, d-typinf.cc, toir.cc: Re-order included headers.
	* d-codegen.h, d-dmd-gcc.h, d-irstate.h, d-lang.h, d-objfile.cc,
	d-system.h: Remove all includes from headers.
	* d-codegen.cc: Re-order included headers.
	(build_attributes): Use ctfeInterpret instead of optimize.
	* d-lang.cc: Re-order included headers.
	(d_init_options): Don't use tristate enum for flag_emit_templates.
	(d_handle_option): Likewise.
	* d-objfile.cc: Re-order included headers.
	(output_declaration_p): Update check for flag_emit_templates.
	(setup_symbol_storage): Likewise.
	* d-todt.cc: Re-order included headers.
	(ExpInitializer::toDt): Use ctfeInterpret instead of optimize.
	(TypeInfoTupleDeclaration::toDt): Likewise.

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

	* d-codegen.cc (build_exception_object): Remove.
	* runtime.def (BEGIN_CATCH): Declare runtime function __gdc_begin_catch.
	* toir.cc (IRVisitor::visit::TryCatchStatement): Use LIBCALL_BEGIN_CATCH
	to get the correct exception object for handler.

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

	* d-codegen.cc (d_build_call): Set CALL_EXPR_RETURN_SLOT_OPT on calls to
	functions that return an aggregate or array that returns in memory.
	(build_memref): New function.
	(get_object_method): Use build_memref instead of building a
	POINTER_PLUS_EXPR for vtable dereferences.
	* d-objfile.cc (FuncDeclaration::toObjFile): Support NRVO on
	ARRAY_TYPE's that may not return in registers.
	* d-ctype.cc (TypeFunction::toCtype): Don't mark TREE_ADDRESSABLE when
	returning non-POD types by reference.

2015-04-15  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-decls.cc (EnumDeclaration::toDebug): Remove.
	(ClassDeclaration::toDebug): Remove.
	(StructDeclaration::toDebug): Remove.
	* d-ctype.cc (TypeEnum::toCtype): Call rest_of_type_compilation here.
	(TypeClass::toCtype): Likewise.
	(TypeStruct::toCtype): Likewise.

2015-04-12  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-objfile.cc (get_decl_tree): Check and generate correct code for when
	a non-local 'this' is accessed through a closure pointer.
	(FuncDeclaration::toObjFile): Remove check for _arguments.
	* d-codegen.cc (build_local_var): Likewise.

2015-04-11  Johannes Pfau  <johannespfau@gmail.com>

	* d-objfile.cc (setup_symbol_storage): Mark functions without
	body as DECL_EXTERNAL.

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

	* d-codegen.cc (get_decl_tree): Get correct non-local 'this' decl by
	constructing component reference through parent link of nested classes.
	* d-builtins.cc (DEF_FUNCTION_TYPE_VAR_8): Remove.
	(DEF_FUNCTION_TYPE_VAR_12): Likewise.
	(DEF_FUNCTION_TYPE_VAR_7, DEF_FUNCTION_TYPE_VAR_11): New macros.

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

	* d-objfile.cc (output_declaration_p): Remove check for semanticRun.
	(FuncDeclaration::toObjFile): Name bool parameter force_p, allow it to
	override the initial output_declaration_p check.  Force run all
	semantic passes for symbols that it routine is generating code for.
	(d_finish_function): Don't mark TREE_STATIC on functions that are
	really DECL_EXTERN.
	(finish_thunk): Force thunks referencing external methods to be
	expanded to gimple.
	* d-decls.cc (FuncDeclaration::toThunkSymbol): Call toObjFile on all
	thunk target functions.

2015-04-05  Johannes Pfau  <johannespfau@gmail.com>

	* d-lang.cc (d_handle_section_attribute): New function.
	* d-builtins.cc (handle_alias_attribute): Move to d-lang.cc to
	support attribute(alias) in user code.
	* d-lang.cc (d_handle_alias_attribute): Ditto.
	* d-lang.cc (d_handle_weak_attribute): New function.
	* d-decls.cc (FuncDeclaration::toSymbol): Do not set
	DECL_DECLARED_INLINE_P prematurely.

2015-03-21  Johannes Pfau  <johannespfau@gmail.com>

	* d-lang.cc (d_init): Add GNU_EMUTLS version.
	* d-objfile.cc (build_emutls_function): New function.
	* d-objfile.cc (VarDeclaration::toObjFile): Collect all TLS variables
	in a module into tlsVars array.
	* d-objfile.cc (genmoduleinfo): Add reference to __modtlsscan
	function generated by build_emutls_function to moduleinfo.

2015-02-02  Iain Buclaw  <ibuclaw@gdcproject.org>

	* config-lang.in: Remove lang_requires_boot_languages.
	* d-incpath.cc (iprefix): Remove global variable.
	(multilib_dir): Ditto.
	(prefixed_path): Add iprefix parameter.
	(add_import_paths): Add iprefix and imultilib parameter.
	Use cpp_include_defaults to get list of import paths.
	* d-lang.cc (iprefix_dir): New static variable to cache -iprefix switch.
	(imultilib_dir): New static variable to cache -imultilib switch.
	(d_init): Pass iprefix_dir and imultilib_dir to add_import_paths.
	(d_handle_option): Use new static variables.

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

	* d-lang.cc: Remove d-confdef.h header.
	* d-incpath.cc: Ditto.
	* d-spec.cc: Ditto.

2015-01-31  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-incpath.cc (add_phobos_versyms): Remove function.
	* d-lang.cc (d_init): Remove call to add_phobos_versyms.

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

	* d-builtins.cc (DEF_FUNCTION_TYPE_VAR_8)
	(DEF_FUNCTION_TYPE_VAR_12): New macros.

2015-01-24  Johannes Pfau  <johannespfau@gmail.com>

	* d-builtins.cc (d_build_builtins_module): Mark builtin functions
	as @nogc.

2015-01-18  Iain Buclaw  <ibuclaw@gdcproject.org>

	* Make-lang.in: Update for D frontend changes.
	* d-asmstmt.cc: Remove file.
	* d-builtins.cc (build_dtype): No longer set struct handle.
	(d_gcc_paint_type): Move to Target::paintAsType.
	* d-codegen.cc (convert_expr): No longer call getImpl on associative
	array conversions.  Add case for converting void pointers to delegates.
	(unhandled_arrayop_p): Remove.
	(build_two_field_type): Use layout_type instead of building
	TYPE_STUB_DECL and calling rest_of_decl_compilation.
	(build_binop_assignment): New function.
	(libcall_ids): Remove static variable.
	(get_libcall): New function.
	(maybe_set_intrinsic): Remove druntime library call handling.
	(expand_intrinsic_vaarg): Dereference ref va_list parameters.
	(build_closure): New function.
	(WrappedExp::WrappedExp): Move to frontend sources.
	(WrappedExp::toCBuffer): Ditto.
	* d-codegen.h (LibCallFlag): New enum.
	(LibCall): Use runtime.def macro to define members.
	* d-ctype.cc (Type::toCParamtype): Remove function.
	(TypeTypedef::toCParamtype): Ditto.
	(TypeClass::toSymbol): Ditto.
	(TypeFunction::retStyle): Move to retStyle.
	(TypeSArray::toCParamtype): Ditto.
	(Type::toSymbol): Ditto.
	(Type::totym): Ditto.
	(TypeFunction::totym): Ditto.
	* d-decls.cc (Dsymbol::toSymbolX): Update for frontend changes.
	(Dsymbol::toImport): Ditto.
	(VarDeclaration::toSymbol): Ditto.
	(FuncDeclaration::toSymbol): Ditto.
	(InterfaceDeclaration::toSymbol): Use TREE_READONLY instead of
	(EnumDeclaration::toDebug): Only call rest_of_type_compilation on
	ENUMERAL_TYPE types.
	TREE_CONSTANT to declare that the symbol cannot be modified.
	(ClassDeclaration::toVtblSymbol): Ditto.
	(AggregateDeclaration::toInitializer): Ditto.
	(EnumDeclaration::toInitializer): Ditto.
	(TypedefDeclaration::toInitializer): Remove function.
	(TypedefDeclaration::toDebug): Ditto.
	(Dsymbol::cvMember): Remove stub function.
	(EnumDeclaration::cvMember): Ditto.
	(FuncDeclaration::cvMember): Ditto.
	(VarDeclaration::cvMember): Ditto.
	(TypedefDeclaration::cvMember): Ditto.
	* d-elem.cc (XorExp::toElem): Remove call to unhandled_arrayop_p.
	(OrExp::toElem): Ditto.
	(AndExp::toElem): Ditto.
	(UshrExp::toElem): Ditto.
	(ShrExp::toElem): Ditto.
	(ShlExp::toElem): Ditto.
	(ModExp::toElem): Ditto.
	(DivExp::toElem): Ditto.
	(MulExp::toElem): Ditto.
	(MinExp::toElem): Ditto.
	(AddExp::toElem): Ditto.
	(XorAssignExp::toElem): Ditto.
	(OrAssignExp::toElem): Ditto.
	(AndAssignExp::toElem): Ditto.
	(UshrAssignExp::toElem): Ditto.
	(ShrAssignExp::toElem): Ditto.
	(ShlAssignExp::toElem): Ditto.
	(ModAssignExp::toElem): Ditto.
	(DivAssignExp::toElem): Ditto.
	(MulAssignExp::toElem): Ditto.
	(PowAssignExp::toElem): Ditto.
	(MinAssignExp::toElem): Ditto.
	(AddAssignExp::toElem): Ditto.
	(BinExp::toElemBin): Move to build_binop_assignment.
	(AssignExp::toElem): Update for frontend changes.
	(DelegatePtrExp::toElem): New function.
	(DelegateFuncptrExp::toElem): New function.
	(DelegateExp::toElem): Update for frontend changes.
	(FuncExp::toElem): Ditto.
	(NewExp::toElem): Ditto.
	(StringExp::toElem): Don't set TREE_READONLY on string literals.
	(AssocArrayLiteralExp::toElem): Remove codegen rewrite for new
	associative array implementation.
	* d-glue.cc (Global::isSpeculativeGagging): Remove function.
	(Dsymbol::ungagSpeculative): Ditto.
	(Ungag::~Ungag): Ditto.
	(Loc::toChars): Update for new column diagnostic support.
	(Loc::Loc): Ditto.
	(Loc::equals): Ditto.
	(error): Ditto.
	(binary): Remove function.
	(asmSemantic): New function.
	(retStyle): New function.
	(FuncDeclaration::isBuiltin): Rename to isBuiltin.
	* d-intrinsics.def: Rename to intrinsics.def.
	* d-irstate.cc (IRState::addExp): Remove old warning to catch statements
	with no side effects.  Now handled in frontend.
	* d-lang.cc (d_init_options): Update for frontend changes.
	(d_initialize_diagnostics): Remove function.
	(d_add_builtin_version): Update for frontend changes.
	(d_init): Ditto.
	(d_handle_option): Ditto.
	(d_post_options): Ditto.
	(d_parse_file): Ditto.
	* d-objfile.cc (Nspace::toObjFile): New function.
	(StructDeclaration::toObjFile): Update for frontend changes.
	(TypedefDeclaration::toObjFile): Remove function.
	(TemplateInstance::toObjFile): Update for frontend changes.
	(TemplateMixin::toObjFile): Ditto.
	(unnest_function): New function.
	(output_declaration_p): Update for frontend changes.
	(FuncDeclaration::toObjFile): Ditto.
	(FuncDeclaration::buildClosure): Move to buildClosure.
	(get_linemap): Update for frontend changes.
	(build_simple_function): Ditto.
	(build_call_function): Ditto.
	* d-target.cc (Target::va_listType): New function.
	(Target::paintAsType): Ditto.
	* d-todt.cc (dt_container2): Do not set TREE_READONLY on initialisers.
	(dt_container): Ditto.
	(ClassReferenceExp::toDt2): Update for C++ class support.
	(ClassReferenceExp::toInstanceDt): Ditto.
	(TypeTypedef::toDt): Remove function.
	(TypeInfoTypedefDeclaration::toDt): Ditto.
	(TypeInfoAssociativeArrayDeclaration::toDt): Update typeinfo size.
	(TypeInfoAssociativeArrayDeclaration::toDt): Remove reference to impl
	field in TypeInfo struct.
	(TypeInfoStructDeclaration::toDt): Update for frontend changes.
	* d-typinf.cc (Type::getTypeInfo): Update for frontend changes.
	(TypeTypedef::getTypeInfoDeclaration): Remove function.
	(createTypeInfoArray): Remove function.
	* runtime.def: New file.
	* toir.cc (IRVisitor::visit::DtorExpStatement): Remove function.
	(IRVisitor::visit::ExtAsmStatement): Update for frontend changes.

2015-01-17  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-elem.cc (UshrAssignExp::toElem): Remove integer promotion on left
	hand side of unsigned right shift expression.

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

	* d-system.h: Include hash-set.h, machmode.h, vec.h, double-int.h,
	input.h, alias.h, symtab.h and inchash.h due to flattening of tree.h.
	* d-gt.cc: Ditto.

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

	* d-codegen.h (build_boolop): Don't eagerly fold comparison expressions.


Copyright (C) 2015 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.
