arm.c (arm_arch4t): New variable.
authorRichard Earnshaw <rearnsha@arm.com>
Fri, 25 Jun 2004 10:42:21 +0000 (10:42 +0000)
committerRichard Earnshaw <rearnsha@gcc.gnu.org>
Fri, 25 Jun 2004 10:42:21 +0000 (10:42 +0000)
commit68d560d4d612ad0683bae7b36708ef88685316c5
tree7fbbce5dce641445636037d4f40a6ff09f75b128
parent576df3214c16163b65f82064f035fd375d0c02aa
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
gcc/ChangeLog
gcc/config/arm/arm.c
gcc/config/arm/arm.h
gcc/config/arm/arm.md