aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKrister Walfridsson <cato@df.lth.se>2002-08-30 13:26:53 +0200
committerNick Clifton <nickc@gcc.gnu.org>2002-08-30 11:26:53 +0000
commite194407348d9822674fcf81d116b97b61866f6b5 (patch)
treedb5674c49394195fe13b9e6690a5061a8342339d
parent3aee909ec6c2f394c93a3099b5d19d6665d11b47 (diff)
downloadgcc-e194407348d9822674fcf81d116b97b61866f6b5.zip
gcc-e194407348d9822674fcf81d116b97b61866f6b5.tar.gz
gcc-e194407348d9822674fcf81d116b97b61866f6b5.tar.bz2
arm.c (arm_asm_output_labelref): New function.
* 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. From-SVN: r56682
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/arm/arm-protos.h1
-rw-r--r--gcc/config/arm/arm.c24
-rw-r--r--gcc/config/arm/arm.h2
4 files changed, 32 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d8e4bf3..f14a269 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/arm/arm-protos.h b/gcc/config/arm/arm-protos.h
index 036ea44..6aaa130 100644
--- a/gcc/config/arm/arm-protos.h
+++ b/gcc/config/arm/arm-protos.h
@@ -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));
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index 56c7e27..9000cca 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -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
diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h
index 64e7187..8ab8267 100644
--- a/gcc/config/arm/arm.h
+++ b/gcc/config/arm/arm.h
@@ -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)