2014-12-14  Iain Buclaw  <ibuclaw@gdcproject.org>

	* Make-lang.in (check_gdc_parallelize): Update for testsuite changes.
	* d-convert.cc (d_convert_basic): Avoid stack overflow when converting
	from pointer to integer.
	* d-objfile.cc (FuncDeclaration::toObjFile): Emit correct frame
	information for closures rather than generic void pointers.

2014-11-10  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-elem.cc (CatExp::toElem): Split dynamic arrays when passing as
	varargs to arraycatT and arraycatnT.

2014-11-09  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codegen.cc (build_vthis): Handle getting static chain for nested
	templated structs.

2014-09-07  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-elem.cc (ArrayLiteralExp::toElem): Remove special handling for
	immutable arrays.

2014-08-03  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-longdouble.cc (longdouble::formatHex): Convert buffer to uppercase
	for use in mangling templates.

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

	* d-elem.cc (NewExp::toElem): Check for opaque structs before
	continuing to generate the new expression.

	* d-lang.h.cc (d_vtbl_ptr_type_node): Renamed to vtbl_ptr_type_node.
	(d_boolean_type_node): Renamed to bool_type_node.
	(d_char_type_node): Renamed to char8_type_node.
	(d_wchar_type_node): Renamed to char16_type_node.
	(d_dchar_type_node): Renamed to char32_type_node.
	(d_ifloat_type_node): Renamed to ifloat_type_node.
	(d_idouble_type_node): Renamed to idouble_type_node.
	(d_ireal_type_node): Renamed to ireal_type_node.
	(byte_type_node, ubyte_type_node): New macros for fixed integral
	types in D.
	(short_type_node, ushort_type_node): Likewise.
	(int_type_node, uint_type_node): Likewise.
	(long_type_node, ulong_type_node): Likewise.
	(cent_type_node, ucent_type_node): Likewise.
	* d-builtins.c (d_init_builtins): Initialise all D specific type nodes.
	* d-codegen.cc (d_bounds_condition): Use D-specific type macros instead
	of backend C types.
	(layout_aggregate_type): Likewise.
	(build_integer_cst): Likewise.
	(build_boolop): Likewise.
	* d-convert.cc (d_build_truthvalue_op): Likewise.
	(d_truthvalue_conversion): Likewise.
	* d-ctype.cc (Type::toCtype): Likewise.
	* d-decls.cc (FuncDeclaration::toSymbol): Likewise.
	* d-elem.cc (CmpExp::toElem): Likewise.
	(OrOrExp::toElem): Likewise.
	(NotExp::toElem): Likewise.
	* d-lang.cc (d_type_for_mode): Likewise.
	(d_type_for_size): Likewise.
	(d_signed_or_unsigned_type): Likewise.

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

	* d-ctype.cc (TypeFunction::toCtype): Only check for ref return for
	functions returning non-void.

2014-07-21  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-objfile.cc (output_declaration_p): Don't emit any declarations from
	the gcc.attribute module.
	(StructDeclaration::toObjFile): Call output_declaration_p.
	* d-glue.cc (verror): Only call vasprintf on the initial format string.

2014-07-17  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-lang.cc (d_init_options_struct): Set flag_wrapv as on by default.

2014-07-14  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-elem.cc (NewExp::toElem): Don't initialise a new'd struct at the
	caller.  The callee ensures this is done.

2014-07-13  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-objfile.cc (d_finish_symbol): Always set TREE_STATIC for symbols
	being sent to the backend here.

2014-07-12  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-objfile.cc (d_finish_symbol): Don't set DECL_INITIAL if the
	initialiser is all zeros.

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

	* d-builtins.cc (lookup_ctype_name): Remove function.
	(string_type_node): Move to static declaration from d_global_trees.
	(const_string_type_node): Likewise.
	(wint_type_node): Likewise.
	(intmax_type_node): Likewise.
	(uintmax_type_node): Likewise.
	(signed_size_type_node): Likewise.
	(d_init_builtins): Update.
	* d-lang.cc (d_type_for_mode): Return only fixed size types.
	(d_type_for_size): Likewise.
	(d_signed_or_unsigned_type): Likewise.
	(d_unsigned_type): Remove duplicated code from
	d_signed_or_unsigned_type.
	(d_signed_type): Likewise.

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

	* d-objfile.cc (finish_thunk): Use set_decl_section_name, copy the
	implicit section flag.
	(setup_symbol_storage): Use decl_default_tls_model.

