summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>2012-10-30 19:07:28 +0000
committerrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>2012-10-30 19:07:28 +0000
commit341cc05220a409f909beff4e762d4c844fba7fc8 (patch)
tree1357150fb34ab027be24b4f97411723036bf4979
parent11f20fbaf7e630e6fc7b5ec5fcc48c63b568348b (diff)
downloadgcc-341cc05220a409f909beff4e762d4c844fba7fc8.tar.gz
gcc/
* defaults.h (SLOW_UNALIGNED_ACCESS): Provide default definition. * expmed.c (SLOW_UNALIGNED_ACCESS): Remove default definition. * expr.c (SLOW_UNALIGNED_ACCESS): Likewise. * lra-constraints.c (SLOW_UNALIGNED_ACCESS): Likewise. (simplify_operand_subreg): Don't check STRICT_ALIGNMENT here. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@192992 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/defaults.h4
-rw-r--r--gcc/expmed.c5
-rw-r--r--gcc/expr.c6
-rw-r--r--gcc/lra-constraints.c7
5 files changed, 13 insertions, 17 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e7e3ec31443..67348c209b4 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2012-10-30 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * defaults.h (SLOW_UNALIGNED_ACCESS): Provide default definition.
+ * expmed.c (SLOW_UNALIGNED_ACCESS): Remove default definition.
+ * expr.c (SLOW_UNALIGNED_ACCESS): Likewise.
+ * lra-constraints.c (SLOW_UNALIGNED_ACCESS): Likewise.
+ (simplify_operand_subreg): Don't check STRICT_ALIGNMENT here.
+
2012-10-30 Jan Hubicka <jh@suse.cz>
* ipa-inline-analysis.c (eliminated_by_inlining_prob): Cleanup.
diff --git a/gcc/defaults.h b/gcc/defaults.h
index 6eead33ba6c..76909ab2d7e 100644
--- a/gcc/defaults.h
+++ b/gcc/defaults.h
@@ -1218,6 +1218,10 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#define ATTRIBUTE_ALIGNED_VALUE BIGGEST_ALIGNMENT
#endif
+#ifndef SLOW_UNALIGNED_ACCESS
+#define SLOW_UNALIGNED_ACCESS(MODE, ALIGN) STRICT_ALIGNMENT
+#endif
+
/* For most ports anything that evaluates to a constant symbolic
or integer value is acceptable as a constant address. */
#ifndef CONSTANT_ADDRESS_P
diff --git a/gcc/expmed.c b/gcc/expmed.c
index 6d9b13354cb..eb4b0d09152 100644
--- a/gcc/expmed.c
+++ b/gcc/expmed.c
@@ -69,11 +69,6 @@ static rtx expand_sdiv_pow2 (enum machine_mode, rtx, HOST_WIDE_INT);
/* Test whether a value is zero of a power of two. */
#define EXACT_POWER_OF_2_OR_ZERO_P(x) (((x) & ((x) - 1)) == 0)
-#ifndef SLOW_UNALIGNED_ACCESS
-#define SLOW_UNALIGNED_ACCESS(MODE, ALIGN) STRICT_ALIGNMENT
-#endif
-
-
/* Reduce conditional compilation elsewhere. */
#ifndef HAVE_insv
#define HAVE_insv 0
diff --git a/gcc/expr.c b/gcc/expr.c
index 0de2f97b4a9..699dae93d3d 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -189,12 +189,6 @@ static void write_complex_part (rtx, rtx, bool);
(move_by_pieces_ninsns (SIZE, ALIGN, STORE_MAX_PIECES + 1) \
< (unsigned int) MOVE_RATIO (optimize_insn_for_speed_p ()))
#endif
-
-/* SLOW_UNALIGNED_ACCESS is nonzero if unaligned accesses are very slow. */
-
-#ifndef SLOW_UNALIGNED_ACCESS
-#define SLOW_UNALIGNED_ACCESS(MODE, ALIGN) STRICT_ALIGNMENT
-#endif
/* This is run to set up which modes can be used
directly in memory and to initialize the block move optab. It is run
diff --git a/gcc/lra-constraints.c b/gcc/lra-constraints.c
index 3eabab88019..1c2058f2ad7 100644
--- a/gcc/lra-constraints.c
+++ b/gcc/lra-constraints.c
@@ -1107,10 +1107,6 @@ process_addr_reg (rtx *loc, rtx *before, rtx *after, enum reg_class cl)
return true;
}
-#ifndef SLOW_UNALIGNED_ACCESS
-#define SLOW_UNALIGNED_ACCESS(mode, align) 0
-#endif
-
/* Make reloads for subreg in operand NOP with internal subreg mode
REG_MODE, add new reloads for further processing. Return true if
any reload was generated. */
@@ -1134,8 +1130,7 @@ simplify_operand_subreg (int nop, enum machine_mode reg_mode)
address might violate the necessary alignment or the access might
be slow. So take this into consideration. */
if ((MEM_P (reg)
- && ((! STRICT_ALIGNMENT
- && ! SLOW_UNALIGNED_ACCESS (mode, MEM_ALIGN (reg)))
+ && (! SLOW_UNALIGNED_ACCESS (mode, MEM_ALIGN (reg))
|| MEM_ALIGN (reg) >= GET_MODE_ALIGNMENT (mode)))
|| (REG_P (reg) && REGNO (reg) < FIRST_PSEUDO_REGISTER))
{