Commit Graph

1678 Commits

Author SHA1 Message Date
Volker Reichelt
4f543d151e re PR c++/28343 (ICE with invalid asm specifier for struct member)
PR c++/28343
	* decl.c (cp_finish_decl): Check asmspec_tree for error_mark_node.
	* decl2.c (grokfield): Likewise.

	* g++.dg/ext/asmspec1.C: New test.

From-SVN: r115436
2006-07-14 09:43:23 +00:00
Lee Millward
417fa55ba5 re PR c++/27820 (ICE with duplicate label)
PR c++/27820
	* decl.c (define_label): Return error_mark_node on error.
	* semantics.c (finish_label_stmt): Don't call
	add_stmt for invalid labels.

	* g++.dg/other/label1.C: New test.


Co-Authored-By: Andrew Pinski <pinskia@gmail.com>

From-SVN: r115265
2006-07-07 17:57:12 +00:00
Jason Merrill
b9e7569630 re PR c++/26905 (default-visibility class symbol improperly resolved as hidden-visibility)
PR c++/26905
        PR c++/26612
        PR c++/27000
        PR c++/26984
        PR c++/19134
        * tree.c (build_decl_stat): Don't hande #pragma visibility here.
        * c-common.c (c_determine_visibility): Handle it here.
        * c-decl.c (finish_decl): Call c_determine_visibility for
        functions, too.
        * flags.h (enum symbol_visibility): Sort from most to least visibility.
        * tree.h: Likewise.
        * varasm.c (default_assemble_visibility): Likewise.
        * c-common.c (handle_visibility_attribute): Complain about trying
        to give visibility to an already defined class, or trying to change
        declared visibility. Always attach the attribute.
        * cp/decl2.c (determine_visibility): Overhaul.
        (determine_visibility_from_class): Likewise.
        (min_vis_r, type_visibility, constrain_visibility): New fns.
        (constrain_visibility_for_template): Likewise.
        (constrain_class_visibility): Likewise.
        * cp/decl.c (cp_finish_decl): Call determine_visibility for function
        decls, too.
        * cp/name-lookup.c (pushtag): Call determine_visibility.
        * cp/decl.c (duplicate_decls): Don't copy visibility from template to
        specialization.
        * cp/pt.c (check_explicit_specialization): Likewise.
        (lookup_template_class, tsubst_decl): Call determine_visibility.
        * cp/class.c (finish_struct_1): Call constrain_class_visibility.

        PR c++/26905
        PR c++/21675
        PR c++/17470
        * cp/parser.c (cp_parser_explicit_instantiation): Pass the attributes
        to grokdeclarator.
        (cp_parser_type_specifier): Allow 'enum __attribute ((...)) E'.
        (cp_parser_enum_specifier): Likewise.
        (cp_parser_elaborated_type_specifier): Apply attributes if this
        declares only the class.
        (cp_parser_class_specifier): Apply leading attributes immediately.
        * cp/semantics.c (begin_class_definition): Add attributes parameter,
        apply them to the type.
        * attribs.c (decl_attributes): Ignore type-in-place attributes
        once the type has been defined.

        PR c++/21581
        PR c++/25915
        * cp/tree.c (decl_anon_ns_mem_p): New function.
        * cp/cp-tree.h: Declare it.
        * cp/decl2.c (determine_visibility): Make anonymous namespace
        members static.
        (min_vis_r, constrain_visibility): Likewise.
        * cp/rtti.c (create_pseudo_type_info): Set TREE_PUBLIC on
        pseudo-types.
        * cp/decl.c (cxx_init_decl_processing): Set TREE_PUBLIC on
        global_namespace.
        * cp/name-lookup.c (push_namespace_with_attribs): Don't set TREE_PUBLIC
        on anonymous namespaces.

From-SVN: r115086
2006-06-29 21:15:56 -04:00
Lee Millward
344f237baf re PR c++/28054 (ICE with friend declaration of invalid bitfield)
PR c++/28054
	* decl2.c (grokbitfield): Remove check for grokdeclarator
	returning NULL_TREE, instead check for error_mark_node
	to indicate failure.
	* decl.c (grokdeclarator): Adjust block comment.

	* g++.dg/other/incomplete3.C: New test.


Co-Authored-By: Mark Mitchell <mark@codesourcery.com>

From-SVN: r114986
2006-06-25 11:28:01 +00:00
Danny Smith
4e2bb0a4b8 re PR target/27789 (attribute handling fallout from DECL_INITIAL changes)
PR target/27789
	* config/i386/winnt.c (ix86_handle_selectany_attribute): Move check
	for initialization and setting of one_only flag to ...
	(i386_pe_encode_section_info): ...here.
	(i386_pe_dllimport_p): Check for DECL_DLLIMPORT_P also.
	Recheck that the symbol has not been defined.

cp
	* decl.c (start_decl): Check that dllimports are not initialized.

testsuite
	* g++.dg/ext/dllimport4.C. Add more tests for invalid
	initialization.

From-SVN: r114927
2006-06-23 08:25:33 +00:00
Lee Millward
9a171ca4b0 re PR c++/27821 (ICE with invalid ptr-to-member)
PR c++/27821
* decl.c (grokdeclarator): Return error_mark_node on
invalid uses of the scope resolution operator.

From-SVN: r114899
2006-06-22 18:05:17 +00:00
Mark Mitchell
da71e18cae re PR c++/28016 (emitting template constant)
PR c++/28016
	* decl.c (cp_finsh_decl): Do not emit uninstantiated static data
	members.
	PR c++/28016
	* g++.dg/template/static26.C: New test.

From-SVN: r114739
2006-06-17 01:11:34 +00:00
Mark Mitchell
75a829785f re PR c++/27884 (bogus error: invalid use of 'register' in linkage specification)
PR c++/27884
	* decl.c (have_extern_spec): Remove.
	(start_decl): Do not check have_extern_spec.
	(start_function): Likewise.
	* cp-tree.h (have_extern_spec): Remove.
	* parser.c (cp_parser_linkage_specification): Don't set
	have_extern_spec.
	(cp_parser_init_declarator): Likewise.
	(cp_parser_parameter_declaration): Do not treat parameters as
	within the scope of an unbraced linkage specification.
	PR c++/27884
	* g++.dg/parse/linkage2.C: New test

From-SVN: r114727
2006-06-16 18:45:50 +00:00
Mark Mitchell
ace4831de9 re PR c++/27227 (rejects valid code with some extern "C")
PR c++/27227
	* decl.c (decls_match): Allow an extern "C" variable declarations
	from different namespaces to match.
	(duplicate_decls): Disallow redeclaring a variable with a
	different linkage specification.
	PR c++/27227
	* g++.dg/lookup/linkage1.C: New test.
	* g++.dg/lookup/linkage2.C: Likewise.

From-SVN: r114647
2006-06-14 17:44:36 +00:00
Jakub Jelinek
10827cd8b3 re PR middle-end/27793 (num_ssa_names inconsistent or immediate use iterator wrong)
PR middle-end/27793
	* cp-tree.h (cxx_int_tree_map): New struct.
	(struct language_function): Add extern_decl_map field.
	* name-lookup.c (pushdecl_maybe_friend): Add x -> t mapping
	to cp_function_chain->extern_decl_map hash table instead of
	copying over DECL_UID.
	* cp-gimplify.c (cxx_int_tree_map_eq, cxx_int_tree_map_hash): New
	functions.
	(cp_genericize_r): Remap DECL_EXTERN local decls using
	cp_function_chain->extern_decl_map hash table.
	* decl.c (finish_function): Clear extern_decl_map.

	PR c++/26757
	PR c++/27894
	* g++.dg/tree-ssa/pr26757.C: New test.
	* g++.dg/tree-ssa/pr27894.C: New test.

From-SVN: r114607
2006-06-13 11:21:30 +02:00
Mike Stump
3db45ab592 Fix up whitespacing
From-SVN: r114428
2006-06-06 11:44:09 +00:00
Mark Mitchell
2b643edaf8 re PR c++/27819 (ICE casting static const variables)
PR c++/27819
	* decl.c (cp_finish_decl): Process initializers for static data
	members with non-dependent initializers, even in templates.
	PR c++/27722
	* decl.c (maybe_deduce_size_from_array_init): If the declaration
	is erroneous, give it an erroneous type.
	(layout_var_decl): If the type is erroneous, give up.
	(check_initializer): Likewise.
	PR c++/27807
	* cp-tree.h (TYPE_OBJ_P): New macro.
	(TYPE_PTROB_P): Use it.
	(TYPE_REF_OBJ_P): Likewise.
	* semantics.c (finish_compound_literal): Do not permit compound
	literals of non-object types.
	PR c++/27806
	* typeck.c (original_type): Robustify.
	PR c++/27819
	* g++.dg/template/static25.C: New test.
	PR c++/27722
	* g++.dg/init/array21.C: New test.
	PR c++/27807
	* g++.dg/ext/complit7.C: New test.
	
	PR c++/27806
	* g++.dg/parse/ptrmem5.C: New test.

From-SVN: r114382
2006-06-05 02:46:38 +00:00
Mark Mitchell
07471dfbf7 re PR c++/27801 (ICE in invert_truthvalue with template)
PR c++/27801
	* call.c (perform_implicit_conversion): Do not actually perform
	conversions in templates.
	PR c++/26496
	* call.c (resolve_args): Check for invalid uses of bound
	non-static member functions.
	* init.c (build_offset_ref): Return error_mark_node for errors.
	PR c++/27385
	* decl.c (reshape_init): Robustify.
	(reshape_init_array_1): Likewise.
	PR c++/27801
	* g++.dg/template/cond6.C: New test.
	PR c++/26496
	* g++.dg/template/crash51.C: New test.
	* g++.old-deja/g++.mike/net36.C: Tweak error markers.
	PR c++/27385
	* g++.dg/init/array20.C: New test.

From-SVN: r114278
2006-05-31 20:03:12 +00:00
Kazu Hirata
ddd0b831eb decl.c, [...]: Fix comment typos.
* decl.c, decl2.c, parser.c: Fix comment typos.  Follow
	spelling conventions.

From-SVN: r114169
2006-05-28 17:53:11 +00:00
Mark Mitchell
e92fb50114 re PR c++/20103 (ICE in create_tmp_var with C99 style struct initializer)
PR c++/20103
	* gimplify.c (gimplify_decl_expr): Do not call gimple_add_tmp_var
	for anonymous variables explicitly declared by front ends. 

	PR c++/20103
	* decl.c (cp_make_fname_decl): Don't set DECL_INITIAL to
	error_mark_node to indicate an initialization is OK.
	(start_decl): Likewise.  Adjust call to start_decl_1.
	(start_decl_1): Add initialized parameter.  Simplify.
	* except.c (initialize_handler_parm): Adjust call to
	setart_decl_1.
	(expand_start_catch_block): Let cp_finish_decl initialize catch
	parameters.
	* cp-tree.h (start_decl_1): Adjust prototype.
	* pt.c (tsubst_expr): Don't set DECL_INITIAL to error_mark_node.
	(instantiate_decl): Let cp_finish_decl handle initialization.
	* semantics.c (finish_compound_literal): Create a temporary
	variable for the literal.
	* typeck.c (build_unary_op): Remove COMPOUND_LITERAL_P special
	cases.
	* decl2.c (finish_static_data_member_decl): Don't set
	DECL_INITIAL.
	(grokfield): Do not try to initialize functions.

	PR c++/20103
	* g++.dg/ext/complit6.C: New test.
	* g++.dg/ext/complit3.C: Adjust error markers.
	* g++.dg/init/const3.C: New test.

