+2014-11-01 James Greenhalgh <james.greenhalgh@arm.com>
+
+ * config/arc/arc.c (TARGET_USE_BY_PIECES_INFRASTRUCTURE_P): New.
+ (arc_use_by_pieces_infrastructure_p): Likewise.
+ * confir/arc/arc.h (MOVE_BY_PIECES_P): Delete.
+ (CAN_MOVE_BY_PIECES): Likewise.
+
2014-11-01 James Greenhalgh <james.greenhalgh@arm.com>
* config/s390/s390.c (s390_use_by_pieces_infrastructure_p): New.
static bool arc_frame_pointer_required (void);
+static bool arc_use_by_pieces_infrastructure_p (unsigned int,
+ unsigned int,
+ enum by_pieces_operation op,
+ bool);
+
/* Implements target hook vector_mode_supported_p. */
static bool
#undef TARGET_DELEGITIMIZE_ADDRESS
#define TARGET_DELEGITIMIZE_ADDRESS arc_delegitimize_address
+#undef TARGET_USE_BY_PIECES_INFRASTRUCTURE_P
+#define TARGET_USE_BY_PIECES_INFRASTRUCTURE_P \
+ arc_use_by_pieces_infrastructure_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
return false;
}
+/* Implement TARGET_USE_BY_PIECES_INFRASTRUCTURE_P. */
+
+static bool
+arc_use_by_pieces_infrastructure_p (unsigned int size,
+ unsigned int align,
+ enum by_pieces_operation op,
+ bool speed_p)
+{
+ /* Let the movmem expander handle small block moves. */
+ if (op == MOVE_BY_PIECES)
+ return false;
+
+ return default_use_by_pieces_infrastructure_p (size, align, op, speed_p);
+}
+
struct gcc_target targetm = TARGET_INITIALIZER;
#include "gt-arc.h"
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)