2014-06-26  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codegen.h (d_types_compatible): Remove function.
	(d_types_same): Use more conservative approach to type equality.
	* d-codegen.cc (get_libcall): Allow backend to be able to optimise
	closure memory allocations.
	(convert_for_assignment): Use d_types_same.
	* d-elem.cc (CatExp::toElem): Likewise.
	(BinExp::toElemBin): Likewise.
	(CatAssignExp::toElem): Likewise.
	(StructLiteralExp::toElem): Likewise.

2014-06-14  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-elem.cc (CondExp::toElem): Handle void type condition expressions.
	(AssignExp::toElem): Use ismemset to test for initialising arrays with
	a single value.
	(StructLiteralExp::toElem): Build static initialiser if a symbol was
	created by the front-end.
	* d-codegen.h (d_types_compatible): First check equality of types, then
	implicit compatibility.
	* d-convert.cc (d_default_conversion): Remove function, fold
	implementation into...
	(d_truthvalue_conversion): ... here.

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

	* d-convert.cc (d_scalar_conversion): Remove function.
	(d_build_truthvalue_op): Update.
	(d_truthvalue_conversion): Update.

	* d-codegen.cc (get_frame_for_symbol): Remove glue-specific error
	messages and refactor.
	(build_vthis): Likewise.
	(get_framedecl): Likewise.
	* d-elem.cc (AssignExp::toElem): Update call to build_vthis.
	(NewExp::toElem): Likewise.
	(StructLiteralExp::toElem): Likewise.
	* d-objfile.cc (Dsymbol::toObjFile): Fix build warning.

	* d-codegen.cc (d_decl_context): Always return parent context for
	functions nested in functions.
	(is_degenerate_closure): Remove function.
	(needs_static_chain): Remove function.
	* d-decls.cc (FuncDeclaration::toSymbol): Remove workaround for cgraph
	nesting structure, saving the original context decl.
	* d-lang.h (D_DECL_STATIC_CHAIN): Remove macro.
	* d-objfile.cc (Symbol::Symbol): Remove ScontextDecl field.
	(FuncDeclaration::toObjFile): Remove workaround for cgraph nesting
	structure, restoring the original context decl.  Delay building the
	cgraph node until...
	(d_finish_function): ... here, where the function is unnested.

