diff options
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/xcoffout.c | 22 |
2 files changed, 14 insertions, 13 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5ed662d1231..96a1648fb07 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2004-12-13 David Edelsohn <edelsohn@gnu.org> + + * xcoffout.c (xcoffout_declare_function): Always strip storage + class encoding. + 2004-12-13 Andrew Pinski <pinskia@physics.uc.edu> PR target/18964 diff --git a/gcc/xcoffout.c b/gcc/xcoffout.c index f79755a58a8..a2d8a33ba5f 100644 --- a/gcc/xcoffout.c +++ b/gcc/xcoffout.c @@ -405,22 +405,18 @@ xcoffout_end_block (unsigned int line, unsigned int n) void xcoffout_declare_function (FILE *file, tree decl, const char *name) { - int i; + size_t len; if (*name == '*') name++; - else - for (i = 0; name[i]; ++i) - { - if (name[i] == '[') - { - char *n = alloca (i + 1); - strncpy (n, name, i); - n[i] = '\0'; - name = n; - break; - } - } + len = strlen (name); + if (name[len - 1] == ']') + { + char *n = alloca (len - 3); + strncpy (n, name, len - 4); + n[len - 4] = '\0'; + name = n; + } /* Any pending .bi or .ei must occur before the .function pseudo op. Otherwise debuggers will think that the function is in the previous |