aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Edelsohn <edelsohn@gnu.org>2000-01-04 20:29:31 +0000
committerDavid Edelsohn <dje@gcc.gnu.org>2000-01-04 15:29:31 -0500
commit6be57663c901d480ffa904a115190a418bae26db (patch)
tree52f4153904881ea4c0b6f6454937789afd78f187
parent5fad8ebf24ae2fefce8e1a28061b50ccceda57bb (diff)
downloadgcc-6be57663c901d480ffa904a115190a418bae26db.zip
gcc-6be57663c901d480ffa904a115190a418bae26db.tar.gz
gcc-6be57663c901d480ffa904a115190a418bae26db.tar.bz2
sysv4.h (ASM_OUTPUT_DEF): Undefine.
* rs6000/sysv4.h (ASM_OUTPUT_DEF): Undefine. (HANDLE_PRAGMA_PACK): Undefine. (SLOW_UNALIGNED_ACCESS): Define. From-SVN: r31213
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/rs6000/sysv4.h16
-rw-r--r--gcc/tm.texi4
3 files changed, 22 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 606af6e..1590366 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,11 @@
2000-01-04 David Edelsohn <edelsohn@gnu.org>
+ * rs6000/sysv4.h (ASM_OUTPUT_DEF): Undefine.
+ (HANDLE_PRAGMA_PACK): Undefine.
+ (SLOW_UNALIGNED_ACCESS): Define.
+
+2000-01-04 David Edelsohn <edelsohn@gnu.org>
+
* expmed.c (SLOW_UNALIGNED_ACCESS): Add mode and align parameters
to default definition.
(store_bit_field): Call SLOW_UNALIGNED_ACCESS with mode and alignment.
diff --git a/gcc/config/rs6000/sysv4.h b/gcc/config/rs6000/sysv4.h
index b3d52e0..65b6cd5 100644
--- a/gcc/config/rs6000/sysv4.h
+++ b/gcc/config/rs6000/sysv4.h
@@ -350,13 +350,15 @@ do { \
/* Undefine some things which are defined by the generic svr4.h. */
+#undef ASM_DECLARE_FUNCTION_NAME
#undef ASM_FILE_END
+#undef ASM_OUTPUT_CONSTRUCTOR
+#undef ASM_OUTPUT_DESTRUCTOR
+#undef ASM_OUTPUT_DEF
#undef ASM_OUTPUT_EXTERNAL_LIBCALL
+#undef HANDLE_PRAGMA_PACK
#undef READONLY_DATA_SECTION
#undef SELECT_SECTION
-#undef ASM_DECLARE_FUNCTION_NAME
-#undef ASM_OUTPUT_CONSTRUCTOR
-#undef ASM_OUTPUT_DESTRUCTOR
/* Use the regular svr4 definitions. */
@@ -397,6 +399,14 @@ do { \
#undef STRICT_ALIGNMENT
#define STRICT_ALIGNMENT (TARGET_STRICT_ALIGN)
+/* Define this macro to be the value 1 if unaligned accesses have a cost
+ many times greater than aligned accesses, for example if they are
+ emulated in a trap handler. */
+#define SLOW_UNALIGNED_ACCESS(MODE, ALIGN) \
+ ((STRICT_ALIGNMENT \
+ || (((MODE) == SFmode || (MODE) == DFmode || (MODE) == DImode) \
+ && (ALIGN) < 4)) ? 1 : 0)
+
/* Alignment in bits of the stack boundary. Note, in order to allow building
one set of libraries with -mno-eabi instead of eabi libraries and non-eabi
versions, just use 64 as the stack boundary. */
diff --git a/gcc/tm.texi b/gcc/tm.texi
index 95a252b..6a3ff51 100644
--- a/gcc/tm.texi
+++ b/gcc/tm.texi
@@ -4731,7 +4731,9 @@ moves. This can cause significantly more instructions to be produced.
Therefore, do not set this macro non-zero if unaligned accesses only add a
cycle or two to the time for a memory access.
-If the value of this macro is always zero, it need not be defined.
+If the value of this macro is always zero, it need not be defined. If
+this macro is defined, it should produce a non-zero value when
+@code{STRICT_ALIGNMENT} is non-zero.
@findex DONT_REDUCE_ADDR
@item DONT_REDUCE_ADDR