summaryrefslogtreecommitdiff
path: root/gcc/config/s390
diff options
context:
space:
mode:
authorjgreenhalgh <jgreenhalgh@138bc75d-0d04-0410-961f-82ee72b054a4>2014-11-01 08:38:36 +0000
committerjgreenhalgh <jgreenhalgh@138bc75d-0d04-0410-961f-82ee72b054a4>2014-11-01 08:38:36 +0000
commita83f0e2cba65438b1e5d95252a1b70a805dfc2c5 (patch)
tree12b71b230d42270a7f4266a9df476c391d72380d /gcc/config/s390
parent0ec3791cc4bd4c2a78dc7a4fb4de992797ec095e (diff)
downloadgcc-a83f0e2cba65438b1e5d95252a1b70a805dfc2c5.tar.gz
[Patch 2/7 s390] Deprecate *_BY_PIECES_P, move to hookized version
gcc/ * config/s390/s390.c (s390_use_by_pieces_infrastructure_p): New. (TARGET_USE_BY_PIECES_INFRASTRUCTURE_P): Likewise. * config/s390/s390.h (MOVE_BY_PIECES_P): Remove. (CLEAR_BY_PIECES): Likewise. (SET_BY_PIECES): Likewise. (STORE_BY_PIECES): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216998 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/s390')
-rw-r--r--gcc/config/s390/s390.c16
-rw-r--r--gcc/config/s390/s390.h18
2 files changed, 16 insertions, 18 deletions
diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c
index 874eb7c32dc..51ae90c97cc 100644
--- a/gcc/config/s390/s390.c
+++ b/gcc/config/s390/s390.c
@@ -12032,6 +12032,18 @@ s390_option_override (void)
register_pass (&insert_pass_s390_early_mach);
}
+/* Implement TARGET_USE_BY_PIECES_INFRASTRUCTURE_P. */
+
+static bool
+s390_use_by_pieces_infrastructure_p (unsigned int size,
+ unsigned int align ATTRIBUTE_UNUSED,
+ enum by_pieces_operation op ATTRIBUTE_UNUSED,
+ bool speed_p ATTRIBUTE_UNUSED)
+{
+ return (size == 1 || size == 2
+ || size == 4 || (TARGET_ZARCH && size == 8));
+}
+
/* Initialize GCC target structure. */
#undef TARGET_ASM_ALIGNED_HI_OP
@@ -12217,6 +12229,10 @@ s390_option_override (void)
#undef TARGET_SET_UP_BY_PROLOGUE
#define TARGET_SET_UP_BY_PROLOGUE s300_set_up_by_prologue
+#undef TARGET_USE_BY_PIECES_INFRASTRUCTURE_P
+#define TARGET_USE_BY_PIECES_INFRASTRUCTURE_P \
+ s390_use_by_pieces_infrastructure_p
+
struct gcc_target targetm = TARGET_INITIALIZER;
#include "gt-s390.h"
diff --git a/gcc/config/s390/s390.h b/gcc/config/s390/s390.h
index 0a935eec781..d933b8d9126 100644
--- a/gcc/config/s390/s390.h
+++ b/gcc/config/s390/s390.h
@@ -744,24 +744,6 @@ do { \
#define MOVE_MAX_PIECES (TARGET_ZARCH ? 8 : 4)
#define MAX_MOVE_MAX 16
-/* Determine whether to use move_by_pieces or block move insn. */
-#define MOVE_BY_PIECES_P(SIZE, ALIGN) \
- ( (SIZE) == 1 || (SIZE) == 2 || (SIZE) == 4 \
- || (TARGET_ZARCH && (SIZE) == 8) )
-
-/* Determine whether to use clear_by_pieces or block clear insn. */
-#define CLEAR_BY_PIECES_P(SIZE, ALIGN) \
- ( (SIZE) == 1 || (SIZE) == 2 || (SIZE) == 4 \
- || (TARGET_ZARCH && (SIZE) == 8) )
-
-/* This macro is used to determine whether store_by_pieces should be
- called to "memcpy" storage when the source is a constant string. */
-#define STORE_BY_PIECES_P(SIZE, ALIGN) MOVE_BY_PIECES_P (SIZE, ALIGN)
-
-/* Likewise to decide whether to "memset" storage with byte values
- other than zero. */
-#define SET_BY_PIECES_P(SIZE, ALIGN) STORE_BY_PIECES_P (SIZE, ALIGN)
-
/* Don't perform CSE on function addresses. */
#define NO_FUNCTION_CSE