aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/config/aarch64/aarch64-protos.h3
-rw-r--r--gcc/config/aarch64/aarch64.c18
-rw-r--r--gcc/config/aarch64/aarch64.h3
4 files changed, 9 insertions, 24 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index eb34a28..dd7328b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,12 @@
+2016-05-27 Wilco Dijkstra <wdijkstr@arm.com>
+
+ PR67609
+ * config/aarch64/aarch64.h (CANNOT_CHANGE_MODE_CLASS): Remove.
+ * config/aarch64/aarch64.c
+ (aarch64_cannot_change_mode_class): Remove function.
+ * config/aarch64/aarch64-protos.h
+ (aarch64_cannot_change_mode_class): Remove.
+
2016-05-27 Jan Hubicka <hubicka@ucw.cz>
* cfgloop.c (record_niter_bound): Record likely upper bounds.
diff --git a/gcc/config/aarch64/aarch64-protos.h b/gcc/config/aarch64/aarch64-protos.h
index 6a8a850..1b20cf9 100644
--- a/gcc/config/aarch64/aarch64-protos.h
+++ b/gcc/config/aarch64/aarch64-protos.h
@@ -282,9 +282,6 @@ int aarch64_get_condition_code (rtx);
bool aarch64_bitmask_imm (HOST_WIDE_INT val, machine_mode);
int aarch64_branch_cost (bool, bool);
enum aarch64_symbol_type aarch64_classify_symbolic_expression (rtx);
-bool aarch64_cannot_change_mode_class (machine_mode,
- machine_mode,
- enum reg_class);
bool aarch64_const_vec_all_same_int_p (rtx, HOST_WIDE_INT);
bool aarch64_constant_address_p (rtx);
bool aarch64_expand_movmem (rtx *);
diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
index 51d2d50..3f9034e 100644
--- a/gcc/config/aarch64/aarch64.c
+++ b/gcc/config/aarch64/aarch64.c
@@ -12615,24 +12615,6 @@ aarch64_vectorize_vec_perm_const_ok (machine_mode vmode,
return ret;
}
-/* Implement target hook CANNOT_CHANGE_MODE_CLASS. */
-bool
-aarch64_cannot_change_mode_class (machine_mode from,
- machine_mode to,
- enum reg_class rclass)
-{
- /* We cannot allow word_mode subregs of full vector modes.
- Otherwise the middle-end will assume it's ok to store to
- (subreg:DI (reg:TI 100) 0) in order to modify only the low 64 bits
- of the 128-bit register. However, after reload the subreg will
- be dropped leaving a plain DImode store. See PR67609 for a more
- detailed dicussion. In all other cases, we want to be permissive
- and return false. */
- return (reg_classes_intersect_p (FP_REGS, rclass)
- && GET_MODE_SIZE (to) == UNITS_PER_WORD
- && GET_MODE_SIZE (from) > UNITS_PER_WORD);
-}
-
rtx
aarch64_reverse_mask (enum machine_mode mode)
{
diff --git a/gcc/config/aarch64/aarch64.h b/gcc/config/aarch64/aarch64.h
index fa941b6..b15c23f0 100644
--- a/gcc/config/aarch64/aarch64.h
+++ b/gcc/config/aarch64/aarch64.h
@@ -832,9 +832,6 @@ typedef struct
extern void __aarch64_sync_cache_range (void *, void *); \
__aarch64_sync_cache_range (beg, end)
-#define CANNOT_CHANGE_MODE_CLASS(FROM, TO, CLASS) \
- aarch64_cannot_change_mode_class (FROM, TO, CLASS)
-
#define SHIFT_COUNT_TRUNCATED (!TARGET_SIMD)
/* Choose appropriate mode for caller saves, so we do the minimum