2005-12-13  Paul Brook  <paul@codesourcery.com>

	* config/arm/bpabi.h (SUBTARGET_EXTRA_ASM_SPEC): Pass -meabi=gnu for
	apcs/atpcs.

2005-12-07  Paul Brook  <paul@codesourcery.com>

	* arm.c (output_move_double): Fix typo in PRE_DEC strd template.

2005-10-31  Paul Brook  <paul@codesourcery.com>

	* config/arm/thumb2.md (subdi_zesidi_di, subdi_sesidi_di): Remove
	broken/inefficient patterns.

2005-10-26  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.md (pic_add_dot_plus_four): Use correct operand.

2005-10-25  Paul Brook  <paul@codesourcery.com>

	Backport form gcc-3_4-branch
	2004-04-22  Per Bothner  <per@bothner.com>
	* cppinit.c (cpp_read_main_file):  Return NULL rather than false.
	Fixes PR preprocessor/15067.

2005-10-24  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (output_move_double): Disable stmib and stmda on
	Thumb-2.

2005-10-23  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (arm_elf_asm_constructor): Fix buffer overrun.

2005-10-22 Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (arm_load_pic_register): Pass extra reg to
	gen_pic_add_dot_plus_*. Handle Thumb-2.
	* config/arm/arm.md (pic_add_dot_plus_four): Use match_operand instead
	of match_dup.
	(pic_add_dot_plus_eight): Ditto.
	Remove constraints from peephole2.  Use match_dup in output template.
	* config/arm/thumb2.md (pic_load_dot_plus_four): Use match_operand
	instead of match_dup.
	* testsuite/gcc.dg/tls/opt-10.c: New test.

2005-10-20  Nathan Sidwell  <nathan@codesourcery.com>

	* gcc/unwind-arm.h: Reorder interface function declarations.
	(_URC_END_OF_STACK): New enumeration value.
	(_US_UNWIND_ACTION_MASK, _US_FORCE_UNWIND, _US_END_OF_STACK): Likewise.
	(struct _Unwind_Control_Block): Document reserved field use.
	(_Unwind_Stop_Fn): New typedef.
	(_Unwind_ForcedUnwind): Declare.
	(_Unwind_Resume_or_Rethrow): Declare.
	* gcc/config/arm/libunwind.S (UNWIND_WRAPER): Add nargs
	argument.  Adjust.
	(_Unwind_Resume_or_Rethrow, _Unwind_ForcedUnwind): New.
	* gcc/config/arm/unwind-arm.c (UCB_FORCED_STOP_FN,
	UCB_FORCED_STOP_ARG): New.
	(get_eit_entry): Return _URC_END_OF_STACK when cannot unwind.
	(unwind_phase2): Replace for with do..while.
	(unwind_phase2_forced): New.
	(__gnu_Unwind_RaiseException): Replace for with do..while.
	(__gnu_Unwind_ForcedUnwind): New.
	(__gnu_Unwind_Resume): Set FORCE_UNWIND flag, if forced unwinding.
	Use appropriate phase2 unwinder.
	(__gnu_Unwind_Resume_or_Rethrow): New.
	(__gnu_unwind_pr_common): Cope with forced unwinding.

2005-10-20  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (arm_elf_asm_constructor): Remove ATTRIBUTE_UNUSED
	from priority argument.  Use different section names for non-default
	priority.
	* config/arm/elf.h: Remove definition of SUPPORTS_INIT_PRIORITY.

2005-10-20  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (arm_default_cpu): New.
	(arm_override_options): Set arm_default_cpu.
	(arm_file_start): Output EABI attribute directives.

2005-10-20  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (arm_final_prescan_insn): Use
	extract_constrain_insn_cached instead of recog.
	(thumb2_final_prescan_insn): Ditto.

2005-10-18  Daniel Jacobowitz  <dan@codesourcery.com>

	* config/arm/arm.c (arm_init_libfuncs): Use __aeabi_idiv and
	__aeabi_uidiv.

2005-10-10  Mark Mitchell  <mark@codesourcery.com>
	    Daniel Jacobowitz  <dan@codesourcery.com>

	* longlong.h (add_ssaaaa): Clobber condition code register
	in ARM version.
	(sub_ddmmss): Likewise.
	(umul_ppmm): Likewise.

2005-10-05  Daniel Jacobowitz  <dan@codesourcery.com>

	* config/arm/arm.md (insv): Use gen_int_mode in more places.

2005-10-02  Paul Brook  <paul@codesourcery.com>

	* testsuite/gcc.dg/20050629-1.c: Add missing close comment.

2005-10-02  Paul Brook  <paul@codesourcery.com>

	Backport from mainline.
	2005-08-20  Richard Earnshaw  <richard.earnshaw@arm.com>
	* testsuite/gcc.dg/arm-eabi1.c (main): Exit with 0 on success.

2005-10-01  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c: Always use conditional infixes on FPA insns.
	* config/arm/fpa.md: Ditto.

2005-09-30  Daniel Jacobowitz  <dan@codesourcery.com>

	* config.gcc (arm*-*-linux*): Remove redundant extra_parts and
	gnu_ld assignments.
	* config/arm/lib1funcs.asm (ARM_LDIV0, THUMB_LDIV0): Remove
	redundant labels.
	* config/arm/t-linux-eabi (LIB1ASMFUNCS)
	(EXTRA_MULTILIB_PARTS): Define.
	* config/arm/linux-elf.h (NO_IMPLICIT_EXTERN_C, CPLUSPLUS_CPP_SPEC)
	(STARTFILE_SPEC, ENDFILE_SPEC, CC1_SPEC)
	(LINK_GCC_C_SEQUENCE_SPEC): Move to...
	* config/arm/uclinux-elf.h (NO_IMPLICIT_EXTERN_C, CPLUSPLUS_CPP_SPEC)
	(STARTFILE_SPEC, ENDFILE_SPEC, CC1_SPEC)
	(LINK_GCC_C_SEQUENCE_SPEC): ... here.

2005-09-22  Kazu Hirata  <kazu@codesourcery.com>

	Backport from mainline:
	2005-05-13  Josh Conner  <jconner@apple.com>
	* arm.c (arm_return_in_memory): Add handling for vector return types.

2005-09-21  Kazu Hirata  <kazu@codesourcery.com>

	* config/arm/arm.md (movdi): Force operands[1] to a register
	if we have a non-register source.
	(*arm_movdi, *movdf_soft_insn): Require that one of the
	operands be a register.
	* config/arm/iwmmxt.md (*iwmmxt_arm_movdi): Likewise.
	* config/arm/vfp.md (*arm_movdi_vfp, *movdf_vfp): Likewise.

2005-09-15  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.md (load_tp_soft): Set conds attr.

2005-09-09  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.h (PREFERRED_RELOAD_CLASS): Return LO_REGS for Thumb
	NO_REGS.

2005-09-07  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.md (load_tp_hard): Change cp register number to match
	kernel implementation.

2005-09-07  Paul Brook  <paul@codesourcery.com>

	* config/arm/linux-eabi.h (SUBTARGET_EXTRA_LINK_SPEC): Prepend a
	space to string.

2005-09-07  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (arm_override_options): Remove Thumb-2/FP sorry.
	Add sorry for Thumb-2/iWMMXt.
	* config/arm/arm.h (PREFERRED_RELOAD_CLASS): Only prefer LO_REGS for
	core integer reg classes.
	* config/arm/cirrus.md: Enable arithmetic patterns for Thumb-2.
	(cirrus_thumb2_movdi, cirrus_thumb2_movsi_insn,
	thumb2_cirrus_movsf_hard_insn, thumb2_cirrus_movdf_hard_insn): New.
	* config/arm/fpa.md: Enable arithmetic patterns for Thumb-2.
	Change output templates to accomodate unified assembly syntax.
	(thumb2_movsf_fpa, thumb2_movdf_fpa, thumb2_movxf_fpa): New.
	(thumb2_movsfcc_fpa, thumb2_movdfcc_fpa): New.
	* config/arm/vfp.md: Enable arithmetic patterns for Thumb-2.
	(thumb2_movsi_vfp, thumb2_movdi_vfp, thumb2_movsf_vfp,
	thumb2_movdf_vfp, thumb2_movsfcc_vfp, thumb2_movdfcc_vfp): New.

2005-09-03  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.h (CLASS_LIKELY_SPILLED_P): Return 1 for RETURN_REG.

2005-09-02  Mark Mitchell  <mark@codesourcery.com>

	* hwint.h (HOST_WIDE_INT_PRINT): Use HOST_LONG_LONG_FORMAT.
	
	Backport:
	2004-11-23  Mark Mitchell  <mark@codesourcery.com>
	* hwint.h (HOST_LONG_LONG_FORMAT): New macro.  Use it throughout.
	* config/i386/xm-mingw32.h (HOST_LONG_LONG_FORMAT): Define.
	* doc/hostconfig.texi (HOST_LONG_LONG_FORMAT): Document.

2005-09-01  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (low_reg_or_int_operand): New function.
	(thumb_16bit_operator): Don't allow shift operators.
	* config/arm/arm.h (PREDICATE_CODES): Add low_reg_or_int_operand.
	* config/arm/thumb2.md: Fix typos.
	(thumb2_shiftsi3_short, thumb2_movsi_shortim,
	thumb2_addsi_shortim): New patterns and define_peephole2 to generate
	them.

2005-09-01  Paul Brook  <paul@codesourcery.com>

	Backport form mainline.
	2004-01-05  Richard Earnshaw  <rearnsha@arm.com>
	* arm/vfp.md (arm_movsi_vfp): Hide VFP register classes from register
	preferencing.

2005-08-31  Paul Brook  <paul@codesourcery.com>

	Backport from Mainline.
	2004-09-20  Daniel Jacobowitz  <dan@debian.org>
	* defaults.h (REGNO_MODE_OK_FOR_BASE_P, REG_MODE_OK_FOR_BASE_P)
	(MODE_BASE_REG_REG_CLASS, REGNO_MODE_OK_FOR_REG_BASE_P)
	(REG_MODE_OK_FOR_REG_BASE_P): Provide default definitions.
	* regclass.c (record_address_regs): Remove ifdef.  Use
	REG_MODE_OK_FOR_REG_BASE_P and MODE_BASE_REG_REG_CLASS.
	* regrename.c (REG_MODE_OK_FOR_BASE_P): Remove unnecessary
	definition.
	(scan_rtx_address, replace_oldest_value_addr): Use
	REG_MODE_OK_FOR_REG_BASE_P and MODE_BASE_REG_REG_CLASS.
	* reload.c (REGNO_MODE_OK_FOR_BASE_P, REG_MODE_OK_FOR_BASE_P): Remove
	unnecessary definitions.
	(find_reloads_address_1): Support REG_MODE_OK_FOR_REG_BASE_P
	and MODE_BASE_REG_REG_CLASS.
	* config/arm/arm.h (MODE_BASE_REG_CLASS): Don't check reload_completed.
	(MODE_BASE_REG_REG_CLASS): Define.
	(REGNO_MODE_OK_FOR_REG_BASE_P): Define.
	(REG_MODE_OK_FOR_REG_BASE_P): Define.
	* doc/tm.texi (Register Classes): Document MODE_BASE_REG_REG_CLASS,
	REG_MODE_OK_FOR_REG_BASE_P, and REGNO_MODE_OK_FOR_REG_BASE_P.

2005-08-30  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (arm_load_tp): Copy result to pseudo.

2005-08-27  Paul Brook  <paul@codesourcery.com>

	Backport from mainline.
	* genrecog.c (enum decision_type): Add DT_num_insns.
	(struct decision_test): Add u.num_insns.
	(add_to_sequence): Add DT_num_insns test.
	(maybe_both_true_2, nodes_identical_1): Handle DT_num_insns.
	(write_cond, debug_decision_2): Ditto.
	(change_state): Assume peep2_next_insn never fails.
	Remove "afterward" argument.
	(write afterward, write_tree): Update to match.
	* recog.c (peep2_current_count): New variable.
	(peep2_next_insn): Check it.
	(peephole2_optimize): Set peep2_current_count.
	* recog.h (peep2_current_count): Declare.

2005-08-12  Paul Brook  <paul@codesourcery.com>

	Thumb-2 support.
	* config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT,
	ASM_OUTPUT_ADDR_VEC_ELT): Set Thumb bit on Thumb-2 addresses.
	* config/arm/out.h (ASM_OUTPUT_ADDR_DIFF_ELT,
	ASM_OUTPUT_ADDR_VEC_ELT): Ditto.
	* config/arm/arm-cores.def: Add arm1156t2-s.
	* config/arm/arm-protos.h: Update function prototypes.
	* config/arm/arm-tune.md: Regenerate.
	* config/arm/arm.c (TARGET_ASM_FILE_START, FL_THUMB2,
	FL_FOR_ARCH6T2): Define.
	(arm_arch_thumb2, arm_condexec_count, arm_condexec_mask,
	arm_condexec_masklen): New variables.
	(ARM_LSL_NAME): Define.
	(all_architectures): Add 6T2.
	(arm_override_options): Set arm_arch_thumb2. Allow use of 
	coprocessors in Thumb-2.
	(use_return_insn): Only use StrongARM workaround in Arm mode.
	(const_ok_for_arm): Handle Thumb-2 constants.
	(arm_gen_constant): Ditto.
	(legitimize_pic_address): Add Thumb-2.
	(arm_load_pic_register): Generate Thumb-2 sequence.
	(thumb2_legitimate_address_p): New function.
	(thumb2_index_mul_operand): New function.
	(thumb2_legitimate_index_p): New function.
	(thumb_base_register_rtx_p, thumb_index_register_rtx_p,
	thumb_legitimate_address_p, thumb_rtx_costs,
	thumb_compute_save_reg_mask, thumb_final_prescan_insn,
	thumb_expand_prologue, thumb_expand_epilogue,
	thumb_output_function_prologue, thumb_cmp_operand,
	thumb_cmpneg_operand): Rename ...
	(thumb1_base_register_rtx_p, thumb1_index_register_rtx_p,
	thumb1_legitimate_address_p, thumb1_rtx_costs,
	thumb1_compute_save_reg_mask, thumb1_final_prescan_insn,
	thumb1_expand_prologue, thumb1_expand_epilogue,
	thumb1_output_function_prologue, thumb1_cmp_operand,
	thumb1_cmpneg_operand): ... to this.  Update callers.
	(arm_address_cost): Use arm routine for Thumb-2.
	(low_register_operand): New function.
	(arm_add_operand): Treat Thumb-2 like Arm.
	(thumb_16bit_operator): New function.
	(load_multiple_sequence): Only allow ldmib and ldmda in Arm mode.
	(emit_ldm_seq): Output unified assembly.
	(emit_stm_seq): Ditto.
	(arm_select_cc_mode): Treat Thumb-2 like Arm.
	(print_multi_reg): Don't print comma.
	(output_mov_long_double_fpa_from_arm): Output unified assebly.
	(output_mov_double_arm_from_fpa): Ditto.
	(output_move_double): Ditto.  Disallow Arm specific addressing modes
	in Thumb-2 mode.
	(arm_shift_nmem): New function.
	(arithmetic_instr, shift_op): Use it.  Use ARM_LSL_NAME.
	(arm_compute_save_reg0_reg12_mask): Handle Thumb-2 frames.
	(arm_compute_save_reg_mask): Don't create apcs frame for thumb2.
	(output_return_instruction): Only use StrongARM workaround in Arm mode.
	(arm_output_function_prologue): Threat Thumb-2 like Arm.
	(arm_output_epilogue): Implement Thumb-2.
	(arm_output_function_epilogue): Treat Thumb-2 like Arm.
	(arm_get_frame_offsets): Ditto.
	(arm_save_coproc_regs): New function.
	(arm_expand_prologue): Use it.  Handle Thumb-2.
	(arm_print_condition): New function.
	(arm_print_operand): Use it.  Implement '(', ')', '.', '!' and 'L'.
	(thumb2_final_prescan_insn): New function.
	(thumb2_asm_output_opcode): New function.
	(arm_hard_regno_mode_ok): Treat Thumb-2 like Arm.
	(arm_regno_class): Implement thumb2 classes.
	(arm_file_start): New function.
	(arm_output_mi_thunk): Treat Thumb-2 like Arm.
	(thumb_set_return_address): Implement Thumb-2.
	(arm_output_shift): New function.
	* config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Add __thumb2__.
	(TARGET_THUMB1, TARGET_THUMB2, TARGET_32BIT, TARGET_UNIFIED_ASM):
	Define.
	(arm_arch_thumb2): Declare;
	(CONDITIONAL_REGISTER_USAGE): Enable coprocessor registers on Thumb-2.
	(STATIC_CHAIN_REGNUM, HARD_REGNO_NREGS, MODE_BASE_REG_CLASS,
	SMALL_REGISTER_CLASSES, CONST_DOUBLE_OK_FOR_LETTER_P,
	EXTRA_CONSTRAINT_STR, SECONDARY_OUTPUT_RELOAD_CLASS,
	SECONDARY_INPUT_RELOAD_CLASS, REGISTER_MOVE_COST, LIBCALL_VALUE,
	FUNCTION_VALUE_REGNO_P, REGNO_MODE_OK_FOR_BASE_P,
	LEGITIMATE_CONSTANT_P, REG_MODE_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P,
	GO_IF_MODE_DEPENDENT_ADDRESS, MEMORY_MOVE_COST, BRANCH_COST,
	PRINT_OPERAND_ADDRESS): Treat Thumb-2 like Arm.
	(CONST_OK_FOR_THUMB2_LETTER): Define.
	(CONST_OK_FOR_THUMB_LETTER, THUMB_TRAMPOLINE_TEMPLATE,
	THUMB_REGNO_MODE_OK_FOR_BASE_P, THUMB_REG_MODE_OK_FOR_BASE_P,
	THUMB_REG_MODE_OK_FOR_BASE_P, THUMB_REG_OK_FOR_INDEX_P,
	THUMB_GO_IF_LEGITIMATE_ADDRESS): Rename ...
	(CONST_OK_FOR_THUMB1_LETTER, THUMB_TRAMPOLINE_TEMPLATE,
	THUMB1_REGNO_MODE_OK_FOR_BASE_P, THUMB1_REG_MODE_OK_FOR_BASE_P,
	THUMB1_REG_MODE_OK_FOR_BASE_P, THUMB1_REG_OK_FOR_INDEX_P,
	THUMB1_GO_IF_LEGITIMATE_ADDRESS): ... to this.
	(CONST_OK_FOR_LETTER_P, TRAMPOLINE_TEMPLATE, TRAMPOLINE_SIZE,
	INITIALIZE_TRAMPOLINE, GO_IF_LEGITIMATE_ADDRESS, LEGITIMIZE_ADDRESS,
	ASM_APP_OFF, ARM_DECLARE_FUNCTION_NAME): Handle Thumb-2.
	(THUMB2_TRAMPOLINE_TEMPLATE): Define.
	(TRAMPOLINE_ADJUST_ADDRESS, ASM_OUTPUT_OPCODE,
	THUMB2_GO_IF_LEGITIMATE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS,
	ADJUST_INSN_LENGTH): Define.
	(PRINT_OPERAND_PUNCT_VALID_P): Add '(', ')', '.' and '!'.
	(PREDICATE_CODES): Add low_register_operand and thumb_16bit_operator.
	* config/arm/arm.md: Rename thumb_* thumb1_*.  Make 16-bit thumb
	patterns conditional on TARGET_THUMB1. Replace '%?' with
	'%(', '%)' and '%.' as appropriate for unified assembly syntax.
	Enable many Arm patterns/expanders for Thumb-2.
	Add new "ce_count" attribute.
	Include thumb2.md
	(incscc, decscc, smaxsi3, sminsi3, umaxsi3, sminsi3, zero_extendsidi2,
	zero_extendqidi2, extendsidi2): Divide into
	define_expand and define_insn.
	(ne_zeroextractsi, minmax_arithsi): Insert IT instructions for Thumb-2.
	(arm_shiftsi3, shiftsi3_compare0, shiftsi3_compare0_scratch): Use
	arm_output_shift.
	(movhi, indirect_jump): Handle thumb2.
	(push_multi): Use push and pop for thumb2.
	(nop): Output "nop" in unified assembly.
	* config/arm/lib1funcs.asm: Add __ARM_ARCH_6T2__.
	* config/arm/t-arm (MD_INCLUDES): Add thumb2.md
	* config/arm/thumb2.md: New file.
	* doc/invoke.texi: Document that -mthumb may enable Thumb-2.

