OSDN Git Service

* config/arm/arm.c (arm_asm_output_labelref): New function.
authornickc <nickc@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 30 Aug 2002 11:26:53 +0000 (11:26 +0000)
committernickc <nickc@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 30 Aug 2002 11:26:53 +0000 (11:26 +0000)
* config/arm/arm.h (ASM_OUTPUT_LABELREF): Call arm_asm_output_labelref.
* config/arm/arm-protos.h: Add prototype for arm_asm_output_labelref.

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

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

index d8e4bf3..f14a269 100644 (file)
@@ -1,3 +1,9 @@
+2002-08-30  Krister Walfridsson  <cato@df.lth.se>
+
+       * config/arm/arm.c (arm_asm_output_labelref): New function.
+       * config/arm/arm.h (ASM_OUTPUT_LABELREF): Call arm_asm_output_labelref.
+       * config/arm/arm-protos.h: Add prototype for arm_asm_output_labelref.
+
 2002-08-29  Rodney Brown  <rbrown64@csc.com.au>
 
        * doc/install.texi (Specific, alpha*-dec-osf*): Add "virtual
index 036ea44..6aaa130 100644 (file)
@@ -34,6 +34,7 @@ extern void   arm_expand_prologue     PARAMS ((void));
 /* Used in arm.md, but defined in output.c.  */
 extern void   assemble_align           PARAMS ((int)); 
 extern const char * arm_strip_name_encoding    PARAMS ((const char *));
+extern void   arm_asm_output_labelref  PARAMS ((FILE *, const char *));
 extern unsigned long arm_current_func_type     PARAMS ((void));
 extern unsigned int  arm_compute_initial_elimination_offset PARAMS ((unsigned int, unsigned int));
 
index 56c7e27..9000cca 100644 (file)
@@ -10799,6 +10799,30 @@ arm_strip_name_encoding (name)
   return name;
 }
 
+/* If there is a '*' anywhere in the name's prefix, then
+   emit the stripped name verbatim, otherwise prepend an
+   underscore if leading underscores are being used.  */
+
+void
+arm_asm_output_labelref (stream, name)
+     FILE * stream;
+     const char * name;
+{
+  int skip;
+  int verbatim = 0;
+
+  while ((skip = arm_get_strip_length (* name)))
+    {
+      verbatim |= (*name == '*');
+      name += skip;
+    }
+
+  if (verbatim)
+    fputs (name, stream);
+  else
+    asm_fprintf (stream, "%U%s", name);
+}
+
 rtx aof_pic_label;
 
 #ifdef AOF_ASSEMBLER
index 64e7187..8ab8267 100644 (file)
@@ -1858,7 +1858,7 @@ typedef struct
    `assemble_name' uses this.  */
 #undef  ASM_OUTPUT_LABELREF
 #define ASM_OUTPUT_LABELREF(FILE, NAME)                \
-  asm_fprintf (FILE, "%U%s", arm_strip_name_encoding (NAME))
+   arm_asm_output_labelref (FILE, NAME)
 
 #define ARM_DECLARE_FUNCTION_SIZE(STREAM, NAME, DECL)  \
   arm_encode_call_attribute (DECL, SHORT_CALL_FLAG_CHAR)