Commit a10ce561 by James Greenhalgh Committed by James Greenhalgh

[Patch 5/7 mips] Deprecate *_BY_PIECES_P, move to hookized version

gcc/

	* config/mips/mips.h (MOVE_BY_PIECES_P): Remove.
	(STORE_BY_PIECES_P): Likewise.
	* config/mips/mips.c (TARGET_USE_BY_PIECES_INFRASTRUCTURE_P): New.
	(mips_move_by_pieces_p): Rename to...
	(mips_use_by_pieces_infrastructure_p): ...this, use new hook
	parameters, use the default hook implementation as a
	fall-back.

From-SVN: r217002
parent ae59bd31
2014-11-01 James Greenhalgh <james.greenhalgh@arm.com> 2014-11-01 James Greenhalgh <james.greenhalgh@arm.com>
* config/mips/mips.h (MOVE_BY_PIECES_P): Remove.
(STORE_BY_PIECES_P): Likewise.
* config/mips/mips.c (TARGET_USE_BY_PIECES_INFRASTRUCTURE_P): New.
(mips_move_by_pieces_p): Rename to...
(mips_use_by_pieces_infrastructure_p): ...this, use new hook
parameters, use the default hook implementation as a
fall-back.
2014-11-01 James Greenhalgh <james.greenhalgh@arm.com>
* config/sh/sh.c (TARGET_USE_BY_PIECES_INFRASTRUCTURE_P): New. * config/sh/sh.c (TARGET_USE_BY_PIECES_INFRASTRUCTURE_P): New.
(sh_use_by_pieces_infrastructure_p): Likewise. (sh_use_by_pieces_infrastructure_p): Likewise.
* config/sh/sh.h (MOVE_BY_PIECES_P): Remove. * config/sh/sh.h (MOVE_BY_PIECES_P): Remove.
...@@ -7172,12 +7172,17 @@ mips_function_ok_for_sibcall (tree decl, tree exp ATTRIBUTE_UNUSED) ...@@ -7172,12 +7172,17 @@ mips_function_ok_for_sibcall (tree decl, tree exp ATTRIBUTE_UNUSED)
return true; return true;
} }
/* Implement MOVE_BY_PIECES_P. */ /* Implement TARGET_USE_MOVE_BY_PIECES_INFRASTRUCTURE_P. */
bool bool
mips_move_by_pieces_p (unsigned HOST_WIDE_INT size, unsigned int align) mips_use_by_pieces_infrastructure_p (unsigned int size,
unsigned int align,
enum by_pieces_operation op,
bool speed_p)
{ {
if (HAVE_movmemsi) if (op == STORE_BY_PIECES)
return mips_store_by_pieces_p (size, align);
if (op == MOVE_BY_PIECES && HAVE_movmemsi)
{ {
/* movmemsi is meant to generate code that is at least as good as /* movmemsi is meant to generate code that is at least as good as
move_by_pieces. However, movmemsi effectively uses a by-pieces move_by_pieces. However, movmemsi effectively uses a by-pieces
...@@ -7194,13 +7199,12 @@ mips_move_by_pieces_p (unsigned HOST_WIDE_INT size, unsigned int align) ...@@ -7194,13 +7199,12 @@ mips_move_by_pieces_p (unsigned HOST_WIDE_INT size, unsigned int align)
return size < UNITS_PER_WORD; return size < UNITS_PER_WORD;
return size <= MIPS_MAX_MOVE_BYTES_STRAIGHT; return size <= MIPS_MAX_MOVE_BYTES_STRAIGHT;
} }
/* The default value. If this becomes a target hook, we should
call the default definition instead. */ return default_use_by_pieces_infrastructure_p (size, align, op, speed_p);
return (move_by_pieces_ninsns (size, align, MOVE_MAX_PIECES + 1)
< (unsigned int) MOVE_RATIO (optimize_insn_for_speed_p ()));
} }
/* Implement STORE_BY_PIECES_P. */ /* Implement a handler for STORE_BY_PIECES operations
for TARGET_USE_MOVE_BY_PIECES_INFRASTRUCTURE_P. */
bool bool
mips_store_by_pieces_p (unsigned HOST_WIDE_INT size, unsigned int align) mips_store_by_pieces_p (unsigned HOST_WIDE_INT size, unsigned int align)
...@@ -19119,6 +19123,10 @@ mips_lra_p (void) ...@@ -19119,6 +19123,10 @@ mips_lra_p (void)
#undef TARGET_CALL_FUSAGE_CONTAINS_NON_CALLEE_CLOBBERS #undef TARGET_CALL_FUSAGE_CONTAINS_NON_CALLEE_CLOBBERS
#define TARGET_CALL_FUSAGE_CONTAINS_NON_CALLEE_CLOBBERS true #define TARGET_CALL_FUSAGE_CONTAINS_NON_CALLEE_CLOBBERS true
#undef TARGET_USE_BY_PIECES_INFRASTRUCTURE_P
#define TARGET_USE_BY_PIECES_INFRASTRUCTURE_P \
mips_use_by_pieces_infrastructure_p
#undef TARGET_SPILL_CLASS #undef TARGET_SPILL_CLASS
#define TARGET_SPILL_CLASS mips_spill_class #define TARGET_SPILL_CLASS mips_spill_class
#undef TARGET_LRA_P #undef TARGET_LRA_P
......
...@@ -2872,9 +2872,6 @@ while (0) ...@@ -2872,9 +2872,6 @@ while (0)
? MIPS_MAX_MOVE_BYTES_STRAIGHT / MOVE_MAX \ ? MIPS_MAX_MOVE_BYTES_STRAIGHT / MOVE_MAX \
: MIPS_CALL_RATIO / 2) : MIPS_CALL_RATIO / 2)
#define MOVE_BY_PIECES_P(SIZE, ALIGN) \
mips_move_by_pieces_p (SIZE, ALIGN)
/* For CLEAR_RATIO, when optimizing for size, give a better estimate /* For CLEAR_RATIO, when optimizing for size, give a better estimate
of the length of a memset call, but use the default otherwise. */ of the length of a memset call, but use the default otherwise. */
...@@ -2888,9 +2885,6 @@ while (0) ...@@ -2888,9 +2885,6 @@ while (0)
#define SET_RATIO(speed) \ #define SET_RATIO(speed) \
((speed) ? 15 : MIPS_CALL_RATIO - 2) ((speed) ? 15 : MIPS_CALL_RATIO - 2)
#define STORE_BY_PIECES_P(SIZE, ALIGN) \
mips_store_by_pieces_p (SIZE, ALIGN)
/* Since the bits of the _init and _fini function is spread across /* Since the bits of the _init and _fini function is spread across
many object files, each potentially with its own GP, we must assume many object files, each potentially with its own GP, we must assume
we need to load our GP. We don't preserve $gp or $ra, since each we need to load our GP. We don't preserve $gp or $ra, since each
......
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