From-SVN: r114119
2006-05-25 20:18:26 +00:00
Volker Reichelt
ba5719d9cd * decl.c (grokdeclarator): Return error_mark_node instead of NULL_TREE.
From-SVN: r113984
2006-05-22 16:45:50 +00:00
Volker Reichelt
13dbe69190 re PR c++/27398 (ICE on missing closing parenthesis)
PR c++/27398
	* decl.c (grokdeclarator): Return error_mark_node instead of NULL_TREE
	or void_type_node.

	* g++.dg/template/crash50.C: New test.

From-SVN: r113950
2006-05-21 08:39:14 +00:00
Volker Reichelt
80cdd94a6c re PR c++/27547 (ICE on invalid operator=)
PR c++/27547
	* decl.c (copy_fn_p): Return early on non-member functions.

	* g++.dg/other/operator1.C: New test.

From-SVN: r113696
2006-05-11 14:41:03 +00:00
Mark Mitchell
cc3281454e re PR c++/27102 (ICE with invalid class name in function template)
PR c++/27102
	* decl.c (grokdeclarator): Robustify checks for defining members
	of incomplete types.
	PR c++/27102
	* g++.dg/template/crash49.C: New test.

From-SVN: r113492
2006-05-03 00:19:40 +00:00
Mark Mitchell
7137605e8f re PR c++/27309 (ICE on invalid constructor definition)
PR c++/27309
	* class.c (add_method): Call grok_special_member_properties.
	* decl.c (grokdeclarator): Don't call it here.
	(copy_fn_p): A TEMPLATE_DECL is never a copy constructor or
	assignment operator.  Set TYPE_HAS_CONSTURCTOR if DECL is a
	constructor.
	(start_method): Don't call grok_special_member_properties.
	* method.c (implicitly_declare_fn): Likewise.
	* pt.c (instantiate_class_template): Likewise.
	* decl2.c (grokfield): Likewise.
	PR c++/27309
	* g++.dg/parser/ctor5.C: New test.

From-SVN: r113473
2006-05-02 15:59:50 +00:00
Volker Reichelt
85990800b1 re PR c++/27278 (ICE with invalid operator declaration)
PR c++/27278
	* decl.c (grok_op_properties): Skip operators with invalid args
	when checking for class-type or enum-type args.

	* g++.dg/parse/operator7.C: New test.

From-SVN: r113389
2006-04-30 10:34:05 +00:00
Volker Reichelt
139a78c724 re PR c++/27279 (ICE with invalid constructor declaration)
PR c++/27279
	* decl.c (copy_fn_p): Skip functions with invalid first arg.

	* g++.dg/parse/ctor4.C: New test.

From-SVN: r113378
2006-04-29 20:48:45 +00:00
Mark Mitchell
e2537f2c03 re PR c++/26912 (friend const member function specialization fails to compile)
PR c++/26912
	* cp-tree.h (build_this_parm): Declare.
	(grok_method_quals): Remove.
	(build_memfn_type): Declare.
	(build_artificial_parm): Declare.
	(do_friend): Remove quals parameter.
	* decl.c (build_this_parm): New function.
	(grokfndecl): Use it.  Do not pass quals to grokclassfn.
	(grokdeclarator): Rename quals to memfn_quals.  Avoid allocating
	unnecessary TYPE_DECLs.  Correct qualification of member function
	types.  Tidy.
	* method.c (implicitly_declare_fn): Use build_this_parm.
	* friend.c (do_friend): Remove quals parameter.
	* decl2.c (grok_method_quals): Remove.
	(build_memfn_type): New function.
	(build_artificial_parm): Give it external linkage.
	(grokclassfn): Remove quals parameter.  Do not build "this"
	PARM_DECL here.
	PR c++/26912
	* g++.dg/template/friend41.C: New test.

From-SVN: r113213
2006-04-24 03:50:31 +00:00
Kazu Hirata
9f9a713e7a * decl.c: Fix comment typos.
From-SVN: r113175
2006-04-22 16:12:34 +00:00
Eric Christopher
d1c788827f decl.c: Fix typo in function name.
2006-04-21  Eric Christopher  <echristo@apple.com>

	* decl.c: Fix typo in function name.

2006-04-21  Eric Christopher  <echristo@apple.com>

	* df-core.c, tree-outof-ssa.c, config/i386/i386.c: Fix typos
	in comments and function names.

From-SVN: r113167
2006-04-22 01:23:09 +00:00
Volker Reichelt
b815a6316c re PR c++/26036 (Treating a class object as a function with member variables causes hang)
PR c++/26036
	* typeck.c (convert_arguments): Return error_mark_node instead of
	error_mark_list.
	* cp-tree.h (error_mark_list): Remove declaration.
	* decl.c (error_mark_list): Remove definition.
	(cxx_init_decl_processing): Do not initialize error_mark_list.

	* g++.dg/expr/call3.C: New test.

From-SVN: r113087
2006-04-19 17:36:59 +00:00
Mark Mitchell
fa6098f817 re PR c++/27102 (ICE with invalid class name in function template)
PR c++/27102
	* class.c (currently_open_class): Tidy.
	* decl.c (grokdeclarator): If we encounter an erroneous
	declarator, assume that we have already issued an error message
	and return.  Return error_mark_node instead of NULL_TREE in more
	places.  Issue errors about function definitions that do not have
	a function declarator.  Check for complete types for all function
	definitions. 
	* cp-tree.h (cp_error_declarator): Remove.
	(currently_open_class): Change return type.
	* parser.c (cp_parser_id_expression): Add optional_p parameter.
	(cp_parser_parse_diagnose_invalid_type_name): Adjust calls.
	(cp_parser_id_expression): Likewise.
	(cp_parser_unqualified_id): If the name is optional, return
	NULL_TREE.
	(cp_parser_postfix_dot_deref_expression): Adjust calls.
	(cp_parser_type_parameter): Likewise.
	(cp_parser_unqualified_id): Likewise.
	(cp_parser_direct_declarator): Likewise.
	(cp_parser_declarator_id): Add optional_p parameter.
	(cp_parser_function_definition_from_specifiers_and_declarator):
	Assume that start_function indicates failure only if it has issued
	an error.
	(cp_parser_omp_var_list_no_open): Adjust calls.
	
	PR c++/27102
	* g++.dg/template/crash35.C: Tweak error markers.
	* g++.dg/template/crash46.C: New test.
	* g++.old-deja/g++.brendan/friend4.C: Tweak error markers.
	* g++.old-deja/g++.pt/incomplete1.C: Likewise.

From-SVN: r113081
2006-04-19 16:58:23 +00:00
Mark Mitchell
63c9a19053 re PR c++/26122 (Pure specifiers for templates causing trouble)
* g++.dg/parse/dtor7.C: New test.
	* g++.dg/parse/new1.C: Add error marker.
	* g++.dg/template/new3.C: New test.

	PR c++/26122
	* g++.dg/template/pure1.C: New test.

	PR c++/26295
	* g++.dg/parse/ptrmem4.C: New test.

From-SVN: r112869
2006-04-11 22:59:57 +00:00
Jason Merrill
0ed5edac59 re PR c++/21764 (visibility attributes on namespace scope)
PR c++/21764
        * c-pragma.c (visstack): Move out of handle_pragma_visibility.
        (push_visibility, pop_visibility): Likewise.
        * c-pragma.h: Declare them.
        * cp/name-lookup.h (struct cp_binding_level): Add has_visibility
        bitfield.
        * cp/name-lookup.c: Include c-pragma.h.
        (push_namespace_with_attribs): Split out from push_namespace.
        Push visibility if appropriate.  Set TREE_PUBLIC on namespaces.
        (leave_scope): Pop visibility if appropriate.
        * cp/parser.c (cp_parser_declaration, cp_parser_namespace_name): Allow
        attributes on namespace declarations.

        PR c++/19238
        * cp/decl.c (cp_finish_decl): Call determine_visibility later.
        (start_preparsed_function): Likewise.
        * cp/cp-tree.h (CP_TYPE_CONTEXT, TYPE_NAMESPACE_SCOPE_P): New macros.
        (TYPE_CLASS_SCOPE_P, TYPE_FUNCTION_SCOPE_P): New macros.
        * cp/decl2.c (determine_visibility_from_class): Split out from...
        (determine_visibility): ...here.  Handle function scope and
        nested classes.
        (import_export_decl): Move visibility handling to
        determine_visibility_from_class.

From-SVN: r112239
2006-03-20 22:19:06 -05:00
Volker Reichelt
3cc189f5e7 re PR c++/6634 (wrong parsing of "long long double")
PR c++/6634
	decl.c (grokdeclarator): Do not accept long long double.
	Reorganize checks for invalid (combinations of) type modifiers.
	Quote modifiers in messages.

	g++.dg/parse/long1.C: New test.

