diff options
Diffstat (limited to 'gcc/cp/cp-tree.h')
-rw-r--r-- | gcc/cp/cp-tree.h | 78 |
1 files changed, 30 insertions, 48 deletions
diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h index f54891ccd02..b32367ba3aa 100644 --- a/gcc/cp/cp-tree.h +++ b/gcc/cp/cp-tree.h @@ -32,6 +32,7 @@ Boston, MA 02111-1307, USA. */ /* Usage of TREE_LANG_FLAG_?: 0: BINFO_MARKED (BINFO nodes). + IDENTIFIER_MARKED (IDENTIFIER_NODEs) NEW_EXPR_USE_GLOBAL (in NEW_EXPR). DELETE_EXPR_USE_GLOBAL (in DELETE_EXPR). LOOKUP_EXPR_GLOBAL (in LOOKUP_EXPR). @@ -71,7 +72,7 @@ Boston, MA 02111-1307, USA. */ or FIELD_DECL). NEED_TEMPORARY_P (in REF_BIND, BASE_CONV) IDENTIFIER_TYPENAME_P (in IDENTIFIER_NODE) - 5: Unused. + 5: C_IS_RESERVED_WORD (in IDENTIFIER_NODE) 6: BINFO_ACCESS (in BINFO) Usage of TYPE_LANG_FLAG_?: @@ -282,8 +283,21 @@ struct lang_identifier tree class_value; tree class_template_info; struct lang_id2 *x; + enum rid rid_code; }; +/* In an IDENTIFIER_NODE, nonzero if this identifier is actually a + keyword. C_RID_CODE (node) is then the RID_* value of the keyword, + and C_RID_YYCODE is the token number wanted by Yacc. */ + +#define C_IS_RESERVED_WORD(id) TREE_LANG_FLAG_5 (id) +#define C_RID_CODE(id) \ + (((struct lang_identifier *) (id))->rid_code) + +extern const short rid_to_yy[RID_MAX]; +#define C_RID_YYCODE(id) \ + rid_to_yy[((struct lang_identifier *) (id))->rid_code] + #define LANG_IDENTIFIER_CAST(NODE) \ ((struct lang_identifier*)IDENTIFIER_NODE_CHECK (NODE)) @@ -468,15 +482,6 @@ struct tree_srcloc #define IDENTIFIER_CLASS_VALUE(NODE) \ (LANG_IDENTIFIER_CAST (NODE)->class_value) -/* The amount of time used by the file whose special "time identifier" - is NODE, represented as an INTEGER_CST. See get_time_identifier. */ -#define TIME_IDENTIFIER_TIME(NODE) IDENTIFIER_BINDING(NODE) - -/* For a "time identifier" this is a INTEGER_CST. The - TREE_INT_CST_LOW is 1 if the corresponding file is "interface only". - The TRE_INT_CST_HIGH is 1 if it is "interface unknown". */ -#define TIME_IDENTIFIER_FILEINFO(NODE) IDENTIFIER_CLASS_VALUE (NODE) - /* TREE_TYPE only indicates on local and class scope the current type. For namespace scope, the presence of a type in any namespace is indicated with global_type_node, and the real type behind must @@ -1039,6 +1044,14 @@ extern int flag_cond_mismatch; extern int flag_no_asm; +/* Nonzero means don't recognize any extended keywords. */ + +extern int flag_no_gnu_keywords; + +/* Nonzero means recognize the named operators from C++98. */ + +extern int flag_operator_names; + /* For cross referencing. */ extern int flag_gnu_xref; @@ -1896,6 +1909,8 @@ struct lang_decl_flags } u2; }; +struct unparsed_text; + struct lang_decl { struct lang_decl_flags decl_flags; @@ -1911,7 +1926,7 @@ struct lang_decl union { tree sorted_fields; - struct pending_inline *pending_inline_info; + struct unparsed_text *pending_inline_info; struct language_function *saved_language_function; } u; @@ -1925,8 +1940,6 @@ struct lang_decl } u2; }; -/* An un-parsed default argument looks like an identifier. */ -#define DEFARG_LENGTH(NODE) (DEFAULT_ARG_CHECK(NODE)->identifier.length) #define DEFARG_POINTER(NODE) (DEFAULT_ARG_CHECK(NODE)->identifier.pointer) /* Non-zero if NODE is a _DECL with TREE_READONLY set. */ @@ -3212,10 +3225,6 @@ extern int flag_labels_ok; /* Nonzero means allow Microsoft extensions without a pedwarn. */ extern int flag_ms_extensions; -/* Non-zero means to collect statistics which might be expensive - and to print them when we are done. */ -extern int flag_detailed_statistics; - /* Non-zero means warn in function declared in derived class has the same name as a virtual in the base class, but fails to match the type signature of any virtual function in the base class. */ @@ -3503,25 +3512,6 @@ extern varray_type local_classes; /* Things for handling inline functions. */ -struct pending_inline -{ - struct pending_inline *next; /* pointer to next in chain */ - int lineno; /* line number we got the text from */ - const char *filename; /* name of file we were processing */ - tree fndecl; /* FUNCTION_DECL that brought us here */ - int token; /* token we were scanning */ - int token_value; /* value of token we were scanning (YYSTYPE) */ - - char *buf; /* pointer to character stream */ - int len; /* length of stream */ - unsigned int can_free : 1; /* free this after we're done with it? */ - unsigned int deja_vu : 1; /* set iff we don't want to see it again. */ - unsigned int interface : 2; /* 0=interface 1=unknown 2=implementation */ -}; - -/* in method.c */ -extern struct pending_inline *pending_inlines; - /* Negative values means we know `this' to be of static type. */ extern int flag_this_is_variable; @@ -4148,41 +4138,33 @@ extern void set_quals_and_spec PARAMS ((tree, tree, tree)); extern void lang_init PARAMS ((void)); extern void lang_finish PARAMS ((void)); extern void print_parse_statistics PARAMS ((void)); -extern void extract_interface_info PARAMS ((void)); extern void do_pending_inlines PARAMS ((void)); -extern void process_next_inline PARAMS ((struct pending_inline *)); -extern struct pending_input *save_pending_input PARAMS ((void)); -extern void restore_pending_input PARAMS ((struct pending_input *)); +extern void process_next_inline PARAMS ((struct unparsed_text *)); + extern void yyungetc PARAMS ((int, int)); -extern void reinit_parse_for_method PARAMS ((int, tree)); -extern void reinit_parse_for_block PARAMS ((int, struct obstack *)); +extern void snarf_method PARAMS ((tree)); + extern void check_for_missing_semicolon PARAMS ((tree)); extern void note_got_semicolon PARAMS ((tree)); extern void note_list_got_semicolon PARAMS ((tree)); extern void do_pending_lang_change PARAMS ((void)); -extern int identifier_type PARAMS ((tree)); extern void see_typename PARAMS ((void)); extern tree do_identifier PARAMS ((tree, int, tree)); extern tree do_scoped_id PARAMS ((tree, int)); extern tree identifier_typedecl_value PARAMS ((tree)); -extern int real_yylex PARAMS ((void)); -extern int is_rid PARAMS ((tree)); extern tree build_lang_decl PARAMS ((enum tree_code, tree, tree)); extern void retrofit_lang_decl PARAMS ((tree)); extern tree copy_decl PARAMS ((tree)); extern void copy_lang_decl PARAMS ((tree)); extern tree cp_make_lang_type PARAMS ((enum tree_code)); extern tree make_aggr_type PARAMS ((enum tree_code)); -extern void dump_time_statistics PARAMS ((void)); extern void compiler_error PARAMS ((const char *, ...)) ATTRIBUTE_PRINTF_1; extern void yyerror PARAMS ((const char *)); extern void clear_inline_text_obstack PARAMS ((void)); extern void maybe_snarf_defarg PARAMS ((void)); -extern tree snarf_defarg PARAMS ((void)); extern void add_defarg_fn PARAMS ((tree)); extern void do_pending_defargs PARAMS ((void)); -extern int identifier_type PARAMS ((tree)); extern void yyhook PARAMS ((int)); extern int cp_type_qual_from_rid PARAMS ((tree)); |