Commit Graph

340 Commits

Author SHA1 Message Date
Richard Earnshaw 68d560d4d6 arm.c (arm_arch4t): New variable.
* 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.

From-SVN: r83647
2004-06-25 10:42:21 +00:00
Richard Earnshaw 97358092a4 re PR target/15927 (THUMB -O2: strength-reduced iteration variable ends up off by 1)
PR target/15927
* arm.h (THUMB_SECONDARY_OUTPUT_RELOAD_CLASS): Don't need a secondary
reload if CLASS is BASE_REGS.

From-SVN: r83548
2004-06-23 10:39:50 +00:00
Paul Brook de6f27a82e arm.h (ARM_LEGITIMIZE_RELOAD_ADDRESS): Soft-float need not imply FPA.
* config/arm/arm.h (ARM_LEGITIMIZE_RELOAD_ADDRESS): Soft-float need
	not imply FPA.

From-SVN: r83434
2004-06-21 13:32:09 +00:00
Ian Lance Taylor 082a099ce4 system.h: Poison NO_RECURSIVE_FUNCTION_CSE.
* system.h: Poison NO_RECURSIVE_FUNCTION_CSE.
	* calls.c (prepare_call_address): Don't test
	NO_RECURSIVE_FUNCTION_CSE.
	* config/arc/arc.h (NO_RECURSIVE_FUNCTION_CSE): Don't define.
	* config/arm/arm.h (NO_RECURSIVE_FUNCTION_CSE): Likewise.
	* config/avr/avr.h (NO_RECURSIVE_FUNCTION_CSE): Likewise.
	* config/frv/frv.h (NO_RECURSIVE_FUNCTION_CSE): Likewise.
	* config/i386/i386.h (NO_RECURSIVE_FUNCTION_CSE): Likewise.
	* config/ip2k/ip2k.h (NO_RECURSIVE_FUNCTION_CSE): Likewise.
	* config/iq2000/iq2000.h (NO_RECURSIVE_FUNCTION_CSE): Likewise.
	* config/m32r/m32r.h (NO_RECURSIVE_FUNCTION_CSE): Likewise.
	* config/m68k/m68k.h (NO_RECURSIVE_FUNCTION_CSE): Likewise.
	* config/mcore/mcore.h (NO_RECURSIVE_FUNCTION_CSE): Likewise.
	* config/mips/mips.h (NO_RECURSIVE_FUNCTION_CSE): Likewise.
	* config/stormy16/stormy16.h (NO_RECURSIVE_FUNCTION_CSE):
	Likewise.
	* config/xtensa/xtensa.h (NO_RECURSIVE_FUNCTION_CSE): Likewise.
	* config/sh/sh.h: Remove NO_RECURSIVE_FUNCTION_CSE comment.
	* doc/tm.texi (Costs): Remove documentation for
	NO_RECURSIVE_FUNCTION_CSE.

From-SVN: r82084
2004-05-21 01:03:20 +00:00
Richard Earnshaw 61f0ccffa3 arm.h (TARGET_APCS_32): Delete.
* 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.

From-SVN: r81881
2004-05-15 12:41:35 +00:00
Paul Brook d81d0bdd6a * config/arm/arm.h (PCC_BITFIELD_TYPE_MATTERS): Define.
From-SVN: r81777
2004-05-13 11:25:49 +00:00
Diego Novillo 6de9cd9a88 Merge tree-ssa-20020619-branch into mainline.
From-SVN: r81764
2004-05-13 02:41:07 -04:00
Paul Brook b668593951 arm.c (arm_promote_prototypes): Use TARGET_AAPCS_BASED.
* config/arm/arm.c (arm_promote_prototypes): Use TARGET_AAPCS_BASED.
	* config/arm/arm.h (TARGET_AAPCS_BASED): Define.
	(TARGET_DOUBLEWORD_ALIGN): Use it.
	(WCHAR_TYPE): Define.
	(WCHAR_SIZE_TYPE): Define.
	(SIZE_TYPE): Define.

From-SVN: r81665
2004-05-10 13:39:20 +00:00
Paul Brook fdd695fdb4 arm-protots.h (vfp_mem_operand): Rename ...
* 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.

From-SVN: r81543
2004-05-05 23:11:55 +00:00
Paul Brook 78011587df configure.gcc: Default ep9312 to hard-float.
* configure.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.

From-SVN: r81336
2004-04-30 12:13:49 +00:00
Paul Brook cc81dde821 arm.h (CLASS_LIKELY_SPILLED_P): Define.
* arm.h (CLASS_LIKELY_SPILLED_P): Define.
testsuite
	* gcc.dg/spill-1.c: New test.

From-SVN: r80519
2004-04-08 19:02:24 +00:00
Paul Brook d4453b7ac5 explow.c (promote_mode): Use PROMOTE_FUNCTION_MODE instead of PROMOTE_FOR_CALL_ONLY.
* explow.c (promote_mode): Use PROMOTE_FUNCTION_MODE instead of
	PROMOTE_FOR_CALL_ONLY.
	* config/arm/arm-protos.h (arm_function_value): Declare.
	* config/arm/arm.h (TARGET_PROMOTE_FUNCTION_ARGS): Define.
	(TARGET_PROMOTE_PROTOTYPES): Return false.
	(arm_function_value): New function.
	* config/arm/arm.h (PROMOTE_FUNCTION_MODE): Define.
	(FUNCTION_VALUE): Call arm_function_value.
	* config/cris/cris.h (PROMOTE_MODE): Rename ...
	(PROMOTE_FUNCTION_MODE): ... to this.
	(PROMOTE_FOR_CALL_ONLY): Remove.
	* config/mmix/mmix.h: Likewise.
	* config/s390/s390.h: Likewise.
	* config/sparc/sparc.h: Likewise.
	* config/sparc/sparc.c: Update comments about PROMOTE_MODE.
	* doc/tm.texi (PROMOTE_FUNCTION_MODE): Document.
	(TARGET_PROMOTE_FUNCTION_MODE, TARGET_PROMOTE_FUNCTION_RETURN): Update.
	(PROMOTE_FOR_CALL_ONLY): Remove.

From-SVN: r80518
2004-04-08 18:26:09 +00:00
Paul Brook 5848830fc3 config.gcc: Add --with-abi=
* 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.

From-SVN: r79921
2004-03-24 17:20:16 +00:00
Richard Earnshaw edc621221a * arm.h (EXTRA_CONSTRAINT_STR_ARM): Update comment.
From-SVN: r79468
2004-03-14 00:23:03 +00:00
Richard Earnshaw 1e1ab407a6 arm.c (arm_legitimate_address_p): New argument, OUTER.
* 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.

From-SVN: r79440
2004-03-13 11:19:23 +00:00
Paul Brook 2eb83715ce arm.h (ARM_FLAG_VFP): Remove.
* arm.h (ARM_FLAG_VFP): Remove.
	(ARM_FLAG_ATPCS, CIRRUS_FIX_INVALID_INSNS): Renumber.
	* netbsd-elf.h (ARM_FLAG_VFP): Remove.

From-SVN: r78974
2004-03-05 16:59:54 +00:00
Richard Earnshaw 6f5b4f3e5a arm.c (thumb_legitimize_address): New function.
* arm.c (thumb_legitimize_address): New function.
* arm-protos.h: Prototype it.
* arm.h (THUMB_LEGITIMIZE_ADDRESS): Define.
(LEGITIMIZE_ADDRESS): Use it.

From-SVN: r78437
2004-02-25 17:03:27 +00:00
Kazu Hirata 3ad17f7bb5 arc.h, [...]: Remove commented-out or useless definitions of CASE_VECTOR_PC_RELATIVE.
* config/arc/arc.h, config/arm/arm.h, config/frv/frv.h,
	config/h8300/h8300.h, config/i386/i386.h, config/i860/i860.h,
	config/iq2000/iq2000.h, config/m32r/m32r.h,
	config/pdp11/pdp11.h, config/sparc/sparc.h,
	config/xtensa/xtensa.h: Remove commented-out or useless
	definitions of CASE_VECTOR_PC_RELATIVE.

From-SVN: r78091
2004-02-19 10:57:02 +00:00
Ben Elliston f07a6b21f6 Two minor fixes.
* config/arm/mmintrin.h (_mm_setwcx): Reverse arguments in call to
	__builtin_arm_setwcx ().
	* config/arm/arm.c (arm_expand_builtin): Generate operands
	correctly and reverse their order in call to gen_iwmmxt_tmcr ().
and:
	* config/arm/arm.c (bdesc_2arg): Correct builtin names "wmulsh"
	and "wmuluh" to "wmulsm" and "wmulum", respectively.
	* config/arm/arm.h (enum arm_builtins): Rename enumerators to
	ARM_BUILTIN_WMULSM and ARM_BUILTIN_WMULUM.
	* config/arm/mmintrin.h (_mm_mulhi_pi16): Update intrinsic call.
	(_mm_mulhi_pu16): Likewise.

From-SVN: r77774
2004-02-14 08:49:26 +11:00
Alan Modra 0f6937feff tm.texi (INIT_CUMULATIVE_ARGS): Update doco.
* doc/tm.texi (INIT_CUMULATIVE_ARGS): Update doco.
	* calls.c (expand_call): Pass n_named_args to INIT_CUMULATIVE_ARGS.
	(emit_library_call_value_1): Likewise pass nargs.
	* expr.c (block_move_libcall_safe_for_call_parm): Pass 3 here.
	* function.c (assign_parms): Pass -1 to INIT_CUMULATIVE_ARGS.
	* config/rs6000/rs6000.c (init_cumulative_args): Use n_named_args
	parameter instead of scanning TYPE_ARGS_TYPES to count args.
	* config/rs6000/rs6000-protos.h (init_cumulative_args): Update
	prototype.
	* config/rs6000/rs6000.h (INIT_CUMULATIVE_ARGS): Pass extra arg.
	(INIT_CUMULATIVE_INCOMING_ARGS): Set extra arg to 1000.
	(INIT_CUMULATIVE_LIBCALL_ARGS): Set extra arg to 0.
	* config/sh/sh.c (sh_output_mi_thunk): Pass 1 as n_named_args to
	INIT_CUMULATIVE_ARGS.
	* config/alpha/alpha.h (INIT_CUMULATIVE_ARGS): Update.
	* config/alpha/unicosmk.h, config/alpha/vms.h, config/arc/arc.h,
	config/arm/arm.h, config/avr/avr.h, config/c4x/c4x.h,
	config/cris/cris.h, config/fr30/fr30.h, config/frv/frv.h,
	config/h8300/h8300.h, config/i386/i386.h, config/i860/i860.h,
	config/ia64/ia64.h, config/ip2k/ip2k.h, config/iq2000/iq2000.h,
	config/iq2000/iq2000.c, config/m32r/m32r.h, config/m68hc11/m68hc11.h,
	config/m68k/m68k.h, config/mcore/mcore.h, config/mips/mips.h,
	config/mmix/mmix.h, config/mn10300/mn10300.h, config/ns32k/ns32k.h,
	config/pa/pa.h, config/pdp11/pdp11.h config/s390/s390.h,
	config/sh/sh.h, config/sparc/sparc.h, config/stormy16/stormy16.h,
	config/v850/v850.h, config/vax/vax.h, config/xtensa/xtensa.h: Likewise.

From-SVN: r77380
2004-02-06 16:48:36 +10:30
Ian Lance Taylor 5384443a5f * config/arm/arm.h (REG_CLASS_NAMES): Add missing comma.
From-SVN: r77301
2004-02-05 06:11:05 +00:00
Kazu Hirata 59b9a953b6 alpha.c, [...]: Fix comment typos.
* config/alpha/alpha.c, config/arc/arc.c,
	config/arm/arm-cores.def, config/arm/arm.c, config/arm/arm.h,
	config/arm/arm1026ejs.md, config/arm/arm1136jfs.md,
	config/arm/arm926ejs.md, config/arm/vfp.md, config/avr/avr.c,
	config/c4x/c4x.c, config/cris/cris.c, config/frv/frv.md,
	config/i386/i386.c, config/i386/i386.h, config/i386/i386.md,
	config/ia64/ia64.c, config/ia64/unwind-ia64.c,
	config/iq2000/iq2000.c, config/m32r/m32r.c,
	config/mips/mips.c, config/mmix/mmix.c, config/mmix/mmix.h,
	config/ns32k/ns32k.c, config/pa/pa.c, config/pdp11/pdp11.c,
	config/rs6000/darwin-ldouble.c, config/rs6000/rs6000.c,
	config/rs6000/rs6000.h, config/sparc/sparc.c,
	config/vax/vax.c: Fix comment typos.  Follow spelling
	conventions.

From-SVN: r77267
2004-02-04 19:46:25 +00:00
Paul Brook 9b66ebb146 backport: re PR target/12476 (ARM/THUMB thunk calls broken)
Merge from csl-arm-branch.

	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>

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

	* 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  Paul Brook  <paul@codesourcery.com>

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

	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-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.

