ffeintrin_fulfill_specific (ffebld *expr, ffeinfo *info, ffelexToken t)
ffeintrin_fulfill_specific (ffebld *expr, ffeinfo *info, bool *check_intrin, ffelexToken t)
ffeintrin_fulfill_specific (ffebld *expr, ffeinfo *info, ffelexToken t){  ffebld symter;  ffebldOp op;  ffeintrinSpec spec;  ffeintrinImp imp;  ffeinfoBasictype bt = FFEINFO_basictypeNONE;  ffeinfoKindtype kt = FFEINFO_kindtypeNONE;  ffetargetCharacterSize sz = FFETARGET_charactersizeNONE;  ffeIntrinsicState state;  ffebad error;  bool any = FALSE;  op = ffebld_op (*expr);  assert ((op == FFEBLD_opFUNCREF) || (op == FFEBLD_opSUBRREF));  assert (ffebld_op (ffebld_left (*expr)) == FFEBLD_opSYMTER);  spec = ffebld_symter_specific (ffebld_left (*expr));  assert (spec != FFEINTRIN_specNONE);  state = ffeintrin_state_family (ffeintrin_specs_[spec].family);  imp = ffeintrin_specs_[spec].implementation;  any = ffeintrin_check_any_ (ffebld_right (*expr));  if (state == FFE_intrinsicstateDISABLED)    error = FFEBAD_INTRINSIC_DISABLED;  else if (imp == FFEINTRIN_impNONE)    error = FFEBAD_INTRINSIC_UNIMPL;  else if (!any)    {      error = ffeintrin_check_ (imp, ffebld_op (*expr),				ffebld_right (*expr),				&bt, &kt, &sz, t, TRUE);    }  if (any || (error != FFEBAD))    {      if (!any)	{	  char *name;	  ffebad_start (error);	  ffebad_here (0, ffelex_token_where_line (t),		       ffelex_token_where_column (t));	  if (imp == FFEINTRIN_impNONE)	    name = ffeintrin_specs_[spec].name;	  else	    name = ffeintrin_imps_[imp].name;	  ffebad_string (name);	  ffebad_finish ();	}      *expr = ffebld_new_any ();      *info = ffeinfo_new_any ();    }  else    {      *info = ffeinfo_new (bt,			   kt,			   0,			   FFEINFO_kindENTITY,			   FFEINFO_whereFLEETING,			   sz);      symter = ffebld_left (*expr);      ffebld_set_info (symter,		       ffeinfo_new (bt,				    kt,				    0,				    (bt == FFEINFO_basictypeNONE)				    ? FFEINFO_kindSUBROUTINE				    : FFEINFO_kindFUNCTION,				    FFEINFO_whereINTRINSIC,				    sz));    }}