2014-06-11  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-objfile.cc (d_finish_function): Update the callgraph to reflect
	unnesting of the function, as unravelling has already been handled by
	the frontend.  Do not delay calling cgraph_finalize_function.

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

	* d-objfile.cc (d_comdat_group): Return a decl.
	* d-decl.cc (FuncDeclaration::toThunkSymbol): Don't set comdat group.
	* d-elem.cc (EqualExp::toElem): Always store temporaries when comparing
	two dynamic arrays.

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

	* d-decls.cc (TypeInfoDeclaration::toSymbol): Add assert that Error
	types never reach the backend.
	* d-typinf.cc (Type::getTypeInfo): Likewise.

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

	* dfrontend: Update to D front-end version 2.065.

	* d-codegen.cc (d_build_call): Evaluate side effects of the object
	parameter for method or delegate calls before passing.
	(libcall_ids): Rename _d_array_bounds to _d_arraybounds.
	(get_libcall): Update parameter types for _d_arraycopy.
	(finish_aggregate_type): Update for frontend UDA changes.
	* d-ctype.cc (TypeTypedef::toCtype): Update for frontend UDA changes.
	(TypeEnum::toCtype): Likewise.
	(TypeStruct::toCtype): Likewise.
	(TypeClass::toCtype): Likewise.
	* d-elem.cc (BoolExp::toElem): New function.
	* d-lang.cc (rootmodule): New declaration for frontend entrypoint
	changes.
	(genCmain): Update for frontend entrypoint changes.
	(d_handle_option): Don't duplicate memory for argument values.
	(d_parse_file): Don't duplicate memory for source filenames.
	* d-objfile.cc (VarDeclaration::toObjFile): Don't emit instantiated
	manifest constants to debug.
	(TemplateInstance::toObjFile): Update for frontend changes.
	(output_template_p): Remove function.
	(output_declaration_p): Update for frontend changes.
	(setup_symbol_storage): Update for frontend UDA changes.
	* d-target.cc (Target::reverseCppOverloads): New declaration.
	* d-typinf.cc (Type::getInternalTypeInfo): Update for frontend changes.
	(Type::getTypeInfo, Type::getTypeInfoDeclaration): Likewise.
	(TypeTypedef::getTypeInfoDeclaration): Likewise.
	(TypePointer::getTypeInfoDeclaration): Likewise.
	(TypeDArray::getTypeInfoDeclaration): Likewise.
	(TypeSArray::getTypeInfoDeclaration): Likewise.
	(TypeAArray::getTypeInfoDeclaration): Likewise.
	(TypeStruct::getTypeInfoDeclaration): Likewise.
	(TypeClass::getTypeInfoDeclaration): Likewise.
	(TypeVector::getTypeInfoDeclaration): Likewise.
	(TypeEnum::getTypeInfoDeclaration): Likewise.
	(TypeFunction::getTypeInfoDeclaration): Likewise.
	(TypeDelegate::getTypeInfoDeclaration): Likewise.
	(TypeTuple::getTypeInfoDeclaration): Likewise.
	(createTypeInfoArray): Likewise.

	* d-intrinsics.def: New file for declaring D intrinsics.

	* d-builtins.cc (std_intrinsic_module, std_math_module)
	(core_math_module, va_arg_template, va_arg2_template)
	(va_start_template): Remove declarations.
	(is_intrinsic_module_p, is_math_module_p, is_builtin_va_arg_p)
	(is_builtin_va_start_p, d_gcc_magic_stdarg_check)
	(d_gcc_magic_stdarg_module): Remove functions.
	(d_gcc_magic_builtins_module): Rename to d_build_builtins_module.
	(d_gcc_magic_libbuiltins_module): Rename to maybe_set_builtin.
	(d_gcc_magic_libbuiltins_check): Rename to maybe_set_builtin_1.
	(gcc_type_to_d_type): Rename to build_dtype.
	(gcc_cst_to_d_expr): Rename to build_expression.
	(d_gcc_eval_builtin): Remove function.
	(eval_builtin): Moved to...
	* d-glue.cc (eval_builtin): New function, updated for glue changes.
	(FuncDeclaration::isBuiltin): New function to determine whether a
	given function symbol is a compiler intrinsic.
	* d-codegen.cc (maybe_expand_builtin): Rename to expand_intrinsic.
	(Intrinsic): Remove enum declaration, replaced with...
	(intrinsic_code): New enum for compiler intrinsics.
	(intrinsic_decls): New declaration for store intrinsic information.
	(expand_intrinsic_bt): Update signature.
	(maybe_set_intrinsic): New function to replace...
	(maybe_set_builtin_frontend): Remove function.
	* d-decls.cc (FuncDeclaration::toSymbol): Update for glue changes.

	* d-builtins.c: Rename to d-builtins.cc
	* d-gt.c: Rename to d-gt.cc
	* d-spec.c: Rename to d-spec.cc

	* d-toir.cc: Renamed to toir.cc
	* toir.cc: New file, re-implement toIR methods as a visitor.

	* d-codegen.cc (insert_type_modifiers): Handle MODwildconst modifiers.
	(build_ir): New function.
	* d-objfile.cc (FuncDeclaration::toObjFile): Use build_ir to walk
	front-end IR trees.
	* d-decls.cc (VarDeclaration::toSymbol): Mark compiler temporaries as
	DECL_ARTIFICIAL.
	(ClassDeclaration::toVtblSymbol): Update for front-end changes.
	* d-builtins.c (gcc_type_to_d_type): Likewise.
	* d-elem.cc (CatAssignExp::toElem): Likewise.
	(ArrayLiteralExp::toElem): Likewise.
	(BoolExp::toElem): Remove function.
	(ComExp::toElem): Assert that unhandled array operations no longer
	leak from the front-end.
	(NegExp::toElem): Likewise.
	* d-glue.cc (Global::init): Initialise new member run_noext.
	* d-incpath (add_import_path): Update for front-end changes.
	* d-lang.cc (d_add_builtin_version): Likewise.
	* d-todt.cc (StructDeclaration::toDt): Likewise.
	* d-toir.cc (LabelStatement::toIR): Don't delete forward references.
	(GotoStatement::toIR): Assert that undefined labels no longer leak
	from the front-end.