From-SVN: r112084
2006-03-15 15:27:11 +00:00
Richard Henderson
1799e5d5ca Merge C++ from gomp-20050608-branch.
From-SVN: r111867
2006-03-09 10:14:39 -08:00
Richard Sandiford
434aeebbff tm.texi (TARGET_HAVE_SWITCHABLE_BSS_SECTIONS): Document.
* doc/tm.texi (TARGET_HAVE_SWITCHABLE_BSS_SECTIONS): Document.
	(ASM_OUTPUT_BSS): Describe the two ways of handling global BSS,
	and say that only one is needed.
	* doc/rtl.texi (SYMBOL_REF_BLOCK): Say that the block can be null.
	* target.h (have_switchable_bss_sections): New hook.
	* explow.c (use_anchored_address): Check that the symbol is in a block.
	* varasm.c (tls_comm_section, comm_section, lcomm_section)
	(bss_noswitch_section): New variables.
	(get_unnamed_section): Add SECTION_UNNAMED to the flags.
	(get_noswitch_section): New function.
	(get_block_for_section): Allow SECT to be null.
	(unlikely_text_section_p): Use SECTION_STYLE.
	(bss_initializer_p): New function.
	(get_variable_section): Move earlier in file.  Take a new argument,
	prefer_noswitch_p.  Move bss checks from assemble_variable to here.
	Return one of the new *_sections in such cases.
	(get_block_for_decl): New function, extracting some logic from
	use_blocks_for_decl_p.
	(change_symbol_section): Remove in favor of...
	(change_symbol_block): ...this new function.
	(use_blocks_for_decl_p): Remove checks now performed by
	get_block_for_decl.
	(make_decl_rtl): Use change_symbol_block and get_block_for_decl.
	(ASM_EMIT_LOCAL, ASM_EMIT_BSS, ASM_EMIT_COMMON): Delete in favor of...
	(emit_local, emit_bss, emit_common): ...these new functions.
	Return true if the alignment was honored.
	(emit_tls_common): New function.
	(asm_emit_uninitialised): Delete.
	(assemble_variable_noswitch): New function, split out from...
	(assemble_variable): ...here.  Don't make decisions about common
	variables here.  Globalize all public decls that go into non-common
	sections.  Check whether SYMBOL_REF_BLOCK is null.
	(output_constant_def_contents): Check whether SYMBOL_REF_BLOCK is null.
	(output_constant_pool): Likewise.
	(init_varasm_once): Initialize the new section variables.
	(have_global_bss_p): New function.
	(categorize_decl_for_section): Use bss_initializer_p.
	(switch_to_section): Use SECTION_STYLE.  Abort for SECTION_NOSWITCH.
	(place_block_symbol): Assert that the symbol must be in a block.
	* target-def.h (TARGET_HAVE_SWITCHABLE_BSS_SECTIONS): New macro.
	(TARGET_INITIALIZER): Include it.
	* rtl.h (SYMBOL_REF_BLOCK): Document the null alternative.
	* output.h (SECTION_STYLE_MASK, SECTION_COMMON): New macros.
	(SECTION_MACH_DEP): Bump by two.
	(SECTION_UNNAMED, SECTION_NOSWITCH): New macros.
	(unnamed_section): Mention SECTION_UNNAMED in comment.
	(named_section): Likewise SECTION_NAMED.
	(noswitch_section_callback): New type.
	(noswitch_section): New structure.
	(section): Add a noswitch_section alternative.
	(SECTION_STYLE): New macro.
	(tls_comm_section, comm_section, lcomm_section): Declare.
	(bss_noswitch_section, have_global_bss_p): Declare.
	* config/elfos.h (TARGET_HAVE_SWITCHABLE_BSS_SECTIONS): Override.
	* config/iq2000/iq2000.c (TARGET_HAVE_SWITCHABLE_BSS_SECTIONS):
	Override.
	* config/v850/v850.c (TARGET_HAVE_SWITCHABLE_BSS_SECTIONS): Override.
	* config/stormy16/stormy16.c (TARGET_HAVE_SWITCHABLE_BSS_SECTIONS):
	Override.

cp/
	* decl.c (start_decl): Use have_global_bss_p when deciding
	whether to make the decl common.

ada/
	* utils.c (create_var_decl): Use have_global_bss_p when deciding
	whether to make the decl common.

From-SVN: r111644
2006-03-02 19:32:52 +00:00
Mike Stump
6d69fe271f Fixup whitespace a litte
From-SVN: r111612
2006-03-01 19:57:38 +00:00
Volker Reichelt
6484413978 re PR c++/26291 (Invalid ellipsis in operator not diagnosed)
PR c++/26291
	* decl.c (grok_op_properties): Check for ellipsis in arguments of
        operators.

	* g++.dg/other/ellipsis1.C: New test.
	* g++.dg/parse/operator4.C: Adjust error marker.

From-SVN: r111367
2006-02-22 17:22:08 +00:00
Mark Mitchell
d174af6c58 re PR c++/26266 (Trouble with static const data members in template classes)
PR c++/26266
	* cp-tree.h (cp_finish_decl): Adjust declaration.
	(grokbitfield): Likewise.
	(finish_static_data_member_decl): Likewise.
	* init.c (constant_value_1): Ensure processing_template_decl when
	folding non-dependent initializers for static data members of
	dependent types.  Return error_mark_node for erroneous
	initailizers.
	* class.c (get_vtable_decl): Use finish_decl, not cp_finish_decl.
	* decl.c (cp_make_fname_decl): Adjust call to cp_finish_decl.
	(cp_finish_decl): Add init_const_expr_p parameter.  Set
	DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P here.
	(finish_decl): Adjust call to cp_finish_decl.
	(compute_array_index_type): Robustify.
	(start_method): Use finish_decl, not cp_finish_decl.
	* rtti.c (emit_tinfo_decl): Likewise.
	* except.c (initialize_handler_parm): Adjust call to
	cp_finish_decl.
	(expand_start_catch_block): Likewise.
	* cvt.c (build_up_reference): Adjust call to cp_finish_decl.
	* pt.c (instantiate_class_template): Adjust call to
	finish_static_data_member_decl.
	(tsubst_expr): Use finish_decl, not cp_finish_decl.
	(instantiate_decl): Adjust call to cp_finish_decl.
	* name-lookup.c (pushdecl_top_level_1): Use finish_decl, not
	cp_finish_decl.
	* decl2.c (finish_static_data_member_decl): Add init_const_expr_p
	parameter.
	(grokfield): Likewise.
	* parser.c (cp_parser_condition): Check for constant initializers.
	(cp_parser_init_declarator): Adjust calls to grokfield and
	cp_finish_decl.  Don't set
	DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P here.
	(cp_parser_member_declaration): Likewise.
	(cp_parser_objc_class_ivars): Likewise.
	PR c++/26266
	* g++.dg/template/static22.C: New test.
	* g++.dg/template/static23.C: New test.
	* g++.dg/template/static24.C: New test.
	* g++.dg/template/non-dependent13.C: New test.

From-SVN: r111229
2006-02-18 08:36:11 +00:00
Volker Reichelt
6aed477a55 call.c (standard_conversion): Return NULL instead of 0.
* call.c (standard_conversion): Return NULL instead of 0.
	(build_user_type_conversion_1): Likewise.
	(tourney): Likewise.
	* decl.c (redeclaration_error_message): Likewise.
	* error.c (language_to_string): Likewise.

From-SVN: r110976
2006-02-14 15:54:34 +00:00
Volker Reichelt
33fd4f49bc decl.c (grokdeclarator): Return NULL_TREE instead of 0.
* decl.c (grokdeclarator): Return NULL_TREE instead of 0.
	* typeck.c (unary_complex_lvalue): Likewise.

From-SVN: r110933
2006-02-13 22:05:40 +00:00
Volker Reichelt
28c84d634e re PR c++/26151 (duplicate 'duplicate' diagnostic)
PR c++/26151
	* parser.c (cp_parser_decl_specifier_seq): Check for duplicate
	decl-specifiers.  Remove extra check for duplicate 'friend'.
	* decl.c (grokdeclarator): Remove check for duplicate
	decl-specifiers.  Set longlong together with long_p.

From-SVN: r110911
2006-02-13 10:29:31 +00:00
Volker Reichelt
af02935e3c re PR c++/26071 (ICE declaring destructor virtual and static)
PR c++/26071
	* decl.c (grokdeclarator): Set dname also for destructor.

	* g++.dg/other/virtual2.C: New test.

From-SVN: r110751
2006-02-08 11:21:27 +00:00
Volker Reichelt
7e1e0765bd re PR c++/26070 (ICE declaring data member virtual and static)
PR c++/26070
	* decl.c (grokdeclarator): Clear storage_class together with staticp.

	* g++.dg/other/virtual1.C: New test.

From-SVN: r110747
2006-02-08 11:00:55 +00:00
Gabriel Dos Reis
23fca1f587 cp-tree.h (tf_warning_or_error): Renamed from tf_warn_or_error.
* cp-tree.h (tf_warning_or_error): Renamed from
          tf_warn_or_error.
        (cp_build_qualified_type): Propogate renaming.
        * call.c (convert_like_real): Likewise.
        * cvt.c (cp_convert_to_pointer, convert_to_reference):
          Likewise.
        * decl.c (make_typename_type, grokdeclarator): Likewise.
        * pt.c (tsubst_friend_function, instantiate_class_template,
        tsubst_default_argument, instantiate_decl,
        tsubst_initializer_list, tsubst_enum): Likewise.
        * semantics.c (finish_template_type): Likewise.
        * typeck.c (build_ptrmemfunc, convert_for_assignment):
          Likewise.

From-SVN: r110727
2006-02-07 23:25:02 +00:00
Roger Sayle
b38a05d083 decl.c (grokdeclarator): Don't bother checking for CHAR_TYPE.
* decl.c (grokdeclarator): Don't bother checking for CHAR_TYPE.
	* rtti.c (typeinfo_in_lib_p): Likewise.
	* cp-tree.h (INTEGRAL_CODE_P, CP_INTEGRAL_TYPE_P): Likewise.
	* name-lookup.c (arg_assoc_type): Likewise.

From-SVN: r110687
2006-02-07 03:40:19 +00:00
Gabriel Dos Reis
10f3742b11 cp-tree.h (tf_warn_or_error): New substituion flag.
* cp-tree.h (tf_warn_or_error): New substituion flag.
        (cp_build_qualified_type): Use it.
        * call.c (convert_like_real): Likewise.
        * cvt.c (cp_convert_to_pointer): Likewise.
        (convert_to_reference): Likewise.
        * decl.c (make_typename_type): Likewise.
        (grokdeclarator): Likewise.
        * pt.c (tsubst_friend_function): Likewise.
        (tsubst_friend_class): Likewise.
        (instantiate_class_template): Likewise.
        (tsubst_default_argument): Likewise.
        (instantiate_decl): Likewise.
        (tsubst_initializer_list): Likewise.
        (tsubst_enum): Likewise.
        * semantics.c (finish_template_type): Likewise.
        * typeck.c (build_ptrmemfunc): Likewise.
        (convert_for_assignment): Likewise.

From-SVN: r110590
2006-02-04 16:44:18 +00:00
Lee Millward
b323323f9b typeck.c (string_conv_p): Pass appropiate OPT_Wxxxx values when calling warning().
* typeck.c (string_conv_p): Pass appropiate
       OPT_Wxxxx values when calling warning().
       (build_array_ref, cxx_mark_addressable): Likewise.
       (check_return_expr): Likewise.

       * init.c (perform_member_init): Likewise.
       (sort_mem_initializers, emit_mem_initializers): Likewise.

       * class.c (check_field_decls): Likewise.
       (warn_about_ambiguous_bases): Likewise.

       * decl.c (pop_label, poplevel): Likewise.
       (duplicate_decls, grok_op_properties): Likewise.
       (start_preparsed_function, finish_function): Likewise.

       * name-lookup.c (pushdecl_maybe_friend): Likewise.
       (pushdecl_maybe_friend): Likewise.

       * parser.c (cp_parser_warn_min_max): Likewise.
       (cp_parser_cast_expression): Likewise.

       * method.c (lazily_declare_fn): Likewise.
       * cvt.c (convert_to_void): Likewise.
       * mangle.c (finish_mangling): Likewise.
       * cp-gimplify.c (gimplify_expr_stmt): Likewise
.

