* config.gcc <arm>: Add --with-abi=
commitf9273c43241c5b9554c298f049d4155b42776fa4
authorpbrook <pbrook@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 24 Mar 2004 17:20:16 +0000 (24 17:20 +0000)
committerpbrook <pbrook@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 24 Mar 2004 17:20:16 +0000 (24 17:20 +0000)
treea94720070e991dfe64bb18f210744799e935aef3
parentb06bfd629f215d8639ecf74875b633593c1a048b
* 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@79921 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/config.gcc
gcc/config/arm/arm-protos.h
gcc/config/arm/arm.c
gcc/config/arm/arm.h
gcc/config/arm/arm.md
gcc/config/arm/netbsd-elf.h
gcc/doc/invoke.texi