if (timp == FFEINTRIN_impNONE) tname = ffeintrin_specs_[tspec].name; else tname = ffeintrin_imps_[timp].name;
tname = ffeintrin_specs_[tspec].name;  if (timp != FFEINTRIN_impNONE) { if (!(ffeintrin_imps_[timp].control[0] == '-') != !(ffebld_op (*expr) == FFEBLD_opSUBRREF)) continue;		 }
ffeintrin_fulfill_generic (ffebld *expr, ffeinfo *info, ffelexToken t){  ffebld symter;  ffebldOp op;  ffeintrinGen gen;  ffeintrinSpec spec = FFEINTRIN_specNONE;  ffeinfoBasictype bt = FFEINFO_basictypeNONE;  ffeinfoKindtype kt = FFEINFO_kindtypeNONE;  ffetargetCharacterSize sz = FFETARGET_charactersizeNONE;  ffeintrinImp imp;  ffeintrinSpec tspec;  ffeintrinImp nimp = FFEINTRIN_impNONE;  ffebad error;  bool any = FALSE;  bool highly_specific = FALSE;  char *name = NULL;  int i;  op = ffebld_op (*expr);  assert ((op == FFEBLD_opFUNCREF) || (op == FFEBLD_opSUBRREF));  assert (ffebld_op (ffebld_left (*expr)) == FFEBLD_opSYMTER);  gen = ffebld_symter_generic (ffebld_left (*expr));  assert (gen != FFEINTRIN_genNONE);  imp = FFEINTRIN_impNONE;  error = FFEBAD;  any = ffeintrin_check_any_ (ffebld_right (*expr));  for (i = 0;       (((size_t) i) < ARRAY_SIZE (ffeintrin_gens_[gen].specs))	 && ((tspec = ffeintrin_gens_[gen].specs[i]) != FFEINTRIN_specNONE)	 && !any;       ++i)    {      ffeintrinImp timp = ffeintrin_specs_[tspec].implementation;      ffeinfoBasictype tbt;      ffeinfoKindtype tkt;      ffetargetCharacterSize tsz;      ffeIntrinsicState state      = ffeintrin_state_family (ffeintrin_specs_[tspec].family);      ffebad terror;      char *tname;      if (state == FFE_intrinsicstateDELETED)	continue;      if (timp == FFEINTRIN_impNONE)	tname = ffeintrin_specs_[tspec].name;      else	tname = ffeintrin_imps_[timp].name;      if (state == FFE_intrinsicstateDISABLED)	terror = FFEBAD_INTRINSIC_DISABLED;      else if (timp == FFEINTRIN_impNONE)	terror = FFEBAD_INTRINSIC_UNIMPL;      else	{	  terror = ffeintrin_check_ (timp, ffebld_op (*expr),				     ffebld_right (*expr),				     &tbt, &tkt, &tsz, t, FALSE);	  if (terror == FFEBAD)	    {	      if (imp != FFEINTRIN_impNONE)		{		  if (ffeintrin_imps_[timp].cg_imp		      == ffeintrin_imps_[imp].cg_imp)		    {		      if (ffebld_symter_specific (ffebld_left (*expr))			  == tspec)			{			  highly_specific = TRUE;			  imp = timp;			  spec = tspec;			  bt = tbt;			  kt = tkt;			  sz = tkt;			  error = terror;			}		      else if (nimp == FFEINTRIN_impNONE)			nimp = timp;		    }		  else		    {		      ffebad_start (FFEBAD_INTRINSIC_AMBIG);		      ffebad_here (0, ffelex_token_where_line (t),				   ffelex_token_where_column (t));		      ffebad_string (ffeintrin_gens_[gen].name);		      ffebad_string (ffeintrin_specs_[spec].name);		      ffebad_string (ffeintrin_specs_[tspec].name);		      ffebad_finish ();		    }		}	      else		{		  if (ffebld_symter_specific (ffebld_left (*expr))		      == tspec)		    highly_specific = TRUE;		  imp = timp;		  spec = tspec;		  bt = tbt;		  kt = tkt;		  sz = tkt;		  error = terror;		}	    }	  else if (terror != FFEBAD)	    {			/* This error has precedence over others. */	      if ((error == FFEBAD_INTRINSIC_DISABLED)		  || (error == FFEBAD_INTRINSIC_UNIMPL))		error = FFEBAD;	    }	}      if (error == FFEBAD)	{	  error = terror;	  name = tname;	}    }  if (any || (imp == FFEINTRIN_impNONE))    {      if (!any)	{	  if (error == FFEBAD)	    error = FFEBAD_INTRINSIC_REF;	  if (name == NULL)	    name = ffeintrin_gens_[gen].name;	  ffebad_start (error);	  ffebad_here (0, ffelex_token_where_line (t),		       ffelex_token_where_column (t));	  ffebad_string (name);	  ffebad_finish ();	}      *expr = ffebld_new_any ();      *info = ffeinfo_new_any ();    }  else    {      if (!highly_specific && (nimp != FFEINTRIN_impNONE))	{	  fprintf (stderr, "lineno=%ld, gen=%s, imp=%s, timp=%s\n",		   (long) lineno,		   ffeintrin_gens_[gen].name,		   ffeintrin_imps_[imp].name,		   ffeintrin_imps_[nimp].name);	  assert ("Ambiguous generic reference" == NULL);	  abort ();	}      error = ffeintrin_check_ (imp, ffebld_op (*expr),				ffebld_right (*expr),				&bt, &kt, &sz, t, TRUE);      assert (error == FFEBAD);      *info = ffeinfo_new (bt,			   kt,			   0,			   FFEINFO_kindENTITY,			   FFEINFO_whereFLEETING,			   sz);      symter = ffebld_left (*expr);      ffebld_symter_set_specific (symter, spec);      ffebld_symter_set_implementation (symter, imp);      ffebld_set_info (symter,		       ffeinfo_new (bt,				    kt,				    0,				    (bt == FFEINFO_basictypeNONE)				    ? FFEINFO_kindSUBROUTINE				    : FFEINFO_kindFUNCTION,				    FFEINFO_whereINTRINSIC,				    sz));    }}