diff options
author | dje <dje@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-01-04 20:29:31 +0000 |
---|---|---|
committer | dje <dje@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-01-04 20:29:31 +0000 |
commit | a36bcaf4545b51ca9785d41f6a95296c0a839316 (patch) | |
tree | 52f4153904881ea4c0b6f6454937789afd78f187 | |
parent | f94d02c66573cb2a8e366f2a8e3f02d91d25b9f8 (diff) | |
download | ppe42-gcc-a36bcaf4545b51ca9785d41f6a95296c0a839316.tar.gz ppe42-gcc-a36bcaf4545b51ca9785d41f6a95296c0a839316.zip |
* rs6000/sysv4.h (ASM_OUTPUT_DEF): Undefine.
(HANDLE_PRAGMA_PACK): Undefine.
(SLOW_UNALIGNED_ACCESS): Define.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@31213 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/rs6000/sysv4.h | 16 | ||||
-rw-r--r-- | gcc/tm.texi | 4 |
3 files changed, 22 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 606af6e9ed5..159036699fb 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 b3d52e0e918..65b6cd5f104 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 95a252b8b14..6a3ff5185d5 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 |