Commit d163e655 by Anatoly Sokolov Committed by Anatoly Sokolov

arm.h (CLASS_LIKELY_SPILLED_P): Remove.

	* config/arm/arm.h (CLASS_LIKELY_SPILLED_P): Remove.
	* config/arm/arm.c (TARGET_CLASS_LIKELY_SPILLED_P): Define.
	(arm_class_likely_spilled_p): New function.

From-SVN: r164450
parent 382eb33c
2010-09-20 Anatoly Sokolov <aesok@post.ru>
* config/arm/arm.h (CLASS_LIKELY_SPILLED_P): Remove.
* config/arm/arm.c (TARGET_CLASS_LIKELY_SPILLED_P): Define.
(arm_class_likely_spilled_p): New function.
2010-09-20 Uros Bizjak <ubizjak@gmail.com> 2010-09-20 Uros Bizjak <ubizjak@gmail.com>
* config/i386/i386.c (ix86_expand_ashl_const): Rewrite using * config/i386/i386.c (ix86_expand_ashl_const): Rewrite using
......
...@@ -239,6 +239,7 @@ static rtx arm_pic_static_addr (rtx orig, rtx reg); ...@@ -239,6 +239,7 @@ static rtx arm_pic_static_addr (rtx orig, rtx reg);
static bool cortex_a9_sched_adjust_cost (rtx, rtx, rtx, int *); static bool cortex_a9_sched_adjust_cost (rtx, rtx, rtx, int *);
static bool xscale_sched_adjust_cost (rtx, rtx, rtx, int *); static bool xscale_sched_adjust_cost (rtx, rtx, rtx, int *);
static unsigned int arm_units_per_simd_word (enum machine_mode); static unsigned int arm_units_per_simd_word (enum machine_mode);
static bool arm_class_likely_spilled_p (reg_class_t);
/* Table of machine attributes. */ /* Table of machine attributes. */
...@@ -545,6 +546,9 @@ static const struct attribute_spec arm_attribute_table[] = ...@@ -545,6 +546,9 @@ static const struct attribute_spec arm_attribute_table[] =
#undef TARGET_CAN_ELIMINATE #undef TARGET_CAN_ELIMINATE
#define TARGET_CAN_ELIMINATE arm_can_eliminate #define TARGET_CAN_ELIMINATE arm_can_eliminate
#undef TARGET_CLASS_LIKELY_SPILLED_P
#define TARGET_CLASS_LIKELY_SPILLED_P arm_class_likely_spilled_p
struct gcc_target targetm = TARGET_INITIALIZER; struct gcc_target targetm = TARGET_INITIALIZER;
/* Obstack for minipool constant handling. */ /* Obstack for minipool constant handling. */
...@@ -21952,6 +21956,22 @@ arm_units_per_simd_word (enum machine_mode mode ATTRIBUTE_UNUSED) ...@@ -21952,6 +21956,22 @@ arm_units_per_simd_word (enum machine_mode mode ATTRIBUTE_UNUSED)
? (TARGET_NEON_VECTORIZE_QUAD ? 16 : 8) : UNITS_PER_WORD); ? (TARGET_NEON_VECTORIZE_QUAD ? 16 : 8) : UNITS_PER_WORD);
} }
/* Implement TARGET_CLASS_LIKELY_SPILLED_P.
We need to define this for LO_REGS on thumb. Otherwise we can end up
using r0-r4 for function arguments, r7 for the stack frame and don't
have enough left over to do doubleword arithmetic. */
static bool
arm_class_likely_spilled_p (reg_class_t rclass)
{
if ((TARGET_THUMB && rclass == LO_REGS)
|| rclass == CC_REG)
return true;
return false;
}
/* Implements target hook small_register_classes_for_mode_p. */ /* Implements target hook small_register_classes_for_mode_p. */
bool bool
arm_small_register_classes_for_mode_p (enum machine_mode mode ATTRIBUTE_UNUSED) arm_small_register_classes_for_mode_p (enum machine_mode mode ATTRIBUTE_UNUSED)
......
...@@ -1284,13 +1284,6 @@ enum reg_class ...@@ -1284,13 +1284,6 @@ enum reg_class
|| reg_classes_intersect_p (VFP_REGS, (CLASS)) \ || reg_classes_intersect_p (VFP_REGS, (CLASS)) \
: 0) : 0)
/* We need to define this for LO_REGS on thumb. Otherwise we can end up
using r0-r4 for function arguments, r7 for the stack frame and don't
have enough left over to do doubleword arithmetic. */
#define CLASS_LIKELY_SPILLED_P(CLASS) \
((TARGET_THUMB && (CLASS) == LO_REGS) \
|| (CLASS) == CC_REG)
/* The class value for index registers, and the one for base regs. */ /* The class value for index registers, and the one for base regs. */
#define INDEX_REG_CLASS (TARGET_THUMB1 ? LO_REGS : GENERAL_REGS) #define INDEX_REG_CLASS (TARGET_THUMB1 ? LO_REGS : GENERAL_REGS)
#define BASE_REG_CLASS (TARGET_THUMB1 ? LO_REGS : CORE_REGS) #define BASE_REG_CLASS (TARGET_THUMB1 ? LO_REGS : CORE_REGS)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment