arm.c (arm_promote_prototypes): New function.
authorPaul Brook <paul@codesourcery.com>
Tue, 27 Apr 2004 14:20:10 +0000 (14:20 +0000)
committerPaul Brook <pbrook@gcc.gnu.org>
Tue, 27 Apr 2004 14:20:10 +0000 (14:20 +0000)
* config/arm/arm.c (arm_promote_prototypes): New function.
(TARGET_PROMOTE_PROTOTYPES): Use it.

From-SVN: r81223

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

index 7bbe11a8f6eb780e508d1373fa51f2d6e0d18f3d..ddc303c9b5888fc3a9e96ae7e969284835d57685 100644 (file)
@@ -1,3 +1,8 @@
+2004-04-27  Paul Brook  <paul@codesourcery.com>
+
+       * config/arm/arm.c (arm_promote_prototypes): New function.
+       (TARGET_PROMOTE_PROTOTYPES): Use it.
+
 2004-04-27  Paul Brook  <paul@codesourcery.com>
 
        * config/arm/arm.c (arm_expand_epilogue): Count blocks of 4 regs.
index 80b1f9edb78a7806637732c978d7f36f7fb3e768..cde2b27fb1cc811ad7d289f042574eeb7dd8c975 100644 (file)
@@ -158,6 +158,7 @@ static void aof_file_end (void);
 static rtx arm_struct_value_rtx (tree, int);
 static void arm_setup_incoming_varargs (CUMULATIVE_ARGS *, enum machine_mode,
                                        tree, int *, int);
+static bool arm_promote_prototypes (tree);
 
 \f
 /* Initialize the GCC target structure.  */
@@ -247,7 +248,7 @@ static void arm_setup_incoming_varargs (CUMULATIVE_ARGS *, enum machine_mode,
 #undef TARGET_PROMOTE_FUNCTION_RETURN
 #define TARGET_PROMOTE_FUNCTION_RETURN hook_bool_tree_true
 #undef TARGET_PROMOTE_PROTOTYPES
-#define TARGET_PROMOTE_PROTOTYPES hook_bool_tree_false
+#define TARGET_PROMOTE_PROTOTYPES arm_promote_prototypes
 
 #undef TARGET_STRUCT_VALUE_RTX
 #define TARGET_STRUCT_VALUE_RTX arm_struct_value_rtx
@@ -14439,3 +14440,13 @@ arm_no_early_mul_dep (rtx producer, rtx consumer)
          && !reg_overlap_mentioned_p (value, XEXP (op, 0)));
 }
 
+
+/* We can't rely on the caller doing the proper promotion when
+   using APCS or ATPCS.  */
+
+static bool
+arm_promote_prototypes (tree t ATTRIBUTE_UNUSED)
+{
+    return arm_abi == ARM_ABI_APCS || arm_abi == ARM_ABI_ATPCS;
+}
+