2014-05-31  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-todt.cc (dt_container): Properly handle zero length static arrays.
	* d-codegen.h (build_dtype): Rename to lang_dtype.
	(build_ddecl): Rename to lang_ddecl.

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

	* d-builtins.c (d_init_builtins): Use void_node instead of
	d_void_zero_node.
	* d-lang.h (d_void_zero_node): Remove.
	* d-elem.cc (AndAndExp::toElem): Adjust.
	(OrOrExp::toElem): Likewise.
	(AssertExp::toElem): Likewise.
	(TupleExp::toElem): Likewise.

	* d-builtins.c (d_init_builtins): Use null_pointer_node instead of
	d_null_pointer.
	* d-lang.h (d_null_pointer): Remove.
	* d-codegen.cc (convert_expr): Adjust.
	(get_frame_for_symbol): Likewise.
	(build_vthis): Likewise.
	(get_framedecl): Likewise.
	* d-elem.cc (DeleteExp::toElem): Likewise.
	(CallExp::toElem): Likewise.
	(AssertExp::toElem): Likewise.
	(NewExp::toElem): Likewise.
	(ArrayLiteralExp::toElem): Likewise.
	(NullExp::toElem): Likewise.
	* d-objfile.cc (ClassDeclaration::toObjFile): Likewise.
	(InterfaceDeclaration::toObjFile): Likewise.
	(FuncDeclaration::toObjFile): Likewise.
	(build_moduleinfo): Likewise.
	* d-todt.cc (TypeInfoTypedefDeclaration::toDt): Likewise.
	(TypeInfoEnumDeclaration::toDt): Likewise.
	(TypeInfoStructDeclaration::toDt): Likewise.

2014-05-18  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-longdouble.cc (longdouble::from_shwi): Rename to from_int.
	(longdouble::from_uhwi): Rename to from_uint.
	(longdouble::to_shwi): Rename to to_int.
	(longdouble::to_uhwi): Rename to to_uint.
	(longdouble::set): Adjust.
	(longdouble::operator): Likewise.

	* d-lang.cc (alloc_binding_level): Adjust.
	(build_d_type_lang_specific): Likewise.
	(build_d_decl_lang_specific): Likewise.
	* d-lang.h (lang_type): Don't use variable_size gty attribute.
	* d-codegen.cc (cst_to_hwi): Remove function.
	* d-codegen.cc (tree_to_hwi): Remove function.
	* d-builtins.c (gcc_type_to_d_type): Adjust.
	(gcc_cst_to_d_expr): Likewise.
	* d-convert.cc (d_truthvalue_conversion): Use integer_zerop.
	(get_nonnull_operand): Use tree_fits_uhwi_p.
	* d-longdouble.cc (longdouble::from_int): Adjust.
	(longdouble::from_uint): Likewise.
	(longdouble::to_int): Likewise.

2014-04-30  Johannes Pfau  <johannespfau@gmail.com>

	* d-lang.cc (d_init): Define GNU_SEH_Exceptions and
	GNU_DWARF2_Exceptions versions.

2014-04-21  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-lang.cc (d_init_options): Default deprecation warnings to off.
	* d-ctype.cc (TypeDelegate::toCtype): Propogate TREE_ADDRESSABLE from
	the base function to the delegatised copy.

2014-04-15  Johannes Pfau  <johannespfau@gmail.com>

	* d-lang.cc (d_handle_noclone_attribute): New function to handle
	noclone attribute. noclone is required by the naked attribute.
	* d-elem.cc (SymbolExp::toElem): Convert symbols to the expression
	type.

2014-04-13  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codegen.cc (get_frameinfo): Don't copy the node for frame record.
	* d-irstate.cc (IRState::endCatches): Rebuild the STATEMENT_LIST of
	catches in a TRY_CATCH_EXPR if it gets optimised away by
	IRState::popStatement.
	* d-codegen.cc (d_attribute_p): Provide access to target attributes.

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

	* d-codegen.cc (error_mark_p): Removed function, replace uses with
	error_operand_p.
	(error_mark): Removed function, replace uses with error_mark_node.
	* d-ctype.cc (Type::toCtype): Return d_unknown_type_node for frontend
	error types.
	* d-objfile.cc (VarDeclaration::toObjFile): Don't build CONST_DECLs for
	non-scalar manifests.

