2016-02-22  Eugene Wissner <belka@caraus.de>

	* d-lang.cc (d_init): Remove short_double parameter from
	build_common_tree_nodes.

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

	* intrinsics.def: Split signature macros into three groups.
	Attributes, types, and helper generators.
	* d-elem.cc (needsPostblit): Change signature to return boolean,
	updated all callers.
	(AssignExp::toElem): Don't assign destination to a temporary in
	arraycopy call.
	* toir.cc (IRVisior::visit(ThrowStatement)): Use NOP_EXPR cast to
	convert thrown exception to Object.
	(IRVisitor::visit(TryCatchStatement)): Use NOP_EXPR cast to convert
	caught Object to thrown exception.
	* d-codegen.cc (void_okay_p): Lazily build the convert to type.
	* d-lang.cc (parse_int): Remove function.
	(d_handle_option): Use integral_argument to parse numbers.

	* d-codegen.cc (lower_struct_comparison): Built custom type if
	lang_hooks.types.type_for_mode returns nothing.
	* d-lang.cc (d_type_for_mode): Always support cent/ucent modes.
	(d_type_for_size): Add support for cent/ucent precision types.
	(d_signed_or_unsigned_type): Always support cent/ucent precisions.

	* d-codegen.cc (d_build_call): Remove type promotion handling for
	variadic arguments.
	(expand_intrinsic_vaarg): Likewise.
	* d-lang.cc (d_type_promotes_to): Likewise.

	* d-elem.cc (AddrExp::toElem): Take address of the static const symbol
	for the struct literal,  not the const constructor.
	(CallExp::toElem): Don't pass generated static struct literal symbol
	as the object parameter for DotVar call expressions.

	* d-codegen.cc (type_va_array): New function.
	(declaration_type_kind): Remove function.
	(declaration_reference_p): New function, update all callers of
	declaration_type_kind.
	(argument_type_kind): Remove function.
	(argument_reference_p): New function, update all callers of
	argument_type_kind.
	(build_address): Remove special handling of static array va_list.
	* d-codegen.h (type_kind): Remove enum.

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

	* d-codegen.cc (build_condition): New function.  Update all callers
	that generate a COND_EXPR that returns a value to use it.
	(build_vcondition): New function.  Update all callers that generate a
	void COND_EXPR to use it.
	* toir.cc (IRVisitor::visit(DoStatement)): Build a COND_EXPR instead
	of an EXIT_EXPR to break from the loop.
	(IRVisitor::visit(ForStatement)): Likewise.

2016-02-14  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-elem.cc: Remove redundant IRState parameter from all lowering
	routines for expressions, update all callers.

2016-02-07  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codegen.cc (build_array_set): Use POSTINCREMENT_EXPR to adjust
	array pointer.
	(identity_compare_p): New function.
	(build_struct_memcmp): Refactor into ...
	(lower_struct_comparison): ... New function.
	(build_struct_comparison): New function.
	(build_array_struct_comparison): New function.
	* d-elem.cc (IdentityExp::toElem): Use build_struct_comparison for
	RECORD_TYPE values.
	(EqualExp::toElem): Likewise.
	Use memcmp for array of structs that pass test for identity_compare_p,
	or fallback to build_array_struct_comparison.
	(NewExp::toElem): Remove setting of StructLiteralExp::fillHoles.
	(StructLiteralExp::toElem): Ignore StructLiteralExp::fillHoles, unless
	building a union literal.

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

	* d-elem.cc (AssignExp::toElem): Pass parameters for arraycopy and
	arrayassign in the correct order.

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

	* longdouble.h (longdouble): Use one contiguous array for the
	real_value data payload.

2016-01-23  Iain Buclaw  <ibuclaw@gdcproject.org>

	* toir.cc (IRVisitor::visit (ExtAsmStatement): Do validation of input
	and output constraints, marking operands as addressable if requested.

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

	* d-codegen.cc (empty_aggregate_p): New function.
	(d_build_call): Don't pass empty aggregates by value.
	(build_struct_memcmp): Don't compare empty aggregates by value.
	* d-elem.cc (IdentityExp::toElem): Likewise.
	(EqualExp::toElem): Likewise.
	* (StructLiteralExp::toElem): Don't create temporaries or initialize
	holes for empty	aggregates.
	* d-lang.cc (empty_modify_p): New function.
	(d_gimplify_expr): Remove assignments that involve empty aggregates.

2016-01-09  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-builtins.cc (d_builtin_type): Define DEF_FUNCTION_TYPE_9,
	DEF_FUNCTION_TYPE_10, and DEF_FUNCTION_TYPE_11.
	(d_init_builtins): Likewise.
	* d-longdouble.cc (machineMode): Remove function.
	(longdouble::init): Don't use initialize real format by reference.
	(longdouble::operator+): Use real_arithmetic instead of
	REAL_ARITHMETIC.
	(longdouble::operator-): Likewise.
	(longdouble::operator*): Likewise.
	(longdouble::operator/): Likewise.
	(longdouble::operator%): Likewise.
	* d-port.cc (Port::isSignallingNan): Use REAL_VALUE_ISSIGNALING_NAN.
	(Port::fequal): Use real_identical instead of REAL_VALUES_IDENTICAL.
	* d-target.cc: Include stor-layout.h header.
	* lang.opt: Remove documentation for switches defined elsewhere.

2016-01-09  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codegen.cc (get_libcall): Use set_call_expr_flags to apply runtime
	function attributes.
	* d-codegen.h (LibCallFlag): Remove type.
	* runtime.def: Replace LibCallFlag with ECF everywhere.

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