2005-08-12  Paul Brook  <paul@codesourcery.com>

	* config/arm/lib1funcs.asm: Error if __ARM_ARCH__ not set.

2005-08-11  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (arm_unwind_emit_stm): Correct format bugs.
	(arm_unwind_emit_set): Ditto.

2005-08-11  Paul Brook  <paul@codesourcery.com>

	Backport from mainline.
	2004-10-02  Ian Lance Taylor  <ian@wasabisystems.com>
	* arm.c (output_call_mem): Add missing \t.

2005-08-03  Paul Brook  <paul@codesourcery.com>

	* function.c (assign_parms): Round current_function_args_size
	to PARM_BOUNDARY, not STACK_BOUNDARY.

2005-08-03  Paul Brook  <paul@codesourcery.com>

	* combine.c (can_change_dest_mode): New function.
	(try_combine, simplify_set): Use it.

2005-07-30  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm-protos.h (arm_canonicalize_comparison): Update
	prototype.
	* config/arm/arm.c (arm_canonicalize_comparison): Use correct limit
	value for mode.
	* config/arm/arm.h (CANONICALIZE_COMPARISON): Pass mode argument.

2005-07-30  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (arm_coproc_mem_operand): Fix inaccurate comment.

2005-07-07  Khem Raj  <kraj@mvista.com>

	* config/arm/arm.c (thumb_output_function_prologue): Calculate offset
	in bytes, not words.

2005-07-07  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (arm_pad_arg_upward): Compare return value of
	DEFAULT_FUNCTION_ARG_PADDING to upward.

2005-07-06  Joseph Myers  <joseph@codesourcery.com>

	* cp/decl2.c (import_export_vtable): Also mark decl as used with
	mark_referenced.

2005-05-13  Julian Brown  <julian@codesourcery.com>

	Backport from mainline:
	* config/arm/arm.md (negsf2, negdf2): Permit these expands when
	compiling for VFP.

2005-05-06  Paul Brook  <paul@codesourcery.com>

	* config/arm/unwind-arm.c (get_eit_entry): Adjust address to throwing
	call, not following instruction.

2005-05-01  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.h (ARM_EMIT_TRAMPOLINE_CACHE_CLEAR): Define.
	(INITIALIZE_TRAMPOLINE): Use it.
	* config/arm/linux-gas.h (INITIALIZE_TRAMPOLINE): Remove.
	* config/arm/netbsd.h (INITIALIZE_TRAMPOLINE): Remove.
	* config/arm/netbsd-elf.h (INITIALIZE_TRAMPOLINE): Remove.

2005-04-30  Paul Brook  <paul@codesourcery.com>

	* config/arm/bpabi.h (TARGET_DEFAULT): Define.
	* config/arm/linux-eabi.h (SUBTARGET_CPU_DEFAULT): Define.

2005-04-30  Paul Brook  <paul@codesourcery.com>

	* config/arm/bpabi.h (RENAME_LIBRARY_SET): Always use .thumb_set in
	thumb mode.
	* config/arm/ieee754-df.S: Use __INTERWORKING_STUBS__.
	* config/arm/ieee754-sf.S: Ditto.
	* config/arm/lib1funcs.asm: Define and use __INTERWORKING_STUBS__.
	(FUNC_ALIAS): New macro.

2005-04-30  Paul Brook  <paul@codesourcery.com>

	* combine.c (distribute_notes): Don't put REG_EQUAL notes on deleted
	insns.

2005-04-30  Paul Brook  <paul@codesourcery.com>

	* combine.c (distribute_notes): Don't put notes on temporary insns.

2005-04-27  Daniel Jacobowitz  <dan@codesourcery.com>

	* config/arm/arm.c (target_thread_pointer): Default to TP_SOFT.
	(arm_override_options, arm_load_tp): Remove -mtp=linux support.
	* config/arm/arm.h (TARGET_LINUX_TP): Delete.
	(enum arm_tp_type): Remove TP_LINUX.

2005-04-26  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.md (thumb_mulsi3): Use two-operand assembly form.

2005-04-22  Mark Mitchell  <mark@codesourcery.com>

	Backport from mainline:
	* gcc.dg/arm-vfp1.c: Remove -ffast-math.
	
	Backport from mainline:
	* gcc.dg/arm-vfp1.c: New test.

2005-04-11  Mark Mitchell  <mark@codesourcery.com>

	* target-def.h (TARGET_CXX_EXPORT_CLASS_DATA): Remove.
	(TARGET_CXX_DETERMINE_CLASS_VISIBILITY): New macro.
	(TARGET_CXX_CLASS_DATA_ALWAYS_COMDAT): Likewise.
	(TARGET_CXX): Adjust accordingly.
	* target.h (struct gcc_target): Remove epxort_class_data.  Add
	determine_class_data_visibility and class_data_always_comdat.
	* cp/decl2.c (determine_class_data_visibility): New function
	(import_export_vtable): Honor
	TARGET_CXX_CLASS_DATA_ALWAYS_COMDAT.  Use
	determine_class_data_visibility.
	(maybe_emit_vtables): Play fewer odd games with cgraph.
	(determine_visibility): Remove use of export_class_data.
	(import_export_tinfo): Honor TARGET_CXX_CLASS_DATA_ALWAYS_COMDAT.  Use
	determine_class_data_visibility.
	* cp/rtti.c (get_tinfo_decl): Do not set DECL_COMDAT.
	* config/arm/arm.c (arm_cxx_export_class_data): Remove.
	(arm_cxx_determine_class_data_visibility): New.
	(arm_cxx_class_data_always_comdat): Likewise.
	(TARGET_CXX_EXPORT_CLASS_DATA): Remove.
	(TARGET_CXX_DETERMINE_CLASS_DATA_VISIBILITY): Define.
	(TARGET_CXX_CLASS_DATA_ALWAYS_COMDAT): Likewise.
	* config/arm/arm.h (TARGET_ARM_DYNAMIC_VAGUE_LINKAGE_P): Define.
	* config/arm/symbian.h (TARGET_ARM_DYNAMIC_VAGUE_LINKAGE_P):
	Define.
	* doc/tm.texi (TARGET_CXX_EXPORT_CLASS_DATA): Remove.
	(TARGET_CXX_DETERMINE_CLASS_DATA_VISIBILITY): Document.
	(TARGET_CXX_CLASS_DATA_ALWAYS_COMDAT): Likewise.
	* testsuite/g++.dg/ext/visibility/arm2.C: New test.
	* testsuite/g++.dg/ext/visibility/arm3.C: Likewise.
	* testsuite/g++.dg/ext/visibility/symbian2.C: Likewise.
	
2005-04-01  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (thumb_call_via_label): Include space for SP.
	(arm_output_function_epilogue): Allow call_via_SP.
	(thumb_call_via_reg, arm_file_end): Ditto.
	* config/arm/arm.h (struct machine_function): Include space for SP.
	(thumb_call_via_label): Update declaration.

2005-03-30  Paul Brook  <pau@codesourcery.com>

	* dwarf2out.c (multiple_reg_loc_descriptor): Handle single REG.
	* config/arm/arm.c (arm_dwarf_register_span): New function.
	(TARGET_DWARF_REGISTER_SPAN): Define.
	* doc/tm.dexi: Update documentation for TARGET_DWARF_REGISTER_SPAN.

2005-03-30  Paul Brook  <paul@codesourcery.com>

	* optabs.c (expand_twoval_binop_libfunc): Call protect_from_queue.
	* testsuite/gcc.dg/divmod-1.c: New test.

2005-03-29  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm-protos.h (arm_dbx_register_number): Add prototype.
	* config/arm/arm.c (arm_dbx_register_number): New function.
	* config/arm/arm.h (IS_FPA_REGNUM, DBX_REGISTER_NUMBER): Define.

2005-03-28  Julian Brown  <julian@codesourcery.com>

	* config/arm/arm.c (arm_handle_notshared_attribute): Protect
	prototype and implementation with preprocessor conditional.
	(arm_pad_reg_upwards): Add ATTRIBUTE_UNUSED.

2005-03-28  Daniel Jacobowitz  <dan@codesourcery.com>
	    Phil Blundell  <philb@gnu.org>

	* configure.ac: Add test for ARM TLS support.
	* configure: Regenerated.
	* haifa-sched.c (schedule_block): Only count INSNs.
	* jump.c (duplicate_loop_exit_test): Check targetm.cannot_copy_insn_p.
	* postreload.c (reload_cse_simplify_operands): Handle deleted labels.
	* config/arm/arm-protos.h (legitimize_tls_address)
	(thumb_legitimize_address, tls_symbolic_operand, arm_tls_operand_p)
	(tls_mentioned_p, arm_output_addr_const_extra): New prototypes.
	(thumb_legitimize_pic_address): Delete.
	* config/arm/arm.c: Include "gt-arm.h".
	(arm_cannot_copy_insn_p, load_tls_operand)
	(pcrel_constant_p, get_tls_get_addr, arm_load_tp)
	(legitimize_tls_address, thumb_legitimize_address)
	(arm_tls_operand_p, tls_symbolic_operand, move_input_operand)
	(tls_mentioned_p, arm_init_tls_builtins)
	(arm_emit_tls_decoration, arm_output_addr_const_extra): New functions.
	(TARGET_CANNOT_COPY_INSN_P, TARGET_CANNOT_FORCE_CONST_MEM): Define.
	(target_thread_switch, target_thread_pointer): New.
	(arm_pic_register): Change to unsigned.
	(arm_override_options): Handle -mtp=.
	(legitimize_pic_address): Ignore UNSPECs.
	(arm_legitimate_address_p): Handle TLS and pcrel symbols.
	(thumb_legitimate_address_p): Handle TLS and pcrel symbols.
	(arm_legitimize_address): Handle TLS.
	(arm_regno_class): Handle RETURN_REG.
	(arm_init_builtins): Call arm_init_tls_builtins.
	(arm_expand_builtin): Handle ARM_BUILTIN_THREAD_POINTER.
	(arm_encode_section_info): Call default_encode_section_info.
	* config/arm/arm.h (target_thread_switch): Add declaration.
	(TARGET_HARD_TP, TARGET_SOFT_TP, TARGET_LINUX_TP): Define.
	(TARGET_OPTIONS): Add -mtp=.
	(enum arm_tp_type): New.
	(target_thread_pointer): Add declaration.
	(enum reg_class, REG_CLASS_NAMES, REG_CLASS_CONTENTS)
	(REG_CLASS_FROM_LETTER): Add RETURN_REG.
	(LEGITIMATE_CONSTANT_P): Handle TLS.
	(THUMB_LEGITIMIZE_ADDRESS): Call thumb_legitimize_address.
	(arm_pic_register): Change type to unsigned.
	(LEGITIMATE_PIC_OPERAND_P): Handle TLS.
	(OUTPUT_ADDR_CONST_EXTRA): Call arm_output_addr_const_extra.
	(PREDICATE_CODES): Add move_input_operand.
	(enum arm_builtins): Add ARM_BUILTIN_THREAD_POINTER.
	* config/arm/arm.md: Add UNSPEC_TLS.
	(movsi): Handle TLS.
	(arm_movsi_insn, thumb_movsi_insn): Use move_input_operand.
	(pic_add_dot_plus_four, pic_add_dot_plus_eight): Allow for
	non-PIC.
	(tls_load_dot_plus_four, tls_load_dot_plus_eight): New insns
	and new peepholes to create them.
	(load_tp_hard, load_tp_soft): New insns.

2005-03-22  Mark Mitchell  <mark@codesourcery.com>

	Merge from mainline.
	2005-01-14  Richard Earnshaw  <rearnsha@arm.com>
	PR target/7525
	* arm.h (struct machine_function): Add call_via field.
	(thumb_call_via_label): Declare.
	* arm.c (thumb_call_via_label): New variable.
	(thumb_call_reg_needed): New variable.
	(arm_output_function_epilogue): For Thumb code, output any per-function
	call-indirect trampolines.
	(thumb_call_via_reg): New function.
	(arm_file_end): New function.
	(TARGET_ASM_FILE_END): Call arm_file_end.
	(aof_file_end): Likewise.
	* arm-protos.h (thumb_call_via_reg): Declare.
	* arm.md (call_reg_thumb, call_value_reg_thumb): Call
	thumb_call_via_reg in normal case.
	
2005-03-22  Mark Mitchell  <mark@codesourcery.com>

	Merge from csl-3_4_3-linux-branch.
	2005-01-31  Mark Mitchell <mark@codesourcery.com>
	* gcc.c (main): Use set_spec.
	2005-01-25  Mark Mitchell  <mark@codesourcery.com>
	* gcc.c (SYSROOT_SPEC): New macro.
	(sysroot_spec): New variable.
	(static_specs): Add sysroot_spec.
	(main): Pass --sysroot to the linker. 

2005-03-15  Daniel Jacobowitz  <dan@codesourcery.com>

	* config/arm/arm.h (CONDITIONAL_REGISTER_USAGE): Don't clear
	call_used_regs for wCG registers.

2005-03-14  Julian Brown  <julian@codesourcery.com>

	* config/arm/lib1funcs.asm (ashldi3): Don't define on SymbianOS.
	(aeabi_llsl): Likewise.
	(ashrdi3): Likewise.
	(aeabi_lasr): Likewise.
	(lshrdi3): Likewise.
	(aeabi_llsr): Likewise. 

2005-03-10  Julian Brown  <julian@codesourcery.com>

	* config.gcc: Disable shared libgcc for SymbianOS.
	* config/arm/t-symbian (LIB2ADDEH): Include config/arm/pr-support.c.

