diff options
author | Michael Meissner <meissner@gcc.gnu.org> | 1996-01-26 14:43:39 +0000 |
---|---|---|
committer | Michael Meissner <meissner@gcc.gnu.org> | 1996-01-26 14:43:39 +0000 |
commit | 6fa02a050bbd70f682add2524a07c65f26c11c20 (patch) | |
tree | 01df7ab144246522b8644d9271259cc56d41a488 | |
parent | b9442c72e197d692a849d6c239b49e79393c35b4 (diff) | |
download | gcc-6fa02a050bbd70f682add2524a07c65f26c11c20.zip gcc-6fa02a050bbd70f682add2524a07c65f26c11c20.tar.gz gcc-6fa02a050bbd70f682add2524a07c65f26c11c20.tar.bz2 |
Deal with names that are encoded with both @ and *.
From-SVN: r11107
-rw-r--r-- | gcc/config/rs6000/sysv4.h | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/gcc/config/rs6000/sysv4.h b/gcc/config/rs6000/sysv4.h index 36d61eb..a390992 100644 --- a/gcc/config/rs6000/sysv4.h +++ b/gcc/config/rs6000/sysv4.h @@ -657,15 +657,25 @@ do { \ out of the string in a SYMBOL_REF. Discard a leading * or @. */ #undef STRIP_NAME_ENCODING -#define STRIP_NAME_ENCODING(VAR,SYMBOL_NAME) \ - (VAR) = ((SYMBOL_NAME) + (((SYMBOL_NAME)[0] == '*') || ((SYMBOL_NAME)[0] == '@'))) +#define STRIP_NAME_ENCODING(VAR,SYMBOL_NAME) \ +do { \ + char *_name = SYMBOL_NAME; \ + while (*_name == '*' || *_name == '@') \ + _name++; \ + (VAR) = _name; \ +} while (0) /* This is how to output a reference to a user-level label named NAME. `assemble_name' uses this. */ #undef ASM_OUTPUT_LABELREF #define ASM_OUTPUT_LABELREF(FILE,NAME) \ - fputs ((NAME) + (NAME[0] == '@'), FILE) +do { \ + char *_name = NAME; \ + while (*_name == '*' || *_name == '@') \ + _name++; \ + fputs (_name, FILE); \ +} while (0) /* But, to make this work, we have to output the stabs for the function name *first*... */ |