From-SVN: r77171
2004-02-03 14:45:44 +00:00
Kazu Hirata f1c25d3b47 arm.c, [...]: Replace "gen_rtx (FOO, " with "gen_rtx_FOO (".
* config/arm/arm.c, config/arm/arm.h, config/arm/arm.md,
	config/arm/linux-gas.h, config/arm/netbsd-elf.h,
	config/arm/netbsd.h, config/arm/pe.c, config/avr/avr.c,
	config/avr/avr.h, config/avr/avr.md, config/c4x/c4x.h,
	config/cris/cris.h, config/fr30/fr30.h, config/frv/frv.c,
	config/frv/frv.h, config/ip2k/ip2k.c, config/iq2000/iq2000.c,
	config/iq2000/iq2000.h, config/m32r/m32r.c,
	config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
	config/m68hc11/m68hc11.md, config/m68k/m68k.md,
	config/mcore/mcore.c, config/mcore/mcore.h,
	config/mcore/mcore.md, config/mips/mips.c,
	config/ns32k/ns32k.h, config/ns32k/ns32k.md,
	config/rs6000/rs6000.c, config/s390/s390.c,
	config/s390/s390.md, config/sparc/sparc.c, config/v850/v850.c,
	config/xtensa/xtensa.h, config/xtensa/xtensa.md: Replace
	"gen_rtx (FOO, " with "gen_rtx_FOO (".

From-SVN: r77080
2004-02-01 21:21:45 +00:00
Kazu Hirata 1cc9f5f5f9 arm.c (TARGET_SETUP_INCOMING_VARARGS): New.
* config/arm/arm.c (TARGET_SETUP_INCOMING_VARARGS): New.
	(arm_setup_incoming_varargs): Likewise.
	* config/arm/arm.h (SETUP_INCOMING_VARARGS): Remove.

From-SVN: r76643
2004-01-26 16:35:44 +00:00
Kazu Hirata f9ba5949c9 arm.c (TARGET_PROMOTE_FUNCTION_ARGS): New.
* config/arm/arm.c (TARGET_PROMOTE_FUNCTION_ARGS): New.
	(TARGET_PROMOTE_PROTOTYPES): Likewise.
	(TARGET_STRUCT_VALUE_RTX): Likewise.
	(arm_struct_value_rtx): Likewise.
	* config/arm/arm.h (PROMOTE_FUNCTION_ARGS): Remove.
	(STRUCT_VALUE): Likewise.
	(STRUCT_VALUE_REGNUM): Likewise.
	(PROMOTE_PROTOTYPES): Likewise.

From-SVN: r76636
2004-01-26 15:40:04 +00:00
Richard Earnshaw 192c8d78fe re PR bootstrap/12527 ([arm] bootstrap error on arm-linux, miscompiling genconstants)
PR bootstrap/12527
* config.gcc (arm*-*-linux*): Don't include unknown-elf.h in tm_file.
Move linux-gas.h and linux-elf.h before aout.h.
* arm/arm.h (INITIALIZE_TRAMPOLINE): Only define if not already.
* arm/linux-elf.h (SUBTARGET_CPU_DEFAULT): Define.

From-SVN: r75870
2004-01-14 17:51:31 +00:00
Kazu Hirata d6b4baa4a5 alpha-modes.def: Fix comment formatting.
* config/alpha/alpha-modes.def: Fix comment formatting.
	* config/alpha/alpha.c: Likewise.
	* config/alpha/alpha.h: Likewise.
	* config/alpha/elf.h: Likewise.
	* config/alpha/lib1funcs.asm: Likewise.
	* config/alpha/openbsd.h: Likewise.
	* config/alpha/vms-cc.c: Likewise.
	* config/alpha/vms-crt0-64.c: Likewise.
	* config/alpha/vms-crt0.c: Likewise.
	* config/alpha/vms-ld.c: Likewise.
	* config/alpha/vms-psxcrt0-64.c: Likewise.
	* config/alpha/vms-psxcrt0.c: Likewise.
	* config/alpha/vms.h: Likewise.
	* config/arc/arc.c: Likewise.
	* config/arm/aof.h: Likewise.
	* config/arm/arm-modes.def: Likewise.
	* config/arm/arm.c: Likewise.
	* config/arm/arm.h: Likewise.
	* config/arm/arm.md: Likewise.
	* config/arm/linux-elf.h: Likewise.
	* config/arm/vxworks.h: Likewise.
	* config/avr/avr.c: Likewise.
	* config/avr/avr.h: Likewise.

From-SVN: r75019
2003-12-25 15:17:37 +00:00
Richard Earnshaw a72d4945d3 arm.c (use_return_insn): New argument, SIBLING.
* arm.c (use_return_insn): New argument, SIBLING.  Support returning
with a single instruction if the stack has been decremented by 4
and we have a frame pointer.  Update all callers.
(output_return_instruction): Likewise.
(arm_output_epilogue): Change argument to SIBLING.  Calculate
really_return from the new argument.  Update all callers.
* arm.h (USE_RETURN_INSN): Pass NULL for the sibling.
* arm.md (sibcall_epilogue): Call use_return_insn directly, and
pass the sibling call.
* arm-protos.h (use_return_insn, arm_output_epilogue): Update
prototypes.

From-SVN: r73761
2003-11-20 11:44:19 +00:00
Richard Earnshaw fb14bc892c arm.h (CONDITIONAL_REGISTER_USAGE): Disable use of LR in Thumb code.
* arm.h (CONDITIONAL_REGISTER_USAGE): Disable use of LR in Thumb
code.

From-SVN: r73157
2003-10-31 21:42:23 +00:00
Richard Earnshaw c769a35d59 arm.c (arm_rtx_costs_1, [...]): Adjust costs for comparing a constant with small negative numbers and add...
* arm.c (arm_rtx_costs_1, case TARGET_THUMB): Adjust costs for
comparing a constant with small negative numbers and add costing
for constants in conjunction with AND.
(note_invalid_constants): Tidy previous change.
(thumb_cmp_operand): Tidy.
(thumb_cmpneg_operand): New function.
* arm.h (CONDITIONAL_REGISTER_USAGE): Don't use HI regs if optimizing
for size.
(FIRST_LO_REGNUM, FIRST_HI_REGNUM, LAST_HI_REGNUM): Define.
(PREDICATE_CODES): Add thumb_cmpneg_operand.
* arm.md (cbranchsi4): Convert to define_expand.  Handle comparison
with a negative constant.
(cbranchsi4_insn): Matcher for cbranchsi4.
(cbranchsi4_scratch): Similar, but a scratch is available for
handling negative constants.
(movsi_cbranchsi4): New pattern.
(tstsi3_cbranch): Renamed from andsi3_cbranch_scratch, remove scratch
and use the TST instruction.
(andsi3_cbranch, orrsi3_cbranch, xorsi3_cbranch, cbranchne_decr1)
(addsi3_cbranch, subsi3_cbranch): Ensure that register preferencing
cannot see high regs or memory alternatives.
(bicsi3_cbranch_scratch, bicsi3_cbranch): New patterns.

From-SVN: r72885
2003-10-24 09:25:30 +00:00
Mark Mitchell 81f9037c86 config.gcc: Add support for arm926ejs, arm1026ejs, arm1136js, arm1136jfs, and armv6j.
* config.gcc: Add support for arm926ejs, arm1026ejs, arm1136js,
	arm1136jfs, and armv6j.
	* config/arm/arm.c (FL_ARCH6J): New macro.
	(FL_VFPV2): Likewise.
	(all_cores): Add entries for arm926ejs, arm1026ejs, arm1136js,
	and arm1136jfs.
	(all_architectures): Add entry for armv6j.
	(arm_override_options): Add entries for arm926ejs, arm1026ejs,
	arm1136js, and arm1136jfs.
	* config/arm/arm.h (TARGET_CPU_arm926ej_s): New macro.
	(TARGET_CPU_arm1026ej_s): Likewise.
	(TARGET_CPU_arm1136j_s): Likewise.
	(TARGET_CPU_arm1136jf_s): Likewise.
	* doc/invoke.texi: Document new ARM cores and architecture
	variants.

From-SVN: r72694
2003-10-20 06:27:32 +00:00
Nicolas Pitre 591af2189d arm.c (arm_override_options): Use arm_tune_xscale for XScale optimizations not arm_arch_xscale.
* config/arm/arm.c (arm_override_options): Use arm_tune_xscale for
XScale optimizations not arm_arch_xscale.
* config/arm/arm.h (CONSTANT_ALIGNMENT_FACTOR, MOVE_RATIO): Likewise.

From-SVN: r72667
2003-10-19 01:01:46 +00:00
Richard Earnshaw defc0463c4 arm-modes.def (CC_Nmode): New condition code mode.
* arm-modes.def (CC_Nmode): New condition code mode.
* arm.c (thumb_condition_code): Delete.
(arm_select_cc_mode): Handle single-bit test for Thumb.
(arm_print_operand, cases 'd' and 'D'): Don't special case the
condition code logic for Thumb.
(get_arm_condition_code): Handle CC_Nmode.
(thumb_cbrch_target_operand): New function.
* arm.h (PREDICATE_CODES): Add thumb_cbrch_target_operand.
* arm-protos.h (thumb_cbrch_target_operand): Add prototype.
* arm.md: Add Thumb split patterns for zero_extract and
sign_extract.
(tbit_cbranch, andsi3_cbranch_scratch, andsi3_cbranch)
(orrsi3_cbranch_scratch, orrsi3_cbranch, xorsi3_cbranch_scratch)
(xorsi3_cbranch, addsi3_cbranch, addsi3_cbranch_scratch)
(subsi3_cbranch, subsi3_cbranch_scratch): New Thumb patterns.
(cbranchne_decr1): Re-work to use CC_Nmode.

* arm.c (thumb_expand_epilogue): Add clobbers of registers restored
by the return instruction.  Add a use of the link register if it
wasn't stored.

From-SVN: r72595
2003-10-17 10:58:17 +00:00
Richard Earnshaw f9b9980e6d arm.md (cmpsi2_addneg): New ARM pattern.
* arm.md (cmpsi2_addneg): New ARM pattern. Add peephole2 to generate
it.
(cbranchne_decr1): New Thumb pattern.
* arm.c (arm_addimm_operand): New insn predicate.
* arm-protos.h: Add a prototype for it.
* arm.h (PREDICATE_CODES): Add it.

