diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog
index bddcee9da4011245f2d93d024bb2876dcbc279e9..9a2aeda12b0e39f66cf188eae00b3366b6a886a8 100644
--- a/libiberty/ChangeLog
+++ b/libiberty/ChangeLog
@@ -1,3 +1,12 @@
+2004-11-23  Ian Lance Taylor  <ian@wasabisystems.com>
+
+	PR other/18623
+	* cp-demangle.c (d_call_offset): Remove useless local variables
+	offset and virtual_offset.
+	* cplus-dem.c (ada_demangle): Remove useless local variable
+	at_start_name.
+	(demangle_template): Remove useless local variable start.
+
 2004-11-19  Roger Sayle  <roger@eyesopen.com>
 
 	* objalloc.c, strsignal.c, xstrerror.c: Include "config.h" before
diff --git a/libiberty/cp-demangle.c b/libiberty/cp-demangle.c
index 8608bc82507ca344153535c332fdcd45d6ebf0fd..5707aa20aa2a703edb3086f1c7d59cd7896cba69 100644
--- a/libiberty/cp-demangle.c
+++ b/libiberty/cp-demangle.c
@@ -1633,20 +1633,17 @@ d_call_offset (di, c)
      struct d_info *di;
      int c;
 {
-  long offset;
-  long virtual_offset;
-
   if (c == '\0')
     c = d_next_char (di);
 
   if (c == 'h')
-    offset = d_number (di);
+    d_number (di);
   else if (c == 'v')
     {
-      offset = d_number (di);
+      d_number (di);
       if (d_next_char (di) != '_')
 	return 0;
-      virtual_offset = d_number (di);
+      d_number (di);
     }
   else
     return 0;
diff --git a/libiberty/cplus-dem.c b/libiberty/cplus-dem.c
index f3c4464f184ad9973e59ffd28273e47a585f1ba7..60a54844c23954362331dca10a48dc0f1b8f606a 100644
--- a/libiberty/cplus-dem.c
+++ b/libiberty/cplus-dem.c
@@ -976,7 +976,6 @@ ada_demangle (mangled, option)
   int len0;
   const char* p;
   char *demangled = NULL;
-  int at_start_name;
   int changed;
   size_t demangled_size = 0;
   
@@ -1029,15 +1028,12 @@ ada_demangle (mangled, option)
        i += 1, j += 1)
     demangled[j] = mangled[i];
   
-  at_start_name = 1;
   while (i < len0)
     {
-      at_start_name = 0;
-      
       if (i < len0 - 2 && mangled[i] == '_' && mangled[i + 1] == '_')
 	{
 	  demangled[j] = '.';
-	  changed = at_start_name = 1;
+	  changed = 1;
 	  i += 2; j += 1;
 	}
       else
@@ -2040,14 +2036,12 @@ demangle_template (work, mangled, tname, trawname, is_type, remember)
   int r;
   int need_comma = 0;
   int success = 0;
-  const char *start;
   int is_java_array = 0;
   string temp;
 
   (*mangled)++;
   if (is_type)
     {
-      start = *mangled;
       /* get template name */
       if (**mangled == 'z')
 	{