2014-03-23  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-decls.cc (Dsymbol::toImport): Prevent GC from collecting
	IMPORTED_DECL nodes whilst front-end compilation in progress.

2014-03-19  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codegen.cc (AggLayout::visit): Rename to layout_aggregate_type.
	(AggLayout::doFields, AggLayout::doInterfaces): Remove function and
	move implementation into layout_aggregate_type.
	(AggLayout::addField): Rename to insert_aggregate_field.
	(AggLayout::finish): Rename to finish_aggregate_type.
	* d-codegen.h (AggLayout): Update definition.
	* d-ctype.cc (TypeStruct::toCtype): Update for glue changes.
	(TypeFunction::toCtype): Fix ICE on generic function types.
	(TypeClass::toCtype): Move generation of vptr and monitor fields into
	layout_aggregate_type.  Moved generation of TYPE_METHODS from ...
	* d-objfile.cc (FuncDeclaration::toObjFile): ... here into
	TypeClass::toCtype.  Don't build up TYPE_METHODS on a per-function
	basis, generate the entire vtable.

2014-03-18  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-decls.cc (Dsymbol::toSymbolX): Set the symbol prettyIdent.
	(Dsymbol::toImport): Emit packages as their fully qualified names.
	(ClassDeclaration::toSymbol): Distinguish between the classinfo
	assembler and decl name.
	(InterfaceDeclaration::toSymbol): Likewise for interface symbol.
	(Module::toSymbol): Likewise for moduleinfo symbol.
	(ClassDeclaration::toVtblSymbol): Likewise for class vtable symbol.
	(AggregateDeclaration::toInitializer)
	(TypedefDeclaration::toInitializer, EnumDeclaration::toInitializer):
	Likewise for default initialisers.
	* d-objfile.cc (Module::genobjfile): Don't set-up moduleinfo symbol
	storage twice.

2014-03-17  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codegen.cc (d_decl_context): Fix null pointer dereference.
	* d-objfile.cc (FuncDeclaration::toObjFile): Don't override the setting
	of DECL_CONTEXT on the declaration here.
	(d_finish_symbol): Likewise.
	* d-objfile.cc (VarDeclaration::toObjFile): Move the generation of
	manifest constants to ...
	* d-decls.cc (VarDeclaration::toSymbol): ... here, and emit them as
	CONST_DECLs.  Set the DECL_CONTEXT for all variable symbols.

	* d-builtins.cc (d_gcc_magic_builtins_module): Don't store compiler
	generated builtins in Symbol::isym, use Symbol::csym instead.
	(d_gcc_magic_libbuiltins_check): Likewise.
	* d-codegen.cc (d_decl_context): Return the imported symbol tree of
	modules where the NAMESPACE_DECL is now stored.
	(d_build_module): Remove function.  Move implementation to ...
	* d-decls.cc (Dsymbol::toImport): ... here.  Build an IMPORTED_DECL for
	all imported declarations.
	(FuncDeclaration::toSymbol): Remove special handling of Symbol::isym.
	(Module::toSymbol): Remove call to d_build_module.
	* d-objfile.cc (Dsymbol::toObjFile): Handle emission of IMPORTED_DECL
	symbols to debug.

2014-03-16  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codegen.cc (build_attributes): Ensure D-specific attributes have
	their value interpreted through CTFE.

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

	* d-codegen.cc (d_build_module): Update signature to accept a Loc
	location to the module declaration.
	* d-decls.cc (Module::toSymbol): Update call to d_build_module.
	Set TREE_PUBLIC/DECL_EXTERNAL to distingush which modules are being
	compiled.
	* d-objfile.cc (Dsymbol::toObjFile): Handle Import symbols, and emit
	debug information for imported modules.
	(ImportStatement::toIR): Likewise.
	(set_input_location): New function to implement the equivalent of
	set_decl_location, but instead sets input_location.