From-SVN: r110567
2006-02-03 23:11:09 +00:00
Mark Mitchell
2ef06beb77 re PR c++/25999 (compiler loses extern "C" for function after #pragma weak)
PR c++/25999
	* decl.c (start_preparsed_function): Call maybe_apply_pragma_weak
	here, not ...
	(start_function): ... here.
	PR c++/25999
	* g++.dg/ext/pragmaweak1.C: New test.

From-SVN: r110340
2006-01-28 22:11:42 +00:00
Volker Reichelt
993acaec69 cp-tree.h (do_poplevel): Remove prototype.
* cp-tree.h (do_poplevel): Remove prototype.
	* semantics.c (do_poplevel): Add prototype.  Make static.

	* cp-tree.h (original_type): Remove prototype.
	* typeck.c (original_type): Make static.

	* cp-tree.h (declare_global_var): Remove prototype.
	* decl.c (declare_global_var): Make static.

	* cp-tree.h (implicitly_declare_fn): Remove prototype.
	* method.c (implicitly_declare_fn): Make static.

	* cp-tree.h (fold_decl_constant_value): Remove prototype.
	* pt.c (fold_decl_constant_value): Make static.

From-SVN: r110140
2006-01-23 18:26:01 +00:00
Mark Mitchell
0e686aa6f7 re PR c++/25895 (wrong code with ?: and derived class pointers)
PR c++/25895
	* class.c (build_base_path): Generate a NOP_EXPR instead of a
	COMPONENT_REF if the base and derived classes are at the same
	address.
	PR c++/25856
	* decl.c (begin_destructor_body): Robustify.
	PR c++/25858 
	* parser.c (cp_parser_direct_declarator): Robustify.
	
	PR c++/25895
	* g++.dg/inherit/conv2.C: New test.
	PR c++/25856
	* g++.dg/parse/dtor7.C: New test.
	PR c++/25858
	* g++.dg/template/crash44.C: New test.

From-SVN: r110084
2006-01-22 00:42:40 +00:00
Volker Reichelt
607c855eb7 re PR c++/16829 (default parameter can be not one of the last in function)
PR c++/16829
	* decl.c (start_preparsed_function): Check default arguments
	unconditionally.
	* name-lookup.c (pushdecl_maybe_friend): Check default arguments
	of all functions and function templates.
	* parser.c (cp_parser_late_parsing_default_args): Check default
	arguments.
	* decl2.c (check_default_args): Set missing default arguments to
	error_mark_node.

	* g++.dg/other/default2.C: New test.
	* g++.dg/other/default3.C: New test.

From-SVN: r109950
2006-01-19 09:51:57 +00:00
Jakub Jelinek
3aa2ddb885 re PR c/25682 (ICE when using old sytle offsetof (with non zero start) as array size)
PR c/25682
	* c-typeck.c (build_unary_op): Fold offsetof-like expressions
	even when the pointer is not NULL.
cp/
	* decl.c (compute_array_index_type): After issuing not an integral
	constant-expression error, set size to 1 to avoid ICEs later on.
testsuite/
	* gcc.dg/pr25682.c: New test.
	* g++.dg/parse/array-size2.C: New test.

From-SVN: r109812
2006-01-17 10:57:56 +01:00
Gabriel Dos Reis
7525db0347 * decl.c (check_initializer): Fix thinko.
From-SVN: r109728
2006-01-15 20:15:58 +00:00
Dirk Mueller
ebfd9521b5 decl.c (finish_constructor_body): create simple compound stmt instead of a if(1) { } construct.
2002-01-04  Dirk Mueller <dmueller@suse.com>

	* decl.c (finish_constructor_body): create simple
	compound stmt instead of a if(1) { } construct.

From-SVN: r109331
2006-01-04 15:26:15 +00:00
Mark Mitchell
357d956ebd re PR c++/25635 (Bogus cruft in error message for invalid operator declaration)
PR c++/25635
	* class.c (add_method): Set TYPE_HAS_CONVERSION for classes with a
	conversion operator.
	* decl.c (grokdeclarator): Do not set TYPE_HAS_CONVERSION here.
	PR c++/25638
	* class.c (add_method): Never associate more than one destructor
	with a single class.
	PR c++/25637
	* cp-tree.h (do_friend): Adjust prototype.
	* decl.c (grokfndecl): Make funcdef_flag a bool, not an int.
	(grokdeclarator): Likewise.  Refine check for invalid
	declarations/definitions of member functions outside of their own
	class.
	* friend.c (do_friend): Make funcdef_flag a bool, not an int.
	PR c++/25633
	* parser.c (cp_parser_mem_initializer_list): Check result of
	cp_parser_mem_initializer against error_mark_node, not NULL_TREE.
	(cp_parser_mem_initializer): Return error_mark_node for failure.
	PR c++/25634
	* parser.c (cp_parser_template_parameter_list): Call
	begin_template_parm_list and end_template_parm_list here.
	(cp_parser_type_parameter): Not here.
	(cp_parser_template_declaration_after_export): Or here.
	(cp_parser_elaborated_type_specifier): Call
	cp_parser_check_template_parameters.
	* tree.c (build_target_expr_with_type): Use force_target_expr.
	PR c++/25635
	* g++.dg/parse/operator6.C: New test.
	PR c++/25637
	* g++.dg/parse/error29.C: New test.
	PR c++/25638
	* g++.dg/parse/dtor6.C: New test.
	PR c++/25633
	* g++.dg/parse/ctor3.C: New test.
	PR c++/25634
	* g++.dg/template/class3.C: New test.

From-SVN: r109270
2006-01-03 08:41:21 +00:00
Mark Mitchell
d85d3d578a re PR c++/25439 ("template<> int A<0>" accepted)
PR c++/25439
	* decl.c (grokdeclarator): Remove dead code.
	* ptree.c (cxx_print_xnode): Handle BASELINK.
	* parser.c (make_id_declarator): Add sfk parameter.  
	(cp_parser_direct_declarator): Do not pass TYPE_DECLs to
	make_id_declarator.
	(cp_parser_declarator_id): Simplify BASELINKs here.
	(cp_parser_member_declaration): Adjust calls to
	make_id_declarator.
	PR c++/25439
	* g++.dg/parse/crash17.C: Adjust error markers.
	* g++.dg/template/error20.C: New test.

From-SVN: r109079
2005-12-27 09:05:17 +00:00
Mark Mitchell
3b2db49f36 PR c++/23171, c++/23172, c++/25417.
* c-decl.c (compound_literal_number): Remove.
	(build_compound_literal): Use set_compound_literal_name.
	* c-common.c (compound_literal_number): New variable.
	(set_compound_literal_name): New function.
	* c-common.h (set_compound_literal_name): Declare.

	PR c++/23171, c++/23172, c++/25417.
	* typeck.c (build_unary_op): Create temporary variables for
	compound literals whose addresses are taken.
	* init.c (expand_aggr_init_1): Use COMPOUND_LITERAL_P.
	* decl.c (reshape_init_vector): Likewise.
	(reshape_init): Give it external linkage.
	(check_initializer): Use COMPOUND_LITERAL_P.
	(initialize_artificial_var): Allow the initializer to be a
	CONSTRUCTOR.
	* call.c (make_temporary_var_for_ref_to_temp): Use
	create_temporary_var.
	* cp-tree.h (COMPOUND_LITERAL_P): New macro.
	(rehape_init): Declare.
	* typeck2.c (digest_init): Use COMPOUND_LITERAL_P.
	* semantics.c (finish_compound_literal): Use reshape_init.

	PR c++/23172
	* g++.dg/ext/complit4.C: New test.

	PR c++/25417
	* g++.dg/ext/complit5.C: Likewise.

From-SVN: r109075
2005-12-27 06:09:13 +00:00
Volker Reichelt
59e7c84ca1 decl.c (grokdeclarator): Improve diagnostic for friend declarations of class members.
* decl.c (grokdeclarator): Improve diagnostic for friend
	declarations of class members.

	* g++.dg/other/friend4.C: New test.

From-SVN: r109017
2005-12-23 17:10:37 +00:00
Mark Mitchell
68d04c6749 re PR c++/21228 (-Wunreachable-code produces spurious warnings for constructor)
PR c++/21228
	* decl.c (use_eh_spec_block): New function.
	(store_parm_decls): Use it.
	(finish_function): Likewise.
	
	PR c++/21228
	* g++.dg/warn/Wunreachable-code-2.C: New test.

From-SVN: r108851
2005-12-20 08:48:13 +00:00
Aldy Hernandez
d7d9383746 re PR c++/24138 (ICE with the code in PR 20407)
PR C++/24138
        * tree.c (integer_all_onesp): Always return true if all bits on.

        * cp/decl.c (reshape_init_array_1): Handle max_index of -1.

        * testsuite/g++.dg/init/array0.C: New.

From-SVN: r108126
2005-12-06 19:45:00 +00:00
Roger Sayle
9116d529f6 re PR c++/25263 (ICE on invalid array bound: int x[1/0];)
PR c++/25263
	* decl.c (compute_array_index_type): Check that itype is an
	INTEGER_CST node before testing/clearing TREE_OVERFLOW.

	* g++.dg/other/array2.C: New test case.

From-SVN: r108119
2005-12-06 14:00:09 +00:00
Mark Mitchell
50b56799f7 re PR c++/24173 (ICE with garbage collection)
PR c++/24173
	* decl.c (duplicate_decls): Don't rely on DECL_TEMPLATE_INFO after
	clobbering newdecl.
	PR c++/24173
	* g++.dg/template/friend40.C: New test.

From-SVN: r107983
2005-12-03 01:02:33 +00:00
Gabriel Dos Reis
0ac1b88953 decl2.c (get_priority_info): Use XNEW, not xmalloc.
* decl2.c (get_priority_info): Use XNEW, not xmalloc.
        * decl.c (push_switch): Likewise.
        * lex.c (handle_pragma_implementation): Likewise.
        * cp-objcp-common.c (decl_shadowed_for_var_insert): Use GGC_NEW,
        not ggc_alloc.
        (cxx_initialize_diagnostics): Use XNEW, not xmalloc.
        * class.c (init_class_processing): Use XNEWVEC, not xmalloc.
        * g++spec.c (lang_specific_driver): Likewise.
        * mangle.c (save_partially_mangled_name): Likewise.
        * parser.c (cp_lexer_new_main): Use GGC_NEWVEC, not ggc_alloc.
        (cp_parser_template_argument_list): Use XNEWVEC, nto xmalloc.
        (cp_parser_sizeof_operand): Likewise.
        * repo.c (open_repo_file, open_repo_file): Likewise.

From-SVN: r107884
2005-12-02 11:21:28 +00:00
Volker Reichelt
e7e5319243 re PR c++/9278 (Illegal use of typedef to "void")
PR c++/9278
	* decl.c (grokparms): Do not allow typedef-names in a '(void)'
	parmlist.

	* g++.dg/other/void1.C: New test.

From-SVN: r107508
2005-11-25 14:59:09 +00:00
Richard Henderson
10e6657a20 c-common.c, [...]: Revert 2005-11-18 lookup_name patch.
gcc/
        * c-common.c, config/darwin-c.c, c-decl.c, c-tree.h, c-objc-common.h,
        langhooks-def.h, langhooks.h: Revert 2005-11-18 lookup_name patch.
        * c-tree.h (lookup_name): Move declaration ...
        * c-common.h (lookup_name): ... here.
        * config/darwin-c.c: Include c-common.h.
        * config/t-darwin: Update dependencies.
gcc/cp/
        * cp-objcp-common.h, name-lookup.c, name-lookup.h: Revert 11-18 patch.
        * name-lookup.c (lookup_name): Remove prefer_type argument.
        (lookup_name_prefer_type): New.
        * decl.c (lookup_and_check_tag): Use them.
        * pt.c (tsubst_friend_class): Likewise.
        (lookup_template_class): Likewise.
        (tsubst_copy_and_build): Likewise.
        * name-lookup.h (lookup_name_prefer_type): New.
        (lookup_name): Remove declaration.

From-SVN: r107325
2005-11-21 13:27:29 -08:00
Mark Mitchell
abc088aad7 re PR c++/8355 (befriending a template specialization in another namespace)
PR c++/8355
	* decl.c (grokfndecl): Set up DECL_TEMPLATE_INFO before calling
	set_decl_namespace.
	* name-lookup.c (set_decl_namespace): 
	PR c++/8355
	* g++.dg/template/friend39.C: New test.

From-SVN: r107207
2005-11-19 02:25:55 +00:00
Mark Mitchell
e1f0e7a6a7 re PR c++/24817 (g++ accepts multiple function template declarations even if exception-specification doesn't match.)
PR c++/24817
	* decl.c (check_redeclaration_exception_specification): New
	function.
	(duplicate_decls): Use it.
	* error.c (fndecl_to_string): Print the template parameter list.
	PR c++/24817
	* g++.dg/eh/spec8.C: New test.

From-SVN: r106884
2005-11-14 05:45:45 +00:00
Jakub Jelinek
31a7923695 re PR c++/19450 (__thread static class members)
PR c++/19450
	* decl.c (redeclaration_error_message): Issue diagnostics about
	olddecl and newdecl disagreement on __thread property.
	(grokdeclarator): Set DECL_TLS_MODEL on class static variables.

	* g++.dg/tls/diag-3.C: New test.
	* g++.dg/tls/diag-4.C: New test.
	* g++.dg/tls/static-1.C: New test.
	* g++.dg/tls/static-1a.cc: New file.

From-SVN: r106657
2005-11-08 22:44:58 +01:00
Andrew Pinski
b88b7ced9b re PR c++/24582 (ICE in decl_jump_unsafe)
2005-11-03  Andrew Pinski  <pinskia@physics.uc.edu>

        PR c++/24582
        * g++.dg/init/switch1.C: New test.

2005-11-03  Andrew Pinski  <pinskia@physics.uc.edu>

        PR c++/24582
        * decl.c (declare_local_label): Return 0 for variables
        with error_mark_node as their types.

From-SVN: r106434
2005-11-03 07:06:42 -08:00
Andrew Pinski
7f0dbff360 decl.c (grokfndecl): Remove the setting of the return type of the function type of main after...
2005-10-28  Andrew Pinski  <pinskia@physics.uc.edu>

        * decl.c (grokfndecl): Remove the setting
        of the return type of the function type
        of main after erroring about must returning
        int.

From-SVN: r105963
2005-10-28 13:59:05 -07:00
Andrew Pinski
9a1c562a7d re PR c++/23229 (g++ gives incorrect error message with void main() and a void function)
2005-10-28  Andrew Pinski  <pinskia@physics.uc.edu>

        PR C++/23229
        * decl.c (grokfndecl): Create a new function type
        after erroring out about main not returning int.
2005-10-28  Andrew Pinski  <pinskia@physics.uc.edu>

	PR C++/23229
        * g++.dg/warn/main-2.C: New test.

From-SVN: r105960
2005-10-28 13:25:55 -07:00
Andrew Pinski
2d00b4f207 re PR c++/23426 (Too large array problem gives two error message)
2005-10-28  Andrew Pinski  <pinskia@physics.uc.edu>

	PR C++/23426
	* decl.c (start_decl): Check that the decl is an
	error_mark_node before getting the type.
	Remove the check for the decl's type being an
	error_mark_node.  

2005-10-28  Andrew Pinski  <pinskia@physics.uc.edu>

        PR C++/23426
        * g++.dg/other/large-size-array.C: New test.

From-SVN: r105936
2005-10-28 07:57:30 -07:00
Richard Guenther
b501d4432b decl.c (grokdeclarator): Fix ambiguous pedwarn message.
2005-10-20  Richard Guenther  <rguenther@suse.de>

	* decl.c (grokdeclarator): Fix ambiguous pedwarn message.

From-SVN: r105662
2005-10-20 08:07:46 +00:00
Volker Reichelt
6d2989e117 re PR c++/22293 (ICE declaring destructor as friend)
PR c++/22293
	* decl.c (grokdeclarator): Reject unqualified destructors in
	friend declarations.

	* g++.dg/other/friend3.C: New test.

From-SVN: r105564
2005-10-18 16:20:55 +00:00
Nathan Sidwell
c3ee4651b2 re PR c++/21353 (rvalues should not be allowed to be default values for non const references in class functions.)
cp:
	PR c++/21353
	* g++.dg/template/defarg6.C: New.
testsuite:
	PR c++/21353
	* decl.c (check_default_argument): Don't check
	processing_template_decl or uses_template_parms here.
	(grokparms): Only call check_default_argument when not processing
	a template decl.
	* parser.c (cp_parser_late_parsing_default_arg): Call
	check_default_argument when not processing a template decl.

From-SVN: r105492
2005-10-17 11:19:12 +00:00
Andrew Pinski
dddf9a0a08 re PR c++/23959 (-Wswitch-default reports missing default in a template that has one)
2005-10-16  Andrew Pinski  <pinskia@physics.uc.edu>

        PR c++/23959
        * decl.c (pop_switch): Only call c_do_switch_warnings
        when not processing templates.

2005-10-16  Andrew Pinski  <pinskia@physics.uc.edu>

        PR c++/23959
        * g++.dg/warn/Wswitch-default-1.C: New test.
        * g++.dg/warn/Wswitch-default-2.C: New test.

From-SVN: r105466
2005-10-16 14:13:11 -07:00
Mark Mitchell
3c955a0481 re PR c++/19565 (g++ does not warn about overflow in conversion but gcc does)
PR c++/19565
	* g++.dg/warn/Wconversion1.C: New test.
	* g++.dg/ext/packed4.C: Compile with -w.
	* g++.dg/opt/20050511-1.C: Likewise.
	* g++.old-deja/g++.other/warn4.C: Compiler with -Wconversion.

From-SVN: r105421
2005-10-14 19:50:08 +00:00
Mark Mitchell
6c06fbce5c re PR c++/20721 (crossing of a initialization left undetected on goto)
PR c++/20721
	* cp-tree.h (DECL_NONTRIVIALLY_INITIALIZED_P): New macro.
	* decl.c (duplicate_decls): Merge it into new declarations.
	(decl_jump_unsafe): Use it, rather than DECL_INITIAL.
	(cp_finish_decl): Set it, when appropriate.
	PR c++/20721
	* g++.dg/init/goto2.C: New test.

From-SVN: r105380
2005-10-13 23:59:57 +00:00
Mark Mitchell
8ca4bf259c re PR c++/22464 (ICE on classes in template functions which attempt closure)
PR c++/22464
	* semantics.c (finish_id_expression): Issue errors about uses of
	local variables in containing functions even in templates.
	PR c++/22180
	* call.c (build_new_method_call): Correct pretty-printing of
	destructor names.
	* pt.c (tsubst_qualified_id): Recognize invalid uses of "~T" as an
	identifier.
	PR c++/23694
	* decl.c (start_method): Return error_mark_node for errors.
	PR c++/23307
	* pt.c (push_template_decl_real): Complain about attempts to
	declare template variables.
	PR c++/22352
	* pt.c (tsubst_template_parms): Set processing_template_decl while
	processing the parameters.
	(tsubst_decl): Set processing_template_decl when substituting into
	a TEMPLATE_DECL.
	PR c++/22405
	* pt.c (most_specialized_instantiation): Robustify.
	PR c++/22464
	* g++.dg/template/crash/41.C: New test.
	PR c++/22180
	* g++.dg/template/crash40.C: New test.
	PR c++/23694
	* g++.dg/parse/friend5.C: New test.

	PR c++/23307
	* g++.dg/template/crash38.C: New test.

	PR c++/22352
	* g++.dg/template/friend38.C: New test.

	PR c++/22405
	* g++.dg/template/crash39.C: New test.

From-SVN: r105365
2005-10-13 08:38:40 +00:00
Nathan Sidwell
51b15ede49 re PR c++/21117 (ICE after error about returning an incomplete type)
cp:
	PR c++/21117
	* decl.c (check_function_type): Correctly overwrite incomplete
	return type with void type.
	* typeck.c (check_return_expr): If the function's return type is
	void, don't try and convert a return expr.
testsuite:
	PR c++/21117
	* g++.dg/other/return1.C: New.

From-SVN: r105310
2005-10-12 18:02:52 +00:00
Mark Mitchell
f0d60e2210 re PR c++/24139 (Rejects definition of member of specialized inner class)
PR c++/24139
	* decl.c (grokdeclarator): Do not require template parameter lists
	for explicitly specialized class.
	* error.c (dump_aggr_type): Do not dump template arguments for
	non-primary specializations.
	(dump_function_name): Likewise.
	PR c++/24139
	* g++.dg/template/spec27.C: New test.

From-SVN: r105172
2005-10-10 14:41:52 +00:00
Andrew Pinski
11e3f4b6f7 re PR middle-end/23125 (OpenBSD's zic.c causes g++ but not gcc to segfault)
2005-10-04  Andrew Pinski  <pinskia@physics.uc.edu>

        PR middle-end/23125
        * decl.c (make_rtl_for_nonlocal_decl): Use set_user_assembler_name
        instead of change_decl_assembler_name.
2005-10-04  Andrew Pinski  <pinskia@physics.uc.edu>

        PR middle-end/23125
        * c-decl.c (finish_decl): Use set_user_assembler_name even for
        register variables.
        * varasm.c (make_decl_rtl): If a register variable does not
        have a set user assmbler name, error out.
        Decode the asmspec is now name+1 bypassing '*'.
2005-10-04  Andrew Pinski  <pinskia@physics.uc.edu>

        PR middle-end/23125
        * gcc.dg/register-var-3.c: New test.

From-SVN: r104942
2005-10-04 06:39:17 -07:00
Mark Mitchell
9f4a5c9a63 re PR c++/16782 (Accepts qualified member function declaration in class)
PR c++/16782
	* decl.c (grokdeclarator): Always pedwarn about overqualified
	member names.

	PR c++/16782
	* g++.dg/parse/qualified4.C: New test.
	* g++.old-deja/g++.law/static-mem5.C: Use -w -fpermissive.
	* g++.old-deja/g++.mike/p8154.C: Likewise.

From-SVN: r104733
2005-09-28 14:50:17 +00:00
Jason Merrill
86ad3aa989 re PR c++/13764 (c++ front-end creates extra blocks)
PR c++/13764
        * c-common.c (finish_fname_decls): Use append_to_statement_list_force.
        * cp/cp-tree.h (FUNCTION_NEEDS_BODY_BLOCK): New macro.
        * cp/name-lookup.c (pushdecl_maybe_friend): Check it.
        * cp/decl.c (begin_function_body): Do nothing if it's false.
        (finish_function_body): Ditto.
        (outer_curly_brace_block): New fn.
        (finish_function): Use it.

From-SVN: r104698
2005-09-27 12:04:25 -04:00
Mark Mitchell
9c12301f5b re PR c++/13140 (declaration in global namespace, definition inside named or anon namespace)
PR c++/13140
	* decl.c (check_class_member_definition_namespace): New function.
	(grokfndecl): Use it.
	(grokvardecl): Likewise.
	(grokdecl): Improve documentation.
	* pt.c (check_explicit_instantiation_namespace): New function.
	(register_specialization): Call check_specialization_namespace
	when replacing an implicitly instantiated function.
	(check_explicit_specialization): Ensure that DECL_CONTEXT is set
	correctly for namespace-scope specializations.
	(do_decl_instantiation): Use
	check_explicit_instantiation_namespace.
	(do_type_instantiation): Likewise.

	PR c++/13140
	* g++.dg/parse/class2.C: New test.
	* g++.dg/template/explicit8.C: Likewise.
	* g++.dg/template/spec25.C: Likewise.

	* testsuite/testsuite_character.h: Specialize character<>
	templates in __gnu_cxx, not in __gnu_test.

From-SVN: r104310
2005-09-15 16:03:32 +00:00
Ian Lance Taylor
d63d5d0c32 re PR c++/7874 (g++ finds friend functions defined in class-definition but not declared in the enclosing namespace)
./	PR g++/7874
	* c.opt (ffriend-injection): New C++ option.
	* doc/invoke.texi (Option Summary): Mention -ffriend-injection.
	(C++ Dialect Options): Document -ffriend-injection.
cp/
	PR g++/7874
	* cp-tree.h (struct lang_decl_flags): Add hidden_friend_p
	bitfield.  Make dummy bitfield one bit smaller.
	(DECL_HIDDEN_FRIEND_P): Define.
	(pushdecl_maybe_friend): Declare.
	(pushdecl_top_level_maybe_friend): Declare.
	* decl.c (duplicate_decls): Add newdecl_is_friend parameter.
	Change prototype and all callers.  Add assertion that a
	DECL_ARTIFICIAL FUNCTION_DECL is not DECL_HIDDEN_FRIEND_P.  Set
	DECL_ANTICIPATED and DECL_HIDDEN_FRIEND_P in duplicated decl if
	appropriate.
	* name-lookup.c (supplement_binding): Don't ignore a
	DECL_HIDDEN_FRIEND_P.
	(pushdecl_maybe_friend): Break out contents of pushdecl.  Add
	is_friend parameter.  Set DECL_ANTICIPATED and
	DECL_HIDDEN_FRIEND_P for a friend function.
	(pushdecl): Just call pushdecl_maybe_friend.
	(pushdecl_with_scope): Add is_friend parameter.  Change prototype
	and all callers.
	(pushdecl_namespace_level): Likewise.
	(push_overloaded_decl): Likewise.  Check DECL_HIDDEN_FRIEND_P as
	well as DECL_ANTICIPATED when checking for a builtin.
	(do_nonmember_using_decl): Check DECL_HIDDEN_FRIEND_P as well as
	DECL_ANTICIPATED when checking for a builtin.
	(do_nonmember_using_decl): Likewise.
	(pushdecl_top_level_1): Add is_friend parameter.  Change all
	callers.
	(pushdecl_top_level_maybe_friend): New function.
	(remove_hidden_names): New function.
	(struct arg_lookup): Add args field.
	(friend_of_associated_class_p): New static function.
	(arg_assoc_namespace): Ignore hidden functions which are not
	friends of an associated class of some argument.
	(lookup_arg_dependent): Remove hidden functions from list passed
	in.  Initialize k.args.
	* name-lookup.h (remove_hidden_names): Declare.
	* friend.c (do_friend): Call pushdecl_maybe_friend instead of
	pushdecl.
	* call.c (add_function_candidate): Change DECL_ANTICIPATED test to
	an assertion, with a check for DECL_HIDDEN_FRIEND_P.
	(build_new_function_call): Add koenig_p parameter.  Change
	prototype and callers.
	* pt.c (register_specialization): Add is_friend parameter.  Change
	all callers.
	(push_template_decl_real): Change is_friend parameter to bool.
	Change prototype and all callers.
	(tsubst_friend_class): Call pushdecl_top_level_maybe_friend
	instead of pushdecl_top_level.
testsuite/
	PR g++/7874
	* g++.dg/lookup/friend7.C: New test.
	* g++.dg/lookup/friend8.C: New test.
	* g++.dg/parse/defarg4.C: Add a parameter to the friend function,
	so that it will be found via argument dependent lookup.
	* g++.old-deja/g++.brendan/crash56.C: Don't expect errors for
	friend functions which will no longer be found.
	* g++.old-deja/g++.jason/friend.C: Add a parameter to the friend
	function g, so that it will be found via argument dependent
	lookup.
	* g++.old-deja/g++.jason/scoping15.C: Use -ffriend-injection.
	* g++.old-deja/g++.mike/net43.C: Likewise.

From-SVN: r104188
2005-09-12 19:54:23 +00:00
Mark Mitchell
1ef0df4745 re PR c++/22252 (pragma interface/implementation still break synthesized methods)
PR c++/22252
	* decl.c (start_preparsed_function): Do not pay attention to
	#pragma interface for implicitly-defined methods.
	* decl2.c (cp_finish_file): Do not complain about uses of inline
	functions that have bodies, even if we decided not to emit the
	body in this translation unit.
	* semantics.c (note_decl_for_pch): Do not mess with linkage.
	(expand_or_defer_fn): Make inline, non-template functions COMDAT
	at this point.

	PR c++/22252
	* g++.dg/ext/interface1.C: New test.
	* g++.dg/ext/interface1.h: Likewise.
	* g++.dg/ext/interface1a.cc: Likewise.

From-SVN: r104103
2005-09-09 18:56:16 +00:00
Richard Henderson
db5f8b93fe re PR debug/23190 (debug info omitted for uninitialized variables (stabs))
PR debug/23190
        * toplev.c (wrapup_global_declaration_1): Split out ...
        (wrapup_global_declaration_2): ... from ...
        (wrapup_global_declarations): ... here.  Return bool.
        (check_global_declaration_1): Split out ...
        (check_global_declarations): from here.
        (emit_debug_global_declarations): New.
        * toplev.h (wrapup_global_declaration_1, wrapup_global_declaration_2,
        check_global_declaration_1, emit_debug_global_declarations): Declare.
        * c-decl.c (c_write_global_declarations_1): Don't create a vector
        of decls.  Call wrapup_global_declaration_1,
        wrapup_global_declaration_2, check_global_declaration_1 directly.
        (c_write_global_declarations_2): New.
        (ext_block): New.
        (c_write_global_declarations): Call c_write_global_declarations_2.
        * langhooks.c (write_global_declarations): Call
        emit_debug_global_declarations.
        * cgraphunit.c (cgraph_varpool_remove_unreferenced_decls): Don't
        remove decls that have DECL_RTL_SET_P.
        * passes.c (rest_of_decl_compilation): Invoke
        cgraph_varpool_finalize_decl for all but functions.
cp/
        * decl.c (wrapup_globals_for_namespace): Call
        emit_debug_global_declarations.
        * decl2.c (cp_finish_file): Likewise.

From-SVN: r104065
2005-09-08 17:47:05 -07:00
Volker Reichelt
4fe8db686f * decl.c (check_elaborated_type_specifier): Remove redundant check.
From-SVN: r103939
2005-09-06 10:30:09 +00:00
Kazu Hirata
1634705dd6 cp-tree.h, [...]: Fix comment typos.
* cp-tree.h, decl.c, decl2.c, semantics.c: Fix comment typos.
	Follow spelling conventions.

From-SVN: r103926
2005-09-06 02:12:30 +00:00
Mark Mitchell
b794e321c1 re PR c++/23099 (ICE in build_simple_base_path, at cp/class.c:460)
PR c++/23099
	* cp-tree.h (saved_scope): Add skip_evaluation.
	* decl.c (start_decl): Use DECL_INITIALIZED_IN_CLASS_P, not
	DECL_INITIAL, to determine whether or not a static data member was
	initialized in the class-specifier.
	(cp_finish_decl): Add comment.
	* init.c (integral_constant_value): Subtitute into the
	initializers for static data members in	templates.
	* name-lookup.c (push_to_top_level): Save skip_evaluation.
	(pop_from_top_level): Restore it.
	* pt.c (instantiate_class_template): Do not substitute into the
	intializers of static data members when instantiating a class.
	(regenerate_decl_from_template): Simplify.
	(instantiate_decl): Tidy.  Substitute into the initializer for a
	static data member even when the definition of the data member is
	not available.

	PR c++/23099
	* g++.dg/init/member1.C: Make sure erroneous static data member
	definitions are required.
	* g++.dg/template/static13.C: New test.
	* g++.dg/template/static14.C: Likewise.

From-SVN: r103604
2005-08-29 14:08:50 +00:00
James E Wilson
96ce2ac9e8 Partial fix for too large arrays.
PR tree-optimization/21105
* decl.c (grokdeclarator): Use TYPE_SIZE_UNIT not TYPE_SIZE for
array size check.

From-SVN: r103363
2005-08-22 16:52:22 -07:00
Volker Reichelt
dff1b563b3 re PR c++/23089 (internal compiler error: in int_mode_for_mode, at stor-layout.c:251 at -O1)
PR c++/23089
	* decl.c (require_complete_types_for_parms): Mark incomplete types
	as invalid.

	* g++.dg/other/incomplete1.C: New test.

From-SVN: r103336
2005-08-22 08:37:17 +00:00
Fariborz Jahanian
30f86ec3fb Fix Infinite Stack Recursion Regression.
* cp-tree.h (can_convert_arg, fn_type_unification): New argument.
        * call.c (add_template_candidate_real): Pass down 'flags' to
        fn_type_unification.
        (can_convert_arg): New 'flags' argument. Pass it to call to
        implicit_conversion instead of LOOKUP_NORMAL.
        (can_convert): Add LOOKUP_NORMAL to call to can_convert_arg.
        * class.c (resolve_address_of_overloaded_function): Ditto.
        (resolve_address_of_overloaded_function): Ditto.
        * decl.c (reshape_init, check_default_argument): Ditto.
        * typeck.c (build_ptrmemfunc): Ditto.
        * pt.c (type_unification_real): Add 'flags' argument.
        (fn_type_unification): Pass 'flags' to type_unification_real.
        (type_unification_real): Pass new 'flags' argument to call to
        can_convert_arg.

	Oked by Geoff Keating.

From-SVN: r103120
2005-08-15 20:38:23 +00:00
Volker Reichelt
a23e08d92d re PR c++/20646 (ICE on illegal code: "extern static" struct member)
PR c++/20646
	* decl.c (grokdeclarator): Reset storage_class after error.

	* g++.dg/other/mult-stor1.C: New test.

From-SVN: r102935
2005-08-10 00:20:32 +00:00
Kazu Hirata
13a44ee0e2 class.c, [...]: Fix comment typos.
* class.c, decl.c, name-lookup.c, pt.c, typeck.c, typeck2.c:
	Fix comment typos.

From-SVN: r102621
2005-08-01 04:02:26 +00:00
Giovanni Bajo
4038c495fc Make CONSTRUCTOR use VEC to store initializers.
* c-common.c (complete_array_type): Update to cope with VEC in
	CONSTRUCTOR_ELTS.
	* c-pretty-print.c (pp_c_initializer_list): Use pp_c_constructor_elts.
	(pp_c_constructor_elts): New function.
	* c-pretty-print.h (pp_c_constructor_elts): Declare.
	* c-typeck.c (build_function_call, build_c_cast, digest_init,
	struct constructor_stack, struct initializer_stack,
	constructor_elements, push_init_level, pop_init_level,
	add_pending_init, find_init_member, output_init_element): Update to
	cope with VEC in CONSTRUCTOR_ELTS.
	* coverage.c (build_fn_info_value, build_ctr_info_value,
	build_gcov_info): Likewise.
	* expr.c (categorize_ctor_elements_1, store_constructor,
	expand_expr_real_1): Likewise.
	* fold-const.c (fold_ternary): Likewise.
	* gimplify.c (gimplify_init_ctor_preeval, zero_sized_field_decl,
	gimplify_init_constructor, gimplify_expr): Likewise.
	* tree-dump.c (dequeue_and_dump): Likewise.
	* tree-inline.c (copy_tree_r): Add code to duplicate a CONSTRUCTOR
	node.
	* tree-pretty-print.c (dump_generic_node): Update to cope with VEC in
	CONSTRUCTOR_ELTS.
	* tree-sra.c (generate_element_init_1): Likewise.
	* tree-ssa-ccp.c (fold_const_aggregate_ref): Likewise.
	* tree-ssa-operands.c (get_expr_operands): Likewise.
	* tree-vect-generic.c (expand_vector_piecewise): Likewise.
	* tree-vect-transform.c (vect_get_vec_def_for_operand):
	(get_initial_def_for_reduction): Likewise.
	* tree-vn.c (set_value_handle, get_value_handle): CONSTURCTOR uses
	value handle in annotations.
	* tree.c (tree_node_kind, tree_code_size, make_node_stat,
	tree_node_structure): Add support for constr_kind.
	(build_vector_from_ctor, build_constructor_single,
	build_constructor_from_list): New functions.
	(build_constructor): Update to take a VEC instead of a TREE_LIST.
	(simple_cst_equal, iterative_hash_expr, initializer_zerop, walk_tree):
	Update to cope with VEC in CONSTRUCTOR_ELTS.
	* tree.def (CONSTRUCTOR): Make it a tcc_exceptional node.
	* tree.h (FOR_EACH_CONSTRUCTOR_VALUE, FOR_EACH_CONSTRUCTOR_ELT,
	CONSTRUCTOR_APPEND_ELT): New macros.
	(struct constructor_elt, struct	tree_constructor): New data types.
	(union tree_node): Add tree_constructor field.
	* treestruct.def: Define TS_CONSTRUCTOR.
	* varasm.c (const_hash_1, compare_constant, copy_constant,
	compute_reloc_for_constant, output_addressed_constants,
	initializer_constant_valid_p, output_constant,
	array_size_for_constructor, output_constructor): Update to cope with
	VEC in CONSTRUCTOR_ELTS.
	* vec.h (VEC_empty, VEC_copy): New macros.

ada/
	Make CONSTRUCTOR use VEC to store initializers.
	* decl.c (gnat_to_gnu_entity): Update to cope with VEC in
	CONSTRUCTOR_ELTS.
	* trans.c (extract_values): Likewise.
	* utils.c (convert, remove_conversions): Likewise.
	* utils2.c (contains_save_expr_p, build_binary_op, build_unary_op,
	gnat_build_constructor): Likewise.

cp/
	Make CONSTRUCTOR use VEC to store initializers.
	* call.c (convert_default_arg): Update call to digest_init.
	* class.c (dump_class_hierarchy, dump_array): Update to cope with
	VEC in CONSTRUCTOR_ELTS.
	* cp-tree.h (EMPTY_CONSTRUCTOR_P): Likewise.
	(finish_compound_literal, digest_init): Update declaration.
	* decl.c (struct reshape_iter): New data type.
	(reshape_init_array): Rename to...
	(reshape_init_array_1): Update to cope with VEC in CONSTRUCTOR_ELTS.
	(reshape_init): Rewrite from scratch. Split parts into...
	(reshape_init_array, reshape_init_vector, reshape_init_class,
	reshape_init_r): New functions.
	(check_initializer): Update call to reshape_init. Remove obsolete
	code.
	(initialize_artificial_var, cp_complete_array_type): Update to cope
	with VEC in CONSTRUCTOR_ELTS.
	* decl2.c (grokfield): Update calls to digest_init.
	(mark_vtable_entries): Update to cope with VEC in CONSTRUCTOR_ELTS.
	* error.c (dump_expr_init_vec): New function.
	(dump_expr): Use dump_expr_init_vec.
	* init.c (build_zero_init, build_vec_init): Update to cope with VEC
	in CONSTRUCTOR_ELTS.
	(expand_default_init): Update call to digest_init.
	* parser.c  (cp_parser_postfix_expression): Use a VEC for the
	initializers.
	(cp_parser_initializer_list): Build a VEC of initializers.
	* pt.c (tsubst_copy, tsubst_copy_and_build): Update to cope with VEC
	in CONSTRUCTOR_ELTS.
	* rtti.c (tinfo_base_init, generic_initializer, ptr_initializer,
	ptm_initializer, class_initializer, get_pseudo_ti_init): Use
	build_constructor_from_list instead of build_constructor.
	* semantics.c (finish_compound_literal): Update call to digest_init.
	* tree.c (stabilize_init): Update to cope with VEC in
	CONSTRUCTOR_ELTS.
	* typeck.c (build_ptrmemfunc1): Likewise.
	* typeck2.c: (cxx_incomplete_type_error, split_nonconstant_init_1):
	Likewise.
	(store_init_value): Use build_constructor_from_list and update call
	to digest_init.
	(digest_init): Rewrite.
	(process_init_constructor): Rewrite from scratch. Split into...
	(process_init_constructor_array, picflag_from_initializer,
	process_init_constructor_record, process_init_constructor_union):
	New functions.
	(PICFLAG_ERRONEOUS, PICFLAG_NOT_ALL_CONSTANT, PICFLAG_NOT_ALL_SIMPLE):
	New macros.
	(build_functional_cast): Use build_constructor_from_list instead of
	build_constructor.

fortran/
	Make CONSTRUCTOR use VEC to store initializers.
	* trans-array.c (gfc_build_null_descriptor,
	gfc_trans_array_constructor_value, gfc_conv_array_initializer):
	Update to cope with VEC in CONSTRUCTOR_ELTS.
	* trans-common.c (create_common): Likewise.
	* trans-expr.c (gfc_conv_structure): Likewise.
	* trans-stmt.c (gfc_trans_character_select): Use
	build_constructor_from_list instead of build_constructor.

java/
	Make CONSTRUCTOR use VEC to store initializers.
	* check-init.c (check_init): Update to cope with VEC in
	CONSTRUCTOR_ELTS.
	* class.c (make_field_value, make_method_value, get_dispatch_table,
	make_class_data, emit_symbol_table, emit_catch_table,
	emit_assertion_table): Use build_constructor_from_list instead of
	build_constructor.
	* constants.c (build_constants_constructor): Likewise.
	* java-gimplify.c (java_gimplify_new_array_init): Update to cope with
	VEC in CONSTRUCTOR_ELTS.
	* java-tree.h (START_RECORD_CONSTRUCTOR, PUSH_SUPER_VALUE,
	PUSH_FIELD_VALUE, FINISH_RECORD_CONSTRUCTOR): Create a VEC instead
	of a TREE_LIST.
	* jcf-write.c (generate_bytecode_insns): Update to cope with VEC in
	CONSTRUCTOR_ELTS.
	* parse.y (build_new_array_init): Use build_constructor_from_list
	instead of build_constructor.
	(patch_new_array_init): Update to cope with VEC in
	CONSTRUCTOR_ELTS.
	(array_constructor_check_entry): Likewise.

objc/
	Make CONSTRUCTOR use VEC to store initializers.
	* objc-act.c (objc_build_constructor): Use build_constructor_from_list
	instead of build_constructor.

testsuite/
	Make CONSTRUCTOR use VEC to store initializers.
	* g++.dg/ext/complit3.C: Check for specific error messages.
	* g++.dg/init/brace2.C: Update error message.
	* g++.dg/warn/Wbraces2.C: Likewise.

From-SVN: r102182
2005-07-20 01:19:59 +00:00
Mark Mitchell
4d0839ffa0 re PR c++/22139 (Segfault with templates and friend functions)
PR c++/22139
	* cp-tree.h (DECL_TEMPLATE_INFO): Improve documentation.
	* decl.c (duplicate_decls): Re-register template specializations
	for functions that have DECL_TEMLPLATE_INFO, even if they do not
	have DECL_TEMPLATE_INSTANTIATION set.

	PR c++/22139
	* g++.dg/template/friend36.C: New test.

From-SVN: r102118
2005-07-17 22:02:09 +00:00
Daniel Berlin
820cc88fbd Makefile.in (TREE_H): Add treestruct.def.
2005-07-08  Daniel Berlin  <dberlin@dberlin.org>

	* Makefile.in (TREE_H): Add treestruct.def.
	(c-decl.o): Add pointer-set.h
	* c-decl.c (diagnose_mismatched_decls): Don't attempt to look at
	visibility on regular DECL's.
	(merge_decls): Fix the copying of decl nodes of various types for
	the new structures.  Don't update RTL, section name, weak status,
	etc, on DECL's without RTL.
	(grokdeclarator): DECL_ARG_TYPE_AS_WRITTEN is gone.
	Don't check volatile on non-variable types.
	(store_parm_decls_oldstyle): Use pointer_set instead of DECL_WEAK
	to check whether we have seen arguments.
	* c-objc-common.c (c_tree_printer): Reverse order of tests so that
	flag is checked before field (flag is common, field is not).
	* dwarf2out.c (decl_ultimate_origin):  Only DECL's with
	TS_DECL_COMMON could have an origin.
	(add_location_or_const_value_attribute): Don't check section name
	on non-var/function decls.
	(dwarf2out_var_location): Reverse order of tests.
	* emit-rtl.c (set_reg_attrs_for_parm): DECL_CHECK is dead, replace
	with DECL_WRTL_CHECK.
	* expmed.c (make_tree): rtl is now in decl_with_rtl.
	* fold-const.c (fold_binary): Don't check weakness on
	non-var/function decls.
	(tree_expr_nonzero_p): Ditto.
	(fold_checksum_tree): Use tree_decl_extra as sizeof
	buffer.
	* ggc-page.c (extra_order_size_table): Add sizes for
	tree_decl_non_common, tree_parm_decl,  tree_var_decl, and
	tree_field_decl.
	* gimplify.c (gimplify_bind_expr): Only set
	DECL_SEEN_IN_BIND_EXPR_P on VAR_DECL.
	* integrate.c (copy_decl_for_inlining): Don't set RTL on decl's
	without RTL.
	* langhooks-def.h (LANG_HOOK_INIT_TS): New.
	* langhooks.h (init_ts). New langhook.
	* passes.c (rest_of_decl_compilation): Reverse order of tests.
	* print-tree.c (print_node): Update to only print fields that
	exist in the structures the passed decl has.
	* toplev.c (wrapup_global_declarations): Don't reset
	DECL_DEFER_OUTPUT on DECL's that don't contain it.
	* tree-browser.c (browse_tree): DECL_ARG_TYPE_AS_WRITTEN removed.
	* tree-inline.c (remap_decl): Ditto.
	* tree-outof-ssa.c (create_temp): Reverse order of tests.
	* tree-pretty-print.c (print_declaration): Don't print
	DECL_REGISTER on things that don't contain it.
	* tree-vrp.c (expr_computes_nonzero): Don't check weakness on
	non-var/function decls.
	* tree.c (tree_contains_struct): New structure.
	(init_priority_for_decl): New hashtable.
	(tree_int_map): New structure.
	(tree_int_map_eq): New function.
	(tree_int_map_marked_p): Ditto.
	(tree_int_map_hash): Ditto.
	(tree_map): Move to tree.h.
	(tree_map_eq): Externalize.
	(tree_map_hash): Ditto.
	(tree_map_marked_p): Ditto.
	(init_ttree): Set up tree_contains_struct and call langhook.
	(decl_assembler_name): Use DECL_NON_COMMON_CHECK..
	(tree_code_size): Update for new structures.
	(tree_node_structure): Update for new structures.
	(make_node_stat): Don't try to set DECL_IN_SYSTEM_HEADER on decls
	without the field.
	(copy_node_stat):  Copy init priority.
	(build_decl_stat): Ditto for visibility.
	(ts_enum_names): New.
	(tree_contains_struct_check_failed): New function.
	(decl_init_priority_lookup): Ditto.
	(decl_init_priority_insert): Ditto.
	* treestruct.def: New file.
	* tree.h (CODE_CONTAINS_STRUCT): New macro.
	(CONTAINS_STRUCT_CHECK): Ditto.
	(tree_contains_struct_check_failed): New prototype.
	(DECL_CHECK): Removed.
	(DECL_MINIMAL_CHECK): New.
	(DECL_COMMON_CHECK): Ditto.
	(DECL_WRTL_CHECK): Ditto.
	(DECL_NON_COMMON_CHECK): Ditto.
	(DECL_WITH_VIS_CHECK): Ditto.
	(VAR_OR_FUNCTION_DECL_P): Ditto
	(struct tree_decl_minimal): New structure.
	(struct tree_decl_common): Ditto.
	(struct tree_decl_with_rtl): Ditto.
	(struct tree_decl_with_vis): Ditto.
	(struct tree_decl_non_common): Ditto.
	(struct tree_field_decl): Ditto.
	(struct tree_parm_decl): Ditto.
	(struct tree_var_decl): Ditto.
	(struct tree_function_decl): Ditto.
	(struct tree_const_decl): Ditto.
	(struct tree_result_decl): Ditto.
	(union tree_node): Add new structures.
	* var-tracking.c (track_expr_p): Reverse order of tests.

	* doc/c-tree.texi: Add documentation on DECL node internal structure.


2005-07-08  Daniel Berlin  <dberlin@dberlin.org>

	* utils.c (create_param_decl): DECL_ARG_TYPE_AS_WRITTEN is
	removed.

2005-07-08  Daniel Berlin  <dberlin@dberlin.org>

	* Make-lang.in: Add gt-cp-lang.h.
	(cp-lang.o): Ditto.
	* class.c (create_vtable_ptr): Stop setting DECL_ASSEMBLER_NAME on
	the field.
	* config-lang.in: Add cp-lang.c to gtfiles.
	* cp-lang.c: Include hashtab.h.
	(cp_init_ts): New function.
	(LANG_HOOK_INIT_TS): Use macro.
	(decl_shadowed_for_var_lookup): New function.
	(decl_shadowed_for_var_insert): Ditto.
	* cp-tree.h (THUNK_FUNCTION_CHECK): Use decl_common.
	(NON_THUNK_FUNCTION_CHECK): Ditto.
	(DECL_NAMESPACE_ASSOCIATIONS): Use decl_non_common.
	(DECL_INIT_PRIORITY): Ditto.
	(DECL_HAS_SHADOWED_FOR_VAR_P): Ditto.
	(DECL_SHADOWED_FOR_VAR): Use hashtable.
	(SET_DECL_SHADOWED_FOR_VAR): Ditto.
	* decl.c (duplicate_decls): Update for new/updated structures.
	(poplevel): Use SET_DECL_SHADOWED_FOR_VAR.
	* decl2.c (start_static_initialization_or_destruction): Deal with
	priority.
	* pt.c (tsubst_decl): Check TS_DECL_WRTL before doing
	SET_DECL_RTL.
	* tree.c (handle_init_priority_attribute): Handle priority.

2005-07-08  Daniel Berlin  <dberlin@dberlin.org>

	* objc-act.c (objc_push_parm): DECL_ARG_TYPE_AS_WRITTEN is
	removed.
	* objc-act.h (KEYWORD_ARG_NAME): Use decl_non_common.
	(KEYWORD_KEY_NAME): Use decl_minimal.
	(METHOD_SEL_NAME): Ditto..
	(METHOD_SEL_ARGS): Use decl_non_common.
	(METHOD_ADD_ARGS): Ditto.
	(METHOD_ADD_ARGS_ELLIPSIS_P): Use decl_common.
	(METHOD_DEFINITION): Ditto.
	(METHOD_ENCODING): Ditto.
	* objc-lang.c: (objc_init_ts): New function.

2005-07-08  Daniel Berlin  <dberlin@dberlin.org>

	* trans-decl.c (create_function_arglist): DECL_ARG_TYPE_AS_WRITTEN
	is removed.

From-SVN: r101799
2005-07-08 23:37:11 +00:00
Joseph Myers
dee158440e toplev.c (default_tree_printer): Handle setting location with '+' flag.
2005-07-02  Zack Weinberg  <zack@codesourcery.com>
            Joseph S. Myers  <joseph@codesourcery.com>

	* toplev.c (default_tree_printer): Handle setting location with
	'+' flag.
	* c-objc.common.c (c_tree_printer): Likewise.
	* c-format.c (gcc_diag_flag_specs): Add '+'.
	(gcc_cdiag_char_table): Allow '+' flag for tree formats.
	(format_types_orig): Allow '+' flag for gcc_diag and gcc_cdiag
	formats.
	* c-common.c, c-decl.c, c-objc-common.c, c-pragma.c,
	config/arm/pe.c, config/i386/winnt.c, config/ia64/ia64.c,
	config/mcore/mcore.c, config/sh/symbian.c, config/sol2.c,
	config/v850/v850.c, function.c, stor-layout.c, toplev.c,
	tree-inline.c, tree-optimize.c, tree.c, varasm.c: Use '+' flag
	instead of %J or %H.  Use 'q' flag for quoting.  Avoid '.' at end
	of diagnostics.  Use %q+D not %s for a decl.  Do not pass excess
	format arguments where %J is used without %D.

cp:
	* error.c (location_of): Add comment.
	(locate_error, cp_error_at, cp_warning_at, cp_pedwarn_at): Remove.
	* cp-tree.h (cp_error_at, cp_warning_at, cp_pedwarn_at): Remove.
	* call.c, class.c, decl.c, decl2.c, friend.c, init.c,
	name-lookup.c, parser.c, pt.c, search.c, semantics.c, typeck.c,
	typeck2.c: Use '+' flag instead of %J, cp_error_at, cp_warning_at
	or cp_pedwarn_at.  Mark up some diagnostic strings with N_.

java:
	* class.c, decl.c, expr.c: Use '+' flag instead of %J.  Use 'q'
	flag for quoting.

objc:
	* objc-act.c: Use '+' flag instead of %J.  Use 'q' flag for
	quoting.

testsuite:
	* gcc.dg/format/gcc_diag-1.c: Update.

From-SVN: r101532
2005-07-02 11:55:32 +01:00
Daniel Berlin
7523dc31c3 decl.c (require_complete_types_for_parms): Call relayout_decl instead of layout_decl.
2005-06-30  Daniel Berlin  <dberlin@dberlin.org>

	* decl.c (require_complete_types_for_parms): Call relayout_decl
	instead of layout_decl.

From-SVN: r101515
2005-07-01 19:43:37 +00:00
Steven Bosscher
c2f7fa15c0 coretypes.h (tls_model): Add TLS_MODEL_NONE as 0.
* coretypes.h (tls_model): Add TLS_MODEL_NONE as 0.
	* tree.h (struct tree_decl): New field `tls_model'.
	(DECL_TLS_MODEL): New.
	(DECL_THREAD_LOCAL_P): Rename from DECL_THREAD_LOCAL, make it
	a predicate.
	* rtl.h (decl_default_tls_model): Add prototype for it.
	* varasm.c (decl_tls_model): Rewritten and renamed to ...
	(decl_default_tls_model): ... this.
	(default_encode_section_info): Use DECL_TLS_MODEL instead of
	decl_tls_model.
	(assemble_variable): Replace DECL_THREAD_LOCAL with
	DECL_THREAD_LOCAL_P.
	(default_section_type_flags_1): Likewise.
	(categorize_decl_for_section): Likewise.
	* tree.c (staticp): Likewise.
	(recompute_tree_invarant_for_addr_expr): Likewise.
	* drawf2out (loc_descriptor_from_tree_1): Likewise.
	* c-decl.c (diagnose_mismatched_decls): Likewise.
	with DECL_THREAD_LOCAL_P.
	(start_decl): Likewise.
	* print-tree.c (print_node): Likewise.  Print the TLS model.
	(grokdeclarator): Set the default DECL_TLS_MODEL here.
	* c-common.c (handle_tls_model_attribute): Rewrite to set the
	TLS model up based on the attribute.  Never add the attribute
	to the decl's attributes list.
	* config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Replace
	DECL_THREAD_LOCAL with DECL_THREAD_LOCAL_P.

cp/
	* decl.c (start_decl): Replace DECL_THREAD_LOCAL with
	DECL_THREAD_LOCAL_P.
	(cp_finish_decl): Likewise.
	(grokvardecl): Set the default DECL_TLS_MODEL here.

From-SVN: r101465
2005-06-30 12:17:52 +00:00
Kelley Cook
1788952fea Update FSF address.
From-SVN: r101312
2005-06-25 00:59:41 +00:00