Hi, This patch moves arc to TARGET_MOVE_BY_PIECES_PROFITABLE_P.
While I am there, arc defines a macro CAN_MOVE_BY_PIECES, which is unused, so clean that up too. I tried building a compiler but no amount of fiddling with target strings got me to a sensible result, so this patch is completely untested. If one of the arc maintainers could give it a spin that would be helpful. OK? Thanks, James --- 2014-10-28 James Greenhalgh <james.greenha...@arm.com> * config/arc/arc.c (TARGET_MOVE_BY_PIECES_PROFITABLE_P): New. (arc_move_by_pieces_profitable_p): Likewise. * confir/arc/arc.h (MOVE_BY_PIECES_P): Delete. (CAN_MOVE_BY_PIECES): Likewise.
diff --git a/gcc/config/arc/arc.c b/gcc/config/arc/arc.c index 8bfebfd..fcebe59 100644 --- a/gcc/config/arc/arc.c +++ b/gcc/config/arc/arc.c @@ -415,6 +415,10 @@ static void output_short_suffix (FILE *file); static bool arc_frame_pointer_required (void); +static bool arc_move_by_pieces_profitable_p (unsigned int, + unsigned int, + bool); + /* Implements target hook vector_mode_supported_p. */ static bool @@ -530,6 +534,9 @@ static void arc_finalize_pic (void); #undef TARGET_DELEGITIMIZE_ADDRESS #define TARGET_DELEGITIMIZE_ADDRESS arc_delegitimize_address +#undef TARGET_MOVE_BY_PIECES_PROFITABLE_P +#define TARGET_MOVE_BY_PIECES_PROFITABLE_P arc_move_by_pieces_profitable_p + /* Usually, we will be able to scale anchor offsets. When this fails, we want LEGITIMIZE_ADDRESS to kick in. */ #undef TARGET_MIN_ANCHOR_OFFSET @@ -9383,6 +9390,16 @@ arc_legitimize_reload_address (rtx *p, enum machine_mode mode, int opnum, return false; } +/* Implement TARGET_MOVE_BY_PIECES_PROFITABLE_P. */ + +static bool +arc_move_by_pieces_profitable_p (unsigned int size ATTRIBUTE_UNUSED, + unsigned int align ATTRIBUTE_UNUSED, + bool speed_p ATTRIBUTE_UNUSED) +{ + return false; +} + struct gcc_target targetm = TARGET_INITIALIZER; #include "gt-arc.h" diff --git a/gcc/config/arc/arc.h b/gcc/config/arc/arc.h index 2b0a04c..1a2c6b1 100644 --- a/gcc/config/arc/arc.h +++ b/gcc/config/arc/arc.h @@ -1553,12 +1553,6 @@ extern int arc_return_address_regs[4]; in one reasonably fast instruction. */ #define MOVE_MAX 4 -/* Let the movmem expander handle small block moves. */ -#define MOVE_BY_PIECES_P(LEN, ALIGN) 0 -#define CAN_MOVE_BY_PIECES(SIZE, ALIGN) \ - (move_by_pieces_ninsns (SIZE, ALIGN, MOVE_MAX_PIECES + 1) \ - < (unsigned int) MOVE_RATIO (!optimize_size)) - /* Undo the effects of the movmem pattern presence on STORE_BY_PIECES_P . */ #define MOVE_RATIO(SPEED) ((SPEED) ? 15 : 3)