@@ -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"
@@ -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)