2005-03-07  Daniel Jacobowitz  <dan@codesourcery.com>

	* config/arm/arm.c (arm_all_abis): Add aapcs-linux.
	(arm_override_options): Use TARGET_AAPCS_BASED.
	* config/arm/arm.h (enum arm_abi_type): Add ARM_ABI_AAPCS_LINUX.
	(PTRDIFF_TYPE): Use int for AAPCS.
	(DEFAULT_SHORT_ENUMS): Use false for aapcs-linux.
	* config/arm/linux-eabi.h (ARM_DEFAULT_ABI, WCHAR_TYPE): Define.
	(DEFAULT_SHORT_ENUMS): Delete.
	* doc/invoke.texi (ARM Options): Document -mabi=aapcs-linux.

2005-03-02  Daniel Jacobowitz  <dan@codesourcery.com>

	* config/arm/linux-elf.h (ARM_FUNCTION_PROFILER): Do not use (PLT)
	for Thumb.
	* config/arm/netbsd-elf.h (ARM_FUNCTION_PROFILER): Likewise.

2005-02-25  Julian Brown  <julian@codesourcery.com>

	* config/elfos.h (MAKE_DECL_ONE_ONLY): Redefined to stop DECL_WEAK
	from being used for symbols with vague linkage when
	HAVE_GAS_COMDAT_GROUP is true.

2004-02-15  Mark Mitchell  <mark@codesourcery.com>

	* configure.ac: Never set STMP_FIXINC or STMP_FIXPROTO when
	building a Canadian cross.
	* configure: Regenerated.

	* unwind-arm.h (abort): Use a prototype, not a K&R declaration.
	(__gnu_unwind_execute): Declare.
	* config/arm/lib1funcs.asm: Do not include libunwind.S.
	* config/arm/libunwind.S: Include lib1funcs.asm.
	* config/arm/t-bpabi (LIB1ASMFUNCS): Remove _unwind.
	(LIB2ADDEH): Add $(srcdir)/config/arm/libunwind.S.

2005-02-16  Paul Brook  <paul@codesourcery.com>

	* config/arm/unwind-arm.c (__gnu_Unwind_Find_exidx): Add prototype.
	(search_EIT_table): New function.
	(get_eit_entry): Use them.
	(EIT_comparator): Remove.

2005-02-14  Julian Brown  <julian@codesourcery.com>

	* config/arm/t-bpabi (LIB2ADDEH): Add pr-support.c
	* unwind-arm.c (next_unwind_byte): Moved to file pr-support.c.
	(__gnu_unwind_execute): Likewise.
	(__gnu_unwind_frame): Likewise.
	(_Unwind_GetLanguageSpecificData): Likewise.
	(_Unwind_GetRegionStart): Likewise.
	* pr-support.c: New file.
	(selfrel_offset31, EHT16, EHT32): Duplicated from unwind-arm.c.

2005-01-28  Paul Brook  <paul@codesourcery.com>

	* Makefile.in (opts.o): Depend on $(TARGET_H).
	* opts.c: Include target.h.
	(decode_options): Use targetm.unwind_tables_default.
	* target-def.h (TARGET_UNWIND_TABLES_DEFAULT): Define.
	(TARGET_INITIALIZER): Use it
	* target.h (struct gcc_target): Add unwind_tables_default.
	* config/ia64/ia64.h (TARGET_UNWIND_TABLES_DEFAULT): Define.

2005-01-27  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (arm_init_libfuncs): Clear mod optabs.

2005-01-27  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.h (ARM_EABI_UNWIND_TABLES): Fix logic.

2005-01-27  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (arm_compute_func_type): Fix noreturn logic.

2004-01-26  Mark Mitchell  <mark@codesourcery.com>

	* config/arm/arm.h (ARM_EABI_CTORS_SECTION_OP): Do not define
	if a definition has already been provided.
	(ARM_EABI_DTORS_SECTION_OP): Likewise.
	* config/arm/symbian.h (ARM_EABI_CTORS_SECTION_OP): Define.
	(ARM_EABI_DTORS_SECTION_OP): Likewise.

2005-01-26  Julian Brown  <julian@codesourcery.com>

	Backport:
	2004-11-24  Richard Sandiford  <rsandifo@redhat.com>

	* optabs.h (force_expand_binop): Declare.
	* optabs.c (force_expand_binop): Export.
	* stmt.c (shift_return_value): Delete.
	(expand_return): Don't call it.
	* expr.h (shift_return_value): Declare.
	* calls.c (shift_returned_value): Delete in favor of...
	(shift_return_value): ...this new function.  Leave the caller to check
	for non-BLKmode values passed in the msb of a register.  Take said
	mode and a shift direction as argument.  Operate on the hard function
	value, not a pseudo.
	(expand_call): Adjust accordingly.
	* function.c (expand_function_start): If a non-BLKmode return value
	is padded at the last significant end of the return register, use the
	return value's natural mode for the DECL_RESULT, not the mode of the
	padded register.
	(expand_function_end): Shift the same sort of return values left by
	the appropriate amount.

	Backport:
	2004-09-04  Richard Sandiford  <rsandifo@redhat.com>

	* optabs.c (simplify_expand_binop, force_expand_binop): New functions.
	(only these parts of the patch are applied)

	* config/arm/arm-protos.h (arm_must_pass_in_stack): Declare.
	(arm_pad_arg_upward): Declare:
	(arm_pad_reg_upward): Declare.
	* config/arm/arm.c (TARGET_RETURN_IN_MSB): Define target hook as...
	(arm_return_in_msb): New function, specifying when values returned in 
	registers should be aligned to the most-significant end.
	(arm_function_value): If necessary (aggregates and complex values of 
	word size or less), promote the return type of a function to SImode to
	enable padding to word size.
	(arm_must_pass_in_stack): New function, returns false for small 
	aggregates so they can be passed in registers (the default 
	implementation passes them in the stack).
	(arm_pad_arg_upward): New function, fixes argument padding on the
	stack in big-endian AAPCS mode.
	(arm_pad_reg_upward): New function, fixes argument padding in
	registers in big-endian AAPCS mode.
	* config/arm/arm.h (PROMOTE_FUNCTION_MODE): modes of mode class
	MODE_COMPLEX_INT are also promoted to SImode.
	(MUST_PASS_IN_STACK): Define.
	(FUNCTION_ARG_PADDING): Define.
	(BLOCK_REG_PADDING): Define.
	(PAD_VARARGS_DOWN): For AAPCS, varargs are always padded upwards
	regardless of endianness.

2005-01-25  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (arm_compute_func_type): Don't use
	current_function_nothrow.

2005-01-22  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.md: Use "Uy" constraint for wcgr load/stores.

2005-01-21  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.h (ARM_DTORS_SECTION_ASM_OP): Define. 
	(DTORS_SECTION_ASM_OP): Conditionalize on TARGET_AAPCS_BASED.

2005-01-20  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.md (insv): Use gen_int_mode.

2004-01-05  Julian Brown  <julian@codesourcery.com>

	* config/arm/arm.c (arm_return_in_memory): Treat complex types
	as aggregates for AAPCS ABIs.

2004-01-05  Richard Earnshaw  <rearnsha@arm.com>

	Backport form mainline.
	* arm.h (TARGET_OPTIONS): Correctly record -mhard-float and
	-msoft-float in target_float_switch.
	* arm.c (arm_override_options): Fix processing of target_float_switch.

2005-01-03  Paul Brook  <paul@codesourcery.com>

	* version.c (bug_report_url): Correct email address,

2004-12-29  Paul Brook  <paul@codesourcery.com>
	    Daniel Jacobowitz  <dan@codesourcery.com>

	* config/arm/unwind-arm.c (_Unwind_VRS_Pop): Correct spelling of
	discriminator.
	(__gnu_unwind_execute): Correct masks for VFP and FPA unwinding.

2004-12-15  Daniel Jacobowitz  <dan@codesourcery.com>

	* config/arm/arm.h (DEFAULT_SHORT_ENUMS): Wrap in #ifndef.
	* config/arm/linux-eabi.h (DEFAULT_SHORT_ENUMS): Define to 0.
	* config/arm/t-linux-eabi (TARGET_LIBGCC2_CFLAGS): Set to -fPIC.

2004-12-08  Paul Brook  <paul@codesourcery.com>

	* config/arm/unwind-arm.c (selfrel_offset): remove.
	(EIT_comparator): Use selfrel_offset31.
	(get_eit_entry): Ditto.
	(__gnu_unwind_pr_common): Ditto.

2004-12-07  Daniel Jacobowitz  <dan@codesourcery.com>

	* testsuite/gcc.dg/debug/dwarf2/dwarf-die1.c,
	testsuite/gcc.dg/debug/dwarf2/dwarf-die2.c,
	testsuite/gcc.dg/debug/dwarf2/dwarf-die3.c,
	testsuite/gcc.dg/debug/dwarf2/dwarf-die5.c,
	testsuite/gcc.dg/debug/dwarf2/dwarf-die6.c,
	testsuite/gcc.dg/debug/dwarf2/dwarf-die7.c,
	testsuite/gcc.dg/debug/dwarf2/dwarf2.exp: Merge from GCC 3.4.2.

2004-12-03  Mark Mitchell  <mark@codesourcery.com>

	* config/arm/linux-eabi.h (LIBGCC_SPEC): Do not define.

2004-11-30  Mark Mitchell  <mark@codesourcery.com>

	* function.c (INVOKE__main): Fix typo in comment.

2004-11-22  Mark Mitchell  <mark@codesourcery.com>

	* crtsuff.c (IN_LIBGCC2): Define.  Handle targets that use
	.init_array.
	* function.c (HAS_INIT_SECTION): Do not define.  Instead, make
	sure that INVOKE__main is set correctly.  
	(expand_main_function): Test INVOKE__main.
	* libgcc2.c: Do not define __main when using .init_array.
	* unwind-arm.h: Do not declare __gnu_unwind_execute. 
	* config/arm/arm.h (CTOR_LIST_BEGIN): Define specially when in
	libgcc.
	(CTOR_LIST_END): Likewise.
	(DTOR_LIST_BEGIN): Likewise.
	(DTOR_LIST_END): Likewise.
	(CTOR_SECTION_ASM_OP): Likewise.
	* config/arm/bpabi.h (INIT_SECTION_ASM_OP): Do not define it.
	(FINI_SECTION_ASM_OP): Likewise.
	(INIT_ARRAY_SECTION_ASM_OP): Define.
	(FINI_ARRAY_SECTION_ASM_OP): Likewise.
	* config/arm/libgcc-bpabi.ver: Add exception-handling symbols.
	* config/arm/unwind-arm.c (__gnu_unwind_execute): Make it static. 
	* doc/tm.texi (INIT_ARRAY_SECTION_ASM_OP): Document.
	(FINI_ARRAY_SECTION_ASM_OP): Likewise.
	* config.gcc (arm*-*-linux-gnueabi): Use __cxa_atexit.

2004-11-19  Mark Mitchell  <mark@codesourcery.com>

	* config.gcc (arm*-*-linux-gnueabi): Add it.
	* config/arm/bpabi.h (FPUTYPE_DEFAULT): Undefine it before
	redefining it.
	(TARGET_OS_CPP_BUILTINS): Likeiwse.
	* config/arm/linux-eabi.h: New file.
	* config/arm/linux-elf.h (LINUX_TARGET_INTERPRETER): New macro.
	(LINUX_TARET_LINK_SPEC): Likewise.
	(LINK_SPEC): Use it.
	* config/arm/t-linux-eabi: New file.
	
2004-11-19  Paul Brook  <paul@codesourcery.com>

	* unwind-arm.h: Don't include stdio.h.  Add prototype for abort().
	* config/arm/unwind-arm.c: Don't include stdio.h. Don't use NULL.

2004-11-18  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (target_float_switch): New variable..
	(arm_override_options): Use TARGET_DEFAULT_FLOAT_ABI and
	target_float_switch.
	* config/arm/arm.h (target_float_switch): Declare.
	(ARM_FLAG_SOFT_FLOAT): Remove.
	(TARGET_SWITCHES): Remove hard-float and soft-float.
	(TARGET_OPTIONS): Add hard-float and soft-float.
	(TARGET_DEFAULT_FLOAT_ABI): Define.
	* config/arm/coff.h (TARGET_DEFAULT_FLOAT_ABI): Define
	(TARGET_DEFAULT): Don't use ARM_FLAG_SOFT_FLOAT.
	* config/arm/elf.h: Don't use ARM_FLAG_SOFT_FLOAT.
	* config/arm/netbsd-elf.h: Ditto.
	* config/arm/netbsd.h: Ditto.
	* config/arm/pe.h: Ditto.
	* config/arm/unknown-elf.h: Ditto.
	* config/arm/wince-pe.h: Ditto.
	* config/arm/linux-elf.h (TARGET_DEFAULT_FLOAT_ABI): Define.
	* config/arm/semi.h (TARGET_DEFAULT_FLOAT_ABI): Define.
	* config/arm/semiaof.h (TARGET_DEFAULT_FLOAT_ABI): Define.

2004-11-17  Paul Brook  <paul@codesourcery.com>

	* config/arm/libunwind.S (__gnu_Unwind_Restore_VFP): New function.
	(__gnu_Unwind_Save_VFP): New function.
	* config/arm/unwind-arm.c (DEMAND_SAVE_VFP): Define.
	(_Unwind_VRS_Pop): Handle VFP registers.
	(__gnu_unwind_execute): Allow unwinding of VFP registers saved with
	fstmd.

2004-11-16  Paul Brook  <paul@codesourcery.com>

	* target-def.h (TARGET_CXX_ATEXIT_NAME): Remove.
	(TARGET_CXX_USE_AEABI_ATEXIT): Define.
	* target.h (struct gcc_target): Remove cxx.atexit_name.
	Add cxx.use_aeabi_atexit.
	* targhooks.c (default_cxx_atexit_name): Remove.
	* targhooks.h (default_cxx_atexit_name): Remove prototype.
	* config/arm/arm.c (arm_cxx_atexit_name): Remove.
	(arm_cxx_use_aeabi_atexit): New function.
	(TARGET_CXX_ATEXIT_NAME): Remove.
	(TARGET_CXX_USE_AEABI_ATEXIT): New function.
	* doc/tm.texi: Document TARGET_CXX_USE_AEABI_ATEXIT.
	* cp/decl.c (get_atexit_node): Reorder arguments for __aeabi_atexit.
	(register_dtor_fn): Ditto.

2004-11-05  Paul Brook  <paul@codesourcery.com>

	* target-def.h (TARGET_CXX_ATEXIT_NAME): Define.
	(TARGET_CXX): Add TARGET_CXX_ATEXIT_NAME.
	* target.h (gcc_target): Add cxx.atexit_name.
	* targhooks.c (default_cxx_atexit_name): New function.
	* targhooks.h (default_cxx_atexit_name): Add prototype.
	* config/arm/arm.c (arm_cxx_atexit_name): New function.
	(TARGET_CXX_ATEXIT_NAME): Define.
	* cp/decl.c (get_atexit_node): Use targetm.cxx.atexit_name.
	* doc/tm.texi: Document TARGET_CXX_ATEXIT_NAME.

2004-11-04  Mark Mitchell  <mark@codesourcery.com>

	* config/arm/arm.c (arm_handle_notshared_attribute): New function.
	* testsuite/g++.dg/ext/visibility/symbian1.C: New test.

2004-11-04  Mark Mitchell  <mark@codesourcery.com>

	* cp/decl2.c (determine_visibility): Honor
	CLASSTYPE_VISIBILITY_SPECIFIED.

2004-11-03  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (arm_compute_save_reg0_reg12_mask): Save PIC
	register if current_function_uses_pic_offset_table is set.

2004-10-27  Paul Brook  <paul@codesourcery.com>

	* configure.ac: Don't test for [build] __cxa_atexit when building a
	cross compiler.
	* configure: Regenerate.

2004-10-27  Paul Brook  <paul@codeosurcery.com>

	* configure.ac: Use build_exeext not host_exeext when lookin for
	target tools.
	* configure: Regenerate.

2004-10-13  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm-protos.h (arm_load_pic_register): Update prototype.
	* config/arm/arm.c (thumb_find_work_register): Update comments.
	(arm_load_pic_register): Add argument for scratch register.
	(arm_expand_prologue, thumb_expand_prologue): Pass extra argument.
	* config/arm/arm.md (builtin_setjmp_receiver): Ditto.

2004-10-12  Paul Brook  <paul@coodesourcery.com>

	* doc/invoke.texi: Add missing "-" in arm cpu names.

2004-10-12  Paul Brook  <paul@coodesourcery.com>

	* config/arm/bpabi.h (SUBTARGET_EXTRA_ASM_SPEC): Change meabi=3 to
	meabi=4.

2004-10-12  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.md (addsi3_cbranch_scratch): Correct constraints.
	Handle negative constants.