2014-02-19  Johannes Pfau  <johannespfau@gmail.com>

	* d-objfile.cc (build_call_function): Call set_input_location
	to set debug info correctly

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

	* d-objfile.cc (VarDeclaration::toObjFile): Remove toplevel check.
	DECL_CONTEXT is never set on manifest constants.
	(d_finish_compilation): Remove fancy check on force outputting
	symbols to object file.
	(build_type_decl): Don't emit the qualified identifier in debug
	information.  The fully qualified name is now determined through the
	NAMESPACE_DECL context chain.
	* d-ctype.cc (TypeEnum::toCtype): Likewise for enum members.
	(VarDeclaration::toSymbol): Likewise for static variables.
	(FuncDeclaration::toSymbol): Likewise for functions.

	* d-decls.cc (FuncDeclaration::toSymbol): Don't emit the 'D main'
	symbol to debug as plain 'main'.
	* d-objfile.cc (VarDeclaration::toObjFile): Don't emit the qualified
	identifier of manifest constants in debug information.

2014-02-17  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codegen.cc (d_build_module): New function.
	* d-decls.cc (Module::toSymbol): Use d_build_module to build up the
	qualified module namespace.

	* d-codegen.cc (expand_intrinsic_op, expand_intrinsic_op2): New
	functions to build a call to a builtin code.
	(expand_intrinsic_bsr, expand_intrinsic_bt): New functions to expand a
	BUILTIN_FRONTEND call to core.bitop intrinsics.
	(expand_intrinsic_vaarg, expand_intrinsic_vastart): New functions to
	expand a BUILTIN_FRONTEND call to core.vararg intrinsics.
	(maybe_expand_builtin): Update.

2014-02-16  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-decls.cc (Module::toSymbol): Build a NAMESPACE_DECL to populate the
	DECL_CONTEXT of toplevel functions.
	* d-codegen.cc (d_decl_context): Return the enclosing module
	NAMESPACE_DECL as the decl context only when the symbol is extern(D)
	and not D main.

2014-02-15  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-decls.cc (VarDeclaration::toSymbol): Don't call
	setup_symbol_storage until after SET_DECL_ASSEMBLER_NAME has been set.

	* d-decls.cc (VarDeclaration::toSymbol): Give prettyIdent precedence
	for the DECL_NAME over the simple identifier.
	(FuncDeclaration::toSymbol): Likewise.
	* d-objfile.cc (d_finish_symbol): Remove setting DECL_NAME as
	prettyIdent, this has already been done in Declaration::toSymbol.
	(d_finish_function): Likewise.

	* d-decls.cc (VarDeclaration::toSymbol): Call set_user_assembler_name
	if pragma(mangle) was seen.
	(FuncDeclaration::toSymbol): Likewise.

2014-02-12  Johannes Pfau  <johannespfau@gmail.com>

	* d-decls.cc (FuncDeclaration::toSymbol): Do not set TREE_NOTHROW on
	nothrow functions.
	* d-decls.cc (TypeInfoDeclaration::toSymbol): Call relayout_decl after
	changing the type.

2014-02-03  Iain Buclaw  <ibuclaw@gdcproject.org>


	* d-codegen.cc (d_build_call): Remove special handling of
	flag_split_darrays switch.
	(maybe_expand_builtin): Likewise.
	* d-elem.cc (CatExp::toElem): Likewise.
	* lang.opt (fsplit-dynamic-arrays): Remove.

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

	* d-glue.cc (readFile, writeFile, ensurePathToNameExists): Define.
	* d-incpath.cc (add_import_path): Update for frontend changes.
	(add_fileimp_path): Likewise.
	* d-lang.cc (deps_write): Likewise.
	(d_parse_file): Likewise.
	* d-todt.cc (Dts): Update define for frontend changes.
	* d-decls.cc (ClassDeclaration::toVtblSymbol): Don't mark __vtbl
	symbols as virtual.  They are global static symbols.

2014-01-12  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-decls.cc (EnumDeclaration::toDebug): Build TYPE_DECL only for
	enumeral types.

2014-01-06  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-ctype.cc (TypeClass::toCtype): Don't add __monitor field for
	extern(C++) classes.

	* d-builtins.c (d_gcc_magic_module): Remove tdata.
	* d-codegen.cc (build_interface_binfo): Likewise.
	* d-ctype.cc (TypeEnum::toCtype): Likewise.
	(TypeClass::toCtype): Likewise.
	* d-lang.cc (deps_write): Likewise.

