1. 02 Jan, 2002 1 commit
    • re PR c++/775 (2.97 error declaring nested class a friend) · d46a33b3
      cp:
      	PR c++/775
      	* cp-tree.h (handle_class_head): Adjust prototype.
      	* decl2.c (handle_class_head): Add DEFN_P and NEW_TYPE_P
      	parameters. Use for all class heads.
      	* parse.y (named_class_head_sans_basetype, named_class_head,
      	named_complex_class_head_sans_basetype,
      	named_class_head_sans_basetype_defn,
      	unnamed_class_head): Remove.
      	(class_head, class_head_apparent_template): Recognize class heads
      	(class_head_decl, class_head_defn): New reductions. Process class
      	heads.
      	(structsp): Adjust class definition and class declaration
      	reductions.
      	(maybe_base_class_list): Give diagnostic on empty list.
      testsuite:
      	* g++.dg/template/friend2.C: New test.
      	* g++.old-deja/g++/brendan/crash8.C: Adjust location of error.
      
      From-SVN: r48466
      Nathan Sidwell committed
  2. 26 Dec, 2001 1 commit
  3. 18 Dec, 2001 1 commit
    • cp-tree.h: Delete #defines for cp_error, cp_warning, cp_pedwarn, and cp_compiler_error. · 33bd39a2
      	* cp-tree.h: Delete #defines for cp_error, cp_warning,
      	cp_pedwarn, and cp_compiler_error.
      	* call.c, class.c, cp-tree.h, cvt.c, decl.c, decl2.c, error.c,
      	except.c, friend.c, init.c, lex.c, method.c, parse.y, pt.c,
      	rtti.c, search.c, semantics.c, spew.c, tree.c, typeck.c,
      	typeck2.c: Change calls to the above macros to use their
      	language-independent equivalents: error, warning, pedwarn, and
      	internal_error respectively.
      
      From-SVN: r48140
      Zack Weinberg committed
  4. 14 Dec, 2001 1 commit
    • c-common.h (COMPOUND_STMT_BODY_BLOCK): New macro. · ade3dc07
              * c-common.h (COMPOUND_STMT_BODY_BLOCK): New macro.
      
              * Make-lang.in (parse.h): Separate rule, just depend on parse.c.
      
              Use cleanups to run base and member destructors.
              * init.c (push_base_cleanups): New function, split out from...
              (build_delete): ...here.  Lose !TYPE_HAS_DESTRUCTOR code.
              * decl.c (finish_destructor_body): Move vbase destruction code to
              push_base_cleanups.
              (begin_function_body, finish_function_body): New fns.
              (finish_function): Move [cd]tor handling and call_poplevel to
              finish_function_body.
              (pushdecl): Skip the new level.
              * semantics.c (genrtl_try_block): Don't call end_protect_partials.
              (setup_vtbl_ptr): Call push_base_cleanups.
              * method.c (synthesize_method): Call {begin,end}_function_body.
              * pt.c (tsubst_expr): Handle COMPOUND_STMT_BODY_BLOCK.
              * cp-tree.h: Declare new fns.
              * parse.y (function_body, .begin_function_body): New nonterminals.
              (fndef, pending_inline, function_try_block): Use function_body.
              (ctor_initializer_opt, function_try_block): No longer has a value.
              (base_init): Remove .set_base_init token.
              (.set_base_init, compstmt_or_error): Remove.
              * Make-lang.in (parse.c): Expect two fewer s/r conflicts.
      
      From-SVN: r47987
      Jason Merrill committed
  5. 11 Dec, 2001 1 commit
    • re PR c++/51 (g++ reports error for ISO C++ example) · 270d8c65
      cp:
      	PR g++/51
      	* parse.y (frob_specs): Indicate it is a language linkage which
      	contained the extern.
      	* decl.c (grokdeclarator): Allow extern language linkage with
      	other specifiers.
      testsuite:
      	* g++.dg/other/linkage1.C: New test.
      	* g++.old-deja/g++.brendan/err-msg2.C: Alter to avoid two
      	specifiers.
      
      From-SVN: r47891
      Nathan Sidwell committed
  6. 10 Dec, 2001 1 commit
  7. 08 Dec, 2001 1 commit
    • c-lex.c (c_lex): Peek a token ahead for a string to concatenate... · cb97d97d
      	* c-lex.c (c_lex): Peek a token ahead for a string to concatenate,
      	using combine_strings to do the concatenation.
      	* c-parse.in: Replace uses of the string non-terminal with STRING.
      	Don't attempt string concatenation.
      	(OBJC_STRING): New terminal.
      	(string): Remove non-terminal.
      	(_yylex): Call combine_strings on function names.  Generate
      	OBJC_STRING terminals; don't pass '@' on to yacc.
      	* c-typeck.c (simple_asm_stmt): Don't concatenate strings here.
      	(build_asm_stmt): Similarly.
      cp:
      	* parse.y: Replace uses of the string non-terminal with STRING.
      	Don't perform string concatentaion here.
      	(string): Remove non-terminal.
      	* semantics.c (finish_asm_stmt): Don't concatenate strings here.
      
      From-SVN: r47792
      Neil Booth committed
  8. 03 Dec, 2001 1 commit
  9. 15 Nov, 2001 1 commit
    • parse.y: Add ... · 8a2b77e7
              * parse.y: Add ... IDENTIFIER SCOPE and ... PTYPENAME SCOPE expansions.
              * decl.c (make_typename_type): Handle getting a class template.
              * search.c (lookup_field_r): A class template is good enough for
              want_type.
      
              * call.c (convert_like_real): Only use cp_convert for the bad part.
              (standard_conversion): Also allow bad int->enum.
              * typeck.c (ptr_reasonably_similar): Also allow functions to
              interconvert.  Pointers to same-size integers are reasonably
              similar.
      
              * cvt.c (convert_to_void): If we build a new COND_EXPR, always
              give it void type.
      
      From-SVN: r47060
      Jason Merrill committed
  10. 13 Nov, 2001 1 commit
  11. 09 Nov, 2001 1 commit
    • c-lang.c (LANG_HOOKS_NAME): New. · 3ac88239
      	* c-lang.c (LANG_HOOKS_NAME): New.
      	(lang_hooks): Constify.
      	(c_init_options): Update.
      	(lang_identify): Remove.
      	* c-parse.in (language_string): Remove.
      	* dbxout.c: Include langhooks.h.
      	(dbxout_symbol_location): Update.
      	* dwarf2out.c: Include langhooks.h.
      	(gen_compile_unit_die): Update.
      	* dwarfout.c: Include langhooks.h.
      	(prototyped_attribute, output_compile_unit_die): Update.
      	* langhooks-def.h (LANG_HOOKS_NAME, LANG_HOOKS_IDENTIFIER_SIZE): New.
      	(LANG_HOOKS_INITIALIZER): Update.
      	* langhooks.h (struct lang_hooks): New members.  Constify.
      	* stringpool.c: Don't include toplev.h.
      	(set_identifier_size): Remove.
      	* toplev.c (toplev_main): Initialize identifier size.
      	(print_version): Update.
      	* tree.h (language_string, init_lex, lang_identify,
      	set_identifier_size): Remove.
      	* Makefile.in: Update dependencies.
      	* config/darwin.c: Include langhooks.h.
      	(func_name_maybe_scoped): Update.
      	* config/darwin.h (ASM_END_FILE): Update.
      	* config/nextstep.h (ASM_END_FILE): Update.
      	* config/nextstep21.h (ASM_END_FILE): Update.
      	* config/i386/sun386.h (ASM_END_FILE): Update.
      	* config/rs6000/rs6000.c (ASM_END_FILE): Include langhooks.h.
      	(rs6000_output_function_epilogue): Update.
      ada:
      	* misc.c (LANG_HOOKS_NAME, LANG_HOOKS_IDENTIFIER_SIZE): Override.
      	(struct lang_hooks): Constify.
      	(language_string, lang_identify): Remove.
      	* utils.c (init_decl_processing): Update.
      cp:
      	* cp-lang.c (LANG_HOOKS_NAME): Override.
      	(struct lang_hooks): Constify.
      	* lex.c (cxx_init_options): Update.
      	(lang_identify): Remove.
      	* parse.y (language_string): Remove.
      f:
      	* com.c (language_string, lang_identify): Remove.
      	(struct lang_hooks): Constify.
      	(LANG_HOOKS_NAME): Override.
      	(init_parse): Update.
      java:
      	* jcf-parse.c (init_lex): Remove.
      	* lang.c (language_string, lang_identify): Remove.
      	(struct lang_hooks): Constify.
      	(LANG_HOOKS_NAME): Override.
      	(init_parse): Update.
      objc:
      	* objc-act.c (LANG_HOOKS_NAME): Override.
      	(struct lang_hooks): Constify.
      	(objc_init_options): Update.
      	(lang_identify): Remove.
      
      From-SVN: r46874
      Neil Booth committed
  12. 23 Oct, 2001 1 commit
    • cp-tree.def (UNBOUND_CLASS_TEMPLATE): New tree node. · b8c6534b
      	* cp-tree.def (UNBOUND_CLASS_TEMPLATE): New tree node.
      	* cp-tree.h (make_unbound_class_template): Prototype new function.
      	* decl.c (make_unbound_class_template): New function.
      	* decl2.c (arg_assoc_template_arg): Handle UNBOUND_CLASS_TEMPLATE.
      	* error.c (dump_type): Likewise.
      	* mangle.c (write_type): Likewise.
      	* parse.y (template_parm): Likewise.
      	(template_argument): Use make_unbound_class_template.
      	* pt.c (convert_template_argument): Handle UNBOUND_CLASS_TEMPLATE.
      	(tsubst): Likewise.
      	(tsubst_copy): Likewise.
      	(unify): Likewise.
      	* tree.c (walk_tree): Likewise.
      	* typeck.c (comptypes): Likewise.
      
      From-SVN: r46430
      Kriang Lerdsuwanakij committed
  13. 11 Oct, 2001 1 commit
    • c-parse.in (asm_operand): Allow named operands. · 84b72302
              * c-parse.in (asm_operand): Allow named operands.
              * genconfig.c (max_recog_operands): Set to 29.
              * local-alloc.c (requires_inout): Skip multiple digits.
              * recog.c (asm_operand_ok): Likewise.
              (preprocess_constraints): Use strtoul for matching constraints.
              (constrain_operands): Likewise.
              * regmove.c (find_matches): Likewise.
              * reload.c (find_reloads): Likewise.
              * stmt.c (parse_output_constraint): Don't reject in-out
              constraint on operands > 9.  Reject '[' in constraint.
              (expand_asm_operands): Handle named operands.  Use strtoul
              for matching constraints.
              (check_operand_nalternatives): Split out from expand_asm_operands.
              (check_unique_operand_names): New.
              (resolve_operand_names, resolve_operand_name_1): New.
      
              * doc/extend.texi (Extended Asm): Document named operands.
              * doc/md.texi (Simple Constraints): Document matching constraints
              on operands > 9.
      
              * parse.y (asm_operand): Allow named operands.
              * semantics.c (finish_asm_stmt): Tweek for changed location
              of the operand constrant.
      
      From-SVN: r46179
      Richard Henderson committed
  14. 02 Oct, 2001 1 commit
  15. 21 Sep, 2001 1 commit
    • Table-driven attributes. · 91d231cb
      	* c-decl.c, config/alpha/alpha.c, config/arc/arc.c,
      	config/arm/arm.c, config/arm/pe.c, config/avr/avr.c,
      	config/avr/avr.h, config/d30v/d30v.h, config/fr30/fr30.h,
      	config/h8300/h8300.c, config/i386/cygwin.h, config/i386/winnt.c,
      	config/m32r/m32r.c, config/mcore/mcore.c, config/sh/sh.c,
      	config/stormy16/stormy16.h, config/v850/v850.c, doc/c-tree.texi,
      	doc/tm.texi, ggc-common.c, integrate.c, print-tree.c, tree.c,
      	tree.h: Rename DECL_MACHINE_ATTRIBUTES to DECL_ATTRIBUTES.
      	* tree.h (struct tree_decl): Change machine_attributes to
      	attributes.
      	* doc/c-tree.texi: Document that all attributes are now attached
      	to decls and types.
      	* c-common.c (add_attribute, attrtab, attrtab_idx,
      	default_valid_lang_attribute, valid_lang_attribute): Remove.
      	(attribute_tables, attributes_initialized,
      	c_common_attribute_table, default_lang_attribute_table): New
      	variables.
      	(handle_packed_attribute, handle_nocommon_attribute,
      	handle_common_attribute, handle_noreturn_attribute,
      	handle_unused_attribute, handle_const_attribute,
      	handle_transparent_union_attribute, handle_constructor_attribute,
      	handle_destructor_attribute, handle_mode_attribute,
      	handle_section_attribute, handle_aligned_attribute,
      	handle_weak_attribute, handle_alias_attribute,
      	handle_no_instrument_function_attribute,
      	handle_no_check_memory_usage_attribute, handle_malloc_attribute,
      	handle_no_limit_stack_attribute, handle_pure_attribute): New
      	functions.
      	(init_attributes, decl_attributes): Rewrite to implement
      	table-driven attributes.
      	* c-common.h (enum attribute_flags): Move to tree.h.
      	* c-format.c (decl_handle_format_attribute,
      	decl_handle_format_arg_attribute): Rename to
      	handle_format_attribute and handle_format_arg_attribute.  Update
      	for table-driven attributes.
      	* c-common.h (decl_handle_format_attribute,
      	decl_handle_format_arg_attribute): Remove prototypes.
      	(handle_format_attribute, handle_format_arg_attribute): Add
      	prototypes.
      	* c-decl.c (grokdeclarator): Handle attributes nested inside
      	declarators.
      	* c-parse.in (setattrs, maybe_setattrs): Remove.
      	(maybe_type_quals_setattrs): Rename to maybe_type_quals_attrs.
      	Update to handle nested attributes properly.
      	(maybe_resetattrs, after_type_declarator,
      	parm_declarator_nostarttypename, notype_declarator, absdcl1_noea,
      	absdcl1_ea, direct_absdcl1): Update to handle nested attributes
      	properly.
      	(make_pointer_declarator): Update to handle nested attributes
      	properly.
      	* doc/extend.texi: Update documentation of limits of attributes
      	syntax.  Warn about problems with attribute semantics in C++.
      	* target.h (struct target): Remove valid_decl_attribute and
      	valid_type_attribute.  Add attribute_table and
      	function_attribute_inlinable_p.
      	* target-def.h (TARGET_VALID_DECL_ATTRIBUTE,
      	TARGET_VALID_TYPE_ATTRIBUTE): Remove.
      	(TARGET_ATTRIBUTE_TABLE, TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P):
      	Add.
      	(TARGET_INITIALIZER): Update.
      	* integrate.c (FUNCTION_ATTRIBUTE_INLINABLE_P): Remove default
      	definition.
      	(function_attribute_inlinable_p): New function.  Check for the
      	presence of any machine attributes before using
      	targetm.function_attribute_inlinable_p.
      	(function_cannot_inline_p): Update.
      	* Makefile.in (integrate.o): Update dependencies.
      	* doc/tm.texi: Update documentation of target attributes and
      	example definition of TARGET_VALID_TYPE_ATTRIBUTE.
      	* tree.c (default_valid_attribute_p, valid_machine_attribute):
      	Remove.
      	(default_target_attribute_table,
      	default_function_attribute_inlinable_p): New.
      	(lookup_attribute): Update comment to clarify handling of multiple
      	attributes with the same name.
      	(merge_attributes, attribute_list_contained): Allow multiple
      	attributes with the same name but different arguments to appear in
      	the same attribute list.
      	* tree.h (default_valid_attribute_p): Remove prototype.
      	(struct attribute_spec): New.
      	(default_target_attribute_table): Declare.
      	(enum attribute_flags): Move from c-common.h.  Add
      	ATTR_FLAG_TYPE_IN_PLACE.
      	(default_function_attribute_inlinable_p): Declare.
      	* config/alpha/alpha.c (vms_valid_decl_attribute_p): Remove.
      	(TARGET_VALID_DECL_ATTRIBUTE): Don't define.
      	(TARGET_ATTRIBUTE_TABLE): Define.
      	(vms_attribute_table): New.
      	* config/arc/arc.c (arc_valid_decl_attribute): Remove.
      	(TARGET_VALID_DECL_ATTRIBUTE): Don't define.
      	(TARGET_ATTRIBUTE_TABLE): Define.
      	(arc_attribute_table, arc_handle_interrupt_attribute): New.
      	* config/arm/arm.c (arm_valid_type_attribute_p,
      	arm_valid_decl_attribute_p, arm_pe_valid_decl_attribute_p):
      	Remove.
      	(TARGET_VALID_TYPE_ATTRIBUTE, TARGET_VALID_DECL_ATTRIBUTE): Don't
      	define.
      	(TARGET_ATTRIBUTE_TABLE): Define.
      	(arm_attribute_table, arm_handle_fndecl_attribute,
      	arm_handle_isr_attribute): New.
      	* config/avr/avr.c (avr_valid_type_attribute,
      	avr_valid_decl_attribute): Remove.
      	(TARGET_VALID_DECL_ATTRIBUTE, TARGET_VALID_TYPE_ATTRIBUTE): Don't
      	define.
      	(TARGET_ATTRIBUTE_TABLE): Define.
      	(avr_attribute_table, avr_handle_progmem_attribute,
      	avr_handle_fndecl_attribute): New.
      	* config/c4x/c4x.c (c4x_valid_type_attribute_p): Remove.
      	(TARGET_VALID_TYPE_ATTRIBUTE): Don't define.
      	(TARGET_ATTRIBUTE_TABLE): Define.
      	(c4x_attribute_table, c4x_handle_fntype_attribute): New.
      	* config/h8300/h8300.c (h8300_valid_decl_attribute): Remove.
      	(TARGET_VALID_DECL_ATTRIBUTE): Don't define.
      	(TARGET_ATTRIBUTE_TABLE): Define.
      	(h8300_attribute_table, h8300_handle_fndecl_attribute,
      	h8300_handle_eightbit_data_attribute,
      	h8300_handle_tiny_data_attribute): New.
      	* config/i386/i386-protos.h (ix86_valid_type_attribute_p,
      	i386_pe_valid_decl_attribute_p, i386_pe_valid_type_attribute_p):
      	Remove prototypes.
      	(ix86_handle_dll_attribute, ix86_handle_shared_attribute): New
      	declarations.
      	* config/i386/i386.c (ix86_valid_type_attribute_p: Remove.
      	(TARGET_VALID_TYPE_ATTRIBUTE, TARGET_VALID_DECL_ATTRIBUTE): Don't
      	define.
      	(TARGET_ATTRIBUTE_TABLE): Define.
      	(ix86_attribute_table, ix86_handle_cdecl_attribute,
      	ix86_handle_regparm_attribute): New.
      	* config/i386/winnt.c (i386_pe_valid_decl_attribute_p,
      	i386_pe_valid_type_attribute_p): Remove.
      	(ix86_handle_dll_attribute, ix86_handle_shared_attribute): New.
      	* config/ia64/ia64.c (ia64_valid_type_attribute): Remove.
      	(TARGET_VALID_TYPE_ATTRIBUTE): Don't define.
      	(TARGET_ATTRIBUTE_TABLE): Define.
      	(ia64_attribute_table): New.
      	* config/m32r/m32r.c (m32r_valid_decl_attribute, interrupt_ident1,
      	interrupt_ident2, model_ident1, model_ident2): Remove.
      	(TARGET_VALID_DECL_ATTRIBUTE): Don't define.
      	(TARGET_ATTRIBUTE_TABLE): Define.
      	(init_idents): Update.
      	(m32r_attribute_table, m32r_handle_model_attribute): New.
      	* config/m68hc11/m68hc11.c (m68hc11_valid_type_attribute_p):
      	Remove.
      	(TARGET_VALID_TYPE_ATTRIBUTE): Don't define.
      	(TARGET_ATTRIBUTE_TABLE): Define.
      	(m68hc11_attribute_table, m68hc11_handle_fntype_attribute): New.
      	* config/mcore/mcore.c (mcore_valid_decl_attribute): Remove.
      	(TARGET_VALID_DECL_ATTRIBUTE): Don't define.
      	(TARGET_ATTRIBUTE_TABLE): Define.
      	(mcore_attribute_table, mcore_handle_naked_attribute): New.
      	* config/ns32k/ns32k.c (ns32k_valid_type_attribute_p): Remove.
      	(TARGET_VALID_TYPE_ATTRIBUTE): Don't define.
      	(TARGET_ATTRIBUTE_TABLE): Define.
      	(ns32k_attribute_table, ns32k_handle_fntype_attribute): New.
      	* config/rs6000/rs6000.c (rs6000_valid_type_attribute_p): Remove.
      	(TARGET_VALID_TYPE_ATTRIBUTE): Don't define.
      	(TARGET_ATTRIBUTE_TABLE): Define.
      	(rs6000_attribute_table, rs6000_handle_longcall_attribute): New.
      	* config/sh/sh.c (sh_valid_decl_attribute): Remove.
      	(TARGET_VALID_DECL_ATTRIBUTE): Don't define.
      	(TARGET_ATTRIBUTE_TABLE): Define.
      	(sh_attribute_table, sh_handle_interrupt_handler_attribute,
      	sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
      	New.
      	* config/stormy16/stormy16.c (stormy16_valid_type_attribute):
      	Remove.
      	(TARGET_VALID_TYPE_ATTRIBUTE): Don't define
      	(TARGET_ATTRIBUTE_TABLE): Define.
      	(stormy16_attribute_table, stormy16_handle_interrupt_attribute):
      	New.
      	* config/v850/v850.c (v850_valid_decl_attribute): Remove.
      	(TARGET_VALID_DECL_ATTRIBUTE): Don't define.
      	(TARGET_ATTRIBUTE_TABLE): Define.
      	(v850_attribute_table, v850_handle_interrupt_attribute,
      	v850_handle_data_area_attribute): New.
      	* config/v850/v850-c.c (mark_current_function_as_interrupt):
      	Return void.  Call decl_attributes instead of
      	valid_machine_attribute.
      
      cp:
      	Table-driven attributes.
      	* decl.c: Rename DECL_MACHINE_ATTRIBUTES to DECL_ATTRIBUTES.
      	* decl2.c (cplus_decl_attributes): Only take one attributes
      	parameter.
      	* cp-tree.c (cplus_decl_attributes): Update prototype.
      	* class.c (finish_struct), decl.c (start_decl, start_function),
      	decl2.c (grokfield), friend.c (do_friend), parse.y
      	(parse_bitfield): Update calls to cplus_decl_attributes.
      	* decl.c (grokdeclarator): Take a pointer to a single ordinary
      	attribute list.
      	* decl.h (grokdeclarator): Update prototype.
      	* decl2.c (grokfield): Take a single ordinary attribute list.
      	* friend.c (do_friend): Likewise.
      	* decl.c (shadow_tag, groktypename, start_decl,
      	start_handler_parms, grokdeclarator, grokparms, start_function,
      	start_method), decl2.c (grokfield, grokbitfield, grokoptypename),
      	parse.y (parse_field, parse_bitfield, component_decl_1), pt.c
      	(process_template_parm, do_decl_instantiation): Pass single
      	ordinary attribute lists around.
      	* decl.c (grokdeclarator): Correct handling of nested attributes.
      	Revert the patch
      	1998-10-18  Jason Merrill  <jason@yorick.cygnus.com>
      		* decl.c (grokdeclarator): Embedded attrs bind to the right,
      		not the left.
      	.
      	* cp-tree.h (cp_valid_lang_attribute): Remove declaration
      	(cp_attribute_table): Declare.
      	* decl.c (valid_lang_attribute): Don't define.
      	(lang_attribute_table): Define.
      	(init_decl_processing): Initialize lang_attribute_table instead of
      	valid_lang_attribute.
      	* tree.c (cp_valid_lang_attribute): Remove.
      	(handle_java_interface_attribute, handle_com_interface_attribute,
      	handle_init_priority_attribute): New functions.
      	(cp_attribute_table): New array.
      	* decl2.c (import_export_class): Don't use
      	targetm.valid_type_attribute.
      
      testsuite:
      	Table-driven attributes.
      	* g++.dg/ext/attrib1.C: New test.
      
      From-SVN: r45718
      Joseph Myers committed
  16. 24 Aug, 2001 1 commit
    • c-common.c (c_alignof, [...]): Move here... · 0213a355
              * c-common.c (c_alignof, c_alignof_expr): Move here...
              * c-typeck.c: ...from here.
              * c-tree.h, c-common.h: Adjust.
      
              * tree.c (cp_build_qualified_type_real): Use get_qualified_type.
              (build_cplus_array_type): Use cp_build_qualified_type, not
              TYPE_MAIN_VARIANT, to get an unqualified version.
      
              * decl2.c (grok_alignof): Lose.
              (build_expr_from_tree): Use expr_sizeof and c_alignof_expr.
              * typeck.c (c_alignof): Lose.
              * semantics.c (finish_sizeof, finish_alignof): New.
              * parse.y: Use them.
              * cp-tree.h: Declare them.
      
      From-SVN: r45145
      Jason Merrill committed
  17. 13 Jul, 2001 1 commit
    • c-common.c (decl_attributes): Take a pointer to the node to which attributes are to be attached... · 59387d2e
      	* c-common.c (decl_attributes): Take a pointer to the node to
      	which attributes are to be attached, and a flags argument.
      	* c-common.h (enum attribute_flags): New.
      	(decl_attributes): Update prototype.
      	* c-decl.c (start_decl, push_parm_decl, finish_struct,
      	finish_enum, start_function): Update calls to decl_attributes.
      	* c-parse.in (component_declarator, component_notype_declarator,
      	label): Update calls to decl_attributes.
      
      cp:
      	* decl2.c (cplus_decl_attributes): Take a pointer to the node to
      	which attributes are to be attached, and a flags argument.  Update
      	call to decl_attributes.
      	(grokfield): Update call to decl_attributes.
      	* class.c (finish_struct): Update call to cplus_decl_attributes.
      	* cp-tree.h (cplus_decl_attributes): Update prototype.
      	* decl.c (start_decl, grokdeclarator, start_function): Update
      	calls to decl_attributes and cplus_decl_attributes.
      	* friend.c (do_friend): Update call to cplus_decl_attributes.
      	* parse.y (parse_bitfield): Update call to cplus_decl_attributes.
      
      From-SVN: r43995
      Joseph Myers committed
  18. 11 Jul, 2001 2 commits
  19. 22 May, 2001 1 commit
  20. 21 May, 2001 1 commit
    • cp-tree.def (START_CATCH_STMT): Lose. · 1a6025b4
              * cp-tree.def (START_CATCH_STMT): Lose.
              * dump.c (cp_dump_tree): Don't dump it.  Do dump HANDLER_PARMS.
              * tree.c (cp_statement_code_p): Don't case it.
              * semantics.c (cp_expand_stmt): Likewise.
              * except.c (expand_start_catch_block): Don't start any blocks.
              Return the type.
              (expand_end_catch_block): Don't end any blocks.
              * parse.y (handler): Don't pass anything from finish_handler_parms
              to finish_handler.
              * pt.c (tsubst_expr): Likewise.
              * semantics.c (begin_handler): Call note_level_for_catch here.
              (finish_handler_parms): Don't return anything.
              (genrtl_catch_block, begin_catch_block): Lose.
              (genrtl_handler): Call expand_start_catch here.
              * cp-tree.h (START_CATCH_TYPE): Lose.
              (HANDLER_TYPE): New.
      
      From-SVN: r42388
      Jason Merrill committed
  21. 11 May, 2001 1 commit
  22. 24 Apr, 2001 1 commit
    • Lazy __FUNCTION__ generation. · 0ba8a114
      gcc:
      	Lazy __FUNCTION__ generation.
      	* c-common.h (RID_FUNCTION_NAME, RID_PRETTY_FUNCTION_NAME,
      	RID_C99_FUNCTION_NAME): New _RIDs.
      	(CTI_FUNCTION_ID, CTI_PRETTY_FUNCTION_ID, CTI_FUNC_ID): Remove.
      	(CTI_FUNCTION_NAME_DECL, CTI_PRETTY_FUNCTION_NAME_DECL,
      	CTI_C99_FUNCTION_NAME_DECL, CTI_SAVED_FUNCTION_NAME_DECLS): New
      	global tree slots.
      	(function_id_node, pretty_function_id_node, func_id_node): Remove.
      	(c99_function_name_decl_node, function_name_decl_node,
      	pretty_function_name_decl_node, saved_function_name_decls):
      	Declare.
      	(struct language_function): Remove x_function_name_declared_p.
      	(make_fname_decl): Remove a parameter.
      	(declare_function_names): Remove prototype.
      	(start_fname_decls, finish_fname_decls): Prototype.
      	(fname_as_string): Likewise.
      	(fname_string, fname_decl): Likewise.
      	* c-common.c (make_fname_decl): Adjust.
      	(struct fname_var_t): New struct.
      	(fname_vars): New static array.
      	(declare_function_name): Remove.
      	(start_fname_decls, finish_fname_decls): New functions.
      	(fname_as_string): New function from remnants of
      	declare_function_name.
      	(fname_string, fname_decl): New functions.
      
      	* c-decl.c (c_function_name_declared_p): Remove.
      	(init_decl_processing): Don't generate __FUNCTION__ et al ids,
      	don't call declare_function_name. Call start_fname_decls.
      	(c_make_fname_decl): Adjust parameters. Generate the name. Don't
      	clobber the line number. Call finish_decl.
      	(start_function): Call start_fname_decls.
      	(finish_function): Call finish_fname_decls.
      	Remove c_function_name_declared_p.
      	(push_c_function_context): Don't push c_function_name_declared_p.
      	(pop_c_function_context): Don't pop c_function_name_declared_p.
      	(c_begin_compound_stmt): Don't check c_function_name_declared_p.
      	* c-parse.in (STRING_FUNC_NAME, VAR_FUNC_NAME): New tokens.
      	(program): Call finish_fname_decls for C.
      	(primary): Add VAR_FUNC_NAME.
      	(reswords): Add slots for __FUNCTION__ et al.
      	(rid_to_yy): Add mappings for __FUNCTION__ et al.
      	(yylexname): If it's a STRING_FUNC_NAME generate the function name
      	now. Don't look for VAR_DECLs containing __FUNCTION__ et al.
      	* c-semantics.c (prune_unused_decls): Remove.
      	(finish_stmt_tree): Don't call prune_unused_decls.
      	(genrtl_decl_stmt): Don't prune unused decls here.
      cp:
      	Lazy __FUNCTION__ generation.
      	* cp-tree.def (FUNCTION_NAME): Remove.
      	* cp-tree.h (function_name_declared_p): Remove.
      	(cp_fname_init): Prototype.
      	* decl.c (init_decl_processing): Don't generate __FUNCTION__ et al ids,
      	don't call declare_function_name. Call start_fname_decls.
      	(cp_make_fname_decl): Adjust parameters. Generate the name. Don't
      	clobber the line number.
      	(cp_fname_init): New function.
      	(start_function): Call start_fname_decls.
      	(finish_function): Call finish_fname_decls.
      	* lex.c (reswords): Add slots for __FUNCTION__ et al.
      	(rid_to_yy): Add mappings for __FUNCTION__ et al.
      	* optimize.c (maybe_clone_body): Remove function_name_declared_p.
      	* parse.y (VAR_FUNC_NAME): New token.
      	(primary): Add VAR_FUNC_NAME.
      	* pt.c (tsubst_decl): Adjust a DECL_PRETTY_FUNCTION_P's
      	generation.
      	(tsubst, FUNCTION_NAME case): Remove.
      	(tsubst_copy, FUNCTION_NAME case): Remove.
      	(tsubst_expr, DECL_STMT case): Be careful with a
      	DECL_PRETTY_FUNCTION_P.
      	(instantiate_decl): Remove function_name_declared_p.
      	* semantics.c (begin_compound_statement): Don't call
      	declare_function_name here.
      	(setup_vtbl_ptr). Don't save & restore function_name_declared_p.
      	(finish_translation_unit): Call finish_fname_decls.
      	(expand_body): Remove function_name_declared_p.
      	* typeck2.c (digest_init): Allow any ERROR_MARK.
      testsuite:
      	* gcc.dg/c99-func-2.c: Remove xfail.
      	* gcc.dg/c99-func-3.c: Remove xfail.
      	* gcc.dg/c99-func-4.c: Remove xfail.
      
      From-SVN: r41520
      Nathan Sidwell committed
  23. 21 Apr, 2001 1 commit
  24. 26 Mar, 2001 1 commit
    • Implement DR 209 · 788bf0e3
      cp:
      	Implement DR 209
      	* cp-tree.h (skip_type_access_control,
      	reset_type_access_control): Prototype.
      	* decl.c (grokdeclarator): Access of friends is not checked.
      	* parse.y (component_decl_list): Reset type access control.
      	* semantics.c (decl_type_access_control): Clear
      	current_type_lookups.
      	(save_type_access_control): Don't save if not deferring.
      	(skip_type_access_control, reset_type_access_control): New
      	functions.
      	(begin_class_definition): Do type access control for basetypes.
      	Start deferred access control.
      	(finish_class_definition): Resume immediate access control if
      	this is a local class.
      testsuite:
      	* g++.old-deja/g++.other/friend12.C: New test.
      	* g++.old-deja/g++.other/friend9.C: Expect no errors.
      	* g++.old-deja/g++.robertl/eb56.C: Make typedef public.
      
      From-SVN: r40841
      Nathan Sidwell committed
  25. 22 Mar, 2001 1 commit
  26. 14 Feb, 2001 1 commit
  27. 12 Feb, 2001 1 commit
    • extend.texi (Deprecated): Deprecate new initializer lists. · 82c18d5c
      .:	* extend.texi (Deprecated): Deprecate new initializer lists.
      cp:
      	* errfn.c (cp_deprecated): Tweak diagnostic text.
      	* parse.y (new_initializer): Deprecate initializer lists
      	extension.
      testsuite:
      	* g++.old-deja/g++.robertl/eb63.C: Remove new initializer list
      	case.
      	* g++.old-deja/g++.ext/arrnew.C: Deprecate.
      
      From-SVN: r39603
      Nathan Sidwell committed
  28. 29 Jan, 2001 1 commit
    • tree.c, tree.h (build_parse_node): Remove; was identical to build_nt. · 718b8ea5
      	* tree.c, tree.h (build_parse_node): Remove; was identical to
      	build_nt.
      	* c-lang.c (start_cdtor), objc/objc-act.c
      	(build_module_descriptor): Use build_nt instead of
      	build_parse_node.
      
      cp:
      	* decl2.c (build_expr_from_tree), lex.c (make_pointer_declarator,
      	make_reference_declarator, make_call_declarator), method.c
      	(implicitly_declare_fn), parse.y (namespace_using_decl,
      	notype_unqualified_id, expr_or_declarator, new_type_id,
      	after_type_declarator, direct_after_type_declarator,
      	notype_declarator, complex_notype_declarator,
      	complex_direct_notype_declarator, qualified_id,
      	notype_qualified_id, overqualified_id, direct_new_declarator,
      	absdcl, direct_abstract_declarator, conversion_declarator), pt.c
      	(tsubst), semantics.c (begin_constructor_declarator): Use build_nt
      	instead of build_parse_node.
      
      From-SVN: r39332
      Joseph Myers committed
  29. 18 Jan, 2001 1 commit
  30. 11 Jan, 2001 2 commits
    • call.c (convert_default_arg): Check for unprocessed DEFAULT_ARG. · 96a1e32d
      cp:
      	* call.c (convert_default_arg): Check for unprocessed
      	DEFAULT_ARG.
      	* cp-tree.h (replace_defarg): Move to spew.c.
      	(maybe_snarf_defarg, add_defarg_fn, do_pending_defargs): Move to
      	spew.c, which is where they really are.
      	(done_pending_defargs): Declare.
      	(unprocessed_defarg_fn): Declare.
      	* decl.c (replace_defarg): Move to spew.c
      	* parse.y (structsp): Call done_pending_defargs.
      	* spew.c (defarg_fns): Rearrange list structure.
      	(defarg_fnsdone): New static variable.
      	(defarg_depfns): New static variable.
      	(init_spew): Adjust.
      	(add_defarg_fn): Store the type in TREE_TYPE.
      	(do_pending_defargs): Detect and deal with ordering constraints
      	and circularity.
      	(done_pending_defargs): New function.
      	(unprocessed_defarg_fn): New function.
      	(replace_defarg): Moved from decl.c. Robustify. Don't save
      	if circularity detected.
      testsuite:
      	* g++.old-deja/g++.other/defarg7.C: New test.
      	* g++.old-deja/g++.other/defarg8.C: New test.
      
      From-SVN: r38903
      Nathan Sidwell committed
    • parse.y (template_parm_header, [...]): New reductions. · b37bf5bd
      cp:
      	* parse.y (template_parm_header, template_spec_header): New
      	reductions. Split out from ...
      	(template_header): ... here. Use them.
      	(template_template_parm): Use template_parm_header.
      	* semantics.c (finish_template_template_parm): Add assert.
      testsuite:
      	* g++.old-deja/g++.pt/crash63.C: New test.
      
      From-SVN: r38900
      Nathan Sidwell committed
  31. 05 Jan, 2001 1 commit
  32. 03 Jan, 2001 1 commit
    • init.c (build_default_init): New fn. · f30efcb7
              * init.c (build_default_init): New fn.
              (perform_member_init): Split out from here.
              (build_new_1): Use it.  Simplify initialization logic.
              (build_vec_init): Take an array, rather than a pointer and maxindex.
              Speed up simple initializations.  Don't clean up if we're assigning.
              * cp-tree.h: Adjust.
              * decl2.c (do_static_initialization): Remove TREE_VEC case.
              * parse.y (new_initializer): Return void_zero_node for ().
              * typeck.c (build_modify_expr): Handle getting a CONSTRUCTOR.
              * typeck2.c (digest_init): Only complain about user-written
              CONSTRUCTORs.
      
      From-SVN: r38643
      Jason Merrill committed
  33. 02 Jan, 2001 1 commit
  34. 21 Dec, 2000 1 commit
    • pt.c (tsubst_decl): A FUNCTION_DECL has DECL_RESULT, not DECL_TEMPLATE_RESULT. · 477f6664
              * pt.c (tsubst_decl): A FUNCTION_DECL has DECL_RESULT, not
              DECL_TEMPLATE_RESULT.
      
              * search.c (lookup_field_r): Call lookup_fnfields_1, not
              lookup_fnfields_here.
      
              * parse.y (typename_sub2): Return the TYPE_DECL, not the type.
      
              * call.c (build_object_call): Also allow conversions that return
              reference to pointer to function.
              (add_conv_candidate): Handle totype being ref to ptr to fn.
              (build_field_call): Also allow members of type reference to function.
              Lose support for calling pointer to METHOD_TYPE fields.
      
              * error.c (dump_expr): Handle *_CAST_EXPR.
      
              * typeck2.c (build_scoped_ref): Always convert to the naming class.
      
              * tree.c (break_out_cleanups): Lose.
              * cp-tree.h: Remove prototype.
              * typeck.c (build_component_ref): Don't break_out_cleanups.
              (build_compound_expr): Likewise.
              * semantics.c (finish_expr_stmt): Likewise.
      
      From-SVN: r38417
      Jason Merrill committed
  35. 20 Dec, 2000 1 commit
    • cp-tree.h: Update declarations. · 3e4d04a1
              * cp-tree.h: Update declarations.
              * decl.c (finish_case_label): Return the new stmt node.
              * semantics.c (finish_goto_stmt): Likewise.
              (finish_expr_stmt, finish_return_stmt): Likewise.
              (finish_break_stmt, finish_continue_stmt): Likewise.
              (finish_asm_stmt): Likewise.
              * parse.y (already_scoped_stmt): Set STMT_LINENO.
              (compstmt, implicitly_scoped_stmt, stmt): Likewise.
              (simple_if, simple_stmt): Return the new stmt node.
              (save_lineno): New.
      
      From-SVN: r38401
      Richard Henderson committed
  36. 28 Nov, 2000 1 commit
  37. 24 Nov, 2000 1 commit
  38. 21 Nov, 2000 1 commit