OSDN Git Service

* config/arm/arm.h (BIGGEST_FIELD_ALIGNMENT): Define instead of
authornickc <nickc@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 25 Jun 2003 18:49:51 +0000 (18:49 +0000)
committernickc <nickc@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 25 Jun 2003 18:49:51 +0000 (18:49 +0000)
ADJUST_FIELD_ALIGN if IN_TARGET_LIBS.
Replace occurances of '???' with 'XXX' incase they are mistaken for trigraphs.
(THUMB_PRINT_OPERAND_ADDRESS): abort if a compound address does not have a
register for the first operand.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@68487 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/arm/arm.h

index aaee496..96ad8e7 100644 (file)
@@ -1,3 +1,12 @@
+2003-06-26  Nick Clifton  <nickc@redhat.com>
+
+       * config/arm/arm.h (BIGGEST_FIELD_ALIGNMENT): Define instead
+       of ADJUST_FIELD_ALIGN if IN_TARGET_LIBS.
+        Replace occurances of '???' with 'XXX' incase they are
+       mistaken for trigraphs.
+       (THUMB_PRINT_OPERAND_ADDRESS): abort if a compound address
+       does not have a register for the first operand.
+        
 2003-06-25     Dhananjay Deshpande <dhananjayd@kpitcummins.com>
 
        * config/sh/sh.c (sh_register_move_cost):
index 74201ff..14223ce 100644 (file)
@@ -759,6 +759,12 @@ extern int arm_is_6_or_7;
  (TARGET_REALLY_IWMMXT                         \
    && ((TREE_CODE (TYPE) == VECTOR_TYPE) || (TYPE_MODE (TYPE) == DImode) || (TYPE_MODE (TYPE) == DFmode)))
 
+/* XXX Blah -- this macro is used directly by libobjc.  Since it
+   supports no vector modes, cut out the complexity and fall back
+   on BIGGEST_FIELD_ALIGNMENT.  */
+#ifdef IN_TARGET_LIBS
+#define BIGGEST_FIELD_ALIGNMENT BIGGEST_ALIGNMENT
+#else
 /* An expression for the alignment of a structure field FIELD if the
    alignment computed in the usual way is COMPUTED.  GCC uses this
    value instead of the value in `BIGGEST_ALIGNMENT' or
@@ -767,6 +773,7 @@ extern int arm_is_6_or_7;
   (TYPE_NEEDS_IWMMXT_ALIGNMENT (TREE_TYPE (FIELD))     \
    ? IWMMXT_ALIGNMENT                                  \
    : (COMPUTED))
+#endif
 
 /* If defined, a C expression to compute the alignment for a static variable.
    TYPE is the data type, and ALIGN is the alignment that the object
@@ -1459,7 +1466,7 @@ enum reg_class
     }                                                                     \
   while (0)
 
-/* ??? If an HImode FP+large_offset address is converted to an HImode
+/* XXX If an HImode FP+large_offset address is converted to an HImode
    SP+large_offset address, then reload won't know how to fix it.  It sees
    only that SP isn't valid for HImode, and so reloads the SP into an index
    register, but the resulting address is still invalid because the offset
@@ -1947,7 +1954,7 @@ typedef struct
           ldr          pc, [pc]
           .word        static chain value
           .word        function's address
-   ??? FIXME: When the trampoline returns, r8 will be clobbered.  */
+   XXX FIXME: When the trampoline returns, r8 will be clobbered.  */
 #define ARM_TRAMPOLINE_TEMPLATE(FILE)                          \
 {                                                              \
   asm_fprintf (FILE, "\tldr\t%r, [%r, #0]\n",                  \
@@ -2603,6 +2610,8 @@ extern int making_const_table;
     asm_fprintf (STREAM, "%r!", REGNO (XEXP (X, 0)));  \
   else if (GET_CODE (X) == PLUS)                       \
     {                                                  \
+      if (GET_CODE (XEXP (X, 0)) != REG)               \
+        abort ();                                      \
       if (GET_CODE (XEXP (X, 1)) == CONST_INT)         \
        asm_fprintf (STREAM, "[%r, #%wd]",              \
                     REGNO (XEXP (X, 0)),               \