OSDN Git Service

* config/xtensa/xtensa.h (MEMBER_TYPE_FORCES_BLK): Define.
authorbwilson <bwilson@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 10 Mar 2005 16:44:48 +0000 (16:44 +0000)
committerbwilson <bwilson@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 10 Mar 2005 16:44:48 +0000 (16:44 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@96245 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/xtensa/xtensa.h

index 2e5b1f1..22849e2 100644 (file)
@@ -1,3 +1,7 @@
+2005-03-10  Bob Wilson  <bob.wilson@acm.org>
+
+       * config/xtensa/xtensa.h (MEMBER_TYPE_FORCES_BLK): Define.
+
 2005-03-10  Nathan Sidwell  <nathan@codesourcery.com>
 
        * bitmap.c (bitmap_copy): Remove manual loop unrolling.
index 2f4b3d3..a2b4b48 100644 (file)
@@ -209,6 +209,15 @@ extern unsigned xtensa_current_frame_size;
    bitfields and the structures that contain them.  */
 #define PCC_BITFIELD_TYPE_MATTERS 1
 
+/* Disable the use of word-sized or smaller complex modes for structures,
+   and for function arguments in particular, where they cause problems with
+   register a7.  The xtensa_copy_incoming_a7 function assumes that there is
+   a single reference to an argument in a7, but with small complex modes the
+   real and imaginary components may be extracted separately, leading to two
+   uses of the register, only one of which would be replaced.  */
+#define MEMBER_TYPE_FORCES_BLK(FIELD, MODE) \
+  ((MODE) == CQImode || (MODE) == CHImode)
+
 /* Align string constants and constructors to at least a word boundary.
    The typical use of this macro is to increase alignment for string
    constants to be word aligned so that 'strcpy' calls that copy