diff options
| author | nickc <nickc@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-08-30 11:26:53 +0000 |
|---|---|---|
| committer | nickc <nickc@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-08-30 11:26:53 +0000 |
| commit | d2fcdd8d89d4edc970da346ba826f8f02f7376e7 (patch) | |
| tree | db5674c49394195fe13b9e6690a5061a8342339d | |
| parent | 88a048e4470121eaba3a91144714b76126f8cca7 (diff) | |
| download | ppe42-gcc-d2fcdd8d89d4edc970da346ba826f8f02f7376e7.tar.gz ppe42-gcc-d2fcdd8d89d4edc970da346ba826f8f02f7376e7.zip | |
* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@56682 138bc75d-0d04-0410-961f-82ee72b054a4
| -rw-r--r-- | gcc/ChangeLog | 6 | ||||
| -rw-r--r-- | gcc/config/arm/arm-protos.h | 1 | ||||
| -rw-r--r-- | gcc/config/arm/arm.c | 24 | ||||
| -rw-r--r-- | gcc/config/arm/arm.h | 2 |
4 files changed, 32 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d8e4bf3351d..f14a2696e14 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 036ea44fed5..6aaa1307857 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 56c7e276efc..9000cca326b 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 64e71873148..8ab82671636 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) |

