summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/xcoffout.c22
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