aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Meissner <meissner@gcc.gnu.org>1996-01-26 14:43:39 +0000
committerMichael Meissner <meissner@gcc.gnu.org>1996-01-26 14:43:39 +0000
commit6fa02a050bbd70f682add2524a07c65f26c11c20 (patch)
tree01df7ab144246522b8644d9271259cc56d41a488
parentb9442c72e197d692a849d6c239b49e79393c35b4 (diff)
downloadgcc-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.h16
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*... */