diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f50a5ea620b66e068e01fe1fe811af4b30411b1c..7566df2be3cf65c716b6c45e244990887e8f91ba 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2004-04-17  Richard Sandiford  <rsandifo@redhat.com>
+
+	* gcc.c (used_arg): Check whether an option has been removed.
+
 2004-04-17  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
 
 	* config.gcc (i[34567]86-*-solaris2*): Default to DWARF-2
diff --git a/gcc/gcc.c b/gcc/gcc.c
index e004697431ec2765fa819c7ff740ad3c1199ed3e..f9a4e1db3cd6e9c179e05717be0267c0c073966b 100644
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -6909,20 +6909,21 @@ used_arg (const char *p, int len)
 	= xmalloc (sizeof (struct mswitchstr)
 		   * (n_mdswitches + (n_switches ? n_switches : 1)));
       for (i = 0; i < n_switches; i++)
-	{
-	  int xlen = strlen (switches[i].part1);
-	  for (j = 0; j < cnt; j++)
-	    if (xlen == matches[j].len
-		&& ! strncmp (switches[i].part1, matches[j].str, xlen))
-	      {
-		mswitches[n_mswitches].str = matches[j].replace;
-		mswitches[n_mswitches].len = matches[j].rep_len;
-		mswitches[n_mswitches].replace = (char *) 0;
-		mswitches[n_mswitches].rep_len = 0;
-		n_mswitches++;
-		break;
-	      }
-	}
+	if (switches[i].live_cond != SWITCH_IGNORE)
+	  {
+	    int xlen = strlen (switches[i].part1);
+	    for (j = 0; j < cnt; j++)
+	      if (xlen == matches[j].len
+		  && ! strncmp (switches[i].part1, matches[j].str, xlen))
+		{
+		  mswitches[n_mswitches].str = matches[j].replace;
+		  mswitches[n_mswitches].len = matches[j].rep_len;
+		  mswitches[n_mswitches].replace = (char *) 0;
+		  mswitches[n_mswitches].rep_len = 0;
+		  n_mswitches++;
+		  break;
+		}
+	  }
 
       /* Add MULTILIB_DEFAULTS switches too, as long as they were not present
 	 on the command line nor any options mutually incompatible with