2004-10-12  Paul Brook  <paul@codesourcery.com>

	* configure.ac: Don't look for host assembler when building a canadian
	cross.
	* configure: Regenerate.

2004-10-05  Phil Edwards  <phil@codesourcery.com>

	* aclocal.m4 (_gcc_COMPUTE_GAS_VERSION):  Handle leading
	whitespace in binutils files (copy from trunk).
	* configure.ac (assembler check):  Always assign to gcc_cv_as.
	(linker check):  Handle leading whitespace in binutils files (copy
	from trunk).  Always assign to gcc_cv_ld.
	* configure:  Regenerated.

2004-10-01  Paul Brook  <paul@codesourcery.com>

	* config/am/arm.h (enum reg_class): Add missing comma.

2004-10-01  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (thumb_compute_saved_rag_mask): Or with bitmask,
	not register number.
	(thumb_find_work_register): Search full register range.

2004-10-01  Paul Brook  <paul@codesourcery.com>

	* config/arm/crti.asm: Give _init and _fini function type.

2004-09-30  Paul Brook  <paul@coudesourcery.com>

	* config.gcc: Add armv6{k,z,zk}
	* config/arm/arm-cores.def: Add arm1176 and mpcore.
	* config/arm/tune.md: Regenerate.
	* config/arm/arm.c (FL_FOR_ARCH6K, FL_FOR_ARCH6Z, FL_FOR_ARCH6ZK):
	Define.
	(all_architectures): Add armv6k, armv6z, armv6zk.
	* config/arm/lib1funcs.asm: Recognise new arm arcitectures.
	* doc/invoke.texi: Document new arch and cpu values.

2004-09-30  Paul Brook  <paul@codesourcery.com>

	Backport from mainline.
	2004-09-01  Richard Earnshaw  <rearnsha@arm.com>
	* arm/arm-cores.def (ARM_CORE): Add new field for the real name of the
	CPU.
	(arm7tdmi-s): New CPU name.
	* arm/arm.c (ARM_CORE): Update for new format.
	* arm/arm.h (ARM_CORE): Likewise.
	* arm/gentune.sh: Update for extra field.
	* config.gcc: Likewise.
	* arm/arm-tune.md: Regenerate.
	* doc/invoke.texi: Document the real processor names for ARM cpus.

	2004-09-01  Richard Earnshaw  <rearnsha@arm.com>
	* config.gcc (--with-cpu on ARM): Preserve the canonical cpu name
	for use in configargs.h.  Put the cname in a separate variable.  Use
	that to set target_cpu_default2.

2004-09-30  Paul Brook  <paul@codesourcery.com>

	* config/arm/symbian.h (STARTFILE_SPEC): Remove crt*.o.
	(ENDFILE_SPEC): Define.
	* config/arm/t-symbian.h (EXTRA_MULTILIB_PARTS): Set.

2004-09-29  Paul Brook  <paul@codesourcery.com>

	* c-decl.c (finish_decl): Call default_init_unwind_resume_libfunc.
	* except.c (default_init_unwind_resume_libfunc): New function.
	* except.h (default_init_unwind_resume_libfunc): Add prototype.
	* optabs.c (init_optabs): Don't set unwind_resume_libfunc.
	* target-def.h (TARGET_CXX_UNWIND_RESUME_NAME): Define.
	(TARGET_CXX): Use it.
	* target.h (struct gcc_target): Add cxx.unwind_resume_name.
	* targhooks.c (default_unwind_resume_name): New function.
	* targhooks.h (default_unwind_resume_name): Add prototype.
	* config/arm/arm.h (arm_cxx_unwind_resume_name): New function.
	(TARGET_CXX_UNWIND_RESUME_NAME): Define.
	* doc/tm.texi: Document TARGET_CXX_UNWIND_RESUME_NAME.
cp/
	* except.c (init_exception_processing): Set unwind_resume_libfunc.
ada/
	* misc.c (gnat_init_gcc_eh): Call default_init_unwind_resume_libfunc.
java/
	* decl.c (java_init_decl_processing): Call
	default_init_unwind_resume_libfunc.

2004-09-27  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm-protos.h (arm_output_fn_unwind): Add prototype.
	* config/arm/arm.c (thumb_pushpop): Use ARM_EABI_UNWIND_TABLES.
	(thumb_output_function_prologue, arm_unwind_emit): Ditto.
	(arm_output_fn_unwind): Ditto.
	* config/arm/arm.h (ARM_OUTPUT_FN_UNWIND): Define.
	(ARM_EABI_UNWIND_TABLES): Define.
	* config/arm/elf.h (ARM_OUTPUT_FN_UNWIND): Use ARM_OUTPUT_FN_UNWIND.

2004-09-25  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (arm_elf_asm_constructor): New function.
	* config/arm/arm.h (CTORS_SECTION_ASM_OP): Define.
	(CTORS_SECTION_FOR_TARGET, CTOR_LIST_END, CTOR_LIST_BEGIN): Define.
	* config/arm/elf.h (TARGET_ASM_CONSTRUCTOR): Define.
	(SUPPORTS_INIT_PRIORITY): Evaluate to false for EABI based targets.

2004-09-24  Paul Brook  <paul@codesourcery.com>

	* vasasm.c (default_unique_section_1): Don't use .gnu.linkonce
	when COMDAT is available.

2004-09-22  Paul Brook  <paul@codesourcery.com>

	* Makefile.in (USER_H): Add unwind-arm.h.
	* except.c (fnspec_ttable_indirect): Add.
	(init_eh): Set it.
	(add_ehspec_entry): Handle fnspec_ttable_indirect.
	(output_ttype): New function.
	(output_function_exception_table): Use it.  Handle
	fnspec_ttable_indirect.
	* target-def.h (TARGET_ASM_TTYPE): Define.
	(TARGET_EH_FNSPEC_TTABLE_INDIRECT): Ditto.
	* target.h (struct gcc_target): Add asm_out.ttype and
	eh_fnspec_ttable_indirect.
	* unwind-arm.h: New file.
	* unwind-c.c (CONTINUE_UNWINDING): Define.
	(PERSONALITY_FUNCTION): Add ARM EABI prototype and initialization
	code.  Use CONTINUE_UNWINDING.
	* unwind.h: Include unwind-arm.h when using ARM EABI unwinder.
	* config/arm/arm.c (arm_unwind_emit, arm_output_ttype): New functions.
	(arm_unwind_emit_stm, arm_unwind_emit_set): New functions.
	(TARGET_UNWIND_EMIT, TARGET_ASM_TTYPE): Define.
	(TARGET_EH_FNSPEC_TTABLE_INDIRECT): Ditto.
	(thumb_pushpop, thumb_output_function_prologue): Output frame
	unwinding directives.
	* config/arm/arm.h (MUST_USE_SJLJ_EXCEPTIONS): Only define when
	!TARGET_UNWIND_INFO.
	* config/arm/bpabi.h (TARGET_UNWIND_INFO): Define.
	* config/arm/elf.h (ASM_DECLARE_FUNCTION_NAME,
	ASM_DECLARE_FUNCTION_SIZE): Output frame unwinding annotatons.
	* config/arm/lib1funcs.asm: Include libunwind.s
	* config/arm/libunwind.S: New file.
	* config/arm/t-bpabi (LIB1ASMFUNCS): Add _unwind.
	(LIB2ADDEH, LIB2ADDEHDEP): Set.
	* config/arm/t-symbian (LIB2ADDEH, LIB2ADDEHDEP): Set.
	* config/arm/unwind-arm.c: New file.
	* doc/tm.texi: Document TARGET_ASM_TTYPE and
	TARGET_EH_FNSPEC_TTABLE_INDIRECT.

2004-09-21  Paul Brook  <paul@codesourcery.com>

	* varasm.c (default_assemble_integer): Return false for values wider
	than the target word size.  Works around GAS bug.

2004-09-19  Mark Mitchell  <mark@codesourcery.com>

	* cp/decl2.c (determine_visibility): Allow class visibility
	directives to override targetm.cxx.export_class_data.
	
2004-09-18  Paul Brook  <paul@codesourcery.com>

	* testsuite/g++.old-deja/g++.pt/static11.C: XFAIL on arm*-*-eabi.

2004-09-15  Mark Mitchell  <mark@codesourcery.com>

	* testsuite/g++.old-deja/g++.abi/cxa_vec.C: Adjust for ARM
	EABI.

2004-09-15  Mark Mitchell  <mark@codesourcery.com>

	* cp/decl.c (cxx_comdat_group): Check for VAR_DECLs before
	using DECL_VTABLE_OR_VTT_P.

2004-09-14  Mark Mitchell  <mark@codesourcery.com>

	* config.gcc: Do not build a shared libgcc for arm-none-eabi.

2004-09-14  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (arm_expand_prologue): Make args_to_push a
	HOST_WIDE_INT.

2004-09-10  Mark Mitchell  <mark@codesourcery.com>

	* configure.ac: Check for COMDAT support.  Robustify check for
	SHF_MERGE support.
	* configure: Regenerated.
	* config.in: Likewise.
	* langhooks-def.h (lhd_comdat_group): New function.
	(LANG_HOOKS_COMDAT_GROUP): New macro.
	(LANG_HOOKS_DECLS): Use it.
	* langhooks.c (lhd_comdat_group): Define.
	* langhooks.h (lang_hooks_for_decls): Add comdat_group.
	* output.h (named_section_flags): Make it a macro.
	(named_section_real): New function.
	(default_no_named_section): Add decl parameter.
	(default_elf_asm_named_section): Likewise.
	(default_coff_asm_named_section): Likewise.
	(default_pe_asm_named_section): Likewise.
	* target.h (gcc_target): Adjust type of named_section.
	* varasm.c (named_section_flags): Rename to named_section_real.
	Add decl parameter.
	(default_no_named_section): Add decl parameter.
	(default_elf_asm_named_section): Use COMDAT, if available.  Deal
	with the case that ASM_COMMENT_START is "@".
	(default_coff_asm_named_section): Add decl parameter.
	(default_pe_asm_named_section): Likewise.
	* config/alpha/alpha.c (vms_asm_named_section): Add decl
	parameter.
	(unicosmk_asm_named_section): Likewise.
	* config/arm/arm.c (arm_elf_asm_named_section): Remove.
	* config/arm/elf.h (TARGET_ASM_NAMED_SECTION): Likewise.
	* config/c4x/c4x.c (c4x_asm_named_section): Add decl parameter.
	* config/cris/cris-protos.h (cris_target_asm_named_section):
	Likewise.
	* config/cris/cris.c (cris_target_asm_named_section):
	Likewise.
	* config/h8300/h8300.c (h8300_asm_named_section): Likewise.
	* config/i386/i386-protos.h (i386_pe_asm_named_section):
	Likewise.
	* config/i386/winnt.c (i386_pe_asm_named_section): Likewise.
	* config/m68k/m68k.c (m68k_coff_asm_named_section): Likewise.
	* config/mcore/mcore.c (mcore_asm_named_section): Likewise.
	* config/mips/mips.c (irix_asm_named_section): Likewise.
	* config/rs6000/rs6000.c (rs6000_xcoff_asm_named_section):
	Likewise.
	* config/sparc/sparc.c (sparce_elf_asm_named_section): Likewise.
	* cp/cp-lang.h (LANG_HOOKS_COMDAT_GROUP): Define.
	* cp/cp-tree.h (cxx_comdat_group): Declare.
	* cp/decl.c (cxx_comdat_group): New function.

2004-09-10  Mark Mitchell  <mark@codesourcery.com>

	* config/arm/lib1funcs.asm (__aeabi_llsr): Define as alias.
	(__aeabi_lasr): Likewise.
	(__aeabi_llsl): Likewise.
	* config/arm/bpabi.h (__aeabi_llsr): Do not define here.
	(__aeabi_lasr): Likewise.
	(__aeabi_llsl): Likewise.

2004-09-07  Paul Brook  <paul@codesourcery.com>

	Backport from mainline.
	2004-09-01  Richard Earnshaw  <rearnsha@arm.com>
	* arm/ieee754-df.S (aeabi_ul2d, aeabi_l2d, floatundidf)
	(floatdidf): New functions.
	* arm/ieee754-sf.S (aeabi_ul2f, aeabi_l2f, floatundisf)
	(floatdisf): New functions.
	* t-arm-elf: Use them.

	2004-05-15  Richard Earnshaw  <reanrsha@arm.com>
	* arm/lib1funcs.asm (_lshrdi3, _ashrdi3, _ashldi3): Add ASM
	implementations for ARM and Thumb.
	* arm/t-arm-elf (LIB1ASMFUNCS): Use them.

2004-09-02  Mark Mitchell  <mark@codesourcery.com>

	* config/arm/bpabi.h (TARGET_BPABI_CPP_BUILTINS): Define.
	(TARGET_OS_CPP_BUILTINS): Likewise.
	* config/arm/symbian.h (TARGET_OS_CPP_BUILTINS): Include
	TARGET_BPABI_CPP_BUILTINS.
	* testsuite/g++.dg/abi/arm_rtti1.C: New test.
	
2004-09-02  Mark Mitchell  <mark@codesourcery.com>

	* config/arm/symbian.h (LIB_SPEC): Define to empty.
	* config/arm/t-symbian (SHLIB_LC): Likewise.

2004-09-02  Paul Brook  <paul@codesourcery.com>

	* config/arm/bpabi.c (__aeabi_ul2d, __aeabi_ul2f): Remove.

2004-09-02  Paul Brook  <paul@codesourcery.com>

	* decl2.c (determine_visibility): Only check data visibility
	for VAR_DECLS.

2004-09-02  Paul Brook  <paul@codesourcery.com>

	* config.gcc (arm*-*-eabi* | arm*-*-symbianelf*): Set
	default_use_cxa_atexit=yes.

2004-08-31  Mark Mitchell  <mark@codesourcery.com>

	* config.gcc (arm*-*-symbianelf*): Do not include t-bpabi.
	* config/arm/lib1funcs.asm: Do not include supplemental .S files
	when compiling for Symbian.
	* config/arm/symbian.h (RENAME_LIBRARY): New macro.
	(TARGET_OS_CPP_BUILTINS): Likewise.
	* config/arm/t-symbian (LIB1ASMFUNCS): Define.
	
2004-08-31  Mark Mitchell  <mark@codesourcery.com>

	* target-def.h (TARGET_CXX): Add TARGET_CXX_EXPORT_CLASS_DATA.
	* target.h (cxx): Add export_class_data.
	* config/arm/arm.c (arm_cxx_export_class_data): New function.
	(TARGET_CXX_EXPORT_CLASS_DATA): Use it.
	* cp/cp-tree.h (DECL_CONSTRUCTION_VTABLE_P): New macro.
	* cp/class.c (build_ctor_vtbl_group): Set DECL_CONSTRUCTION_VTABLE_P.
	* cp/decl2.c (determine_visibility): Honor 
	TARGET_CXX_EXPORT_CLASS_DATA.
	* testsuite/g++.dg/ext/visibility/arm1.C: New test.

2004-08-31  Mark Mitchell  <mark@codesourcery.com>

	* hooks.c (hook_bool_void_true): New function.
	* hooks.h (hook_bool_void_true): Declare.
	* target-def.h (TARGET_CXX): Add
	TARGET_CXX_KEY_METHOD_MAY_BE_INLINE.
	* target.h (struct cxx): Add key_method_may_be_inline.
	* config/arm/arm.c (arm_cxx_key_method_may_be_inline): New
	function.
	(TARGET_CXX_KEY_METHOD_MAY_BE_INLINE): New macro.
	* config/arm/bpabi.h: Use __THUMB_INTERWORK__ instead of
	__THUMB_INTERWORK.
	* cp/class.c (key_method): Rename to ...
	(determine_key_method): ... this.
	(finish_struct_1): Adjust accordingly.
	* cp/cp-tree.h (key_method): Declare.
	* cp/decl2.c (import_export_vtable): Do not set the linkage for a
	vtable before end-of-file on targets where an inline method cannot
	be the key method.
	(maybe_emit_vtables): Determine the key method here if it has not
	already been done.
	* doc/tm.texi (TARGET_CXX_KEY_METHOD_MAY_BE_INLINE): Document it.
	* testsuite/g++.dg/abi/key1.C: New test.
	
2004-08-16  Mark Mitchell  <mark@codesourcery.com>

	Backport:
	2004-08-02  Mark Mitchell  <mark@codesourcery.com>
	* libsupc++/cxxabi.h: Make all declarations have default
	visibility.
	* libsupc++/exception: Likewise.
	* libsupc++/new: Likewise.
	* libsupc++/typeinfo: Likewise.
	* libsupc++/unwind-cxx.h: Likewise.
	* libsupc++/eh_alloc.cc (__cxa_allocate_exception): Put it into
	the __cxxabiv1 namespace.
	(__cxa_free_exception): Likewise.
	* libsupc++/eh_aux_runtime.cc (__cxa_bad_cast): Likewise.
	(__cxa_bad_typeid): Likewise.
	* libsupc++/eh_catch.cc (__cxa_begin_catch): Likewise.
	(__cxa_end_catch): Likewise.
	* libsupc++/eh_globals.cc (__cxa_get_globals_fast): Likewise.
	(__cxa_get_globals): Likewise.
	* libsupc++/eh_throw.cc (__cxa_throw): Likewise.
	(__cxa_rethrow): Likewise.
	* libsupc++/pure.cc (__cxa_pure_virtual): Likewise.
	* libsupc++/eh_type.cc: Include <cxxabi.h>.

