Deal with names that are encoded with both @ and *.
authorMichael Meissner <meissner@gcc.gnu.org>
Fri, 26 Jan 1996 14:43:39 +0000 (14:43 +0000)
committerMichael Meissner <meissner@gcc.gnu.org>
Fri, 26 Jan 1996 14:43:39 +0000 (14:43 +0000)
From-SVN: r11107

gcc/config/rs6000/sysv4.h

index 36d61eb..a390992 100644 (file)
@@ -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*...  */