gcc/gcc/cp
Zack Weinberg 0e5921e8a0 Integrated preprocessor.
top level:
	* Makefile.in: Remove all references to c-parse.gperf,
	c-gperf.h, and c-parse.h.  Remove -d from yacc command line
	generating c-parse.c.  Update dependencies.
	* c-parse.gperf, c-gperf.h: Delete.

	* c-common.c: Don't define parse_options, cpp_token, yy_cur,
	yy_lim, or yy_get_token.  Don't define get_directive_line if
	USE_CPPLIB.
	* c-common.h: Add multiple include guard.  Define RID values
	for every keyword in C, C++, and Objective C.  Put all the
	modifiers first.
	(struct c_fileinfo, get_fileinfo, dump_time_statistics): New.
	* c-decl.c (c_decode_option): Handle -lang-objc here.
	(print_lang_identifier): Handle C_IS_RESERVED_WORD case.
	(grokdeclarator): Adjust for new RID scheme.
	(extract_interface_info): New stub.
	* c-lang.c: Don't declare yy_cur or parse_options.
	(lang_init_options): Call cpp_init.  Don't call
	cpp_options_init.
	(lang_init): Don't call check_newline if USE_CPPLIB.

	* c-lex.c: Don't include c-parse.h.  Do include timevar.h.
	Elide lots of unnecessary code if USE_CPPLIB.  Delete code
	rendered unnecessary by new architecture.  Move routines not
	shared with C++ to c-parse.in.  Maintain a local idea of the
	line number.    Handle C++ as well as C.
	[USE_CPPLIB]: Declare and register callbacks for #ident and
	for entering/leaving files.
	(init_c_lex, c_lex): Are now the entry points to this file.
	(check_newline): Break out directive handling to
	process_directive.
	(read_ucs, is_extended_char, utf8_extend_token): Moved here
	from C++ front end.
	(readescape, parse_float): Overhaul.
	(lex_number, lex_string, lex_charconst): Break out of c_lex
	(n'ee yylex).
	(get_fileinfo, update_header_times, dump_one_header,
	dump_time_statistics): New and/or moved here from C++.
	Support per-file data needed by C++ and per-header timing
	statistics (C++ only, at the moment).
	* c-lex.h: Update prototypes.  Add multiple include guard.
	* c-tree.h (struct lang_identifier): Add rid_code field.
	(C_IS_RESERVED_WORD, C_RID_CODE): New.

	* c-parse.in: Include c-pragma.h. Remove unnecesary calls to
	reinit_parse_for_function and/or position_after_white_space.
	(save_filename, save_lineno): Look ahead before saving.
	(label -> identifier ':'): Save file and line before shifting ':'.
	(reservedwords): No need to call get_identifier.
	(init_parse, finish_parse, yyerror, yylex, yyprint,
	make_pointer_declarator): Are now here for C/ObjC.
	(rid_to_yy): Conversion table from RID constants to Yacc codes.

	* c-pragma.c: Rewrite parsing logic to fit with cpplib's
	#pragma registry.  Provide dummy implementation of that
	interface if !USE_CPPLIB.
	* c-pragma.h: Update to match.

	* flags.h: Add multiple include guard.
	(flag_detailed_statistics): Moved here from C++.
	* toplev.c: Define flag_detailed_statistics.

	* gcc.c (C specs): Use %(trad_capable_cpp) for -E|-M|-MM case
	#if USE_CPPLIB.
	* timevar.def (TV_CPP, TV_LEX): New.
	* timevar.h: Add multiple include guard.

	* objc/lang-specs.h: Use %(trad_capable_cpp) for -E|-M|-MM case
	#if USE_CPPLIB.
	* objc/objc-act.c: Don't mention yy_cur or parse_options.
	Initialize cpplib properly.  Force lineno to 0 after first
	call to check_newline.  Don't handle -lang-objc here.
	Move forget_protocol_qualifiers and remember_protocol_qualifiers here.

cp:
	* Make-lang.in, Makefile.in: Remove all references to input.c,
	gxx.gperf, and hash.h.  Add ../c-lex.o to C_OBJS.
	* gxx.gperf, hash.h, input.c: Delete.
	* lang-specs.h: Pass -lang-c++ to cc1plus so cpplib is
	initialized properly.

	* class.c (fixup_pending_inline): Take a tree, not a
	struct pending_inline *.  All callers changed.
	(init_class_processing): Set RID_PUBLIC, RID_PRIVATE,
	RID_PROTECTED entries in ridpointers[] array here.
	* decl.c (duplicate_decls): Do not refer to struct
	pending_inline.
	(record_builtin_type, init_decl_processing): Use RID_MAX not
	CP_RID_MAX.
	(grokdeclarator): Use C_IS_RESERVED_WORD.
	* decl2.c (lang_decode_option): Ignore -lang-c++ for sake of
	cpplib.
	(grok_x_components): Do not inspect pending_inlines chain.

	* cp-tree.h (struct lang_identifier): Add rid_code entry.
	(C_IS_RESERVED_WORD, C_RID_CODE, C_RID_YYCODE): New.
	(flag_no_gnu_keywords, flag_operator_names, rid_to_yy): Declare.
	(DEFARG_LENGTH, struct pending_inline, TIME_IDENTIFIER_TIME,
	TIME_IDENTIFIER_FILEINFO): Kill.
	Update prototypes.
	* lex.h: Expunge cp_rid.  Rewrite RIDBIT macros to use just a
	single 32-bit word.
	* parse.y: Call do_pending_inlines unconditionally.
	reinit_parse_for_method is now snarf_method.  fn.defpen is no
	longer necessary.  Remove unnecessary <itype> annotation on
	SCOPE.  Do not refer to end_of_file or struct pending_inline.
	* semantics.c (begin_inline_definitions): Call
	do_pending_inlines unconditionally.

	* lex.c: Remove all code now shared with C front end.
	Initialize cpplib properly if USE_CPPLIB.  Put reserved words
	into the get_identifier table.  Rewrite pragma handling to
	work with the registry.  Move code to save tokens for later
	processing to spew.c.

	* spew.c: Rewrite everything in terms of token streams instead
	of text.  Move routines here from lex.c / input.c as
	appropriate.  GC-mark trees hanging off the pending inlines
	chain.

testsuite:
	* g++.old-deja/g++.benjamin/13478.C: Put meaningful tags on
	ERROR markers.
	* g++.old-deja/g++.brendan/crash8.C: Move ERROR marker up one line.
	* gcc.dg/c99-array-nonobj-1.c: Don't expect func[] cases to fail.
	* gcc.dg/wtr-label-1.c: Don't use unconstrained .* in error regexps.
	* gcc.dg/wtr-suffix-1.c: Correct error regexps.
	* gcc.dg/cpp/unc1.c, gcc.dg/cpp/unc2.c, gcc.dg/cpp/unc3.c:
	Preprocess only.
	* gcc.dg/cpp/unc4.c: Adjust line number in dg-error line.
	* gcc.dg/noncompile/const-ll-1.c: Generalize error regexp.

From-SVN: r36216
2000-09-07 00:37:14 +00:00
..
inc cxxabi.h (__cxa_vec_new2, [...]): Declare. 2000-08-17 15:05:43 +00:00
.cvsignore top level: 2000-07-14 07:13:19 +00:00
ChangeLog Integrated preprocessor. 2000-09-07 00:37:14 +00:00
ChangeLog.1
ChangeLog.2 split out <2000 entries 2000-07-01 23:01:47 -04:00
ChangeLog.egcs
Make-lang.in Integrated preprocessor. 2000-09-07 00:37:14 +00:00
Makefile.in Integrated preprocessor. 2000-09-07 00:37:14 +00:00
NEWS extend.texi: Mark named return value extension as deprecated. 2000-09-06 21:25:02 +00:00
call.c * call.c (build_scoped_method_call): Check it is not a namespace. 2000-09-01 09:32:26 +00:00
cfns.gperf
cfns.h
class.c Integrated preprocessor. 2000-09-07 00:37:14 +00:00
config-lang.in
cp-tree.def cp-tree.def (BOUND_TEMPLATE_TEMPLATE_PARM): New tree code. 2000-09-04 21:01:39 -04:00
cp-tree.h Integrated preprocessor. 2000-09-07 00:37:14 +00:00
cvt.c cvt.c (cp_convert_to_pointer): Pass itf_complain, not itf_no_attributes. 2000-08-17 14:09:21 +00:00
decl.c Integrated preprocessor. 2000-09-07 00:37:14 +00:00
decl.h
decl2.c Integrated preprocessor. 2000-09-07 00:37:14 +00:00
dump.c cp-tree.h (BV_USE_VCALL_INDEX_P): New macro. 2000-06-23 01:14:40 +00:00
errfn.c
error.c error.c (dump_typename): New function, broken out of ... 2000-09-06 09:21:35 +00:00
except.c Makefile.in (C_AND_OBJC_OBJS): Added c-semantics.o. 2000-07-01 22:23:01 -07:00
exception.cc typeck.c (mark_addressable): Never set TREE_USED. 2000-07-17 17:35:46 -04:00
expr.c
friend.c class.c (resolve_address_of_overloaded_function): Add explanation message. 2000-09-06 08:53:45 +00:00
g++.1
g++spec.c gcc.h (lang_specific_driver): Constify second argument. 2000-08-02 20:21:27 +00:00
gxxint.texi parse.y (template_arg): Convert TEMPLATE_DECL that is a template template paramter to... 2000-06-23 02:49:45 -04:00
init.c init.c (build_offset_ref): Deal with namespace scoped TEMPLATE_ID_EXPRs. 2000-09-06 09:04:00 +00:00
ir.texi * ir.texi (Expressions): Fix typo. 2000-08-26 18:26:52 +00:00
lang-options.h
lang-specs.h Integrated preprocessor. 2000-09-07 00:37:14 +00:00
lex.c Integrated preprocessor. 2000-09-07 00:37:14 +00:00
lex.h Integrated preprocessor. 2000-09-07 00:37:14 +00:00
mangle.c cp-tree.def (BOUND_TEMPLATE_TEMPLATE_PARM): New tree code. 2000-09-04 21:01:39 -04:00
method.c cp-tree.def (BOUND_TEMPLATE_TEMPLATE_PARM): New tree code. 2000-09-04 21:01:39 -04:00
mpw-config.in
mpw-make.sed
new.cc
new1.cc
new2.cc
operators.def operators.def (ALIGNOF_EXPR, [...]): Change new ABI mangling. 2000-09-04 03:22:54 +00:00
optimize.c Makefile.in (CXX_TREE_H): Add dependency on HTAB_H. 2000-09-05 07:31:27 +00:00
parse.y Integrated preprocessor. 2000-09-07 00:37:14 +00:00
pt.c pt.c (type_unification_real): Replace switch with if. 2000-09-06 09:34:00 +00:00
ptree.c cp-tree.def (BOUND_TEMPLATE_TEMPLATE_PARM): New tree code. 2000-09-04 21:01:39 -04:00
repo.c repo.c (repo_get_id): Handle the case where a class with virtual bases has a null TYPE_BINFO_VTABLE. 2000-07-04 03:47:11 -04:00
rtti.c rtti.c (build_dynamic_cast_1): Set "C" linkage for new abi runtime. 2000-08-09 09:57:55 +00:00
search.c cp-tree.def (BOUND_TEMPLATE_TEMPLATE_PARM): New tree code. 2000-09-04 21:01:39 -04:00
semantics.c Integrated preprocessor. 2000-09-07 00:37:14 +00:00
spew.c Integrated preprocessor. 2000-09-07 00:37:14 +00:00
tinfo.cc rtti.c (build_dynamic_cast_1): Set "C" linkage for new abi runtime. 2000-08-09 09:57:55 +00:00
tinfo.h
tinfo2.cc cxxabi.h (__pbase_type_info): Changed member names to match specifications. 2000-08-05 04:17:23 +00:00
tree.c tree.c (walk_tree): Expose tail recursion. 2000-09-06 05:52:51 +00:00
typeck.c error.c (dump_typename): New function, broken out of ... 2000-09-06 09:21:35 +00:00
typeck2.c cp-tree.h (enum_name_string): Remove prototype. 2000-08-18 09:15:51 +00:00
vec.cc cxxabi.h (__cxa_vec_new2, [...]): Declare. 2000-08-17 15:05:43 +00:00
xref.c