2004-08-26  Richarn Earnshaw <rearnsha@arm.com>

	Backport:
	* postreload.c (reload_cse_move2add): Allow any condjump, but check
	that the implicit set isn't clobbered in the jump insn.

2004-08-26  Paul Brook  <paul@codesourcery.com>

	* config/arm/symbian.h (SUBTARGET_ASM_FLOAT_SPEC): Default to
	-mfpu=vfp -march=armv5t
	* config/arm/t-symbian: Change multilib to mfloat-abi=softfp.

2004-08-25  Richard Earnshaw  <rearnsha@arm.com>

	PR target/15927
	* arm.h (THUMB_SECONDARY_OUTPUT_RELOAD_CLASS): Don't need a secondary
	reload if CLASS is BASE_REGS.

2004-08-25  Richard Earnshaw  <rearnsha@arm.com>

	* PR target/15948
	* arm.md (bicsi3_cbranch): Add alternative to handle tying operands
	one and two.

2004-08-24  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (arm_override_options): Update error message.
	* config/arm/arm.h (TARGET_HARD_FLOAT): Rename to
	TARGET_HARD_FLOAT_ABI.
	(TARGET_SOFT_FLOAT_ABI): Rename to TARGET_HARD_FLOAT.
	(LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Use TARGET_HARD_FLOAT_ABI.

2004-08-20  Mark Mitchell  <mark@codesourcery.com>

	* config.gcc (arm*-*-symbianelf*): Add t-symbian Makefile
	fragment.
	* config/arm/bpabi.h (RENAME_LIBRARY_SET): Fix typo.
	(SUBTARGET_EXTRA_ASM_SPEC): Pass -meabi=3 to the assembler.
	* config/arm/symbian.h (SUBTARGET_CPU_DEFAULT): Assume ARMV5
	architecture.
	(SUBTARGET_ASM_FLOAT_SPEC): Default to -mfpu=vfp for hard-float
	configurations.
	* config/arm/t-symbian: New file.
	
2004-08-19  Mark Mitchell  <mark@codesourcery.com>

	* testsuite/lib/target-supports.exp (check_profiling_available): 
	Return false for arm*-*-symbianelf* and arm*-*-eabi*.

2004-08-19  Mark Mitchell  <mark@codesourcery.com>

	* defaults.h (TARGET_LIBGCC_LIBFUNCS): Remove.
	* optabs.c (init_optabs): Don't check it.
	* config/arm/bpabi.h (TARGET_LIBGCC_LIBFUNCS): Do not define.
	* doc/tm.texi (TARGET_LIBGCC_FUNCS): Remove.
	
2004-08-19  Mark Mitchell  <mark@codesourcery.com>

	* bpabi.h (FPUTYPE_DEFAULT): Set it to FPUTYPE_VFP.

2004-08-16  Mark Mitchell  <mark@codesourcery.com>

	Backport:
	2004-08-12  Paul Brook  <paul@codesourcery.com>
	* config/arm/lib1funcs.asm (ARM_FUNC_ALIAS): Also alias _L__name.
	(aeabi_uidivmod, aeabi_idivmod): Provide thumb implementation.

	2004-08-09  Mark Mitchell  <mark@codesourcery.com>
	* configure.in (arm*-*-eabi*): New target.
	* configure: Regenerate.

	2004-08-09  Mark Mitchell  <mark@codesourcery.com>
	* config.gcc (arm*-*-eabi*): New target.
	* defaults.h (TARGET_LIBGCC_FUNCS): New macro.
	(TARGET_LIB_INT_CMP_BIASED): Likewise.
	* expmed.c (expand_divmod): Try a two-valued divmod function as a
	last resort.
	* gthr.h: Remove bogus tokens at end of #pragma.
	* optabs.c (expand_twoval_binop_libfunc): New function.
	(prepare_cmp_insn): Handle the !TARGET_LIB_INT_CMP_BIASED case.
	(prepare_float_lib_cmp): Try reversing the condition.
	(debug_optab_libfuncs): New function.
	* optabs.h (expand_twoval_binop_libfunc): Declare.
	* config/arm/arm.c (arm_init_libfuncs): New function.
	(arm_compute_initial_eliminatino_offset): Return HOST_WIDE_INT.
	(TARGET_INIT_LIBFUNCS): Define it.
	* config/arm/arm.h (TARGET_BPABI): New macro.
	* config/arm/arm-protos.h
	(arm_compute_initial_elimination_offset): Return HOST_WIDE_INT.
	* config/arm/bpabi.S: New file.
	* config/arm/bpabi.c: Likewise.
	* config/arm/bpabi.h: Likewise.
	* config/arm/ieee754-df.S (__aeabi_dneg): New function or alias.
	(__aeabi_drsub): Likewise.
	(__aeabi_dsub): Likewise.
	(__aeabi_dadd): Likewise.
	(__aeabi_ui2d): Likewise.
	(__aeabi_i2d): Likewise.
	(__aeabi_f2d): Likewise.
	(__aeabi_dmul): Likewise.
	(__aeabi_ddiv): Likewise.
	(__aeabi_cdrcmple): Likewise.
	(__aeabi_cdcmpeq): Likewise.
	(__aeabi_cdcmple): Likewise.
	(__aeabi_dcmpeq): Likewise.
	(__aeabi_dcmplt): Likewise.
	(__aeabi_dcmple): Likewise.
	(__aeabi_dcmpge): Likewise.
	(__aeabi_dcmpgt): Likewise.
	(__aeabi_dcmpun): Likewise.
	(__aeabi_d2iz): Likewise.
	(__aeabi_d2uiz): Likewise.
	(__aeabi_d2f): Likewise.
	* config/arm/ieee754-sf.S (__aeabi_fneg): New function or alias.
	(__aeabi_frsub): Likewise.
	(__aeabi_fsub): Likewise.
	(__aeabi_fadd): Likewise.
	(__aeabi_ui2f): Likewise.
	(__aeabi_i2f): Likewise.
	(__aeabi_fmul): Likewise.
	(__aeabi_fdiv): Likewise.
	(__aeabi_cfrcmple): Likewise.
	(__aeabi_cfcmpeq): Likewise.
	(__aeabi_cfcmple): Likewise.
	(__aeabi_fcmpeq): Likewise.
	(__aeabi_fcmplt): Likewise.
	(__aeabi_fcmple): Likewise.
	(__aeabi_fcmpge): Likewise.
	(__aeabi_fcmpgt): Likewise.
	(__aeabi_fcmpun): Likewise.
	(__aeabi_f2iz): Likewise.
	(__aeabi_f2uiz): Likewise.
	* config/arm/lib1funcs.asm (ARM_CALL): New macro.
	(__aeabi_uidivmod): New function or alias.
	(__aeabi_idivmod): Likewise.
	(__aeabi_idiv0): Likewise.
	(__aeabi_ldiv0): Likewise.
	(__aeabi_llsr): Likewise.
	(__aeabi_lasr): Likewise.
	(__aeabi_llsl): Likewise.
	(bpabi.S): Include it.
	* config/arm/libgcc-bpabi.ver: New file.
	* config/arm/symbian.h (ARM_DEFAULT_ABI): Remove.
	(LINK_SPEC): Remove.
	* config/arm/t-arm-elf (LIB1ASMFUNCS): Add __aeabi_lcmp and
	__aeabi_ulcmp.
	* config/arm/t-bpabi: New file.
	* doc/tm.texi (TARGET_LIBGCC_FUNCS): New entry.
	(TARGET_LIB_INT_CMP_BIASED): Likewise.

2004-08-16  Mark Mitchell  <mark@codesourcery.com>

	Backport:
	2004-08-05  Mark Mitchell  <mark@codesourcery.com>
	* tree.c (handle_dll_attribute): Move here from i383/winnt.c.
	Replace use of DECL_INLINE with DECL_DECLARED_INLINE_P.  Set
	DECL_VISIBLITY.  Test TARGET_DLLIMPORT_DECL_ATTRIBUTES with #if.
	* tree.h (handle_dll_attribute): Declare.  Test
	TARGET_DLLIMPORT_DECL_ATTRIBUTES with #if.
	* c-common.h (c_determine_visibility): Declare.
	* c-common.c (c_determine_visibility): New function.
	* c-decl.c (finish_decl): Use it.
	(finish_function): Likewise.
	* defaults.h (TARGET_DLLIMPORT_DECL_ATTRIBUTES): Define it to
	zero, by default.  Use #if, not	#ifdef, to test it.
	* config/arm/arm.c (arm_attribute_table): Use
	handle_dll_attribute.  Test TARGET_DLLIMPORT_DECL_ATTRIBUTES with
	#if.
	* config/arm/pe.h (TARGET_DLLIMPORT_DECL_ATTRIBUTES): Define to 1.
	* config/i386/cygming.h (TARGET_DLLIMPORT_DECL_ATTRIBUTES): Define
	to 1.
	* config/i386/i386-protos.h (ix86_handle_dll_attribute): Remove.
	* config/i386/i386.c (ix86_attribute_table): Use
	handle_dll_attribute for dllimport/dllexport.  Test
	TARGET_DLLIMPORT_DECL_ATTRIBUTES with #if.
	* config/i386/winnt.c (ix86_handle_dll_attribute): Remove.
	* config/mcore/mcore.h (TARGET_DLLIMPORT_DECL_ATTRIBUTES): Define
	it to 1.
	* config/mcore/mcore.c (TARGET_DLLIMPORT_DECL_ATTRIBUTES): Test it
	with #if.
	* config/sh/symbian-pre.h (TARGET_DLLIMPORT_DECL_ATTRIBUTES): Define
	it to 1.
	* doc/extend.texi (dllexport): Clarify and correct documentation.
	(dllimport): Likewise.
	* doc/tm.texi (TARGET_DLLIMPORT_DECL_ATTRIBUTES): Mention
	handle_dll_attribute.

	2004-08-05  Mark Mitchell  <mark@codesourcery.com>
	* decl.c (start_preparsed_function): Move determine_visibility
	call.
	* decl2.c (determine_visibility): Incorporate dllexport testing.

	2004-08-05  Mark Mitchell  <mark@codesourcery.com>
	* g++.dg/ext/visibility/assign1.C: Use scan-hidden and
	dg-require-visiblity.
	* g++.dg/ext/visibility/fvisibility-inlines-hidden.C: Likewise.
	* g++.dg/ext/visibility/fvisibility.C: Likewise.
	* g++.dg/ext/visibility/memfuncts.C: Likewise.
	* g++.dg/ext/visibility/new1.C: Likewise.
	* g++.dg/ext/visibility/pragma.C: Likewise.
	* g++.dg/ext/visibility/staticmemfuncts.C: Likewise.
	* g++.dg/ext/visibility/virtual.C: Likewise.
	* g++/dg/ext/visibility/visibility-1.C: Likewise.
	* g++/dg/ext/visibility/visibility-2.C: Likewise.
	* g++/dg/ext/visibility/visibility-3.C: Likewise.
	* g++/dg/ext/visibility/visibility-4.C: Likewise.
	* g++/dg/ext/visibility/visibility-5.C: Likewise.
	* g++/dg/ext/visibility/visibility-6.C: Likewise.
	* g++/dg/ext/visibility/visibility-7.C: Likewise.
	* g++/dg/ext/visibility/visibility-8.C: New test.
	* gcc.c-torture/compile/dll.x: Remove.
	* gcc.dg/dll-2.c: Use dg-require-dll
	* gcc.dg/visibility-10.c: New test.
	* lib/gcc-dg.exp (dg-require-dll): Add Symbian to list of targets
	supporting DLLs.
	* testsuite/lib/scanasm.exp (scan_hidden): New function.
	(scan_not_hidden): Likewise.

	2004-08-05  Mark Mitchell  <mark@codesourcery.com>
	* g++.dg/ext/visibility/visibility-8.C: Add constructor and
	destructor tests.

	Backport:
	* defaults.h (TARGET_DECLSPEC): New macro.
	* c-cppbuiltin.c (c_cpp_builtins): Handle TARGET_DECLSPEC.
	* config/arm/pe.h (SUBTARGET_CPP_SPEC): Remove __declspec support.
	* config/arm/symbian.h (TARGET_DLLIMPORT_DECL_ATTRIBUTES): Define.
	* config/i386/beof-elf.h (TARGET_OS_CPP_BUILTINS): Remove
	__declspec support.
	(TARGET_DECLSPEC): Define.
	* config/i386/cygming.h (TARGET_OS_CPP_BUILTINS): Remove
	__declspec support.
	* config/i386/i386-interix.h (TARGET_OS_CPP_BUILTINS): Remove
	__declspec support.
	(TARGET_DECLSPEC): Define.
	* config/mcore/mcore.h (TARGET_CPU_CPP_BUILTINS): Remove
	__declspec support.
	* config/sh/symbian-pre.h (SUBTARGET_CPP_SPEC): Remove __declspec
	support.
	* doc/tm.texi (TARGET_DECLSPEC): Document.

2004-08-16  Mark Mitchell  <mark@codesourcery.com>

	Backport:
	2004-08-03  Mark Mitchell  <mark@codesourcery.com>
	* class.c (build_vtable): Do not set DECL_VISIBILITY here.
	(check_field_decls): Or here.
	(check_methods): Or here.
	(initialize_array): Don't mess with DECL_CONTEXT.
	* cp-tree.h (start_decl): Adjust prototype.
	(determine_visibility): New function.
	* decl.c (duplicate_decls): Remove checks for hidden "operator
	new".
	(build_library_fn_1): Give all library functions default
	visibility.
	(start_decl): Add pop_scope_p parameter.  Tidy.
	(cp_finish_decl): Do not pop scopes here.  Call
	determine_visibility for variable definitions.
	(start_preparsed_function): Call determine_visibility.
	* decl2.c (determine_visibility): New function.
	* method.c (use_thunk): Fix formatting.
	* parser.c (cp_parser_condition): Adjust calls to start_decl.
	(cp_parser_init_declarator): Likewise.
	* pt.c (instantiate_decl): Always call pop_nested_class.
	* rtti.c (get_tinfo_decl): Do not set DECL_VISIBILITY.
	(tinfo_base_init): Likewise.

2004-08-17  Daniel Bornstein  <danfuzz@milk.com>

	PR target/17019
	* arm.md (addsi3_cbranch_scratch): Correct case labels.

2004-08-16  Mark Mitchell  <mark@codesourcery.com>

	Backport:
	2004-08-03  Mark Mitchell  <mark@codesourcery.com>
	* gthr-gnat.c: Add visibility #pragmas.
	* gthr-gnat.h : Likewise.
	* gthr.h: Likewise.
	* libgcc2.c (__ffsSI2): Move prototype to libgcc2.h.
	(__ffsDI2): Likewise.
	(__clzSI2): Likewise.
	(__ctzSI2): Likewise.
	(__ctzDI2): Likewise.
	(__popcountSI2): Likewise.
	(__popcountDI2): Likewise.
	(__paritySI2): Likewise.
	(__parityDI2): Likewise.
	* libgcc2.h: Add visibility #pragmas.
	(__clzDI2): Add prototype.
	(__clzSI2): Likewise.
	(__ctzSI2): Likewise.
	(__ffsDI2): Likewise.
	(__ffsSI2): Likewise.
	(__ctzDI2): Likewise.
	(__popcountSI2): Likewise.
	(__popcountDI2): Likewise.
	(__paritySI2): Likewise.
	(__parityDI2): Likewise.
	* unwind-dw2-fde.h: Add visibility #pragmas.
	* unwind.h: Likewise.

2004-08-16  Mark Mitchell  <mark@codesourcery.com>

	Backport:
	2004-07-26  Niall Douglas  <s_fsfeurope2@nedprod.com>
		    Brian Ryner  <bryner@brianryner.com>
	PR c++/9283
	PR c++/15000
	* c-common.c (c_common_attribute_table): Allow
	handle_visibility_attribute to be called for types.
	(handle_visibility_attribute) When given a type, set the visibility
	bits on the TYPE_NAME.  When given a decl, don't set no_add_attrs
	so that we can check later whether the attribute was present. Added
	warning if attribute applied to non class type.
	* c-decl.c (diagnose_mismatched_decls): Updated rules for merging
	decls and checking that they are consistent.
	* common.opt: Added -fvisibility.
	* c.opt, c-opts.c: Added -fvisibility-inlines-hidden.
	* c-pragma.h, c-pragma.c: Added handle_pragma_visibility().
	* flags.h, tree.h: Added assorted support defines for overall patch
	* opts.c: Added parsing support for -fvisibility.
	* tree.c (build_decl): Set visibility for all decls to be whatever
	is in force at that time.
	* varasm.c (default_binds_local_p_1): Reworked logic determining
	when to make a symbol locally bound.
	* doc/invoke.texi: Added documentation for -fvisibility and
	-fvisibility-inlines-hidden.

	2004-07-26  Niall Douglas  <s_fsfeurope2@nedprod.com>
		    Brian Ryner  <bryner@brianryner.com>
	PR c++/15000
	PR c++/9283
	* class.c (check_field_decls): Apply hidden visibility if
	-fvisibility-inlines-hidden and inlined unless otherwise specified
	(build_vtable): Set vtable visibility to class visibility.
	(check_field_decls): Default static member visibility to class
	visibility.
	(check_methods): Default method visibility to class visibility.
	* cp-tree.h: Added CLASSTYPE_VISIBILITY and
	CLASSTYPE_VISIBILITY_SPECIFIED macro.
	* decl.c (duplicate_decls): New logic for merging definition decls
	with declaration decls. Added ignore & warning when non default
	applied to global operator new or delete.
	* method.c, optimize.c, rtti.c: Added setting of VISIBILITY_SPECIFIED
	wherever VISIBILITY was changed
	* rtti.c (get_tinfo_decl): Set typeinfo visibility to class
	visibility.
	(tinfo_base_init): Set typeinfo name visibility to class visibility.

	2004-07-26  Niall Douglas  <s_fsfeurope2@nedprod.com>
		    Brian Ryner  <bryner@brianryner.com>
	PR c++/9283
	PR c++/15000
	* gcc.dg/visibility-9.c, gcc.dg/visibility-a.c: New tests.
	* g++.dg/ext/visibility/: New directory.
	* g++.dg/ext/visibility-1.C, g++.dg/ext/visibility-2.C
	g++.dg/ext/visibility-3.C, g++.dg/ext/visibility-4.C,
	g++.dg/ext/visibility-5.C, g++.dg/ext/visibility-6.C,
	g++.dg/ext/visibility-7.C: Move to g++.dg/ext/visibility/.
	* g++.dg/ext/visibility/fvisibility.C,
	g++.dg/ext/visibility/fvisibility-inlines-hidden.C,
	g++.dg/ext/visibility/fvisibility-override1.C
	g++.dg/ext/visibility/fvisibility-override2.C
	g++.dg/ext/visibility/memfuncts.C
	g++.dg/ext/visibility/noPLT.C
	g++.dg/ext/visibility/pragma.C
	g++.dg/ext/visibility/pragma-override1.C
	g++.dg/ext/visibility/pragma-override2.C
	g++.dg/ext/visibility/staticmemfuncts.C
	g++.dg/ext/visibility/virtual.C: New tests.

2004-08-16  Mark Mitchell  <mark@codesourcery.com>

	* cp/decl.c (grokdeclarator): Make sure ctor_return_type is set
	before calling check_special_function_return_type.  
 
	Backport:
	2004-08-03  Mark Mitchell  <mark@codesourcery.com>
	* config.gcc (arm*-*-symbianelf*): New target.
	* config/arm/symbian.h: New file.

2004-08-12  Paul Brook  <paul@codesourcery.com>

	* testsuite/g++.dg/abi/arm_cxa_vec_1.C: New test.

2004-08-12  Paul Brook  <paul@codesourcery.com>

	* dwarf2out.h (dwarf2out_frame_finish): Conditionalize outputting eh
	frame info.
	* doc/tm.texi: Document interaction between TARGET_UNWIND_INFO and
	DWARF2_UNWIND_INFO.

2004-08-11  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm-protos.h (arm_finalize_pic) Rename ...
	(arm_load_pic_register): ... to this.
	* config/arm/arm.c (arm_finalize_pic): Rename ...
	(arm_load_pic_register): ... to this.  Always output insns at the
	current location.  Load via low reg in thumb mode.
	(arm_expand_prologue): Call arm_load_pic_register.
	(thumb_expand_prologue): Ditto.
	* config/arm/arm.h (FINALIZE_PIC): Remove.
	* config/arm/arm.md (builtin_setjmp_receiver): Call
	arm_load_pic_register.

2004-08-11  Paul Brook  <paul@codesourcery.com>

	* arm.c (thumb_force_lr_save): Add prototype.
	(thumb_compute_save_reg_mask): New function.
	(thumb_find_work_register): New function.
	(arm_get_frame_offsets): Use thumb_compute_save_reg_mask.
	(thumb_unexpanded_epilogue): Ditto.  Remove redundant code.
	Don't clobber r3 when removing pretend args.
	(thumb_expand_prologue): Use thumb_compute_save_reg_mask.
	(thumb_output_function_prologue): Use new functions.
	(thumb_set_return_address): Use thumb_compute_save_reg_mask.
	* arm.h (THUMB_REG_PUSHED_P): Remove.

2004-08-10  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm-protos.h (arm_set_return_address,
	thumb_set_return_address): Add prototypes.
	* config/arm/arm.h (ARM_FT_EXCEPTION_HANDLER): Remove.
	* config/arm/arm.c (arm_compute_func_type,
	use_return_insn, arm_compute_save_reg0_reg12_mask,
	arm_compute_save_reg_mask, arm_output_function_prologue,
	arm_output_epilogue): Replace ARM_FT_EXCEPTION_HANDLER with
	current_function_calls_eh_return.
	(thumb_exit, thumb_pushpop, thumb_unexpanded_epilogue): Replace
	old eh code.
	(arm_set_return_address, thumb_set_return_address): New functions.
	* config/arm/arm.h (MUST_USE_SJLJ_EXCEPTIONS, DWARF2_UNWIND_INFO,
	ARM_EH_STACKADJ_REGNUM, EH_RETURN_STACKADJ_RTX): Define.
	* config/arm/arm.md (VUNSPEC_EH_RETURN): Add.
	(epilogue): Use the stackadj register.
	(eh_return, arm_eh_return, thumb_eh_return): New pattern.

2004-08-05  Paul Brook  <paul@codesourcery.com>

	* target-def.h (TARGET_CXX_CDTOR_RETURNS_THIS): Define.
	(TARGET_CXX): Use it.
	* target.h (struct gcc_target): Add cdtor_returns_this.
	* config/arm/arm.c (arm_cxx_cdtor_returns_this): New function.
	(TARGET_CXX_CDTOR_RETURNS_THIS): Define.
	* doc/tm.texi: Document TARGET_CXX_CDTOR_RETURNS_THIS.

2004-08-05  Paul Brook  <paul@codesourcery.com>

	* cp/Make-lang.in (cp/semantics.o, cp/optimize.o): Depend on TARGET_H.
	* cp/cp-tree.h (struct language_function): Rename x_dtor_label to
	x_cdtor_label.
	(dtor_label): Rename ...
	(cdtor_label): ... to this.
	* cp/decl.c (begin_constructor_body): Remove.
	(check_special_function_return_type): Maybe change the return type.
	(grokdeclarator): Pass the class type.
	(start_function): Constructors may need a return label.
	(finish_constructor_body, finish_destructor_body): Set the return
	value.
	(begin_function_body): Don't call begin_constructor_body.
	(finish_function): Don't warn for constructors or destructors.
	* cp/optimize.c: Include target.h.
	(maybe_clone_body): Remap the function result.
	* cp/semantics.c: Include target.h.
	(finish_return_stmt): Maybe jump to return label for constructors.

2004-08-03  Richard Earnshaw  <rearnsha@arm.com>

	* arm-cores.def: Sort by architecture.  Add arm946es, arm966es,
	arm968es, arm10e, arm1020e, arm1022e.
	* invoke.texi: Update list of ARM cores.
	* arm-tune.md: Regenerate.

2004-08-03  Richard Earnshaw <rearnsha@arm.com>

	* arm/gentune.sh: New file.
	* arm/t-arm: New file.
	* arm/arm-tune.md: New file (autogenerated).
	* config.gcc (arm*-*-*): Add t-arm to tmake_file for all variants.
	* arm.md (attribute tune): Delete.  Include arm-tune.md.

2004-08-03  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (emit_sfm): Only emit a single frame adjustment.

2004-08-02  Paul Brook  <paul@codesourcery.com>

	PR rtl-optimization/15068
	* flow.c (init_propagate_block_info): Check condition is reversible.

2004-07-21  Paul brook  <paul@codesourcery.com>

	* config/arm/arm.c (thumb_expand_prologue): Remove bogus GEN_INT.

2004-07-19  Paul Brook  <paul@codesourcery.com>

	* target.h (struct gcc_target): Put unwind_emit in the right place.

2004-07-15  Paul Brook  <paul@codesourcery.com>

	* dwarf2out.c (dwarf2out_begin_prologue): Rename IA64_UNWIND_INFO
	to TARGET_UNWIND_INFO.
	* except.c (output_function_exception_table): Ditto.
	* except.h: Ditto.
	* opts.c (decode_options): Ditto.
	* toplev.c (rest_of_handle_final): Ditto.
	* final.c (final_start_function): Ditto.
	(final_scan_insn, final_scan_insn): Replace IA64_UNWIND_EMIT with
	target hook.
	* targhooks.h (default_unwind_emit): Declare.
	* targhooks.c (default_unwind_emit): New function.
	* target-def.h: Define and use TARGET_UNWIND_EMIT.
	* target.h (struct gcc_target): Add unwind_emit.
	* config/ia64/ia64.c (TARGET_UNWIND_EMIT): Define.
	* config/ia64/ia64.h: Rename IA64_UNWIND_INFO to TARGET_UNWIND_INFO.
	Remove IA64_UNWIND_EMIT.
	* doc/tm.texi: Document TARGET_UNWIND_EMIT and TARGET_UNWIND_INFO.

2004-06-30  Paul Brook  <paul@codesourcery.com>

	* config/arm/cirrus.md (cirrus_arm_movdi, cirrus_movsf_hard_insn,
	cirrus_movdf_hard_insn): Set pool ranges for coprocessor loads.

2004-06-29  Paul Brook  <paul@codesourcery.com>

	* target-def.h (TARGET_CXX_GET_COOKIE_SIZE,
	TARGET_CXX_COOKIE_HAS_SIZE): Define.
	(TARGET_CXX): Use them.
	* target.h (struct gcc_target): Add cxx.get_cookie_size and
	cxx.cookie_has_size.
	* targhooks.c (default_cxx_get_cookie_size): New fucntion.
	* targhooks.h (default_cxx_get_cookie_size): Add prototype.
	* config/arm/arm.c (TARGET_CXX_GET_COOKIE_SIZE,
	TARGET_CXX_COOKIE_HAS_SIZE): Define.
	(arm_get_cookie_size, arm_cookie_has_size): New functions.
	* Make-lang.in (cp/init.o): Add dependency on $(TARGET_H).
	* doc/tm.texi: Document TARGET_CXX_GET_COOKIE_SIZE and
	TARGET_CXX_COOKIE_HAS_SIZE.

2004-06-29  Paul Brook  <paul@codesourcery.com>

	* cp/init.c: Include target.h.
	(get_cookie_size): Remove and replace with target hook.
	Update callers.
	(build_new_1): Store the element size in the cookie.

2004-06-25  Paul Brook  <paul@codesourcery.com>

	* target-def.h (TARGET_CXX_GUARD_TYPE, TARGET_CXX_GUARD_MASK_BIT,
	TARGET_CXX): Define.
	(TARGET_INITIALIZER): Use TARGET_CXX.
	* target.h (struct gcc_target): Add struct cxx.
	* targhooks.h (default_cxx_guard_type): Add prototype.
	* targhooks.c (default_cxx_guard_type): New function.
	* config/arm/arm.c (TARGET_CXX_GUARD_TYPE, TARGET_CXX_GUARD_MASK_BIT):
	Define.
	(arm_cxx_guard_type, arm_cxx_guard_mask_bit): New functions.
	* doc/tm.texi: Document TARGET_CXX_GUARD_TYPE and
	TARGET_CXX_GUARD_MASK_BIT.

2004-06-25  Paul Brook  <paul@codesourcery.com>

	* cp/decl2.c (get_guard): Call targetm.cxx.guard_type.
	(get_guard_bits, get_guard_cond): Call targetm.cxx.guard_mask_bit.

2004-06-25  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __ARM_EABI__.

2004-06-25  Richard Earnshaw  <rearnsha@arm.com>

	* arm.c (arm_arch4t): New variable.
	(arm_override_options): Initialize it.  If compiling for armv5 or
	higher clear TARGET_INTERWORK.
	(output_call): Abort if called for armv5.  Use BX if it's available.
	(output_call_mem): Use BLX if available and ensure that all armv5
	code is interworking safe.
	(output_return_instruction): Always use BX in preference to MOV if
	it's available.
	(arm_output_epilogue): Likewise.
	(arm_final_prescan_insn): Never conditionally call a subroutine
	on armv5.
	* arm.h (arm_arch4t): Declare.
	* arm.md (call_reg_armv5, call_value_reg_armv5): New.
	(call_reg_arm, call_value_reg_arm): Renamed from call_reg and 
	call_value_reg respectively.
	(call_reg_thumb_v5, call_value_reg_thumb_v5): New.
	(call_reg_thumb, call_value_reg_thumb): Renamed from call_indirect
	and call_value_indirect respectively.

2004-06-24  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (arm_output_epilogue): Remove excess checks.

2004-06-21  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.h (ARM_LEGITIMIZE_RELOAD_ADDRESS): Soft-float need
	not imply FPA.

2004-06-15  Paul Brook  <paul@codesourcery.com>

	* dwarf2out.c (output_call_frame_info): Support dwarf3 cie entries.

2004-05-28  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (arm_output_epilogue): Remove redundant code.

2004-05-28  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (thumb_force_lr_save): New function.
	(arm_get_frame_offsets, thumb_unexpanded_epilogue,
	thumb_output_function_prologue): Use it.
	(thumb_expand_prologue): Set lr_save_eliminated.

2004-05-25  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (thumb_exit, thumb_unexpanded_epilogue): Remove
	pointless #ifdef.

2004-05-17  Paul Brook  <paul@codesourcery.com>

	* unwind-dw2-fde.c (get_cie_encoding): Handle dwarf3 CIE format.
	* unwind-dw2.c (extract_cie_info): Ditto.
	(_Unwind_FrameState): Change retaddr_column to word type.

2004-05-20  Paul Brook  <paul@codesourcery.com>

	Backport from mainline.
	* calls.c (precompute_arguments): Use PROMOTE_FUNCTION_MODE instead
	of PROMOTE_FOR_CALL_ONLY.
	* explow.c (promote_mode): Ditto.
	* function.c (assign_temp): Ditto.
	* system.h: Poison PROMOTE_FOR_CALL_ONLY.
	* config/arm/arm-protos.h (arm_function_value): Add prototype.
	* config/arm/arm.c (arm_promote_prototypes): New function.
	(TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
	TARGET_PROMOTE_PROTOTYPES): Define.
	(arm_function_value): New function.
	* config/arm/arm.h (PROMOTE_FUNCTION_MODE): Define.
	(FUNCTION_VALUE): Use arm_function_value.
	(PROMOTE_PROTOTYPES): Define.
	* config/cris/cris.h: Use PROMOTE_FUNCTION_MODE instead
	of PROMOTE_FOR_CALL_ONLY/PROMOTE_MODE.
	* config/mmix/mmix.h: Ditto.
	* config/s390/s390.h: Ditto.
	* config/sparc/sparc.h: Ditto.
	* doc/tm.texi: Document PROMOTE_FUNCTION_MODE.
	Remove PROMOTE_FOR_CALL_ONLY.

2004-05-15  Richard Earnshaw  <reanrsha@arm.com>

	* arm.h (TARGET_APCS_32): Delete.
	(TARGET_MMU_TRAPS): Delete.
	(TARGET_CPU_CPP_BUILTINS): Unconditionally define __APCS_32__.  Never
	define __APCS_26__.
	(CPP_SPEC): Remove checking of -mapcs-{26,32}.
	(ARM_FLAG_APCS_32, ARM_FLAG_MMU_TRAPS): Delete.
	(TARGET_SWITCHES): Remove alignment_traps and apcs-{26,32} switches.
	(prog_mode_type): Delete.
	(PROMOTE_MODE): Always promote unsigned for HImode.
	(SECONDARY_INPUT_RELOAD_CLASS): Simplify.
	(MASK_RETURN_ADDR): Simplify.
	* arm.c (arm_prgmode): Delete.
	(arm_override_options, arm_gen_rotated_half_load): Simplify.
	(print_multi_reg, output_return_instruction): Simplify.
	(arm_output_epilogue, arm_final_prescan_insn): Simplify.
	(arm_return_addr): Simplify.
	* arm.md (prog_mode): Delete.
	(conds): Simplify.
	(zero_extendhisi2, extendhisi2, movhi, movhi_bytes): Simplify.
	(rotated_loadsi, movhi_insn_littleend, movhi_insn_bigend): Delete.
	(loadhi_si_bigend, loadhi_preinc, loadhi_shiftpreinc): Delete.
	(loadhi_shiftpredec): Delete.
	(peephole for post-increment on HImode load): Delete.
	* arm/crtn.asm: (FUNC_END): Simplify.
	* arm/lib1funcs.asm: Remove APCS-26 return macros.
	* arm/aof.h, arm/coff.h arm/elf.h arm/linux-elf.h arm/netbsd-elf.h
	* arm/netbsd.h arm/pe.h arm/semi.h arm/semiaof.h arm/unknown-elf.h 
	* arm/vxworks.h arm/wince-pe.h: Tidy TARGET_DEFAULTS and
	MULTILIB_DEFAULTS as required.
	* arm/t-arm-elf arm/t-linux arm/t-pe arm/t-semi arm/t-wince-pe
	* arm/t-xscale-coff arm/t-xscale-elf arm/uclinux-elf: Tidy MULTILIB
	variables as required.
	* doc/invoke.texi (ARM Options): Remove obsolete flags.

2004-05-14  Richard Earnshaw  <rearnsha@arm.com>

	* arm.md (all peephole2 patterns): Use predicates that validate
	register classes as appropriate.

2004-05-14  Paul Brook  <paul@codesourcery.com>

	* stor-layout.c (update_alignment_for_field): Use
	targetm.align_anon_bitfield.
	* target-def.h (TARGET_ALIGN_ANON_BITFIELD): Define.
	(TARGET_INITIALIZER): Use it.
	* target.h (struct gcc_target): Add align_anon_bitfield.
	* config/arm/arm.c (arm_align_anon_bitfield):  New function.
	(TARGET_ALIGN_ANON_BITFIELD): Define.
	* doc/tm.texi: Document TARGET_ALIGN_ANON_BITFIELD.

2004-05-13  Paul Brook  <paul@codesourcery.com>

	Backport from mainline.
	* flags.h (flag_shor_enums): Update comments.
	* opts.c (decode_options): Set flag_short_enums=2.
	(process_options): Set default for flag_short_enums.
	* config/arm/arm.h (DEFAULT_SHORT_ENUMS): Define

2004-05-13  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.h (PCC_BITFIELD_TYPE_MATTERS): Define.

2004-05-07  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.h (TARGET_AAPCS_BASED): Define.
	(TARGET_DOUBLEWORD_ALIGN): Use it.
	(WCHAR_TYPE): Define.
	(WCHAR_SIZE_TYPE): Define.
	(SIZE_TYPE): Define.

2004-05-06  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm-protots.h (vfp_mem_operand): Rename ...
	(arm_coproc_mem_operand): ... To this.
	* config/arm/arm.c (arm_legitimate_address_p): Allow ldrd modes.
	(arm_legitimate_index_p): Ditto.
	(vfp_mem_operand): Rename ...
	(arm_coproc_mem_operand): ... To this.  Handle writeback modes.
	(vfp_secondary_reload_class): Use it.
	(output_move_double): Use doubleword load/store instructions.
	(arm_hard_regno_mode_ok): Only allow even reg pairs for ldrd.
	* config/arm/arm.h (TARGET_LDRD): Define.
	(EXTRA_CONSTRAINT_STR_ARM): Add 'Uy'.
	* config/gcc/arm/arm.md (arm_movdi): Allow all valid memory operands.
	New splitter for invalid doubleword loads.
	* config/arm/iwmmxt.md (iwmmxt_arm_movdi): Use Uy constraint.
	* config/arm/vfp.md (arm_movdi_vfp): Allow all valid memory operands.
	* doc/md.texi: Document Uy constraint.

2004-05-04  Paul Brook  <paul@codesourcery.com>

	* config/arm/crti.asm: Push an even number of registers.
	* config/arm/crtn.asm: And restore them.  Load via sp.

2004-04-30  Paul Brook  <paul@codesourcery.com>

	* config.gcc: Simplify arm --with-{cpu,tune} test.
	* config/arm/arm-cores.def: Document whitespace restrictions.

2004-04-30  Paul Brook  <paul@codesourcery.com>

	* config.gcc: Default ep9312 to hard-float.
	* config/arm/arm-cores.def: Add ARCH field.
	* config/arm/arm.c (FL_FOR_ARCH*): Define.
	(arm_arch_cirrus): New variable.
	(all_cores): Set and use arch.
	(all_architectures): Ditto.
	(arm_arch_name): New variable.
	(arm_override_options): Set it. Use [SUB]TARGET_CPU_DEFAULT.
	Set and use arm_arch_cirrus.
	* config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Set arch defines.
	(enum processor_type): Update ARM_CORE define.
	(enum target_cpus): Add.  Replaces TARGET_CPU_* defines.
	(CPP_SPEC): Remove %(cpp_cpu_arch).
	(CPP_ARCH_DEFAULT_SPEC): Remove.
	(CPP_CPU_ARCH_SPEC): Remove.
	(EXTRA_SPECS): Don't use CPP_*ARCH*_SPEC.
	(FPUTYPE_DEFAULT): Don't define here.

2004-04-30  Paul Brook  <paul@codesourcery.com>

	* arm.c (arm_needs_doubleword_align): Use mode alignment.

2004-04-29  Paul Brook  <paul@codesourcery.com>

	* config.gcc: Pull list of cores from arm-cores.def.

2004-04-28  Paul Brook  <paul@codesourcery.com>

	* dwarf2out.c (mem_loc_descriptor): Handle shifts.

2004-04-28  Paul Brook  <paul@codesourcery.com>

	* config/arm/lib1funcs.asm: Recognize armv5tej and armv6.

2004-04-27  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (arm_expand_epilogue): Count blocks of 4 regs.

2004-04-26  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (arm_legitimate_index_p): Correct iwmmxt offsets.

2004-04-26  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (arm_legitimate_index_p): Correct maverick offsets.

2004-04-20  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (arm_legitimate_address_p): Use rtx_equal_p.

2004-04-20  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (arm_expand_prologue): Fix size calculation.

2004-04-19  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.md (fixuns_truncsfsi2, fixuns_truncdfsi2,
	floatunssisf2, floatunssidf2): New patterns.

2004-04-08  Paul Brook  <paul@codesourcery.com>

	* arm.h (CLASS_LIKELY_SPILLED_P): Define.

2004-04-01  Mark Mitchell  <mark@codesourcery.com>

	PR target/14040
	* genemit.c (gen_split): Change prototype of generated code.
	* genrecog.c (write_action): Adjust prototype for and calls to
	gen_split_*.
	* gensupport.c (struct queue_elem): Add split field.
	(queue_pattern): Return a value.  Clear the split field.
	(process_rtx): Maintain an association between an insn and the
	split generated from it for a define_insn_and_split.
	(process_one_cond_exec): Generate a new split for a
	define_insn_and_split.
	* config/arm/arm-protos.h (arm_split_constant): Add insn
	parameter.
	(emit_constant_insn): New function.
	(arm_gen_constant): Use it.
	* config/arm/arm.md: Adjust calls to arm_split_constant.

2004-03-25  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (vfp_print_multi): Remove.
	(arm_output_fldmx): New function.
	(vfp_emit_fstmx): Return block size, not insn. Add ARM10 VFPr1 bugfix.
	(arm_expand_prologue): Update to match.
	(arm_get_vfp_saved_size): New Function.
	(arm_get_frame_offsets): Use it.
	(arm_output_epilogue): Use new functions.

2004-03-24  Paul Brook  <paul@nowt.org>

	* config.gcc <arm>: Add --with-abi=
	* config/arm/arm-protos.h (arm_get_frame_size, thumb_get_frame_size,
	thumb_far_jump_used): Remove prototypes.
	(arm_needs_doubleword_align): Add prototype.
	(thumb_compute_initial_elimination_offset): Ditto.
	* config/arm/arm.c (arm_get_frame_offsets): New function.
	(use_return_insn, output_return_instruction, arm_output_epilogue,
	arm_output_function_epilogue, arm_compute_initial_elimination_offset,
	arm_expand_prologue, thumb_expand_epilogue): Use it.
	(arm_abi, target_abi_name, all_arm_abis): New variables.
	(arm_override_options): Set them.  Set structure padding for AAPCS.
	(arm_return_in_memory): Update ABI check.
	(arm_init_cumulative_args): Initialize can_split.
	(arm_needs_doubleword_align): New function.
	(arm_function_arg): Don't split args after pushing to stack. Handle
	doubleword/even reg alignment.
	(arm_va_arg): Handle all doubleword aligned args.
	(add_minpoolforward ref, dump_minpool, push_minpool_fix): Align based
	on ABI, not CPU.
	(arm_compute_save_reg0_reg12_mask): Fix comment.
	(thumb_get_frame_size, thumb_get_frame_size): Remove.
	(thumb_jump_far_used_p): Remove superfluous argument.  Return save
	value for alignment.
	(thumb_unexpanded_epilogue, thumb_output_function_prologue): Change
	to match.
	(thumb_compute_initial_elimination_offset): New function.
	(thumb_expand_prologue): Use arm_get_frame_offsets.  Remove
	unneccessary rounding.
	* config/arm/arm.h (target_abi_name): Declare.
	(ARM_DOUBLEWORD_ALIGN, DOUBLEWORD_ALIGNMENT, TARGET_IWMMXT_ABI,
	arm_abi_type, ARM_DEFAULT_ABI): Define.
	(ARM_FLAG_ATPCS): Remove.
	(TARGET_OPTIONS, OPTION_DEFAULT_SPECS): Add -mabi=.
	(BIGGEST_ALIGNMENT, PREFERRED_STACK_BOUNDARY, STACK_BOUNDARY): Use it.
	(ADJUST_FIELD_ALIGN, DATA_ALIGNMENT, LOCAL_ALIGNMENT,
	TYPE_NEEDS_IWMMXT_ALIGNMENT): Remove.
	(LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P, FUNCTION_ARG_REGNO_P):
	Contitionalize on ABI, not CPU.
	(struct arm_stack_offsets): Define.
	(struct machine_function): Add stack_offsets.  Remove frame_size.
	(FUNCTION_ARG_PARTIAL_NREGS): Don't split if previous args have been
	pushed.
	(FUNCTION_ARG_ADVANCE, FUNCTION_ARG_BOUNDARY): Handle general
	doubleword alignment.
	(THUMB_INITIAL_ELIMINATION_OFFSET,
	ARM_INITIAL_ELIMINATION_OFFSET): Remove.
	(INITIAL_ELIMINATION_OFFSET): Call functions directly.
	* config/arm/arm.md (align_8): Enable for all targets.
	* config/arm/netbsd-elf.h (TARGET_DEFAULT): Remove TARGET_ATPCS.
	(ARM_DEFAULT_ABI): Define.
	* doc/invoke.texi <ARM>: Document -mabi=. Update documentation for
	-mstructure-size-boundary.

2004-03-15  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (thumb_expand_prologue): Tie prologue insns to fp.

2004-03-14  Richard Earnshaw  <rearnsha@arm.com>

	* arm.h (EXTRA_CONSTRAINT_STR_ARM): Update comment.

2004-03-13  Richard Earnshaw  <rearnsha@arm.com>

	* arm.c (arm_legitimate_address_p): New argument, OUTER.  Pass through
	to arm_legitimate_index_p.  Update all callers with SET as default
	value.
	(arm_legitimate_index_p): New argument, OUTER.  Restrict the index
	range if OUTER is a sign-extend operation on QImode.  Correctly
	reject shift operations on sign-extended QImode addresses.
	(bad_signed_byte_operand): Delete.
	(arm_extendqisi_mem_op): New function.
	* arm.h (EXTRA_CONSTRAINT_ARM): Delete.  Replace with...
	(EXTRA_CONSTRAINT_STR_ARM): ... this.  Handle extended address
	constraints.
	(CONSTRAINT_LEN): New.
	(EXTRA_CONSTRAINT): Delete.  Replace with...
	(EXTRA_CONSTRAINT_STR): ... this.
	(PREDICATE_CODES): Remove bad_signed_byte_operand.
	* arm.md (extendqihi_insn): Use new constraint Uq.  Rework.  Length
	is now always default.
	(define_splits for bad sign-extend loads): Delete.
	(arm_extendqisi, arm_extendqisi_v5): Likewise.
	* arm/vfp.md (arm_movsi_vfp, arm_movdi_vfp, movsf_vfp, movdf_vfp):
	Rework 'U' constraint to 'Uv'.
	* arm-protos.h: Remove bad_signed_byte_operand.  Add
	arm_extendqisi_mem_op.
	* doc/md.texi (ARM constraints): Rename VFP constraint (now Uv).
	Add Uq constraint.

2004-03-05  Paul Brook  <paul@codesourcery.com>

	* arm.h (ARM_FLAG_VFP): Remove.
	(ARM_FLAG_ATPCS, CIRRUS_FIX_INVALID_INSNS): Renumber.
	* netbsd-elf.h (ARM_FLAG_VFP): Remove.

2004-02-18  Paul Brook  <paul@codesourcery.com>

	* rtlanal.c (rtx_varies_p): Return 0 for NULL_RTX

2004-02-18  Paul Brook  <paul@codesourcery.com>

	PR debug/12934
	* dwarf2out.c (loc_descriptor_from_tree): Handle
	EXPR_WITH_FILE_LOCATION.

2004-02-11  Mark Mitchell  <mark@codesourcery.com>

	* gcc.c (set_collect_gcc_options): Use double quotes instead of
	single quotes on Windows.
	* tlink.c (recompile_files): Do not assume that "rename" can
	overwrite an existing file.  Use "&&" as the command separator
	rather than ";".

	* collect2.c (collect_wait): Check return code from pwait.
	(collect_execute): Pass third argument to open.  Check return code
	from open.  Redirect both stdout and stderr when redirecting.

	* system.h (WIFSIGNALED, WTERMSIG, WIFEXITED, WEXITSTATUS,
	WSTOPSIG, SCOREDUMP, WCOREFLG): Remove definitions.

2004-02-11  Mark Mitchell  <mark@codesourcery.com>

	* cp/repo.c (IDENTIFIER_REPO_USED): Use tree flag 5.
	(IDENTIFIER_REPO_CHOSEN): Use tree flag 6.
	(extract_string): Use double quotes, rather than single quotes, on
	Windows.

2004-01-30  Paul Brook  <paul@codesourcery.com>

	* aof.h (REGISTER_NAMES): Add vfp reg names
	(ADDITIONAL_REGISTER_NAMES): Ditto.
	* aout.h (REGISTER_NAMES): Ditto.
	(ADDITIONAL_REGISTER_NAMES): Ditto.
	* arm-protos.h: Update/Add Prototypes.
	* arm.c (init_fp_table): Rename from init_fpa_table. Update users.
	Only allow 0.0 for VFP.
	(fp_consts_inited): Rename from fpa_consts_inited.  Update users.
	(values_fp): Rename from values_fpa.  Update Users.
	(arm_const_double_rtx): Rename from const_double_rtx_ok_for_fpa.
	Update users.  Only check valid constants for this hardware.
	(arm_float_rhs_operand): Rename from fpa_rhs_operand.  Update Users.
	Only allow consts for FPA.
	(arm_float_add_operand): Rename from fpa_add_operand.  Update users.
	Only allow consts for FPA.
	(use_return_insn): Check for saved VFP regs.
	(arm_legitimate_address_p): Handle VFP DFmode addressing.
	(arm_legitimize_address): Ditto.
	(arm_general_register_operand): New function.
	(vfp_mem_operand): New function.
	(vfp_compare_operand): New function.
	(vfp_secondary_reload_class): New function.
	(arm_float_compare_operand): New function.
	(vfp_print_multi): New function.
	(vfp_output_fstmx): New function.
	(vfp_emit_fstm): New function.
	(arm_output_epilogue): Output VPF reg restore code.
	(arm_expand_prologue): Output VFP reg save code.
	(arm_print_operand): Add 'P'.
	(arm_hard_regno_mode_ok): Return modes for VFP regs.
	(arm_regno_class): Return classes for VFP regs.
	(arm_compute_initial_elimination_offset): Include space for VFP regs.
	(arm_get_frame_size): Ditto.
	* arm.h (FIXED_REGISTERS): Add VFP regs.
	(CALL_USED_REGISTERS): Ditto.
	(CONDITIONAL_REGISTER_USAGE): Enable VFP regs.
	(FIRST_VFP_REGNUM): Define.
	(LAST_VFP_REGNUM): Define.
	(IS_VFP_REGNUM): Define.
	(FIRST_PSEUDO_REGISTER): Include VFP regs.
	(HARD_REGNO_NREGS): Handle VFP regs.
	(REG_ALLOC_ORDER): Add VFP regs.
	(enum reg_class): Add VFP_REGS.
	(REG_CLASS_NAMES): Ditto.
	(REG_CLASS_CONTENTS): Ditto.
	(CANNOT_CHANGE_MODE_CLASS) Handle VFP Regs.
	(REG_CLASS_FROM_LETTER): Add 'w'.
	(EXTRA_CONSTRAINT_ARM): Add 'U'.
	(EXTRA_MEMORY_CONSTRAINT): Define.
	(SECONDARY_OUTPUT_RELOAD_CLASS): Handle VFP regs.
	(SECONDARY_INPUT_RELOAD_CLASS): Ditto.
	(REGISTER_MOVE_COST): Ditto.
	(PREDICATE_CODES): Add arm_general_register_operand,
	arm_float_compare_operand and vfp_compare_operand.
	* arm.md (various): Rename as above.
	(divsf3): Enable when TARGET_VFP.
	(divdf3): Ditto.
	(movdfcc): Ditto.
	(sqrtsf2): Ditto.
	(sqrtdf2): Ditto.
	(arm_movdi): Disable when TARGET_VFP.
	(arm_movsi_insn): Ditto.
	(movsi): Only split with general regs.
	(cmpsf): Use arm_float_compare_operand.
	(push_fp_multi): Restrict to TARGET_FPA.
	(vfp.md): Include.
	* vfp.md: New file.
	* fpa.md (various): Rename as above.
	* doc/md.texi: Document ARM w and U constraints.

2004-01-15  Paul Brook  <paul@codesourcery.com>

	* config.gcc: Add with_fpu.  Allow with-float=softfp.
	* config/arm/arm.c (arm_override_options): Rename *-s to *s.
	Break out of loop when we find a float-abi.  Fix typo.
	* config/arm/arm.h (OPTION_DEFAULT_SPECS): Add "fpu".
	Set -mfloat-abi=.
	* doc/install.texi: Document --with-fpu.

2003-01-14  Paul Brook  <paul@codesourcery.com>

	* config.gcc (with_arch): Add armv6.
	* config/arm/arm.h: Rename TARGET_CPU_*_s to TARGET_CPU_*s.
	* config/arm/arm.c (arm_overrride_options): Ditto.

2004-01-08  Richard Earnshaw  <rearnsha@arm.com>

	* arm.c (FL_ARCH3M): Renamed from FL_FAST_MULT.
	(FL_ARCH6): Renamed from FL_ARCH6J.
	(arm_arch3m): Renamed from arm_fast_multiply.
	(arm_arch6): Renamed from arm_arch6j.
	* arm.h: Update all uses of above.
	* arm-cores.def: Likewise.
	* arm.md: Likewise.

	* arm.h (CPP_CPU_ARCH_SPEC): Emit __ARM_ARCH_6J__ define for armV6j,
	not arm6j.  Add entry for arch armv6.

2004-01-07  Richard Earnshaw  <rearnsha@arm.com>

	* arm.c (arm_emit_extendsi): Delete.
	* arm-protos.h (arm_emit_extendsi): Delete.
	* arm.md (zero_extendhisi2): Also handle zero-extension of 
	non-subregs.
	(zero_extendqisi2, extendhisi2, extendqisi2): Likewise.
	(thumb_zero_extendhisi2): Only match if not v6.
	(arm_zero_extendhisi2, thumb_zero_extendqisi2, arm_zero_extendqisi2)
	(thumb_extendhisi2, arm_extendhisi2, arm_extendqisi)
	(thumb_extendqisi2): Likewise.
	(thumb_zero_extendhisi2_v6, arm_zero_extendhisi2_v6): New patterns.
	(thumb_zero_extendqisi2_v6, arm_zero_extendqisi2_v6): New patterns.
	(thumb_extendhisi2_insn_v6, arm_extendhisi2_v6): New patterns.
	(thumb_extendqisi2_v6, arm_extendqisi_v6): New patterns.
	(arm_zero_extendhisi2_reg, arm_zero_extendqisi2_reg): Delete.
	(arm_extendhisi2_reg, arm_extendqisi2_reg): Delete.
	(arm_zero_extendhisi2addsi): Remove subreg.  Add attributes.
	(arm_zero_extendqisi2addsi, arm_extendhisi2addsi): Likewise.
	(arm_extendqisi2addsi): Likewise.

2003-12-31  Mark Mitchell  <mark@codesourcery.com>

	* diagnostic.c (bug_report_request): Use email form.
	* gcc.c (execute): Likewise.
	* version.c (version_string): Modify.
	(bug_report_url): Likewise.

	Revert this change:
	* config/arm/arm.h (THUMB_LEGTITIMIZE_RELOAD_ADDRESS): Reload REG
	+ REG addressing modes.

	* regrename.c (find_oldest_value_reg): Handle HARD_REGNO_NREGS > 1
	correctly.

	* config/arm/arm.h (THUMB_LEGTITIMIZE_RELOAD_ADDRESS): Reload REG
	+ REG addressing modes.

2003-12-30  Mark Mitchell  <mark@codesourcery.com>

	* config/arm/arm.h (THUMB_LEGITIMATE_CONSTANT_P): Accept
	CONSTANT_P_RTX.

2003-30-12  Paul Brook  <paul@codesourcery.com>

	* longlong.h: protect arm inlines with !defined (__thumb__)

2003-30-12  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Always define __arm__.

2003-12-30  Nathan Sidwell  <nathan@codesourcery.com>

	* builtins.c (expand_builtin_apply_args_1): Fix typo in previous
	change.

2003-12-29  Nathan Sidwell  <nathan@codesourcery.com>

	* builtins.c (expand_builtin_apply_args_1): Add pretend args size
	to the virtual incoming args pointer for downward stacks.

2003-12-29  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm-cores.def: Add cost function.
	* config/arm/arm.c (arm_*_rtx_costs): New functions.
	(arm_rtx_costs): Remove
	(struct processors): Add rtx_costs field.
	(all_cores, all_architectures): Ditto.
	(arm_override_options): Set targetm.rtx_costs.
	(thumb_rtx_costs): New function.
	(arm_rtx_costs_1): Remove cases handled elsewhere.
	* config/arm/arm.h (processor_type): Add COSTS parameter.

2003-12-29  Nathan Sidwell  <nathan@codesourcery.com>

	* config/arm/arm.md (generic_sched): arm926 has its own scheduler.
	(arm926ejs.md): Include it.
	* config/arm/arm926ejs.md: New pipeline description.

2003-12-24  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (arm_arch6j): New variable.
	(arm_override_options): Set it.
	(arm_emit_extendsi): New function.
	* config/arm/arm-protos.h (arm_emit_extendsi): Add prototype.
	* config/arm/arm.h (arm_arch6j): Declare.
	* config/arm/arm.md: Add sign/zero extend insns.

2003-12-23  Mark Mitchell  <mark@codesourcery.com>

	* calls.c (expand_call): Recognize calls to "sqrt" and create
	corresponding notes.

2003-12-23  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (all_architectures): Add armv6.
	* doc/invoke.texi: Document it.

2003-12-23  Zack Weinberg  <zack@codesourcery.com>
	    Nathan Sidwell  <nathan@codesourcery.com>
	    Mark Mitchell  <mark@codesourcery.com>

	* collect2.c (windows.h): Include.
	(dup2): Remove.
	(handler): Change prototype.
	(unhandled_filter): New funciton.
	(install_handlers): Likewise.
	(disable_break): Likewise.
	(enable_break): Likewise.
	(main): Call install_handlers rather than signal directly.
	(collect_execute): Use pexec.
	(scan_prog_file): Likewise.
	(scan_libraries): Likewise.

2003-12-19  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.md: Add load1 and load_byte "type" attrs.  Modify
	insn patterns to match.
	* config/arm/arm-generic.md: Ditto.
	* config/arm/cirrus.md: Ditto.
	* config/arm/fpa.md: Ditto.
	* config/amm/iwmmxt.md: Ditto.
	* config/arm/arm1026ejs.md: Ditto.
	* config/arm/arm1135jfs.md: Ditto.  Add insn_reservation and bypasses
	for 11_loadb.

2003-12-18  Nathan Sidwell  <nathan@codesourcery.com>

	* config/arm/arm-protos.h (arm_no_early_alu_shift_value_dep): Declare.
	* config/arm/arm.c (arm_adjust_cost): Check shift cost for
	TYPE_ALU_SHIFT and TYPE_ALU_SHIFT_REG.
	(arm_no_early_store_addr_dep, arm_no_early_alu_shift_dep,
	arm_no_early_mul_dep): Correctly deal with conditional execution,
	parallels and single shift operations.
	(arm_no_early_alu_shift_value_dep): Define.
	* arm.md (attr type): Replace 'normal' with 'alu',
	'alu_shift' and 'alu_shift_reg'.
	(attr core_cycles): Adjust.
	(*addsi3_carryin_shift, andsi_not_shiftsi_si, *arm_shiftsi3,
	*shiftsi3_compare0, *notsi_shiftsi, *notsi_shiftsi_compare0,
	*not_shiftsi_compare0_scratch, *cmpsi_shiftsi, *cmpsi_shiftsi_swp,
	*cmpsi_neg_shiftsi, *arith_shiftsi, *arith_shiftsi_compare0,
	*arith_shiftsi_compare0_scratch, *sub_shiftsi,
	*sub_shiftsi_compare0, *sub_shiftsi_compare0_scratch,
	*if_shift_move, *if_move_shift, *if_shift_shift): Set type
	attribute appropriately.
	* config/arm/arm1026ejs.md (alu_op): Adjust.
	(alu_shift_op, alu_shift_reg_op): New.
	* config/arm/arm1136.md: Add better bypasses for early
	registers. Remove load[234] and store[234] bypasses.
	(11_alu_op): Adjust.
	(11_alu_shift_op, 11_alu_shift_reg_op): New.

2003-12-15  Nathan Sidwell  <nathan@codesourcery.com>

	* config/arm/arm-protos.h (arm_no_early_store_addr_dep,
	arm_no_early_alu_shift_dep, arm_no_early_mul_dep): Declare.
	* config/arm/arm.c (arm_no_early_store_addr_dep,
	arm_no_early_alu_shift_dep, arm_no_early_mul_dep): Define.
	* config/arm/arm1026ejs.md: Add load-store bypass.
	* config/arm/arm1136jfs.md (11_alu_op): Take 2 cycles.
	Add bypasses between instructions.

2003-12-10  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (arm_fpu_model): New variable.
	(arm_fload_abi): New variable.
	(target_fpe_name): Rename from target_fp_name.
	(target_fpu_name): New variable.
	(arm_is_cirrus): Remove.
	(fpu_desc): New struct.
	(all_fpus): Define.
	(pf_model_for_fpu): Define.
	(all_loat_abis): Define.
	(arm_override_options): Set fp arch flags based on -mfpu=
	and -float-abi=.
	(FIRST_FPA_REGNUM): Rename from FIRST_ARM_FP_REGNUM.
	(LAST_FPA_REGNUM): Rename from LAST_ARM_FP_REGNUM.
	(*): Use new TARGET_* flags.
	* config/arm/arm.h (TARGET_ANY_HARD_FLOAT): Remove.
	(TARGET_HARD_FLOAT): No longer implies TARGET_FPA.
	(TARGET_SOFT_FLOAT): Ditto.
	(TARGET_SOFT_FLOAT_ABI): New.
	(TARGET_MAVERICK): Rename from TARGET_CIRRUS.  No longer implies
	TARGET_HARD_FLOAT.
	(TARGET_VFP): No longer implies TARGET_HARD_FLOAT.
	(TARGET_OPTIONS): Add -mfpu=.
	(FIRST_FPA_REGNUM): Rename from FIRST_ARM_FP_REGNUM.
	(LAST_FPA_REGNUM): Rename from LAST_ARM_FP_REGNUM.
	(arm_pf_model): Define.
	(arm_float_abi_type): Define.
	(fputype): Add FPUTYPE_VFP.  Change SOFT_FPA->NONE
	* config/arm/arm.md: Use new TARGET_* flags.
	* config/arm/cirrus.md: Ditto.
	* config/arm/fpa.md: Ditto.
	* config/arm/elf.h (ASM_SPEC): Pass -mfloat-abi= and -mfpu=.
	* config/arm/semi.h (ASM_SPEC): Ditto.
	* config/arm/netbsd-elf.h (SUBTARGET_ASM_FLOAT_SPEC): Specify vfp.
	(FPUTYPE_DEFAULT): Set to VFP.
	* doc/invoke.texi: Document -mfpu= and -mfloat-abi=.

2003-11-22  Phil Edwards  <phil@codesourcery.com>

	PR target/12476
	* config/arm/arm.c (arm_output_mi_thunk):  In Thumb mode, use
	'bx' instead of 'b' to avoid branch range restrictions.  Output
	the thunk immediately before the thunked-to function.
	* config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME):  Do not emit
	.thumb_func if a thunk is being generated.  Emit .code 16 along
	with .thumb_func if a thunk is not being generated.

