https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85088
--- Comment #4 from Dominique d'Humieres <dominiq at lps dot ens.fr> --- It seems that there is some inconsistencies between /* TODO: Call match_intent_spec from here. */ if (gfc_match (" ( in out )") == MATCH_YES) d = DECL_INOUT; else if (gfc_match (" ( in )") == MATCH_YES) d = DECL_IN; else if (gfc_match (" ( out )") == MATCH_YES) d = DECL_OUT; and match gfc_match_intent (void) { sym_intent intent; /* This is not allowed within a BLOCK construct! */ if (gfc_current_state () == COMP_BLOCK) { gfc_error ("INTENT is not allowed inside of BLOCK at %C"); return MATCH_ERROR; } intent = match_intent_spec (); if (intent == INTENT_UNKNOWN) return MATCH_ERROR; gfc_clear_attr (¤t_attr); current_attr.intent = intent; return attr_decl (); } and static sym_intent match_intent_spec (void) { if (gfc_match (" ( in out )") == MATCH_YES) return INTENT_INOUT; if (gfc_match (" ( in )") == MATCH_YES) return INTENT_IN; if (gfc_match (" ( out )") == MATCH_YES) return INTENT_OUT; gfc_error ("Bad INTENT specification at %C"); return INTENT_UNKNOWN; }