2014-01-05  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-ctype.cc (TypeEnum::toCtype): Don't push CONST_DECLs into current
	function.
	* d-decls.cc (FuncDeclaration::toThunkSymbol): Don't mark symbol as
	TREE_PRIVATE, just TREE_PUBLIC as false.
	(StructLiteralExp::toSymbol): Likewise.
	(ClassReferenceExp::toSymbol): Likewise.
	* d-objfile.cc (d_comdat_linkage): Likewise.
	(d_finish_symbol): Likewise.
	(build_moduleinfo): Likewise.

	* config-lang.in: Add d-lang.cc to gtfiles.
	* d-irstate.h (IRState::varsInScope): Change from Array to vec<> type.
	(IRState::statementList_): Likewise.
	(IRState::scopes_): Likewise.
	(IRState::loops_): Likewise.
	(IRState::labels_): Likewise.
	* d-lang.h (d_bi_builtin_func): Remove declaration.
	(d_bi_builtin_type): Likewise.
	(d_keep_list): Likewise.
	* d-objfile.h (Symbol::thunks): Change from Array to vec<> type.
	(ModuleInfo::classes): Likewise.
	(ModuleInfo::ctors): Likewise.
	(ModuleInfo::dtors): Likewise.
	(ModuleInfo::ctorgates): Likewise.
	(ModuleInfo::sharedctors): Likewise.
	(ModuleInfo::shareddtors): Likewise.
	(ModuleInfo::sharedctorgates): Likewise.
	(ModuleInfo::unitTests): Likewise.
	(build_simple_function): Remove declaration.
	(build_call_function): Likewise.
	(build_ctor_function): Likewise.
	(build_dtor_function): Likewise.
	(build_unittest_function): Likewise.
	* d-builtins.c (bi_fn_list): Rename to gcc_builtins_functions.
	(bi_lib_list): Rename to gcc_builtins_libfuncs.
	(bi_type_list): Rename to gcc_builtins_types.
	(builtin_converted_types): Remove.
	(builtin_converted_decls): Change from Array to vec<> type.
	(gcc_type_to_d_type): Update.
	(d_bi_builtin_func): Remove and move to d_builtin_function.
	(d_bi_builtin_type): Remove and move to d_register_builtin_type.
	(d_gcc_magic_builtins_module): Update.
	* d-ctype.cc (TypeClass::toCtype): Remove unused var.
	* d-decls.cc (FuncDeclaration::toThunkSymbol): Update for change to
	vec<> type.
	* d-elem.cc (CatExp::toElem): Change stashed vars from Array to vec<>.
	(Expression::toElemDtor): Update for change to vec<> type.
	* d-irstate.cc (IRState::startFunction): Likewise.
	(IRState::endFunction): Likewise.
	(IRState::addExp): Likewise.
	(IRState::pushStatementList): Likewise.
	(IRState::popStatementList): Likewise.
	(IRState::getLabelBlock): Likewise.
	(IRState::getLoopForLabel): Likewise.
	(IRState::beginFlow): Likewise.
	(IRState::endFlow): Likewise.
	(IRState::startScope): Likewise.
	(IRState::pushLabel): Likewise.
	(IRState::checkGoto): Likewise.
	(IRState::checkPreviousGoto): Change from Array to Blocks type.
	* d-lang.cc (global_declarations): Change from Array to vec<> type.
	(d_add_global_declaration): Update for change to vec<> type.
	(d_write_global_declarations): Likewise.
	(d_keep_list): Make static to source file.
	* d-objfile.cc (static_ctor_list): Change from Array to vec<> type.
	(static_dtor_list): Likewise.
	(Module::genobjfile): Update for change to vec<> type.
	(d_finish_module): Likewise.
	(d_finish_function): Likewise.
	(deferred_thunks): Change from ArrayBase<> to vec<> type.
	(write_deferred_thunks): Update for change to vec<> type.
	(use_thunk): Likewise.
	(build_simple_function): Make static to source file.
	(build_call_function): Likewise.
	(build_ctor_function): Likewise.
	(build_dtor_function): Likewise.
	(build_unittest_function): Likewise.

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

	* d-objfile.cc (setup_symbol_storage): Use output_module_p on template
	instantiating module to determine if symbol is externally compiled.
	(d_finish_function): Set function local if function body was compiled.
	* d-decls.cc (Dsymbol::toSymbolX): Use unsigned integer format for the
	prefix string length.

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