2003-11-15  Nicolas Pitre <nico@cam.org>

	* config/arm/arm.md (ashldi3, arm_ashldi3_1bit, ashrdi3,
	arm_ashrdi3_1bit, lshrdi3, arm_lshrdi3_1bit): New patterns.
	* config/arm/iwmmxt.md (ashrdi3_iwmmxt): Renamed from ashrdi3.
	(lshrdi3_iwmmxt): Renamed from lshrdi3.
	* config/arm/arm.c (IWMMXT_BUILTIN2): Renamed argument accordingly.

2003-11-12  Steve Woodford  <scw@wasabisystems.com>
	    Ian Lance Taylor  <ian@wasabisystems.com>

	* config/arm/lib1funcs.asm (ARM_DIV_BODY, ARM_MOD_BODY): Add new
	code for __ARM_ARCH__ >= 5 && ! defined (__OPTIMIZE_SIZE__).

2003-11-05  Phil Edwards  <phil@codesourcery.com>

	* config/arm/arm.md (insn):  Add new V6 instruction names.
	(generic_sched):  New attr.
	* config/arm/arm-generic.md:  Use generic_sched here.
	* config/arm/arm1026ejs.md:  Do not model fetch/issue/decode
	stages of pipeline.  Adjust latency counts accordingly.
	* config/arm/arm1136jfs.md:  New file.