From-SVN: r72188
2003-10-07 08:49:36 +00:00
Richard Earnshaw 8a81cc4525 arm.h (ASM_OUTPUT_REG_PUSH, [...]): Wrap in do...while(0)
* arm.h (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Wrap in
do...while(0)

From-SVN: r71731
2003-09-24 09:06:32 +00:00
Nick Clifton de1f0668c1 fix typo in previous delta
From-SVN: r71022
2003-09-03 11:40:05 +00:00
Nick Clifton 877bcd2d34 Handle TARGET_CPU_iwmmxt.
Use #error to generate the message if TARGET_DEFAULT is not recognised.

From-SVN: r71021
2003-09-03 11:05:58 +00:00
Kazu Hirata 093354e08f alpha.c: Fix comment typos.
* config/alpha/alpha.c: Fix comment typos.
	* config/alpha/elf.h: Likewise.
	* config/arm/arm.c: Likewise.
	* config/arm/arm.h: Likewise.
	* config/arm/arm.md: Likewise.
	* config/arm/t-arm-coff: Likewise.
	* config/arm/t-strongarm-pe: Likewise.
	* config/arm/xscale-elf.h: Likewise.
	* config/avr/avr.h: Likewise.

From-SVN: r68800
2003-07-01 23:26:43 +00:00
Nick Clifton 8fca31a21e (BIGGEST_FIELD_ALIGNMENT): Make defintion constant.
From-SVN: r68703
2003-06-30 13:17:38 +00:00
Nick Clifton 2784775405 arm.h (BIGGEST_FIELD_ALIGNMENT): Define instead of ADJUST_FIELD_ALIGN if IN_TARGET_LIBS.
* config/arm/arm.h (BIGGEST_FIELD_ALIGNMENT): Define instead of
ADJUST_FIELD_ALIGN if IN_TARGET_LIBS.
Replace occurances of '???' with 'XXX' incase they are mistaken for trigraphs.
(THUMB_PRINT_OPERAND_ADDRESS): abort if a compound address does not have a
register for the first operand.

From-SVN: r68487
2003-06-25 18:49:51 +00:00
Richard Earnshaw 84edd42cd4 arm.h (BIGGEST_ALIGNMENT): Use TARGET_REALLY_IWMMXT for selecting 64-bit alignment.
* arm.h (BIGGEST_ALIGNMENT): Use TARGET_REALLY_IWMMXT for selecting
64-bit alignment.

From-SVN: r68330
2003-06-22 14:06:33 +00:00
Nick Clifton 5a9335ef01 config.gcc: Add an extra_header for ARM targets.
* config.gcc: Add an extra_header for ARM targets.
        Support configuring with --with-cpu=iwmmxt.
	* doc/invoke.texi: Document new value for -mcpu= ARM switch.
        * config/arm/aof.h (REGISTER_NAMES): Add iwmmxt register
	names.  Fix formatting.
        * config/arm/aout.h (REGISTER_NAMES): Add iwmmxt register
	names.
        * config/arm/arm-protos.h (arm_emit_vector_const): New
	prototype.
	(arm_output_load_gr): New prototype.
	* config/arm/arm.c (extra_reg_names1): Delete.
        (TARGET_INIT_BUILTINS, TARGET_EXPAND_BUILTIN, FL_IWMMXT,
	* arch_is_iwmmxt): Define.
	(all_cores, all_architecture): Add entry for iwmmxt.
	(arm_override_options): Add support for iwmmxt.
	(use_return_insn, arm_function_arg, arm_legitimate_index_p,
	arm_print_value, arm_rtx_costs_1, output_move_double,
	arm_compute_save_reg_mask, arm_output_epilogue,
	arm_get_frame_size, arm_expand_prologue, arm_print_operand,
	arm_assemble_integer, arm_hard_regno_ok, arm_regno_class):
	Likewise.
	(arm_init_cumulative_args): Count iwmmxt registers.
	(arm_function_ok_for_sibcall): Return false of sibcall_blocked
	has been set.
	(struct minipool_node): Add fix_size field.
	(add_minipool_forward_ref): Add support for 8-byte aligning of
	the pool.
	(add_minipool_backward_ref, add_minipool_offsets,
	dump_minipool, push_minipool_fix): Likewise.
	(struct builtin_description): New struct.
        (builtin_description): New array of iwmmxt builtin functions.
        (arm_init_iwmmxt_builtins): New function.
        (arm_init_builtins): New function.
        (safe_vector_operand): New function.
        (arm_expand_binop_builtin): New function.
        (arm_expand_unop_builtin): New function.
        (arm_expand_builtin): New function.
        (arm_emit_vector_const): New function.
        (arm_output_load_gr): New function.
        * config/arm/arm.h (TARGET_CPU_iwmmxt, TARGET_IWMMXT,
	TARGET_REALLY_IWMMXT, arm_arch_iwmmxt, IWMMXT_ALIGNMENT,
	TYPE_NEEDS_IWMMXT_ALIGNMENT, ADJUST_FIELD_ALIGN,
	DATA_ALIGNMENT, LOCAL_ALIGNMENT, VECTOR_MODE_SUPPORTED_P): Define.
        (BIGGEST_ALIGNMENT): Set to 64 if ATPCS support is enabled.
        (CPP_CPU_ARCH_SPEC): Add entries for iwmmxt.
        (FIXED_REGISTERS, CALL_USED_REGISTERS, REG_ALLOC_ORDER,
	reg_class, REG_CLASS_NAMES, REG_CLASS_CONTENTS,
	REG_CLASS_FOR_LETTER): Add iwmmxt registers.
        (SUBTARGET_CONDITIONAL_REGISTER_USAGE): Disable iwmmxt
	registers unless the iwmmxt target is selected.
        (FIRST_IWMMXT_GR_REGNUM, LAST_IWMMXT_GR_REGNUM,
	FIRST_IWMMXT_REGNUM, LAST_IWMMXT_REGNUM, IS_IWMMXT_REGNUM,
	IS_IWMMXT_GR_REGNUM): Define.
        (FIRST_PSEUDO_REGISTER): Bump to 63.
        (struct machine_function): Add sibcall_blocked field.
        (Struct CUMULATIVE_ARGS): Add iwmmxt_nregs, named_count and
	nargs fields.
        (enum arm_builtins): New enum list.
        * config/arm/arm.md (UNSPEC_WSHUFH, UNSPEC_WACC,
	UNSPEC_TMOVMSK, UNSPEC_WSAD, UNSPEC_WSADZ, UNSPEC_WMACS,
	UNSPEC_WMACU, UNSPEC_WMACSZ, UNSPEC_WMACUZ, UNSPEC_CLRDI,
	UNSPEC_WMADDS, UNSPEC_WMADDU): New unspecs.
	(VUNSPEC_TMRC, VUNSPEC_TMCR, VUNSPEC_ALIGN8, VUNSPEC_WCMP_EQ,
	VUNSPEC_WCMP_GTU, VUNSPEC_WCMP_GT): New vunspecs.
        (movv2si, movv4hi, movv8qi): New expands for vector moves.
        Include iwmmxt.md.
	* config/arm/t-xscale-elf (MULTILIB_OPITONS): Add iwmmxt
	multilib.
        (MULTILIB_DIRNAMES, MULTILIB_REDUNDANT_DIRS): Likewise.
        * config/arm/mmintrin.h: New ARM specific header file.
        * config/arm/iwmmx.md: New iWMMXt specific machine patterns.

From-SVN: r68157
2003-06-18 16:36:13 +00:00
Kazu Hirata 72ac76be3a alpha.md: Follow spelling conventions.
* config/alpha/alpha.md: Follow spelling conventions.
	* config/arm/arm.c: Likewise.
	* config/arm/arm.h: Likewise.
	* config/arm/arm.md: Likewise.
	* config/arm/crtn.asm: Likewise.
	* config/m32r/m32r.c: Likewise.
	* config/m32r/m32r.md: Likewise.
	* config/rs6000/rs6000.c: Likewise.

From-SVN: r67970
2003-06-15 07:51:35 +00:00
Roger Sayle 06f31100d2 rtl.h (STORE_FLAG_VALUE): Remove default definition from here.
* rtl.h (STORE_FLAG_VALUE): Remove default definition from here.
	* defaults.h (STORE_FLAG_VALUE): Move default definition to here.
	* doc/tm.texi (STORE_FLAG_VALUE): Document the default value.

	* config/alpha/alpha.h (STORE_FLAG_VALUE): Remove definition.
	* config/arc/arc.h (STORE_FLAG_VALUE): Likewise.
	* config/arm/arm.h (STORE_FLAG_VALUE): Likewise.
	* config/cris/cris.h (STORE_FLAG_VALUE): Likewise.
	* config/i370/i370.h (STORE_FLAG_VALUE): Likewise.
	* config/i386/i386.h (STORE_FLAG_VALUE): Likewise.
	* config/i960/i960.h (STORE_FLAG_VALUE): Likewise.
	* config/ia64/ia64.h (STORE_FLAG_VALUE): Likewise.
	* config/ip2k/ip2k.h (STORE_FLAG_VALUE): Likewise.
	* config/m32r/m32r.h (STORE_FLAG_VALUE): Likewise.
	* config/mcore/mcore.h (STORE_FLAG_VALUE): Likewise.
	* config/mips/mips.h (STORE_FLAG_VALUE): Likewise.
	* config/mmix/mmix.h (STORE_FLAG_VALUE): Likewise.
	* config/ns32k/ns32k.h (STORE_FLAG_VALUE): Likewise.
	* config/pa/pa.h (STORE_FLAG_VALUE): Likewise.
	* config/pdp11/pdp11.h (STORE_FLAG_VALUE): Likewise.
	* config/sh/sh.h (STORE_FLAG_VALUE): Likewise.
	* config/sparc/sparc.h (STORE_FLAG_VALUE): Likewise.
	* config/v850/v850.h (STORE_FLAG_VALUE): Likewise.
	* config/xtensa/xtensa.h (STORE_FLAG_VALUE): Likewise.

Co-Authored-By: Zack Weinberg <zack@codesourcery.com>

From-SVN: r67957
2003-06-14 21:47:45 +00:00
Richard Earnshaw 75d2580c0c re PR target/11183 ([arm] ICE in change_address_1 (3.3) / subreg_hard_regno (3.4))
PR target/11183
* arm.h (CANNOT_CHANGE_MODE_CLASS): Define.

From-SVN: r67947
2003-06-14 15:54:02 +00:00
Richard Earnshaw 659bdc6853 arm.h (THUMB_PRINT_OPERAND_ADDRESS): Use %wd in format and remove cast to int.
* arm.h (THUMB_PRINT_OPERAND_ADDRESS): Use %wd in format and remove
cast to int.

From-SVN: r67658
2003-06-09 11:27:37 +00:00
Kaveh R. Ghazi c53dddc232 aout.h (ASM_OUTPUT_SKIP): Fix cast for format specifier warning.
* arm/aout.h (ASM_OUTPUT_SKIP): Fix cast for format specifier warning.
	* arm.c (arm_output_function_prologue): Fix format specifiers.
	* arm.h (ARM_PRINT_OPERAND_ADDRESS): Likewise.
	* m68k.c (m68k_output_mi_thunk): Use more readable %wd instead of
	HOST_WIDE_INT_PRINT_DEC.
	* vax.c (vax_output_function_prologue): Fix format specifiers.

From-SVN: r67464
2003-06-04 21:18:48 +00:00
Daniel Jacobowitz 7816bea0e2 config.gcc: Reorganize --with-cpu logic.
* config.gcc: Reorganize --with-cpu logic.  Set
	configure_default_options according to the default CPU, --with-cpu,
	--with-arch, --with-tune, --with-schedule, --with-abi, and
	--with-float.  Check for legal values of various options.
	* configure.in: Define configure_default_options in configargs.h.
	* configure: Regenerated.
	* config/mips/mips.h (TARGET_DEFAULT_ARCH_P)
	(TARGET_DEFAULT_FLOAT_P): New macros.
	* gcc.c (do_option_spec): New function.
	(struct default_spec, option_default_specs): New.
	(main): Call do_option_spec.
	* config/alpha/alpha.h, config/arm/arm.h, config/i386/i386.h,
	config/mips/mips.h, config/pa/pa.h, config/rs6000/rs6000.h,
	config/sparc/sparc.h (OPTION_DEFAULT_SPECS): Define.

	* doc/install.texi: Update --with-cpu documentation.  Mention
	--with-arch, --with-schedule, --with-tune, --with-abi, and
	--with-float.
	* doc/tm.texi (Driver): Document OPTION_DEFAULT_SPECS.

From-SVN: r67457
2003-06-04 17:50:44 +00:00
Philip Blundell 4b3c2e48c4 arm.c (arm_is_xscale): Rename to arm_arch_xscale.
2003-05-15  Philip Blundell  <philb@gnu.org>

	* config/arm/arm.c (arm_is_xscale): Rename to arm_arch_xscale.
	All uses updated.
	(arm_tune_xscale): New variable.
	(arm_override_options): Set it.
	(arm_adjust_cost): Use it in place of arm_arch_xscale.
	(arm_gen_load_multiple): Likewise.
	(arm_gen_store_multiple): Likewise.
	* config/arm/arm.md (is_xscale): Likewise.
	* config/arm/arm.h (arm_tune_xscale): Declare.

From-SVN: r66839
2003-05-15 18:38:21 +00:00
Richard Sandiford 18dbd95060 target-def.h (TARGET_MACHINE_DEPENDENT_REORG): Define.
* target-def.h (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(TARGET_INITIALIZER): Include it.
	* target.h (struct gcc_target): Add machine_dependent_reorg field.
	* toplev.c (rest_of_compilation): Use targetm.machine_dependent_reorg.

	* config/alpha/alpha-protos.h (alpha_reorg): Remove declaration.
	* config/alpha/alpha.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/alpha/alpha.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(alpha_handle_trap_shadows): Remove "first insn" parameter.
	(alpha_align_insns): Likewise.
	(alpha_reorg): Likewise.  Make static.  Update calls to above
	functions.

	* config/arm/arm-protos.h (arm_reorg): Remove declaration.
	* config/arm/arm.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/arm/arm.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(arm_reorg): Remove parameter.  Make static.

	* config/avr/avr-protos.h (machine_dependent_reorg): Remove.
	* config/avr/avr.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/avr/avr.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(avr_reorg): Renamed from machine_dependent_reorg.  Make static.
	Remove parameter.

	* config/c4x/c4x-protos.h (c4x_process_after_reload): Remove.
	* config/c4x/c4x.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/c4x/c4x.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(c4x_reorg): Renamed from c4x_process_after_reload.  Make static.
	Remove parameter.

	* config/d30v/d30v-protos.h (d30v_machine_dependent_reorg): Remove.
	* config/d30v/d30v.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/d30v/d30v.c (d30v_machine_dependent_reorg): Remove.

	* config/frv/frv-protos.h (frv_machine_dependent_reorg): Remove.
	* config/frv/frv.c: Remove orphaned comment.

	* config/i386/i386-protos.h (x86_machine_dependent_reorg): Remove.
	* config/i386/i386.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/i386/i386.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(ix86_reorg): Renamed from x86_machine_dependent_reorg.  Make static.
	Remove parameter.

	* config/ia64/ia64-protos.h (ia64_reorg): Remove declaration.
	* config/ia64/ia64.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/ia64/ia64.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(emit_insn_group_barriers): Remove "first insn" parameter.
	(emit_all_insn_group_barriers): Likewise.
	(ia64_reorg): Likewise.  Make static.  Update calls to above functions.
	(ia64_output_mi_thunk): Update call to emit_all_insn_group_barriers.

	* config/ip2k/ip2k-protos.h (machine_dependent_reorg): Remove.
	* config/ip2k/ip2k.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/ip2k/ip2k.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(ip2k_reorg): Renamed from machine_dependent_reorg.  Make static.
	Remove parameter.

	* config/m68hc11/m68hc11-protos.h (m68hc11_reorg): Remove declaration.
	* config/m68hc11/m68hc11.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/m68hc11/m68hc11.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(m68hc11_reorg): Make static.  Remove parameter.

	* config/mcore/mcore-protos.h (mcore_dependent_reorg): Remove.
	* config/mcore/mcore.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/mcore/mcore.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(conditionalize_optimization): Remove parameter.
	(mcore_reorg): Renamed from mcore_dependent_reorg.  Remove parameter.
	Make static.  Update call to conditionalize_optimization.

	* config/mips/mips-protos.h (machine_dependent_reorg): Remove.
	* config/mips/mips.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/mips/mips.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(mips_reorg): Renamed from machine_dependent_reorg.  Remove parameter.
	Make static.

	* config/mmix/mmix-protos.h (mmix_machine_dependent_reorg): Remove.
	* config/mmix/mmix.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/mmix/mmix.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(mmix_reorg): Renamed from mmix_machine_dependent_reorg.  Make static.
	Remove parameter.

	* config/pa/pa-protos.h (pa_reorg): Remove declaration.
	* config/pa/pa.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/pa/pa.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(pa_combine_instructions): Remove "first insn" parameter.
	(remove_useless_addtr_insns): Likewise.
	(pa_reorg): Likewise.  Make static.  Update calls to above functions.

	* config/rs6000/rs6000.h (MACHINE_DEPENDENT_REORG): Remove
	commented-out definition.

	* config/s390/s390-protos.h (s390_machine_dependent_reorg): Remove.
	* config/s390/s390.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/s390/s390.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(s390_reorg): Renamed from s390_machine_dependent_reorg.  Make static.
	Remove parameter.

	* config/sh/sh-protos.h (machine_dependent_reorg): Remove.
	* config/sh/sh.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/sh/sh.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(sh_reorg): Renamed from machine_dependent_reorg.  Make static.
	Remove parameter.
	(sh_output_mi_thunk): Call sh_reorg directly.
	* config/sh/sh.md: Update comment.

	* config/stormy16/stormy16.h (MACHINE_DEPENDENT_REORG): Remove
	commented-out definition.

	* config/v850/v850-protos.h (v850_reorg): Remove declaration.
	* config/v850/v850.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/v850/v850.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(v850_reorg): Make static.  Remove parameter.

	* config/xtensa/xtensa-protos.h (xtensa_reorg): Remove declaration.
	* config/xtensa/xtensa.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/xtensa/xtensa.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(xtensa_reorg): Make static.  Remove parameter.

	* doc/tm.texi (MACHINE_DEPENDENT_REORG): Remove.
	(TARGET_MACHINE_DEPENDENT_REORG): Document.

From-SVN: r66800
2003-05-14 07:29:54 +00:00
Richard Earnshaw 7052a0999e * arm.h (TARGET_OPTIONS): Add value field.
From-SVN: r65999
2003-04-23 16:39:30 +00:00
Nick Clifton 6f8c9bd153 (FIXED_REGISTERS): Add Maverick registers.
(CALL_USED_REGISTERS): Likewise.
(FIRST_PSEUDO_REGISTER): Update comment	describing how this value is calculated.

From-SVN: r64243
2003-03-12 12:38:35 +00:00
Richard Earnshaw 29ad969430 arm.h (enum floating_point_type): Delete.
* arm.h (enum floating_point_type): Delete.  Replace with...
(enum fputype): ... new.
(FPUTYPE_DEFAULT): Renamed from FP_DEFAULT.  Values reworked.
* linux-elf.h (FPUTYPE_DEFAULT): Likewise.
* arm.md (attr fpu): Reworked for new underlying enum values.
* arm.c	(arm_fpu_arch): Now enum fputype.
(arm_fpu_tune): Renamed from arm_fpu.  Now enum fputype.
(arm_override_options, arm_output_epilogue, arm_expand_prologue):
Update uses of arm_fpu_arch and arm_fpu_tune.

From-SVN: r64099
2003-03-10 17:53:19 +00:00
Richard Earnshaw 3b68401238 * arm.c (fpa_rhs_operand, fpa_add_operand, const_double_rtx_ok_for_fpa)
(neg_const_double_ok_for_fpa, output_mov_long_double_fpa_from_arm)
(output_mov_long_double_arm_from_fpa, output_mov_double_fpa_from_arm)
(output_mov_double_arm_from_fpa): Renamed to use fpa instead of fpu.
All callers changed.
* arm.md, arm.h, arm-protos.h: Updated.

* arm.h (enum reg_class FPA_REGS): Renamed from FPU_REGS.
(CLASS_MAX_NREGS, REGISTER_MOVE_COST, REG_CLASS_FROM_LETTER): Updated.
* arm.c (arm_regno_class, f_register_operand): Updated.

From-SVN: r63996
2003-03-08 16:23:20 +00:00
Nick Clifton f0375c6680 arm.c (is_load_address): Rename to...
* config/arm/arm.c (is_load_address): Rename to... (arm_memory_load_p) ... this
and make it check for SUBREGs and constant loads that will be converted into
loads from the minipool.
(is_cirrus_insn): Rename to ... (arm_cirrus_insn_p): ... this, for consistency.
Replace test of CIRRUS_NO with CIRRUS_NOT.
(cirrus_reorg): Use renamed functions.
(note_invalid_constants): Change from a void function to bool.  Add an extra
parameter, saying whether the fixups should be pushed.  Return true if fixups
are needed.
(arm_reorg): Use renamed functions.  Use INSN_P.  Replace test of CIRRUS_NO
with CIRRUS_NOT.
* config/arm/arm.h (FLOAT_WORDS_BIG_ENDIAN): Mention that other floating point
co-processors can also affect this.
* config/arm/arm.md ("type" attribute): Add mav_farith and mav_dmult.  Replace
references to "cirrus_type" attribute with "type".
* config/arm/cirrus.md ("cirrus_fpu" attribute): Delete.
("cirrus_type" attribute): Delete - use "type" instead.
("cirrus" attribute): Replace 'no' with 'not' and 'yes' with 'normal'.

From-SVN: r63466
2003-02-26 11:26:37 +00:00
Jan Hubicka 563a317a85 calls.c (expand_call): Update call of INIT_CUMULATIVE_ARGS
* calls.c (expand_call): Update call of INIT_CUMULATIVE_ARGS
	* function.c (assign_params): Likewise.
	* arm-protos.h (arm_init_cumulative_args): Update prototype.
	* arm.c (arm_init_cumulative_args): Update function.
	* arm.h (INIT_CUMULATIVE_ARGS): Update.
	* avr-protos.h (init_cumulative_args): Update prototype.
	* avr.c (init_cumulative_args): Update function.
	* avr.h (INIT_CUMULATIVE_ARGS): Update.
	* d30v-protos.h (d30v_init_cumulative_args): Update prototype.
	* d30v.c (d30v_init_cumulative_args): Update function.
	* d30v.h (INIT_CUMULATIVE_ARGS): Update.
	* frv-protos.h (frv_init_cumulative_args): Update prototype.
	* frv.c (frv_init_cumulative_args): Update function.
	* frv.h (INIT_CUMULATIVE_ARGS): Update.
	* mips.c (mips_expand_prolgue): Update call of INIT_CUMULATIVE_ARGS.
	* pa.h (INIT_CUMULATIVE_ARGS): Update.
	* sparc-protos.h (init_cumulative_args): Update prototype.
	* sparc.c (init_cumulative_args): Update function.
	* sparc.h (INIT_CUMULATIVE_ARGS): Update.
	* tm.texi (INIT_CUMULATIVE_ARGS): Update documentation.

From-SVN: r63126
2003-02-19 18:03:11 +00:00
Nick Clifton 4f44824549 Replace occurances of "GNU CC" with "GCC" and reformat as appropriate.
From-SVN: r62640
2003-02-10 16:33:09 +00:00
Nick Clifton 9b6b54e2fe Add support for Cirrus EP9312, an ARM variant.
From-SVN: r62625
2003-02-10 11:45:26 +00:00
Richard Henderson 7dba8395e2 defaults.h (CLZ_DEFINED_VALUE_AT_ZERO): New.
* defaults.h (CLZ_DEFINED_VALUE_AT_ZERO): New.
        (CTZ_DEFINED_VALUE_AT_ZERO): New.
        * doc/rtl.texi, doc/tm.texi: Document them.

        * combine.c (nonzero_bits) [CLZ, CTZ]: Handle the definedness
        of the value at zero properly.
        * fold-const.c (tree_expr_nonnegative_p): Likewise.
        * simplify-rtx.c (simplify_unary_operation): Likewise.

        * config/alpha/alpha.h (CLZ_DEFINED_VALUE_AT_ZERO): New.
        (CTZ_DEFINED_VALUE_AT_ZERO): New.

        * config/arm/arm.c (TARGET_INIT_BUILTINS): Remove.
        (TARGET_EXPAND_BUILTIN): Remove.
        (def_builtin, arm_init_builtins, arm_expand_builtin): Remove.
        * config/arm/arm.h (CLZ_DEFINED_VALUE_AT_ZERO): New.
        (enum arm_builtins): Remove.
        * config/arm/arm.md (UNSPEC_CLZ): Remove.
        (clzsi2): Rename from clz; use clz instead of unspec.
        (ctzsi2): New.
        * config/arm/arm-protos.h: Update.

From-SVN: r62453
2003-02-05 14:37:54 -08:00
Kazu Hirata 6bc8279340 arm.c: Fix comment typos.
* config/arm/arm.c: Fix comment typos.
	* config/arm/arm.h: Likewise.
	* config/arm/netbsd-elf.h: Likewise.
	* config/arm/netbsd.h: Likewise.

From-SVN: r62171
2003-01-31 02:20:48 +00:00
Richard Earnshaw ccf4d51284 arm.c (arm_legtimize_address): New function.
* arm.c (arm_legtimize_address): New function.
* arm-protos.h (arm_legtimize_address): Add prototype.
* arm.h (ARM_LEGITIMIZE_ADDRESS): Use arm_legitimize_address.
(LEGITIMIZE_ADDRESS, THUMB_LEGITIMIZE_ADDRESS): Wrap with
do ... while (0)

From-SVN: r62091
2003-01-29 16:50:34 +00:00
Richard Henderson dcefdf6717 target.h (targetm.address_cost): New.
* target.h (targetm.address_cost): New.
	* target-def.h (TARGET_ADDRESS_COST): New.
	(TARGET_RTX_COSTS): Uncomment.  Oops.
	* cse.c (address_cost): Use new target hook.
	(default_address_cost): New.
	* output.h (default_address_cost): Declare.
	* hooks.c (hook_int_rtx_0): New.
	* hooks.h (hook_int_rtx_0): Declare.
	* loop.c (combine_givs_p): Remove if 0 code.
	* system.h (ADDRESS_COST): Poison.

	* config/alpha/alpha.c, config/alpha/alpha.h, config/d30v/d30v.c,
	config/d30v/d30v.h, config/ia64/ia64.c, config/ia64/ia64.h,
	config/m32r/m32r.c, config/m32r/m32r.h, config/mcore/mcore.c,
	config/mcore/mcore.h, config/mmix/mmix.c, config/mmix/mmix.h,
	config/rs6000/rs6000.c, config/rs6000/rs6000.h, config/sparc/sparc.c,
	config/sparc/sparc.h, config/v850/v850.c, config/v850/v850.h,
	config/xtensa/xtensa.c, config/xtensa/xtensa.h
	(TARGET_ADDRESS_COST): Define as hook_int_rtx_0.
	(ADDRESS_COST): Remove.

	* config/arc/arc-protos.h, config/arc/arc.c, config/arc/arc.h,
	config/avr/avr-protos.h, config/avr/avr.c, config/avr/avr.h,
	config/c4x/c4x-protos.h, config/c4x/c4x.c, config/c4x/c4x.h,
	config/dsp16xx/dsp16xx-protos.h, config/dsp16xx/dsp16xx.c,
	config/dsp16xx/dsp16xx.h, config/i386/i386-protos.h,
	config/i386/i386.c, config/i386/i386.h, config/i960/i960-protos.h,
	config/i960/i960.c, config/i960/i960.h, config/ip2k/ip2k-protos.h,
	config/ip2k/ip2k.c, config/ip2k/ip2k.h, config/mips/mips-protos.h,
	config/mips/mips.c, config/mips/mips.h,
	config/m68hc11/m68hc11-protos.h, config/m68hc11/m68hc11.c,
	config/m68hc11/m68hc11.h, config/ns32k/ns32k-protos.h,
	config/ns32k/ns32k.c, config/ns32k/ns32k.h, config/pa/pa-protos.h,
	config/pa/pa.c, config/pa/pa.h, config/s390/s390-protos.h,
	config/s390/s390.c, config/s390/s390.h, config/vax/vax-protos.h,
	config/vax/vax.c, config/vax/vax.h
	(foo_address_cost): Make static.
	(TARGET_ADDRESS_COST): New.
	(ADDRESS_COST): Remove.

	* config/arm/arm.h, config/arm/arm.c, config/m88k/m88k.h,
	config/m88k/m88k.c, config/romp/romp.h, config/romp/romp.c,
	config/sh/sh.c, config/sh/sh.h, config/stormy16/stormy16.c,
	config/stormy16/stormy16.h
	(ADDRESS_COST): Move code ...
	(foo_address_cost): ... here.
	(TARGET_ADDRESS_COST): New.

	* config/m32r/m32r.c (m32r_address_cost): Remove.
	* config/m32r/m32r-protos.h: Update.

	* config/mmix/mmix.c (mmix_address_cost): Remove.
	* config/mmix/mmix-protos.h: Update.

	* config/mn10300/mn10300.c (mn10300_address_cost_1): Rename from
	mn10300_address_cost; move unsig allocation ...
	(mn10300_address_cost): ... here.
	(TARGET_ADDRESS_COST): New.
	* config/mn10300/mn10300-protos.h: Update.
	* config/mn10300/mn10300.h (ADDRESS_COST): Remove.

From-SVN: r61988
2003-01-28 10:08:56 -08:00
Richard Henderson 3c50106f69 Makefile.in (cse.o): Depend on TARGET_H.
* Makefile.in (cse.o): Depend on TARGET_H.
	* cse.c (rtx_cost): Use targetm.rtx_costs.
	* system.h (CONST_COSTS RTX_COSTS DEFAULT_RTX_COSTS): Poison.
	* doc/tm.texi: Update.

	* target.h (targetm.rtx_costs): New.
	* target-def.h (TARGET_RTX_COSTS): New.
	* hooks.c (hook_bool_rtx_int_int_intp_false): New.
	* hooks.h: Update.

	* config/alpha/alpha.c (alpha_rtx_cost_data): New.
	(alpha_rtx_costs, TARGET_RTX_COSTS): New.
	* config/alpha/alpha.h (PROCESSOR_MAX): New.
	(CONST_COSTS, RTX_COSTS): Remove.

	* config/arc/arc.c, config/arc/arc.h, config/c4x/c4x.c,
	config/c4x/c4x.h, config/cris/cris.c, config/cris/cris.h,
	config/d30v/d30v.c, config/d30v/d30v.h, config/dsp16xx/dsp16xx.c,
	config/dsp16xx/dsp16xx.h, config/frv/frv.c, config/frv/frv.h,
	config/h8300/h8300.c, config/h8300/h8300.h, config/i370/i370.c,
	config/i370/i370.h, config/i386/i386.c, config/i386/i386.h,
	config/i960/i960.c, config/i960/i960.h, config/ia64/ia64.c,
	config/ia64/ia64.h, config/m32r/m32r.c, config/m32r/m32r.h,
	config/m68k/m68k.c, config/m68k/m68k.h, config/m88k/m88k.c,
	config/m88k/m88k.h, config/mcore/mcore.c, config/mcore/mcore.h,
	config/mips/mips.c, config/mips/mips.h, config/mn10200/mn10200.c,
	config/mn10200/mn10200.h, config/mn10300/mn10300.c,
	config/mn10300/mn10300.h, config/ns32k/ns32k.c, config/ns32k/ns32k.h,
	config/pa/pa.c, config/pa/pa.h, config/pdp11/pdp11.c,
	config/pdp11/pdp11.h, config/romp/romp.c, config/romp/romp.h,
	config/rs6000/rs6000.c, config/rs6000/rs6000.h, config/s390/s390.c,
	config/s390/s390.h, config/sh/sh.c, config/sh/sh.h,
	config/stormy16/stormy16.c, config/stormy16/stormy16.h,
	config/v850/v850.c, config/v850/v850.h,
	config/xtensa/xtensa.c, config/xtensa/xtensa.h
	(CONST_COSTS, RTX_COSTS): Move code ...
	(foo_rtx_costs, TARGET_RTX_COSTS): ... here.

	* config/arm/arm.c (arm_rtx_costs_1): Rename from arm_rtx_costs.
	(arm_rtx_costs, TARGET_RTX_COSTS): New.
	* config/arm/arm-protos.h: Update.
	* config/arm/arm.h (DEFAULT_RTX_COSTS): Remove.

	* config/avr/avr.h (CONST_COSTS): Move code ...
	* config/avr/avr.c (avr_rtx_costs): ... here.
	(default_rtx_costs): Make static.
	* config/avr/avr-protos.h: Update.

	* config/h8300/h8300.c (const_costs): Make static.
	(h8300_and_costs, h8300_shift_costs): Likewise.
	* config/h8300/h8300-protos.h: Update.

	* config/ip2k/ip2k.h (DEFAULT_RTX_COSTS): Remove.
	(CONST_COSTS): Move code ...
	* config/ip2k/ip2k.c (ip2k_rtx_costs): ... here.  Rename from
	default_rtx_costs; update for signature change.
	* config/ip2k/ip2k-protos.h: Update.

	* config/m68hc11/m68hc11.h (RTX_COSTS): Remove.
	(CONST_COSTS): Move code ...
	* config/m68hc11/m68hc11.c (m68hc11_rtx_costs): ... here.
	(TARGET_RTX_COSTS): New.
	(m68hc11_rtx_costs_1): Rename from m68hc11_rtx_costs; make static.
	* config/m68hc11/m68hc11-protos.h: Update.

	* config/m68k/m68k.c (const_int_cost): Make static.
	* config/m68k/m68k-protos.h: Update.

	* config/mcore/mcore.c (mcore_const_costs): Make static.
	(mcore_and_cost, mcore_ior_cost): Likewise.
	* config/mcore/mcore-protos.h: Update.

	* config/mmix/mmix.c (mmix_rtx_costs, TARGET_RTX_COSTS): New.
	(mmix_rtx_cost_recalculated): Remove.
	* config/mmix/mmix.h (DEFAULT_RTX_COSTS): Remove.
	* config/mmix/mmix-protos.h: Update.

	* config/sh/sh.c (shiftcosts): Make static.
	(addsubcosts, andcosts, multcosts): Likewise.
	* config/sh/sh-protos.h: Update.

	* config/sparc/sparc.c (TARGET_RTX_COSTS): New.
	(sparc_rtx_costs): Make static; update for change in signature.
	* config/sparc/sparc.h (RTX_COSTS_CASES, RTX_COSTS): Remove.
	* config/sparc/sparc-protos.h: Update.

	* config/v850/v850.c (const_costs): Make static.
	* config/v850/v850-protos.h: Update.

	* config/vax/vax.h (RTX_COSTS): Remove.
	(CONST_COSTS): Move code ...
	* config/vax/vax.c (vax_rtx_costs_1): ... here; rename
	from vax_rtx_cost.
	(vax_rtx_costs, TARGET_RTX_COSTS): New.

From-SVN: r61954
2003-01-27 20:46:33 -08:00
Richard Earnshaw 76a318e977 arm.c (thumb_base_register_rtx_p): New function.
* arm.c (thumb_base_register_rtx_p): New function.
(thumb_index_register_rtx_p): New function.
(thumb_legitimate_address_p): New function.
(thumb_legitimate_offset_p): New function.
* arm.h (REG_STRICT_P): Define according to setting of REG_OK_STRICT.
(ARM_GO_IF_LEGITIMATE_ADDRESS): Use REG_STRICT_P to avoid dumplicate
definitions.
(THUMB_GO_IF_LEGITIMATE_ADDRESS): Use thumb_legitimate_address_p.
(THUMB_LEGITIMATE_OFFSET): Delte.
(THUMB_LEGITIMIZE_RELOAD_ADDRESS): Use thumb_legitimate_offset.
* arm-protos.h (thumb_legitimate_address_p): Add prototype.
(thumb_legitimate_offset_p): Likewise.

From-SVN: r61662
2003-01-23 18:10:46 +00:00
Richard Earnshaw 6b990f6b63 arm.c (arm_address_register_rtx_p): New function.
* arm.c (arm_address_register_rtx_p): New function.
(arm_legitimate_address_p): New function.
(arm_legitimate_index_p): New function.
(legitimize_pic_address): Use arm_legitimate_index_p.
* arm-protos.h (arm_legtimate_address_p): Add prototype.
* arm.h (ARM_GO_IF_LEGITIMATE_INDEX): Delete.
(ARM_GO_IF_LEGITIMATE_ADDRESS): Call arm_legitimate_address_p.

From-SVN: r61592
2003-01-22 16:01:43 +00:00
Kaveh R. Ghazi 0c2ca901f1 arm.c (ROUND_UP_WORD): Renamed from ROUND_UP.
* arm.c (ROUND_UP_WORD): Renamed from ROUND_UP.
	* arm.h (ROUND_UP_WORD): Likewise.

From-SVN: r61390
2003-01-16 15:22:54 +00:00
Kaveh R. Ghazi fc55537052 arm.h (CONDITIONAL_REGISTER_USAGE): Avoid signed/unsigned warning.
* arm.h (CONDITIONAL_REGISTER_USAGE): Avoid signed/unsigned
	warning.
	* emit-rtl.c (gen_rtx_REG, set_mem_attributes_minus_bitpos,
	init_emit_once): Likewise.
	* flow.c (mark_regs_live_at_end, calculate_global_regs_live):
	Likewise.
	* function.c (assign_stack_temp_for_type): Likewise.
	* loop.c (loop_invariant_p): Likewise.
	* recog.c (push_operand): Likewise.
	* regclass.c (init_reg_sets_1): Likewise.
	* reload.c (update_auto_inc_notes): Likewise.
	* reload1.c (reload_as_needed, emit_input_reload_insns): Likewise.
	* stmt.c (expand_asm_operands): Likewise.
	* stor-layout.c (start_record_layout): Likewise.

cp:
	* class.c (layout_virtual_bases): Avoid signed/unsigned warning.

java:
	* jcf-write.c (generate_bytecode_insns): Avoid signed/unsigned
	warning.

From-SVN: r61389
2003-01-16 15:13:33 +00:00
Richard Earnshaw 3cd4577449 arm.h (HAVE_PRE_MODIFY_DISP, [...]): Define.
* arm.h (HAVE_PRE_MODIFY_DISP, HAVE_PRE_MODIFY_REG): Define.
(HAVE_POST_MODIFY_DISP, HAVE_POST_MODIFY_REG): Define.
(ARM_GO_IF_LEGITIMATE_ADDRESS): Handle pre/post-modify addresses.
(ARM_PRINT_OPERAND_ADDRESS): Likewise.

From-SVN: r61332
2003-01-15 15:51:11 +00:00
Richard Earnshaw ab57893bfc arm.h (ENABLE_XF_PATTERNS): Delete.
* arm.h (ENABLE_XF_PATTERNS): Delete.
* arm.md (addxf3, subxf3, mulxf3, divxf3, modxf3, negxf2, absxf2)
(sqrtxf2, floatsixf2, fix_truncxfsi2, truncxfsf2, truncxfdf2)
(extendsfxf2, extenddfxf2, movxf, cmpxf, cmpxf_insn)
(cmpxf_trap): Delete.
(movxf_hard_insn): Remove test of ENABLE_XF_PATTERNS.

From-SVN: r61040
2003-01-08 11:55:50 +00:00
Neil Booth c58b209a5d c-pragma.c (c_register_pragma): New.
* c-pragma.c (c_register_pragma): New.
	(init_pragma): Use it.
	* c-pragma.h (cpp_register_pragma): Don't declare.
	(c_register_pragma): New.
	* cpplib.h: Remove #ifdef GCC_C_PRAGMA_H.
	* config/darwin.h (REGISTER_TARGET_PRAGMAS): Update.
	* config/arm/arm.h (REGISTER_TARGET_PRAGMAS): Update.
	* config/c4x/c4x.h (REGISTER_TARGET_PRAGMAS): Update.
	* config/h8300/h8300.h (REGISTER_TARGET_PRAGMAS): Update.
	* config/i370/i370.h (REGISTER_TARGET_PRAGMAS): Update.
	* config/i960/i960.h (REGISTER_TARGET_PRAGMAS): Update.
	* config/ia64/hpux.h (REGISTER_TARGET_PRAGMAS): Update.
	* config/rs6000/rs6000.h (REGISTER_TARGET_PRAGMAS): Update.
	* config/sh/sh.h (REGISTER_TARGET_PRAGMAS): Update.
	* config/v850/v850.h (REGISTER_TARGET_PRAGMAS): Update.
	* doc/tm.texi (REGISTER_TARGET_PRAGMAS): Update
cp:
	* lex.c: Remove superfluous include of cpplib.h.
	(CONSTRAINT): Define without conditions.
	(init_cp_pragma): Use c_register_pragma.

From-SVN: r60740
2003-01-01 12:27:02 +00:00
Zack Weinberg 4977bab6ed Merge basic-improvements-branch to trunk
From-SVN: r60174
2002-12-16 18:23:00 +00:00
Jeroen Dobbelaere 1741620c26 Jeroen Dobbelaere <jeroen.dobbelaere@acunia.com>
Jeroen Dobbelaere  <jeroen.dobbelaere@acunia.com>
* config/arm/arm.h (EXPAND_BUILTIN_VA_ARG,
FUNCTION_ARG_PASS_BY_REFERENCE): Define.
* config/arm/arm.c (arm_va_arg,
arm_function_arg_pass_by_reference): New.
* config/arm/arm-protos.h: Add prototypes.

From-SVN: r59127
2002-11-15 11:21:36 +00:00
Jason Thorpe 0977774ba0 [multiple changes]
2002-11-07  Jason Thorpe  <thorpej@wasabisystems.com>

* config/arm/arm-protos.h (arm_get_frame_size)
(thumb_get_frame_size): New prototypes.
* config/arm/arm.c (arm_get_frame_size)
(thumb_get_frame_size): New functions.
(use_return_insn, arm_output_epilogue, arm_output_function_epilogue)
(arm_compute_initial_elimination_offset, arm_expand_prologue): Use
arm_get_frame_size.
(thumb_expand_prologue, thumb_expand_epilogue): Use
thumb_get_frame_size.
* config/arm/arm.h (PREFERRED_STACK_BOUNDARY): Define.
(machine_function): Add frame_size member.
(THUMB_INITIAL_ELIMINATION_OFFSET): Use thumb_get_frame_size.

2002-11-07  Richard Earnshaw  <rearnsha@arm.com>

* arm.c (bit_count): Make argument unsigned long.  Return unsigned.
Adjust code to use portable unsigned bit manipulation.
(insn_flags, tune_flags): Change type to unsigned.
(struct processors): Make flags unsigned long.
(arm_override_options): Change type of count and current_bit_count
to unsigned.

From-SVN: r58901
2002-11-07 18:32:00 +00:00
Richard Henderson c590b62588 target.h (struct gcc_target): Line wrap.
* target.h (struct gcc_target): Line wrap.

	* config/alpha/alpha.c (alpha_output_mi_thunk_osf): Static.
	(TARGET_ASM_OUTPUT_MI_THUNK): Define here...
	* config/alpha/alpha.h: ... not here.
	* config/alpha/alpha-protos.h: Update.

	* config/arm/arm.c, config/arm/arm.h, config/arm/arm-protos.h
	config/cris/cris-protos.h, config/cris/cris.c, config/cris/cris.h,
	config/frv/frv-protos.h, config/frv/frv.c, config/frv/frv.h,
	config/i386/i386-protos.h, config/i386/i386.c, config/i386/openbsd.h,
	config/i386/unix.h, config/i960/i960-protos.h, config/i960/i960.c,
	config/i960/i960.h, config/ia64/ia64-protos.h, config/ia64/ia64.c,
	config/ia64/ia64.h, config/m68k/linux.h, config/m68k/m68k-protos.h,
	config/m68k/m68k.c, config/m68k/netbsd-elf.h, config/m68k/openbsd.h,
	config/mmix/mmix-protos.h, config/mmix/mmix.c, config/mmix/mmix.h,
	config/pa/pa-protos.h, config/pa/pa.c, config/pa/pa.h,
	config/s390/s390-protos.h, config/s390/s390.c, config/s390/s390.h,
	config/sparc/openbsd.h, config/sparc/sparc-protos.h,
	config/sparc/sparc.c, config/sparc/sparc.h,
	config/stormy16/stormy16-protos.h, config/stormy16/stormy16.c,
	config/stormy16/stormy16.h: Similarly.

	* config/m68k/m68k.c (m68k_output_mi_thunk): Replicate mnemonic
	selection logic from call patterns.

From-SVN: r58340
2002-10-20 15:37:14 -07:00
Mark Mitchell 483ab821df target-def.h (TARGET_ASM_OUTPUT_MI_THUNK): Default to NULL.
* target-def.h (TARGET_ASM_OUTPUT_MI_THUNK): Default to NULL.
	(TARGET_ASM_OUTPUT_MI_VCALL_THUNK): Likewise.
	(TARGET_ASM_OUT): Add them.
	* target.h (asm_out): Add output_mi_thunk and
	output_mi_vcall_thunk.
	* config/alpha/alpha.h (ASM_OUTPUT_MI_THUNK): Rename to ...
	(TARGET_ASM_OUTPUT_MI_THUNK): ... this.
	* config/arm/arm-protos.h (arm_output_mi_thunk): Declare.
	* config/arm/arm.c (arm_output_mi_thunk): Define.
	* config/arm/arm.h (ASM_OUTPUT_MI_THUNK): Rename to ...
	(TARGET_ASM_OUTPUT_MI_THUNK): ... this.
	* config/cris/cris.h (ASM_OUTPUT_MI_THUNK): Rename to ...
	(TARGET_ASM_OUTPUT_MI_THUNK): ... this.
	* config/frv/frv.h (ASM_OUTPUT_MI_THUNK): Rename to ...
	(TARGET_ASM_OUTPUT_MI_THUNK): ... this.
	* config/i386/i386-protos.h (x86_output_mi_thunk): Adjust
	prototype.
	(x86_output_mi_vcall_thunk): Declare.
	* config/i386/i386.c (override_options): Clear
	output_mi_vcall_thunk in 64-bit mode.
	(ix86_fntype_regparm): New function.
	(ix86_return_pops_args): Use it.
	(ia32_this_parameter): New function.
	(x86_output_mi_vcall_thunk): New function.
	(x86_output_mi_thunk): Use it
	* config/i386/unix.h (TARGET_ASM_OUTPUT_MI_THUNK): Adjust.
	(TARGET_ASM_OUTPUT_MI_VCALL_THUNK): Define.
	* config/i960/i960-protos.h (i960_output_mi_thunk): Declare.
	* config/i960/i960.c (i960_output_mi_thunk): New function.
	* config/i960/i960.h (ASM_OUTPUT_MI_THUNK): Adjust.
	* config/ia64/ia64-protos.h (ia64_output_mi_thunk): Declare.
	* config/ia64/ia64.c (ia64_output_mi_thunk): Define.
	* config/ia64/ia64.h (ASM_OUTPUT_MI_THUNK): Rename to ...
	(TARGET_ASM_OUTPUT_MI_THUNK): ... this.
	* config/m68k/m68k-protos.h (m68k_output_mi_thunk): New function.
	* config/m68k/linux.h (ASM_OUTPUT_MI_THUNK): Rename to ...
	(TARGET_ASM_OUTPUT_MI_THUNK): ... this.
	* config/m68k/netbsd-elf.h (ASM_OUTPUT_MI_THUNK): Rename to ...
	(TARGET_ASM_OUTPUT_MI_THUNK): ... this.
	* config/mmix/mmix.h (ASM_OUTPUT_MI_THUNK): Rename to ...
	(TARGET_ASM_OUTPUT_MI_THUNK): ... this.
	* config/pa/pa.h (ASM_OUTPUT_MI_THUNK): Rename to ...
	(TARGET_ASM_OUTPUT_MI_THUNK): ... this.
	* config/rs6000/sysv4.h (ASM_OUTPUT_MI_THUNK): Rename to ...
	(TARGET_ASM_OUTPUT_MI_THUNK): ... this.
	* config/s390/s390-protos.h (s390_output_mi_thunk): Declare.
	* config/s390/s390.c (s390_output_mi_thunk): Define.
	* config/s390/s390.h (ASM_OUTPUT_MI_THUNK): Rename to ...
	(TARGET_ASM_OUTPUT_MI_THUNK): ... this.
	* config/sparc/sparc.h (ASM_OUTPUT_MI_THUNK): Rename to ...
	(TARGET_ASM_OUTPUT_MI_THUNK): ... this.
	* config/stormy16/stormy16.h (ASM_OUTPUT_MI_THUNK): Rename to ...
	(TARGET_ASM_OUTPUT_MI_THUNK): ... this.
	* config/vax/vax-protos.h (vax_output_mi_thunk): Declare.
	* config/vax/vax.c (vax_output_mi_thunk): Define.
	* config/vax/vax.h (ASM_OUTPUT_MI_THUNK): Rename to ...
	(TARGET_ASM_OUTPUT_MI_THUNK): ... this.
	* doc/tm.texi: Adjust documentation.

From-SVN: r58293
2002-10-18 23:35:40 +00:00
Richard Earnshaw b93a0fe6ba arm.h (BASE_REG_CLASS): Always return LO_REGS for Thumb.
* arm.h (BASE_REG_CLASS): Always return LO_REGS for Thumb.
(MODE_BASE_REG_CLASS, case Thumb): Only return BASE_REGS if we know
that we have a SImode access, and only then if reload hasn't completed;
for all other cases, use LO_REGS.

From-SVN: r57644
2002-09-30 11:18:38 +00:00
Adam Nemet 59be607334 (THUMB_FUNCTION_PROFILER): Remove.
(FUNCTION_PROFILER): Only invoke THUMB_FUNCTION_PROFILER if it is defined.

Co-Authored-By: Nick Clifton <nickc@redhat.com>

From-SVN: r57475
2002-09-24 16:51:33 +00:00
Richard Henderson 66d93b5aed real.h (UNKNOWN_FLOAT_FORMAT, [...]): Move ...
* real.h (UNKNOWN_FLOAT_FORMAT, IEEE_FLOAT_FORMAT, VAX_FLOAT_FORMAT,
        IBM_FLOAT_FORMAT, C4X_FLOAT_FORMAT, TARGET_FLOAT_FORMAT): Move ...
        * defaults.h: ... here.
        * config/arm/arm.h, config/avr/avr.h, config/d30v/d30v.h,
        config/fr30/fr30.h, config/frv/frv.h, config/ia64/ia64.h,
        config/ip2k/ip2k.h, config/mips/mips.h, config/stormy16/stormy16.h,
        config/xtensa/xtensa.h (TARGET_FLOAT_FORMAT): Remove.

From-SVN: r57336
2002-09-19 23:36:36 -07:00
Kazu Hirata 825dda426b alpha.c: Follow spelling conventions.
* config/alpha/alpha.c: Follow spelling conventions.
	* config/alpha/alpha.h: Likewise.
	* config/alpha/alpha.md: Likewise.
	* config/arc/arc.h: Likewise.
	* config/arm/arm.c: Likewise.
	* config/arm/arm.h: Likewise.
	* config/arm/arm.md: Likewise.
	* config/arm/pe.c: Likewise.
	* config/arm/unknown-elf.h: Likewise.
	* config/avr/avr.c: Likewise.
	* config/avr/avr.h: Likewise.
	* config/c4x/c4x.c: Likewise.
	* config/cris/cris.c: Likewise.
	* config/cris/cris.h: Likewise.

From-SVN: r57266
2002-09-17 23:10:04 +00:00
Kazu Hirata 4912a07c88 ChangeLog: Follow spelling conventions.
* ChangeLog: Follow spelling conventions.
	* ChangeLog.0: Likewise.
	* ChangeLog.2: Likewise.
	* ChangeLog.3: Likewise.
	* ChangeLog.4: Likewise.
	* ChangeLog.5: Likewise.
	* ChangeLog.6: Likewise.
	* cppfiles.c: Likewise.
	* cppinit.c: Likewise.
	* cpplib.h: Likewise.
	* cse.c: Likewise.
	* debug.h: Likewise.
	* df.c: Likewise.
	* dominance.c: Likewise.
	* hashtable.c: Likewise.
	* hashtable.h: Likewise.
	* loop.c: Likewise.
	* config/arm/README-interworking: Likewise.
	* config/arm/arm.c: Likewise.
	* config/arm/arm.h: Likewise.
	* config/arm/arm.md: Likewise.
	* config/dsp16xx/dsp16xx.h: Likewise.
	* config/frv/frv.c: Likewise.
	* config/frv/frv.h: Likewise.
	* config/ip2k/ip2k.h: Likewise.
	* config/rs6000/rs6000.c: Likewise.
	* config/stormy16/stormy-abi: Likewise.
	* config/stormy16/stormy16.h: Likewise.
	* config/v850/v850.c: Likewise.

From-SVN: r57146
2002-09-14 15:51:45 +00:00
Jason Thorpe fcd5374808 arm-protos.h (arm_gen_return_addr_mask): New prototype.
* config/arm/arm-protos.h (arm_gen_return_addr_mask): New
prototype.
* config/arm/arm.c (arm_gen_return_addr_mask): New function.
* config/arm/arm.h (MASK_RETURN_ADDR): Use arm_gen_return_addr_mask
if not APCS26 and not Thumb or ARMv4-or-higher.  Use gen_int_mode
rather than GEN_INT.
* config/arm/arm.md (UNSPEC_CHECK_ARCH): Define.
(return_addr_mask, *check_arch2): New.

From-SVN: r56883
2002-09-06 14:54:48 +00:00
Jason Thorpe dc0ba55a5b arm.c (arm_return_in_memory): Implement ATPCS return-in-memory rules.
* config/arm/arm.c (arm_return_in_memory): Implement ATPCS
return-in-memory rules.
* config/arm/arm.h (ARM_FLAG_ATPCS, TARGET_ATPCS): Define.

From-SVN: r56858
2002-09-05 17:11:47 +00:00
Jason Thorpe b5b620a4e8 real.c: Avoid parse error if FLOAT_WORDS_BIG_ENDIAN is not a compile-time constant for...
* real.c: Avoid parse error if FLOAT_WORDS_BIG_ENDIAN is
not a compile-time constant for the non-IBM case.
* config/arm/arm-protos.h (arm_float_words_big_endian): New
prototype.
* config/arm/arm.c (arm_float_words_big_endian): New function.
* config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __VFP_FP__
if TARGET_VFP  and not TARGET_HARD_FLOAT.
(ARM_FLAG_VFP, TARGET_VFP): Define.
(FLOAT_WORDS_BIG_ENDIAN): Use arm_float_words_big_endian.

[ Missed arm.h in previous checkin, and pasto'd ChangeLog entry, which
  is now corrected. ]

From-SVN: r56857
2002-09-05 16:54:57 +00:00
Krister Walfridsson e194407348 arm.c (arm_asm_output_labelref): New function.
* config/arm/arm.c (arm_asm_output_labelref): New function.
* config/arm/arm.h (ASM_OUTPUT_LABELREF): Call arm_asm_output_labelref.
* config/arm/arm-protos.h: Add prototype for arm_asm_output_labelref.

From-SVN: r56682
2002-08-30 11:26:53 +00:00
Adam Nemet aeaf4d25a8 arm.c (thumb_unexpanded_epilogue): Stack the PIC register.
* config/arm/arm.c (thumb_unexpanded_epilogue): Stack the PIC register.
(thumb_expand_prologue): Likewise.
(thumb_output_function_prologue): Likewise.
* config/arm/arm.h (THUMB_INITIAL_ELIMINATION_OFFSET): Account for the
additional push of the PIC register.

From-SVN: r56128
2002-08-08 11:08:34 +00:00
Jeroen Dobbelaere e9d7b180c2 From Jeroen Dobbelaere <jeroen.dobbelaere@acunia.com>
* arm.h (ARM_NUM_INTS, ARM_NUM_REGS, ARM_NUM_REGS2): Renamed from
NUM_INTS, NUM_REGS and ARM_NUM_REGS2 respectively.  All uses changed.
* arm.c: Similarly.

From-SVN: r55515
2002-07-17 09:54:11 +00:00
Jeroen Dobbelaere 1575c31ee1 From: Jeroen Dobbelaere <jeroen.dobbelaere@acunia.com>
From: Jeroen Dobbelaere <jeroen.dobbelaere@acunia.com>
* arm.c (emit_sfm): Don't set RTX_FRAME_RELATED_P on DWARF.

From: Jeroen Dobbelaere <jeroen.dobbelaere@acunia.com>
 and Richard Earnshaw  <rearnsha@arm.com>
* arm.h (LEGITIMATE_PIC_OPERAND_P): Only test
CONSTANT_POOL_ADDRESS_P if a SYMBOL_REF.  Simplify logic.

Co-Authored-By: Richard Earnshaw <rearnsha@arm.com>

From-SVN: r55487
2002-07-16 15:39:22 +00:00
Zack Weinberg a538146672 Makefile.in (MACHMODE_H): Add @extra_modes_file@.
* Makefile.in (MACHMODE_H): Add @extra_modes_file@.
	* configure.in: If $srcdir/config/${cpu_type}/${cpu_type}-modes.def
	exists, substitute its pathname as @extra_modes_file@, define
	EXTRA_MODES_FILE to be an appropriate string to #include it
	with, and define EXTRA_CC_MODES to 1.

	* machmode.def: Update comments.  Include EXTRA_MODES_FILE if
	it's defined.  Get rid of redundancy in calling sequence for
	CC; don't use it to define CCmode, to avoid a warning.
	* libgcc2.c: Include symcat.h for the sake of machmode.def.

	* arc-modes.def, arm-modes.def, c4x-modes.def, i386-modes.def,
	i960-modes.def, ia64-modes.def, m88k-modes.def, mmix-modes.def,
	pa-modes.def, pdp11-modes.def, rs6000-modes.def, sparc-modes.def:
	New files.
	* arc.h, arm.h, c4x.h, i386.h, i960.h, ia64.h, m88k.h, mmix.h,
	pa.h, pdp11.h, rs6000.h, sparc.h: Don't define EXTRA_CC_MODES.

	* doc/sourcebuild.texi, doc/tm.texi: Document new scheme for
	defining extra CC modes.

From-SVN: r54478
2002-06-10 22:35:56 +00:00
Geoffrey Keating e2500fedef Merge from pch-branch up to tag pch-commit-20020603.
From-SVN: r54232
2002-06-04 07:11:05 +00:00
Zack Weinberg c7bdf0a6af config.gcc: Remove all stanzas for previously obsoleted systems.
* config.gcc: Remove all stanzas for previously obsoleted
	systems.  Where necessary, add explicit error stanzas to
	prevent removed systems from being misidentified as something
	else.  Begin a fresh obsoletions list, with the systems that
	were reprieved last round.
	* doc/install.texi: Remove all mention of dead targets.
	* fixinc/mkfixinc.sh: Likewise.

	* config/arm/arm.h: Bit 31 of target_flags is no longer
	reserved.

	* config/1750a/1750a-protos.h, config/1750a/1750a.c,
	config/1750a/1750a.h, config/1750a/1750a.md, config/1750a/ms1750.inc,
	config/a29k/a29k-protos.h, config/a29k/a29k.c, config/a29k/a29k.h,
	config/a29k/a29k.md, config/a29k/rtems.h, config/a29k/t-a29kbare,
	config/a29k/t-vx29k, config/a29k/unix.h, config/a29k/vx29k.h,
	config/alpha/osf12.h, config/alpha/osf2or3.h,
	config/arm/arm-wince-pe.h, config/arm/arm.h, config/arm/riscix.h,
	config/arm/riscix1-1.h, config/arm/rix-gas.h, config/arm/t-riscix,
	config/clipper/clipper-protos.h, config/clipper/clipper.c,
	config/clipper/clipper.h, config/clipper/clipper.md,
	config/clipper/clix.h, config/convex/convex-protos.h,
	config/convex/convex.c, config/convex/convex.h,
	config/convex/convex.md, config/convex/fixinc.convex,
	config/convex/proto.h, config/elxsi/elxsi-protos.h,
	config/elxsi/elxsi.c, config/elxsi/elxsi.h, config/elxsi/elxsi.md,
	config/i386/386bsd.h, config/i386/aix386.h, config/i386/aix386ng.h,
	config/i386/bsd386.h, config/i386/dgux.h, config/i386/djgpp-rtems.h,
	config/i386/isc.h, config/i386/iscdbx.h, config/i386/linux-oldld.h,
	config/i386/next.h, config/i386/osf1-ci.asm, config/i386/osf1-cn.asm,
	config/i386/osf1elf.h, config/i386/osf1elfgdb.h, config/i386/osfelf.h,
	config/i386/osfrose.h, config/i386/rtems.h, config/i386/seq-gas.h,
	config/i386/seq-sysv3.h, config/i386/seq2-sysv3.h,
	config/i386/sequent.h, config/i386/sun.h, config/i386/sun386.h,
	config/i386/t-dgux, config/i386/t-next, config/i386/t-osf,
	config/i386/t-osf1elf, config/i860/bsd-gas.h, config/i860/bsd.h,
	config/i860/fx2800.h, config/i860/i860-protos.h, config/i860/i860.c,
	config/i860/i860.h, config/i860/i860.md, config/i860/mach.h,
	config/i860/paragon.h, config/i860/sysv3.h, config/i860/sysv4.h,
	config/i860/t-fx2800, config/i860/varargs.asm, config/m68k/a-ux.h,
	config/m68k/altos3068.h, config/m68k/apollo68.h,
	config/m68k/aux-crt1.c, config/m68k/aux-crt2.asm,
	config/m68k/aux-crtn.asm, config/m68k/aux-exit.c,
	config/m68k/aux-low.gld, config/m68k/aux-mcount.c,
	config/m68k/auxas.h, config/m68k/auxgas.h, config/m68k/auxgld.h,
	config/m68k/auxld.h, config/m68k/ctix.h, config/m68k/dpx2.h,
	config/m68k/dpx2.ifile, config/m68k/dpx2cdbx.h, config/m68k/dpx2g.h,
	config/m68k/isi-nfp.h, config/m68k/isi.h, config/m68k/lynx-ng.h,
	config/m68k/lynx.h, config/m68k/math-3300.h, config/m68k/news.h,
	config/m68k/news3.h, config/m68k/news3gas.h, config/m68k/newsgas.h,
	config/m68k/next.h, config/m68k/next21.h, config/m68k/rtems.h,
	config/m68k/t-aux, config/m68k/t-lynx, config/m68k/t-next,
	config/m68k/x-next, config/m88k/dgux.h, config/m88k/dgux.ld,
	config/m88k/dguxbcs.h, config/m88k/dolph.h, config/m88k/dolphin.ld,
	config/m88k/luna.h, config/m88k/m88k-coff.h, config/m88k/sysv3.h,
	config/m88k/t-bug, config/m88k/t-dgux, config/m88k/t-dgux-gas,
	config/m88k/t-dguxbcs, config/m88k/t-dolph, config/m88k/t-m88k-gas,
	config/m88k/t-tekXD88, config/m88k/tekXD88.h, config/m88k/tekXD88.ld,
	config/mips/bsd-4.h, config/mips/bsd-5.h, config/mips/dec-bsd.h,
	config/mips/dec-osf1.h, config/mips/elflorion.h,
	config/mips/iris4loser.h, config/mips/mips-5.h, config/mips/news4.h,
	config/mips/news5.h, config/mips/nws3250v4.h, config/mips/osfrose.h,
	config/mips/svr3-4.h, config/mips/svr3-5.h, config/mips/svr4-4.h,
	config/mips/svr4-5.h, config/mips/svr4-t.h, config/mips/t-bsd,
	config/mips/t-bsd-gas, config/mips/t-svr3, config/mips/t-svr3-gas,
	config/mips/t-svr4, config/mips/t-svr4-gas, config/mips/t-ultrix,
	config/mips/ultrix.h, config/nextstep-protos.h, config/nextstep.c,
	config/nextstep.h, config/nextstep21.h, config/ns32k/encore.h,
	config/ns32k/merlin.h, config/ns32k/pc532-mach.h,
	config/ns32k/pc532-min.h, config/ns32k/pc532.h,
	config/ns32k/sequent.h, config/ns32k/tek6000.h,
	config/ns32k/tek6100.h, config/ns32k/tek6200.h, config/pj/lib1funcs.S,
	config/pj/linux.h, config/pj/pj-protos.h, config/pj/pj.c,
	config/pj/pj.h, config/pj/pj.md, config/pj/pjl.h, config/pj/t-pj,
	config/sparc/rtems.h, config/we32k/we32k-protos.h,
	config/we32k/we32k.c, config/we32k/we32k.h, config/we32k/we32k.md:
	Delete file.

From-SVN: r53862
2002-05-25 02:10:46 +00:00
Richard Henderson 772c526579 system.h (STRIP_NAME_ENCODING): Poison it.
* system.h (STRIP_NAME_ENCODING): Poison it.
	* output.h (STRIP_NAME_ENCODING): Remove.
	(default_strip_name_encoding): Declare.
	* target-def.h (TARGET_STRIP_NAME_ENCODING): New.
	* target.h (strip_name_encoding): New.
	* varasm.c (default_strip_name_encoding): New.

	* dwarf2asm.c, varasm.c, config/darwin.c, config/darwin.h,
	config/alpha/alpha.c, config/arm/pe.c, config/avr/avr.c,
	config/cris/cris.c, config/i386/cygwin.h, config/i386/interix.c,
	config/i386/winnt.c, config/m32r/m32r.h, config/mcore/mcore-elf.h,
	config/mcore/mcore-pe.h, config/mcore/mcore.c, config/mcore/mcore.h,
	config/mips/mips.c, config/mn10200/mn10200.h, config/mn10300/mn10300.h,
	config/pa/pa.c, config/pa/pa.h, config/pa/som.h,
	config/rs6000/rs6000.c, config/rs6000/sysv4.h, config/rs6000/xcoff.h,
	config/v850/v850.h: Use the hook, not the macro.

	* config/darwin-protos.h, config/darwin.c, config/darwin.h,
	config/alpha/alpha.c, config/alpha/alpha.h, config/h8300/h8300.c,
	config/h8300/h8300.h, config/i386/cygwin.h, config/i386/i386-interix.h,
	config/i386/i386-protos.h, config/i386/win32.h, config/i386/winnt.c,
	config/ia64/ia64.c, config/ia64/ia64.h, config/m32r/m32r.c,
	config/m32r/m32r.h, config/mcore/mcore.c, config/mcore/mcore.h,
	config/pa/pa.c, config/rs6000/rs6000.c, config/rs6000/sysv4.h,
	config/rs6000/xcoff.h, config/sh/sh.c, config/sh/sh.h,
	config/v850/v850.c, config/v850/v850.h:
	Move STRIP_NAME_ENCODING to out-of-line function and add
	TARGET_STRIP_NAME_ENCODING.

	* config/arm/arm.c, config/arm/arm.h, config/mmix/mmix-protos.h,
	config/mmix/mmix.c, config/mmix/mmix.h: Replace STRIP_NAME_ENCODING
	with TARGET_STRIP_NAME_ENCODING referencing existing function;
	make function static.

	* xcoffout.c: Include target.h
	* Makefile.in (xcoffout.o): Update.

	* config/avr/avr.c (avr_encode_section_info): Correct prototype.
	* config/avr/avr.h (STRIP_NAME_ENCODING): Remove.
	* config/rs6000/rs6000.c (rs6000_xcoff_unique_section): Mark
	reloc argument unused.
	* config/sh/sh.c (TARGET_ENCODE_SECTION_INFO): New.

	* doc/tm.texi (TARGET_STRIP_NAME_ENCODING): Update from previous
	STRIP_NAME_ENCODING docs.

From-SVN: r53615
2002-05-19 00:55:48 -07:00
Richard Henderson fb49053ffd system.h (ENCODE_SECTION_INFO): Poison it.
* system.h (ENCODE_SECTION_INFO): Poison it.
	* target-def.h (TARGET_ENCODE_SECTION_INFO): New.
	* target.h (encode_section_info): New.
	* varasm.c (make_decl_rtl, output_constant_def): Use it.
	* hooks.c (hook_tree_int_void): New.
	* hooks.h: Declare it.

	* config/darwin.h, config/alpha/alpha-protos.h, config/alpha/alpha.c,
	config/alpha/alpha.h, config/arm/pe.h, config/avr/avr-protos.h,
	config/avr/avr.c, config/avr/avr.h, config/c4x/c4x-protos.h,
	config/c4x/c4x.c, config/c4x/c4x.h, config/cris/cris-protos.h,
	config/cris/cris.c, config/cris/cris.h, config/i386/cygwin.h,
	config/i386/win32.h, config/ia64/ia64-protos.h, config/ia64/ia64.c,
	config/ia64/ia64.h, config/m32r/m32r-protos.h, config/m32r/m32r.c,
	config/m32r/m32r.h, config/m68hc11/m68hc11-protos.h,
	config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
	config/mcore/mcore-protos.h, config/mcore/mcore.c,
	config/mcore/mcore.h, config/mmix/mmix-protos.h, config/mmix/mmix.c,
	config/mmix/mmix.h, config/rs6000/rs6000-protos.h,
	config/rs6000/sysv4.h, config/stormy16/stormy16-protos.h,
	config/stormy16/stormy16.c, config/stormy16/stormy16.h:
	Replace ENCODE_SECTION_INFO with TARGET_ENCODE_SECTION_INFO
	referencing existing function.  Make function static.

	* config/a29k/a29k.c, config/a29k/a29k.h, config/arc/arc.c,
	config/arc/arc.h, config/arm/arm.c, config/arm/arm.h,
	config/h8300/h8300.c, config/h8300/h8300.h, config/i370/i370.c,
	config/i370/i370.h, config/i386/i386-interix.h, config/i386/i386.c,
	config/i386/i386.h, config/i386/interix.c, config/m88k/m88k.c,
	config/m88k/m88k.h, config/mips/mips.c, config/mips/mips.h,
	config/ns32k/ns32k.c, config/ns32k/ns32k.h, config/pa/pa.c,
	config/pa/pa.h, config/romp/romp.c, config/romp/romp.h,
	config/rs6000/linux64.h, config/rs6000/xcoff.h, config/s390/s390.c,
	config/s390/s390.h, config/sh/sh.c, config/sh/sh.h,
	config/sparc/sparc.c, config/sparc/sparc.h, config/v850/v850.c,
	config/v850/v850.h, config/vax/vax.c, config/vax/vms.h,
	config/xtensa/xtensa.c, config/xtensa/xtensa.h:
	Move ENCODE_SECTION_INFO to out-of-line function and add
	TARGET_ENCODE_SECTION_INFO.

	* config/darwin.h (ASM_DECLARE_FUNCTION_NAME): Use hook, not macro.
	(ASM_DECLARE_OBJECT_NAME, ASM_OUTPUT_ALIGNED_DECL_LOCAL): Likewise.

	* config/arm/pe.h (EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS): Rename
	from SUBTARGET_*
	(switch_to_section): Replace in_rdata case with in_readonly_data.

	* config/h8300/h8300.c (h8300_encode_label): Make static.
	* config/h8300/h8300-protos.h: Update.

	* config/rs6000/rs6000.c (rs6000_elf_encode_section_info): Rename
	from rs6000_encode_section_info; make static.
	(rs6000_xcoff_encode_section_info): New.

	* config/v850/v850.c (v850_encode_data_area): Make static.
	* config/v850/v850-protos.h: Update.

	* config/vax/vax.c: Include flags.h.
	(vms_select_section): Fix typo.

	* doc/tm.texi (TARGET_ENCODE_SECTION_INFO): Update from previous
	ENCODE_SECTION_INFO docs.

From-SVN: r53606
2002-05-18 22:23:27 -07:00
Nick Clifton 48f6efae63 arm.c (arm_rtx_costs): Check for RTX being a SYMBOL_REF before calling CONSTANT_POOL_ADDRESS_P.
* config/arm/arm.c (arm_rtx_costs): Check for RTX being a
    SYMBOL_REF before calling CONSTANT_POOL_ADDRESS_P.
    (arm_adjust_cost): Check for RTX being a SYMBOL_REF before
    calling CONSTANT_POOL_ADDRESS_P.
    * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Fix typo in code
    to decide whether to define __arm__ or __thumb.
        (THUMB_GO_IF_LEGITIMATE_ADDRESS): Check for RTX being a
    SYMBOL_REF before calling CONSTANT_POOL_ADDRESS_P.

From-SVN: r53519
2002-05-16 15:17:41 +00:00
Neil Booth e6471be669 arm.h (TARGET_CPU_CPP_BUILTINS): Define.
config:
	* arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define.
	(CPP_SPEC): Update.
	(CPP_APCS_PC_SPEC, CPP_APCS_PC_DEFAULT_SPEC,
	CPP_FLOAT_SPEC, CPP_FLOAT_DEFAULT_SPEC, CPP_ENDIAN_SPEC,
	CPP_ENDIAN_DEFAULT_SPEC, CPP_INTERWORK_DEFAULT_SPEC,
	CPP_INTERWORK_SPEC, CPP_PREDEFINES): Remove.
	(EXTRA_SPECS): Update.
	* arm/conix-elf.h, arm/linux-elf.h, arm/netbsd.h, arm/riscix.h,
	arm/riscix1-1.h, arm/rtems-elf.h, arm/semiaof.h, arm/unknown-elf.h,
	arm/unknown-elf-oabi.h, arm/vxarm.h: Remove CPP_PREDEFINES and
	define TARGET_OS_CPP_BUILTINS if necessary.

From-SVN: r53463
2002-05-14 17:35:50 +00:00
Richard Henderson 5b43fed17b re PR rtl-optimization/5878 (gcc 3.1 breaks on C code generated by the Mercury compiler)
PR 5878
	* config/arc/arc.h, config/cris/cris.h, config/i386/i386.h,
	config/m68k/m68k.h, config/s390/s390.h, config/sparc/sparc.h
	(PIC_OFFSET_TABLE_REGNUM): Conditionalize on flag_pic.

	* config/arm/arm.h config/i386/i386.h, config/m68k/m68k.h,
	config/sparc/sparc.h (CONDITIONAL_REGISTER_USAGE): Set
	PIC_OFFSET_TABLE_REGNUM based on INVALID_REGNUM not flag_pic.

	* config/arc/arc.h (CONDITIONAL_REGISTER_USAGE): New.
	* config/arm/arm.c (arm_pic_register): Init to INVALID_REGNUM.
	(arm_override_options): Set arm_pic_register if TARGET_APCS_STACK
	also.  Don't set it if not flag_pic.
	* config/i386/i386.c (ix86_save_reg): Trust PIC_OFFSET_TABLE_REGNUM
	to be INVALID_REGNUM when not used.

	* gcc.dg/20020312-2.c: New.

From-SVN: r50713
2002-03-12 21:42:40 -08:00
Kaveh R. Ghazi 2465bf7657 1750a.h, [...] (POINTER_SIZE): Delete.
* 1750a.h, a29k.h, arc.h, arm.h, c4x.h, clipper.h, cris.h, d30v.h,
	dsp16xx.h, fr30.h, h8300.h, i370.h, i386.h, i860.h, i960.h,
	m32r.h, m68hc11.h, m68k.h, m88k.h, mcore.h, mmix.h, mn10300.h,
	ns32k.h, pa.h, pdp11.h, pj.h, romp.h, s390.h, stormy16.h,
	v850.h, vax.h, we32k.h, xtensa.h (POINTER_SIZE): Delete.
	* defaults.h (POINTER_SIZE): Define.
	* doc/tm.texi (POINTER_SIZE): Document default.

From-SVN: r50634
2002-03-12 05:28:21 +00:00
Zack Weinberg ba31d94ee6 emit-rtl.c, [...]: Remove all #ifndef REAL_ARITHMETIC blocks...
* emit-rtl.c, final.c, fold-const.c, gengenrtl.c, optabs.c,
	print-tree.c, real.c, real.h, recog.c, rtl.c, simplify-rtx.c,
	tree.c, config/m68k/m68k.c, f/com.c, f/target.h, java/expr.c,
	java/jcf-parse.c, java/lex.c:
	Remove all #ifndef REAL_ARITHMETIC blocks, make all #ifdef
	REAL_ARITHMETIC blocks unconditional.  Delete some further
	#ifdef blocks predicated on REAL_ARITHMETIC.
	* flags.h, toplev.c: Delete remaining references to
	flag_pretend_float.

	* doc/invoke.texi: Remove documentation of -fpretend-float.
	* doc/tm.texi: Describe the various REAL_* macros as provided by
	real.h, not by the target configuration files.

	* config/alpha/alpha.h, config/alpha/unicosmk.h, config/arm/arm.h,
	config/avr/avr.h, config/c4x/c4x.h, config/convex/convex.h,
	config/cris/cris.h, config/d30v/d30v.h, config/dsp16xx/dsp16xx.h,
	config/h8300/h8300.h, config/i370/i370.h, config/i386/i386.h,
	config/i386/osf1elf.h, config/i960/i960.h, config/ia64/ia64.h,
	config/m32r/m32r.h, config/m68hc11/m68hc11.h, config/m68k/dpx2.h,
	config/m68k/linux-aout.h, config/m68k/linux.h, config/m68k/m68k.h,
	config/m68k/sun3.h, config/m68k/vxm68k.h, config/mcore/mcore.h,
	config/mips/mips.h, config/mmix/mmix.h, config/mn10200/mn10200.h,
	config/mn10300/mn10300.h, config/pa/pa.h, config/pj/pj.h,
	config/rs6000/rs6000.h, config/s390/s390.h, config/sh/sh.h,
	config/sparc/freebsd.h, config/sparc/linux.h, config/sparc/linux64.h,
	config/sparc/sol2.h, config/sparc/sparc.h, config/sparc/vxsim.h,
	config/stormy16/stormy16.h, config/v850/v850.h, config/vax/vax.h,
	config/xtensa/xtensa.h:
	Do not define, undefine, or mention in comments any of
	REAL_ARITHMETIC, REAL_VALUE_ATOF, REAL_VALUE_HTOF,
	REAL_VALUE_ISNAN, REAL_VALUE_ISINF,
	REAL_VALUE_TO_TARGET_SINGLE, REAL_VALUE_TO_TARGET_DOUBLE,
	REAL_VALUE_TO_TARGET_LONG_DOUBLE, REAL_VALUE_TO_DECIMAL,
	REAL_VALUE_TYPE, REAL_VALUES_EQUAL, REAL_VALUES_LESS,
	REAL_VALUE_LDEXP, REAL_VALUE_FIX, REAL_VALUE_UNSIGNED_FIX,
	REAL_VALUE_RNDZINT, REAL_VALUE_UNSIGNED_RNDZINT,
	REAL_INFINITY, REAL_VALUE_NEGATE, REAL_VALUE_TRUNCATE,
	REAL_VALUE_TO_INT, or REAL_VALUE_FROM_INT.

From-SVN: r50263
2002-03-03 21:10:09 +00:00
Kaveh R. Ghazi e81dd3810b 1750a.h, [...] (BITS_PER_WORD): Delete.
* 1750a.h, a29k.h, alpha.h, arc.h, arm.h, avr.h, c4x.h, clipper.h,
	convex.h, cris.h, d30v.h, dsp16xx.h, elxsi.h, fr30.h, h8300.h,
	i370.h, i386.h, i860.h, i960.h, ia64.h, m32r.h, m68hc11.h, m68k.h,
	m88k.h, mcore.h, mips.h, mmix.h, mn10200.h, mn10300.h, ns32k.h,
	pa.h, pdp11.h, pj.h, romp.h, rs6000.h, s390.h, sh.h, sparc.h,
	stormy16.h, v850.h, vax.h, we32k.h, xtensa.h (BITS_PER_WORD):
	Delete.
	* defaults.h (BITS_PER_WORD): Define.
	* doc/tm.texi (BITS_PER_WORD): Document default value.

From-SVN: r50257
2002-03-03 15:40:44 +00:00
Richard Henderson b20032503b varasm.c (make_decl_rtl): Remove call to REDO_SECTION_INFO_P; invoke ENCODE_SECTION_INFO with first call flag.
* varasm.c (make_decl_rtl): Remove call to REDO_SECTION_INFO_P;
	invoke ENCODE_SECTION_INFO with first call flag.

	* config/darwin-protos.h, config/darwin.c, config/darwin.h,
	config/a29k/a29k.h, config/alpha/alpha-protos.h, config/alpha/alpha.c,
	config/alpha/alpha.h, config/arc/arc.h, config/arm/arm-protos.h,
	config/arm/arm.h, config/arm/pe.c, config/arm/pe.h,
	config/avr/avr-protos.h, config/avr/avr.c, config/avr/avr.h,
	config/c4x/c4x-protos.h, config/c4x/c4x.c, config/c4x/c4x.h,
	config/cris/cris-protos.h, config/cris/cris.c, config/cris/cris.h,
	config/d30v/d30v.h, config/h8300/h8300.h, config/i370/i370.h,
	config/i386/cygwin.h, config/i386/i386-interix.h, config/i386/i386.h,
	config/i386/osfrose.h, config/i386/win32.h, config/i386/winnt.c,
	config/ia64/ia64-protos.h, config/ia64/ia64.c, config/ia64/ia64.h,
	config/m32r/m32r-protos.h, config/m32r/m32r.c, config/m32r/m32r.h,
	config/m68hc11/m68hc11-protos.h, config/m68hc11/m68hc11.c,
	config/m68hc11/m68hc11.h, config/m88k/m88k.h,
	config/mcore/mcore-protos.h, config/mcore/mcore.c,
	config/mcore/mcore.h, config/mips/mips.h, config/ns32k/ns32k.h,
	config/pa/pa.h, config/romp/romp.h, config/rs6000/linux64.h,
	config/rs6000/rs6000-protos.h, config/rs6000/rs6000.c,
	config/rs6000/sysv4.h, config/rs6000/xcoff.h, config/s390/s390.h,
	config/sh/sh.h, config/sparc/sparc.h,
	config/stormy16/stormy16-protos.h, config/stormy16/stormy16.c,
	config/stormy16/stormy16.h, config/v850/v850.h, config/vax/vms.h,
	config/xtensa/xtensa.h, doc/tm.texi: ENCODE_SECTION_INFO now takes
	FIRST argument.  As needed, examine it and do nothing.

	* config/darwin.h, config/alpha/alpha.h, config/arm/pe.h,
	config/i386/cygwin.h, config/ia64/ia64.h, config/m68hc11/m68hc11.h,
	config/mcore/mcore.h: Remove REDO_SECTION_INFO_P.

	* config/arm/t-pe (pe.o): Add dependencies.

From-SVN: r50236
2002-03-02 20:23:21 -08:00