arm.h (MACHMODE): New define.
authorRichard Earnshaw <rearnsha@gcc.gnu.org>
Fri, 21 Aug 2009 16:13:37 +0000 (16:13 +0000)
committerRichard Earnshaw <rearnsha@gcc.gnu.org>
Fri, 21 Aug 2009 16:13:37 +0000 (16:13 +0000)
* arm.h (MACHMODE): New define.  Include insn-modes.h if available.
(CUMULATIVE_ARGS): Use MACHMODE for declaration of aapcs_vfp_mode.
* arm.c (aapcs_vfp_is_call_or_return_candidate): Change base_mode
to pointer to enum machine_mode.  Update all callers as needed.

From-SVN: r150990

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

index 225e96e..0e9d86c 100644 (file)
@@ -1,3 +1,10 @@
+2009-08-21  Richard Earnshaw  <rearnsha@arm.com>
+
+       * arm.h (MACHMODE): New define.  Include insn-modes.h if available.
+       (CUMULATIVE_ARGS): Use MACHMODE for declaration of aapcs_vfp_mode.
+       * arm.c (aapcs_vfp_is_call_or_return_candidate): Change base_mode
+       to pointer to enum machine_mode.  Update all callers as needed.
+
 2009-08-21 Uros Bizjak <ubizjak@gmail.com>
 
        * config/alpha/alpha.md (exception_receiver): Emit alternative
        * config/mmix/mmix.c (mmix_promote_function_mode): Likewise.
        * config/pa/pa.c (pa_promote_function_mode): Likewise.
 
-2009-08-11  Andrew Haley  <aph@redhat.com>
+2009-08-12  Andrew Haley  <aph@redhat.com>
 
        * config/arm/arm.c (arm_init_libfuncs): Add __sync_synchronize.
 
index e7e6bee..3c7e67e 100644 (file)
@@ -3696,7 +3696,7 @@ aapcs_vfp_sub_candidate (const_tree type, enum machine_mode *modep)
 
 static bool
 aapcs_vfp_is_call_or_return_candidate (enum machine_mode mode, const_tree type,
-                                      int *base_mode,
+                                      enum machine_mode *base_mode,
                                       int *count)
 {
   if (GET_MODE_CLASS (mode) == MODE_FLOAT
@@ -3733,7 +3733,7 @@ aapcs_vfp_is_return_candidate (enum arm_pcs pcs_variant,
                               enum machine_mode mode, const_tree type)
 {
   int count ATTRIBUTE_UNUSED;
-  int ag_mode ATTRIBUTE_UNUSED;
+  enum machine_mode ag_mode ATTRIBUTE_UNUSED;
 
   if (!(pcs_variant == ARM_PCS_AAPCS_VFP
        || (pcs_variant == ARM_PCS_AAPCS_LOCAL
@@ -3818,7 +3818,7 @@ aapcs_vfp_allocate_return_reg (enum arm_pcs pcs_variant ATTRIBUTE_UNUSED,
   if (mode == BLKmode || (mode == TImode && !TARGET_NEON))
     {
       int count;
-      int ag_mode;
+      enum machine_mode ag_mode;
       int i;
       rtx par;
       int shift;
index 59d35dd..c84d58b 100644 (file)
 #ifndef GCC_ARM_H
 #define GCC_ARM_H
 
+/* We can't use enum machine_mode inside a generator file because it
+   hasn't been created yet; we shouldn't be using any code that
+   needs the real definition though, so this ought to be safe.  */
+#ifdef GENERATOR_FILE
+#define MACHMODE int
+#else
+#include "insn-modes.h"
+#define MACHMODE enum machine_mode
+#endif
+
 #include "config/vxworks-dummy.h"
 
 /* The architecture define.  */
@@ -1646,8 +1656,6 @@ enum arm_pcs
   ARM_PCS_UNKNOWN
 };
 
-/* We can't define this inside a generator file because it needs enum
-   machine_mode.  */
 /* A C type for declaring a variable that is used as the first argument of
    `FUNCTION_ARG' and other related values.  */
 typedef struct
@@ -1679,12 +1687,9 @@ typedef struct
   unsigned aapcs_vfp_regs_free;
   unsigned aapcs_vfp_reg_alloc;
   int aapcs_vfp_rcount;
-  /* Can't include insn-modes.h because this header is needed before we
-     generate it.  */
-  int /* enum machine_mode */ aapcs_vfp_rmode;
+  MACHMODE aapcs_vfp_rmode;
 } CUMULATIVE_ARGS;
 
-
 /* Define where to put the arguments to a function.
    Value is zero to push the argument on the stack,
    or a hard register in which to store the argument.