2003-11-05  Mark Mitchell  <mark@codesourcery.com>

	* calls.c (initialize_argument_information): Add CALL_FROM_THUNK_P
	parameter.  Use it instead of current_function_is_thunk.
	* function.h (struct function): Update documentation for is_thunk.
	* tree.h (CALL_FROM_THUNK_P): New macro.
	* config/alpha/alpha.c (alpha_sa_mask): Do not check
	no_new_pseudos when testing current_function_is_thunk.
	* config/rs6000/rs6000.c (rs6000_ra_ever_killed): Likeiwse.

2003-10-28  Mark Mitchell  <mark@codesourcery.com>

	* config/arm/arm.h (processor_type): New enumeration type.
	(CPP_ARCH_DEFAULT_SPEC): Set appropriately for ARM 926EJ-S,
	ARM1026EJ-S, ARM1136J-S, and ARM1136JF-S processor cores.
	(CPP_CPU_ARCH_SPEC): Likewise.
	* config/arm/arm.c (arm_tune): New variable.
	(all_cores): Use cores.def.
	(all_architectures): Add representative processor.
	(arm_override_options): Restructure way in which tuning
	information is deduced.
	* arm.md: Update "insn" and "type" attributes throughout.
	(insn): New attribute.
	(type): Compute "mult" from "insn" attribute.  Add load2,
	load3, load4 alternatives.
	(arm automaton): Move to arm-generic.md.
	* config/arm/arm-cores.def: New file.
	* config/arm/arm-generic.md: Likewise.
	* config/arm/arm1026ejs.md: Likewise.

