as_warn ("Bad suffix after ':' use {b|w|d} Defaulting to d");
as_warn (_("Bad suffix after ':' use {b|w|d} Defaulting to d"));
get_addr_mode (ptr, addr_modeP)     char *ptr;     addr_modeS *addr_modeP;{  int tmp;  addr_mode (ptr, addr_modeP, 0);  if (addr_modeP->mode == DEFAULT || addr_modeP->scaled_mode == -1)    {      /* resolve ambigious operands, this shouldn't	 be necessary if one uses standard NSC operand	 syntax. But the sequent compiler doesn't!!!	 This finds a proper addressinging mode if it	 is implicitly stated. See ns32k-opcode.h */      (void) evaluate_expr (&exprP, ptr);	/* this call takes time Sigh! */      if (addr_modeP->mode == DEFAULT)	{	  if (exprP.X_add_symbol || exprP.X_op_symbol)	    {	      addr_modeP->mode = desc->default_model;	/* we have a label */	    }	  else	    {	      addr_modeP->mode = desc->default_modec;	/* we have a constant */	    }	}      else	{	  if (exprP.X_add_symbol || exprP.X_op_symbol)	    {	      addr_modeP->scaled_mode = desc->default_model;	    }	  else	    {	      addr_modeP->scaled_mode = desc->default_modec;	    }	}      /* must put this mess down in addr_mode to handle the scaled case better */    }  /* It appears as the sequent compiler wants an absolute when we have a	   label without @. Constants becomes immediates besides the addr case.	   Think it does so with local labels too, not optimum, pcrel is better.	   When I have time I will make gas check this and select pcrel when possible	   Actually that is trivial.	   */  if (tmp = addr_modeP->scaled_reg)    {				/* build indexbyte */      tmp--;			/* remember regnumber comes incremented for flagpurpose */      tmp |= addr_modeP->scaled_mode << 3;      addr_modeP->index_byte = (char) tmp;      addr_modeP->am_size += 1;    }  if (disp_test[addr_modeP->mode])    {				/* there was a displacement, probe for length specifying suffix*/      {	register char c;	register char suffix;	register char suffix_sub;	register int i;	register char *toP;	register char *fromP;	addr_modeP->pcrel = 0;	if (disp_test[addr_modeP->mode])	  {			/* there is a displacement */	    if (addr_modeP->mode == 27 || addr_modeP->scaled_mode == 27)	      {			/* do we have pcrel. mode */		addr_modeP->pcrel = 1;	      }	    addr_modeP->im_disp = 1;	    for (i = 0; i < 2; i++)	      {		suffix_sub = suffix = 0;		if (toP = addr_modeP->disp[i])		  {		/* suffix of expression, the largest size rules */		    fromP = toP;		    while (c = *fromP++)		      {			*toP++ = c;			if (c == ':')			  {			    switch (*fromP)			      {			      case '\0':				as_warn ("Premature end of suffix--Defaulting to d");				suffix = 4;				continue;			      case 'b':				suffix_sub = 1;				break;			      case 'w':				suffix_sub = 2;				break;			      case 'd':				suffix_sub = 4;				break;			      default:				as_warn ("Bad suffix after ':' use {b|w|d} Defaulting to d");				suffix = 4;			      }			    fromP++;			    toP--;	/* So we write over the ':' */			    if (suffix < suffix_sub)			      suffix = suffix_sub;			  }		      }		    *toP = '\0';/* terminate properly */		    addr_modeP->disp_suffix[i] = suffix;		    addr_modeP->am_size += suffix ? suffix : 4;		  }	      }	  }      }    }  else    {      if (addr_modeP->mode == 20)	{			/* look in ns32k_opcode for size */	  addr_modeP->disp_suffix[0] = addr_modeP->am_size = desc->im_size;	  addr_modeP->im_disp = 0;	}    }  return addr_modeP->mode;}