[Patch 3/7 arc] Deprecate *_BY_PIECES_P, move to hookized version
authorJames Greenhalgh <james.greenhalgh@arm.com>
Sat, 1 Nov 2014 08:44:39 +0000 (08:44 +0000)
committerJames Greenhalgh <jgreenhalgh@gcc.gnu.org>
Sat, 1 Nov 2014 08:44:39 +0000 (08:44 +0000)
gcc/

* 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.

From-SVN: r216999

gcc/ChangeLog
gcc/config/arc/arc.c
gcc/config/arc/arc.h

index 2412bab9c5edecc6a9cd8be31d79100f2c969cb2..daebba906bda314d88df2243071f98d3ae3438a0 100644 (file)
@@ -1,3 +1,10 @@
+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.
index d04be019480f748be5c3770ce1f3eba6cd75f321..f3769dd59ed7e50044ff268886ee1a455c3d16ec 100644 (file)
@@ -415,6 +415,11 @@ static void output_short_suffix (FILE *file);
 
 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
@@ -530,6 +535,10 @@ static void arc_finalize_pic (void);
 #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
@@ -9383,6 +9392,21 @@ arc_legitimize_reload_address (rtx *p, machine_mode mode, int opnum,
   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"
index d40f5c3648aba6177232b7beaad3169e61c28194..2d277872099b055a25a1df33725405c2c241107d 100644 (file)
@@ -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)