2004-06-29  Paul Brook  <paul@codesourcery.com>

	* g++.old-deja/g++.abi/arraynew.C: Handle ARM EABI cookies.
	* g++.old-deja/g++.abi/cxa_vec.C: Allocate larger cookies for AEABI.

2004-06-15  Paul Brook  <paul@codesourcery.com>

	* gcc.dg/arm-mmx-1.c: Use asm to clobber registers.

2004-05-11  Paul Brook  <paul@codesourcery.com>

	* gcc.c-torture/compile/20010518-1.c: Force enum size.

2004-04-08  Paul Brook  <paul@codesourcery.com>

	* gcc.dg/spill-1.c: New test.

2004-04-05  Paul Brook  <paul@codesourcery.com>

	PR2123
	* g++.gd/expr/anew1.C: XFAIL and make reproducible.  Call abort on
	failure and exit(0) on success.
	* g++.gd/expr/anew2.C: Ditto.
	* g++.gd/expr/anew3.C: Ditto.
	* g++.gd/expr/anew4.C: Ditto. 

2004-04-01  Paul Brook  <paul@codesourcery.com>

	* gcc.dg/arm-mmx-1.c: Add -mabi=iwmmxt to dg-options.

2004-02-04  Ian Lance Taylor  <ian@wasabisystems.com>

	* gcc.dg/arm-mmx-1.c: Don't look for ldmfd if -mthumb.

2003-12-29  Mark Mitchell  <mark@codesourcery.com>

	* g++.old-deja/g++.pt/static11.C: Correct XFAIL syntax.

	* gcc.dg/builtins-config.h: Include <ctype.h>, not <limits.h>.
