diff options
author | John David Anglin <dave@hiauly1.hia.nrc.ca> | 2002-09-30 19:52:45 +0000 |
---|---|---|
committer | John David Anglin <danglin@gcc.gnu.org> | 2002-09-30 19:52:45 +0000 |
commit | 7830ba7bc8b9abca19dd09ffb8af3f3b2c08bd27 (patch) | |
tree | 189420fe4deced1c1f87d8ad5ae25ea0631f393f | |
parent | 344b78b848693ada74b0ce238153c86fdf02ee09 (diff) | |
download | gcc-7830ba7bc8b9abca19dd09ffb8af3f3b2c08bd27.zip gcc-7830ba7bc8b9abca19dd09ffb8af3f3b2c08bd27.tar.gz gcc-7830ba7bc8b9abca19dd09ffb8af3f3b2c08bd27.tar.bz2 |
pa.c (hppa_encode_label): Don't drop '*' from function labels.
* pa.c (hppa_encode_label): Don't drop '*' from function labels.
(pa_strip_name_encoding): Strip '@' and '*', in that order.
* pa.h (ASM_OUTPUT_LABELREF): Output user_label_prefix except when
there is a '*' prefix in NAME.
From-SVN: r57664
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/pa/pa.c | 9 | ||||
-rw-r--r-- | gcc/config/pa/pa.h | 11 |
3 files changed, 20 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ef6c2ca..3212d1b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2002-09-30 John David Anglin <dave@hiauly1.hia.nrc.ca> + + * pa.c (hppa_encode_label): Don't drop '*' from function labels. + (pa_strip_name_encoding): Strip '@' and '*', in that order. + * pa.h (ASM_OUTPUT_LABELREF): Output user_label_prefix except when + there is a '*' prefix in NAME. + Mon Sep 30 21:33:23 CEST 2002 Jan Hubicka <jh@suse.cz> * reload.c (push_reload): Handle subregs and secondary memory. diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c index 98944da..1aae00d 100644 --- a/gcc/config/pa/pa.c +++ b/gcc/config/pa/pa.c @@ -6487,11 +6487,6 @@ hppa_encode_label (sym) char *newstr, *p; p = newstr = alloca (len + 1); - if (str[0] == '*') - { - str++; - len--; - } *p++ = '@'; strcpy (p, str); @@ -6523,7 +6518,9 @@ static const char * pa_strip_name_encoding (str) const char *str; { - return str + (*str == '*' || *str == '@'); + str += (*str == '@'); + str += (*str == '*'); + return str; } int diff --git a/gcc/config/pa/pa.h b/gcc/config/pa/pa.h index 0f18ff0..a6dbcf1 100644 --- a/gcc/config/pa/pa.h +++ b/gcc/config/pa/pa.h @@ -1688,7 +1688,16 @@ do { \ `assemble_name' uses this. */ #define ASM_OUTPUT_LABELREF(FILE,NAME) \ - fprintf ((FILE), "%s", (NAME) + (FUNCTION_NAME_P (NAME) ? 1 : 0)) + do { \ + const char *xname = (NAME); \ + if (FUNCTION_NAME_P (NAME)) \ + xname += 1; \ + if (xname[0] == '*') \ + xname += 1; \ + else \ + fputs (user_label_prefix, FILE); \ + fputs (xname, FILE); \ + } while (0) /* This is how to output an internal numbered label where PREFIX is the class of label and NUM is the number within the class. */ |