arm-protos.h (arm_declare_function_name): Declare.
authorChristian Bruel <christian.bruel@st.com>
Mon, 11 May 2015 08:23:53 +0000 (10:23 +0200)
committerChristian Bruel <chrbr@gcc.gnu.org>
Mon, 11 May 2015 08:23:53 +0000 (10:23 +0200)
2015-05-11  Christian Bruel  <christian.bruel@st.com>

* config/arm/arm-protos.h (arm_declare_function_name): Declare.
(is_called_in_ARM_mode): Remove.
* config/arm/arm.c (is_called_in_ARM_mode): Declare static bool.
(arm_declare_function_name): Moved from from ARM_DECLARE_FUNCTION_NAME.
* config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Call
 arm_declare_function_name.

From-SVN: r222997

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

index 27270d29b2602cf9350dc8e241fab80ec9eb4141..88d8934bc117dcc758073ee3fb691809bbfc7ce6 100644 (file)
@@ -1,3 +1,12 @@
+2015-05-11  Christian Bruel  <christian.bruel@st.com>
+
+       * config/arm/arm-protos.h (arm_declare_function_name): Declare.
+       (is_called_in_ARM_mode): Remove.
+       * config/arm/arm.c (is_called_in_ARM_mode): Declare static bool.
+       (arm_declare_function_name): Moved from from ARM_DECLARE_FUNCTION_NAME.
+       * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Call
+        arm_declare_function_name.
+
 2015-05-11  Christian Bruel  <christian.bruel@st.com>
 
        * config/arm/arm.c (arm_option_override): Reoganized and split into :
index ecca944a2bd874f0c43b6e63f9b6c1739106699d..bda20ca07cea0b3267ab9457bc3c9f254fa225af 100644 (file)
@@ -30,6 +30,7 @@ extern void arm_load_pic_register (unsigned long);
 extern int arm_volatile_func (void);
 extern void arm_expand_prologue (void);
 extern void arm_expand_epilogue (bool);
+extern void arm_declare_function_name (FILE *, const char *, tree);
 extern void thumb2_expand_return (bool);
 extern const char *arm_strip_name_encoding (const char *);
 extern void arm_asm_output_labelref (FILE *, const char *);
@@ -181,9 +182,6 @@ extern const char *thumb1_unexpanded_epilogue (void);
 extern void thumb1_expand_prologue (void);
 extern void thumb1_expand_epilogue (void);
 extern const char *thumb1_output_interwork (void);
-#ifdef TREE_CODE
-extern int is_called_in_ARM_mode (tree);
-#endif
 extern int thumb_shiftable_const (unsigned HOST_WIDE_INT);
 #ifdef RTX_CODE
 extern enum arm_cond_code maybe_get_arm_condition_code (rtx);
index 57f91c51490adf314fe89ca1c8e2e36de2fcad8b..cf4f2485095877c8950e25bc750f60cb7250ca2b 100644 (file)
@@ -121,6 +121,7 @@ static int arm_gen_constant (enum rtx_code, machine_mode, rtx,
 static unsigned bit_count (unsigned long);
 static int arm_address_register_rtx_p (rtx, int);
 static int arm_legitimate_index_p (machine_mode, rtx, RTX_CODE, int);
+static bool is_called_in_ARM_mode (tree);
 static int thumb2_legitimate_index_p (machine_mode, rtx, int);
 static int thumb1_base_register_rtx_p (rtx, machine_mode, int);
 static rtx arm_legitimize_address (rtx, rtx, machine_mode);
@@ -23851,19 +23852,19 @@ thumb_far_jump_used_p (void)
 }
 
 /* Return nonzero if FUNC must be entered in ARM mode.  */
-int
+static bool
 is_called_in_ARM_mode (tree func)
 {
   gcc_assert (TREE_CODE (func) == FUNCTION_DECL);
 
   /* Ignore the problem about functions whose address is taken.  */
   if (TARGET_CALLEE_INTERWORKING && TREE_PUBLIC (func))
-    return TRUE;
+    return true;
 
 #ifdef ARM_PE
   return lookup_attribute ("interfacearm", DECL_ATTRIBUTES (func)) != NULL_TREE;
 #else
-  return FALSE;
+  return false;
 #endif
 }
 
@@ -29233,6 +29234,25 @@ arm_is_constant_pool_ref (rtx x)
          && CONSTANT_POOL_ADDRESS_P (XEXP (x, 0)));
 }
 
+void
+arm_declare_function_name (FILE *stream, const char *name, tree decl)
+{
+  if (TARGET_THUMB)
+    {
+      if (is_called_in_ARM_mode (decl)
+         || (TARGET_THUMB1 && !TARGET_THUMB1_ONLY
+             && cfun->is_thunk))
+       fprintf (stream, "\t.code 32\n");
+      else if (TARGET_THUMB1)
+       fprintf (stream, "\t.code\t16\n\t.thumb_func\n");
+      else
+       fprintf (stream, "\t.thumb\n\t.thumb_func\n");
+    }
+
+  if (TARGET_POKE_FUNCTION_NAME)
+    arm_poke_function_name (stream, (const char *) name);
+}
+
 /* If MEM is in the form of [base+offset], extract the two parts
    of address and set to BASE and OFFSET, otherwise return false
    after clearing BASE and OFFSET.  */
index aec5fb8e19ae13b36e93ba2b061160423e70eea6..ba37c42296d16cdf7fb0a0ea9298fbe36b93319d 100644 (file)
@@ -2183,23 +2183,7 @@ extern int making_const_table;
    ? 1 : 0)
 
 #define ARM_DECLARE_FUNCTION_NAME(STREAM, NAME, DECL)  \
-  do                                                   \
-    {                                                  \
-      if (TARGET_THUMB)                                \
-        {                                              \
-          if (is_called_in_ARM_mode (DECL)             \
-             || (TARGET_THUMB1 && !TARGET_THUMB1_ONLY  \
-                 && cfun->is_thunk))   \
-            fprintf (STREAM, "\t.code 32\n") ;         \
-          else if (TARGET_THUMB1)                      \
-           fprintf (STREAM, "\t.code\t16\n\t.thumb_func\n") ;  \
-          else                                         \
-           fprintf (STREAM, "\t.thumb\n\t.thumb_func\n") ;     \
-        }                                              \
-      if (TARGET_POKE_FUNCTION_NAME)                   \
-        arm_poke_function_name (STREAM, (const char *) NAME);  \
-    }                                                  \
-  while (0)
+  arm_declare_function_name ((STREAM), (NAME), (DECL));
 
 /* For aliases of functions we use .thumb_set instead.  */
 #define ASM_OUTPUT_DEF_FROM_DECLS(FILE, DECL1, DECL2)          \