Commit Graph

944 Commits

Author SHA1 Message Date
Jan Hubicka
8a4a83ed92 Move all varpool routines out of cgraph/cgraphunit to varpool.c
Move all varpool routines out of cgraph/cgraphunit to varpool.c
	* cgraph.c: Update comments.
	(cgraph_varpool_hash,
	cgraph_varpool_nodes, cgraph_varpool_last_needed_node
	cgraph_varpool_node_name, cgraph_varpool_node,
	cgraph_varpol_mode_for_asm, cgraph_varpool_mark_needed_node,
	cgraph_variable_initializer_availability): Move to
	varpool.c and drop cgraph_ prefixes.
	(cgraph_varpool_enqueue_needed_node, cgraph_varpool_reset_queue,
	cgraph_varpool_first_unanalyzed_node, cgraph_varpool_finalize_decl):
	move to varpool.c; drop cgraph_ prefix; make static.
	(dump_cgraph_varpool_node): Move to varpool.c under name
	dump_varpool_node.
	(dump_varpool, hash_varpool_node, eq_varpool_node,
	decide_is_variable_needed): Move to varpool.c
	(decl_assembler_name_equal): Move to tree.c.
	(availability_names): Rename to ...
	(cgraph_availability_names): ... this one.
	(dump_cgraph_node): Update.
	* cgraph.h: Reorder declarations now in varpool.c
	(cgraph_vailablity_names): Declare.
	(struct cgraph_varpool_node): Rename to ...
	(struct varpool_node): ... this one.
	(cgraph_varpool_first_unanalyzed_node, cgraph_varpool_nodes_queue,
	cgraph_varpool_first_unanalyzed_node, cgraph_varpool_node,
	cgraph_varpool_node_for_asm, cgraph_varpool_mark_needed_node,
	cgraph_varpool_finalize_decl, cgraph_varpool_enqueue_needed_node,
	cgraph_varpool_reset_queue, cgraph_varpool_assemble_pending_decls,
	cgraph_variable_initializer_availability): Rename to ...
	(varpool_first_unanalyzed_node, varpool_nodes_queue,
	varpool_first_unanalyzed_node, varpool_node,
	varpool_node_for_asm, varpool_mark_needed_node,
	varpool_finalize_decl, varpool_enqueue_needed_node,
	varpool_assemble_pending_decls, variable_initializer_availability):
	Rename to ...
	* tree.c (decl_assembler_name_equal): Move here from cgraph.c.
	* tree.h (decl_assembler_name_equal): Declare.
	* omp-low.c (lower_omp_critical): Update.
	* ipa-reference (analyze_variable, static_execute): Likewise.
	* toplev.c (wrapup_global_declaration_2, compile_file): Update.
	* cgraphunit.c: Update comments.
	(cgraph_varpool_assembled_nodes_queue): Move to varpool.c under name
	varpool_assembled_nodes_queue.
	(cgraph_varpool_analyze_pending_decls): Move to varpool.c under name
	varpool_analyze_pending_decls.
	(cgraph_varpool_remove_unreferenced_decls): Move to varpool.c under name
	varpool_remove_unreferenced_decls.
	(record_reference): Update.
	(cgraph_create_edges): Update.
	(record_referneces_in_initializer): New function.
	(cgraph_varpool_assemble_decl): Move to varpool.c under name
	varpool_assemble_decl; make global.
	(cgraph_varpool_assemble_pending_decls): Move to varpool.c under name
	varpool_assemble_pending_decls.
	(process_function_and_variable_attributes, cgraph_finalize_compilation_unit,
	struct cgraph_order_sort, cgraph_output_in_order,
	cgraph_function_and_variable_invisibility, cgraph_optimize,
	cgraph_increase_alignment): Update.
	* dwarf2out.c (decls_for_scope): Likewise.
	* ipa-type-escape.c (analyze_variable, type_escape_execute): Likewise.
	* except.c (output_ttype): Likewise.
	* varasm.c (mark_decl_referenced): Likewise.
	(find_decl_and_mark_referenced, assemble_alias): update.
	* Makefile.in: Add varpool.c, gt-varpool.c and remove gt-cgraphunit.c
	* passes.c (rest_of_decl_compilation): Update.

	* cp/decl2.c (var_finalized_p): Update for renamed varpool functions.
	* fortran/f59-lang.c (gfc_expand_function): Update for renamed varpool functions.

From-SVN: r119731
2006-12-11 08:07:52 +00:00
Mark Mitchell
7f1ba716a2 re PR c++/29729 (ICE with template class in template function)
PR c++/29729
	* decl2.c (check_member_template): Move check for member
	templates in local classes to ...
	* parser.c (cp_parser_template_declaration_after_export):
	... here.
	PR c++/29729
	* g++.dg/template/crash63.C: New test.

From-SVN: r119575
2006-12-06 05:12:46 +00:00
Geoffrey Keating
e430546039 In gcc/:
* toplev.c (compile_file): Call final_write_globals
	even if there have been errors.
In gcc/cp/:
	* decl2.c (cp_write_global_declarations): Rename from
	cp_finish_file.
	* cp-lang.c (finish_file): Don't call cp_finish_file.
	* cp-tree.h (cp_write_global_declarations): Rename from
	cp_finish_file.
	* cp-objcp-common.h (LANG_HOOKS_WRITE_GLOBALS): Define to
	cp_write_global_declarations.

From-SVN: r118362
2006-11-01 05:16:14 +00:00
Geoffrey Keating
5880f14fe8 In gcc/:
* coverage.c (coverage_checksum_string): Update comment.
	* dwarf2out.c (switch_to_eh_frame_section): Update for removal
	of get_file_function_name.
	* cgraphunit.c (cgraph_build_static_cdtor): Update for rename
	of get_file_function_name_long.
	* tree.c (get_file_function_name): Rename from
	get_file_function_name_long; improve comment; handle 'I' and 'D'
	specially when the target has ctor/dtor support; remove special
	handling for 'F'.
	(get_file_function_name): Remove.
	* tree.h (get_file_function_name): Rename from
        get_file_function_name_long.
	(get_file_function_name): Remove prototype.
In gcc/cp/:
	* name-lookup.c (get_anonymous_namespace_name): New.
	(push_namespace_with_attribs): Use get_anonymous_namespace_name.
	* decl2.c (start_objects): Update for rename of
	get_file_function_name_long.
In gcc/fortran/:
	* trans-decl.c (gfc_generate_constructors): Update for removal
	of get_file_function_name.

From-SVN: r118360
2006-11-01 05:06:12 +00:00
Lee Millward
4c9fb8704a re PR c++/28053 (ICE deriving from class with invalid bitfield)
PR c++/28053
        * decl2.c (grokbitfield): Detect invalid non-integral 
        types earlier when possible.

        * g++.dg/parse/bitfield1.C: Adjust error markers.
        * g++.dg/parse/bitfield2.C: New test. 


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

From-SVN: r117910
2006-10-20 20:13:42 +00:00
Mark Mitchell
981114e175 re PR c++/29138 (access declarations don't work for classes)
PR c++/29138
	* decl2.c (grokfield): Don't handle access declarations here.
	* parser.c (cp_parser_using_declaration): Handle access
	declarations too.
	(cp_parser_block_declaration): Adjust calls to
	cp_parser_using_declaration.
	(cp_parser_member_declaration): Likewise.  Use
	cp_parser_using_declaration to look for access_declarations.
	PR c++/29138
	* g++.dg/inherit/access8.C: New test.
	* g++.dg/template/dtor4.C: Tweak error messages.

From-SVN: r117409
2006-10-03 18:04:10 +00:00
Mark Mitchell
99f4234aa7 re PR c++/28058 (ICE in inline_forbidden_p)
PR c++/28058
	* pt.c (register_specialization): Return error_mark_node for
	specialization-after-instantiation.
	* decl2.c (mark_used): Mark the main function used when one of its
	clones is used.
	
	PR c++/28058
	* g++.dg/template/spec31.C: New test.

From-SVN: r116491
2006-08-27 17:45:25 +00:00
Nathan Sidwell
7d3bec9db5 re PR c++/27787 (Qualified lookup fails to find inherited class template)
cp/
	PR c++/27787
	* decl.c (make_typename_type): Only try and resolve it when
	context is not dependent.  Refactor.
	* decl2.c (check_classfn): Push to class scope before looking for
	the function.
testsuite/
	PR c++/27787
	* g++.dg/template/typename10.C: New.
	* g++.dg/template/lookup4.C: Remove bogus error marker.

From-SVN: r116409
2006-08-25 16:56:07 +00:00
Lee Millward
653109bdf2 re PR c++/28741 (ICE with static member in invalid template class)
PR c++/28741
        * tree.c (decl_anon_ns_mem_p): Robustify.
        * decl2.c (determine_visibility): Likewise.

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

From-SVN: r116303
2006-08-21 17:41:18 +00:00
Steve Ellcey
a82f93ac13 re PR c++/28432 (duplicate "no member function declared" message)
PR c++/28432
	* decl2.c (check_classfn): Remove early return.
	* search.c (lookup_member): Return NULL with bad type.
	* g++.dg/other/pr28304.C: Change expected error message.
	* g++.dg/other/pr28432.C: New test.

From-SVN: r115857
2006-08-01 16:45:14 +00:00
Jason Merrill
bd741f34c9 decl2.c (determine_visibility): Don't propagate visibility from type to decl.
* decl2.c (determine_visibility): Don't propagate visibility from
        type to decl.
        (constrain_class_visibility): Don't warn in system headers.
        Don't warn about pointer fields.

From-SVN: r115651
2006-07-21 17:00:20 -04:00
Mike Stump
dfb84d6233 invoke.texi (C++ Dialect Options): Note that -fvisibility-inlines-hidden doesn't affect explicitly instantiationed...
* doc/invoke.texi (C++ Dialect Options): Note that
	-fvisibility-inlines-hidden doesn't affect explicitly
	instantiationed inline methods.

cp:
	* decl2.c (determine_visibility_from_class): Don't use hidden
	visibility for explicit instantiations.

testsuite:
	* g++.dg/ext/visibility/fvisibility-inlines-hidden-3.C: New test.

From-SVN: r115649
2006-07-21 20:39:19 +00:00
Jason Merrill
b70f0f48c7 re PR c++/28407 (Issue with anonymous namespace)
PR c++/28407
        * cp/decl.c (grokvardecl): Set DECL_THIS_STATIC on file-scope
        const variables with implicit internal linkage.
        * cp/tree.c (decl_linkage): Only return lk_external if it's set.

        PR c++/28409
        * cp/decl2.c (constrain_visibility): Ignore the anonymous namespace 
        for extern C decls.
        (VISIBILITY_STATIC): Rename to VISIBILITY_ANON.

        Don't override explicit visibility.
        * cp/decl2.c (constrain_visibility): Remove specified and reason
        parameters.  Don't touch decls that already have explicit visibility.
        (determine_visibility): Do copy DECL_VISIBILITY_SPECIFIED from
        template.
        (determine_visibility_from_class): Reverse sense of
        DECL_VISIBILITY_SPECIFIED test for target-specific visibility rules.
        (constrain_class_visibility): Only complain about member visibility
        if the member type is another class.  Don't change visibility of the
        current class.
        * tree.c (remove_attribute): New fn.
        * tree.h: Declare it.

From-SVN: r115622
2006-07-20 12:02:57 -04:00
Steve Ellcey
f566cc1b14 re PR c++/28304 (ICE looking up invalid member template)
PR c++/28304
	* decl2.c (check_classfn): Return NULL_TREE on error.

From-SVN: r115521
2006-07-17 15:21:42 +00:00
Jakub Jelinek
42ccbf3d11 re PR c++/28370 (undefined reference to template class static variable in an anonymous namespace)
PR c++/28370
	* decl2.c (note_vague_linkage_var): Removed.
	(finish_static_data_member_decl): Add decl to pending_statics vector
	directly.  Do it even for non-public decls.

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

From-SVN: r115503
2006-07-16 22:17:20 +02:00
Lee Millward
662c2e83b1 re PR c++/28292 (ICE in acceptable_java_type)
PR c++/28292
	* decl2.c (acceptable_java_type): Robustify. Use
	proper Boolean return type instead of return 1.
	(check_java_method): Don't issue error about
	type not being an acceptable Java parameter if 
	it's error_mark_node.

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

From-SVN: r115474
2006-07-15 14:44:48 +00:00
Volker Reichelt
6ae9b8759e re PR c++/28387 (ICE with attribute on invalid declaration)
PR c++/28387
	* decl2.c (cplus_decl_attributes): Check for invalid decls.

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

From-SVN: r115465
2006-07-15 09:22:17 +00:00
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
Geoffrey Keating
7c0de6a544 Index: ChangeLog
2006-07-12  Geoffrey Keating  <geoffk@apple.com>

	* doc/invoke.texi (C++ Dialect Options): Explain difference
	between -fvisibility-inlines-hidden and setting hidden
	visibility explicitly.

Index: cp/ChangeLog
2006-07-12  Geoffrey Keating  <geoffk@apple.com>

	* decl2.c (determine_visibility): Don't change visibility of
	function locals because of -fvisibility-inlines-hidden.

Index: testsuite/ChangeLog
2006-07-12  Geoffrey Keating  <geoffk@apple.com>

	* g++.dg/ext/visibility/fvisibility-inlines-hidden-2.C: New.

From-SVN: r115411
2006-07-13 06:16:59 +00:00
Jason Merrill
1f0b926a1f re PR c++/28279 (ICE in finish_static_data_member_decl, at cp/decl2.c:716)
PR c++/28279
        * decl2.c (finish_static_data_member_decl): Don't assert
        TREE_PUBLIC.

From-SVN: r115228
2006-07-06 14:39:39 -04:00
Kazu Hirata
e7d35a8840 * decl2.c: Fix a comment typo.
From-SVN: r115099
2006-06-30 19:34:38 +00:00
Jason Merrill
444762dfeb re PR c++/18698 (Error message using "using" for code not using "using" ;-))
PR c++/18698
        * decl2.c (grokfield): Only try to treat the decl as an access
        declaration if the scope is a class.

From-SVN: r115095
2006-06-30 14:27:18 -04: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
Volker Reichelt
8bdb09cb0b re PR c++/27951 (ICE with invalid anonymous union)
PR c++/27951
	* decl2.c (finish_anon_union): Return early if build_anon_union_vars
	fails.

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

From-SVN: r114577
2006-06-12 20:50:53 +00:00
Mike Stump
3db45ab592 Fix up whitespacing
From-SVN: r114428
2006-06-06 11:44:09 +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
Mark Mitchell
ceacde632a re PR c++/26122 (Pure specifiers for templates causing trouble)
PR c++/26122
	* decl2.c (check_member_template): Remove checks for virtual
	functions.
	* parser.c (cp_parser_function_specifier_opt): Complain about
	virtual templates.
	(cp_parser_pure_specifier): Likewise.
	PR c++/26122
	* g++.old-deja/g++.oliva/template9.C: Remove XFAIL.

From-SVN: r113873
2006-05-17 21:39:07 +00:00
Volker Reichelt
15218346be re PR c++/27447 (ICE on invalid ptr-to-member-function)
PR c++/27447
	* decl2.c (build_memfn_type): Skip invalid functions and class types.

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

From-SVN: r113615
2006-05-08 00:26:08 +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
Mark Mitchell
5a8613b2d9 re PR c++/27094 (tree check: expected tree_list, have omp_return in build_call)
PR c++/27094
	* pt.c (tsubst_default_argument): Increment function_depth around
	call to tsubst_expr.
	* parser.c (cp_parser_parameter_declaration): Likewise.
	* decl2.c (mark_used): Tidy.
	PR c++/27094
	* g++.dg/template/defarg8.C: New test.

From-SVN: r113399
2006-04-30 23:21:38 +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
84dc00e8ac * decl2.c, pt.c, semantics.c: Fix comment typos.
From-SVN: r112779
2006-04-08 14:15:44 +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
Mike Stump
67a70df65b decl2.c (import_export_decl): Remove redundant call to targetm.cxx.key_method_may_be_inline ().
* decl2.c (import_export_decl): Remove redundant call to
	targetm.cxx.key_method_may_be_inline ().

From-SVN: r111685
2006-03-03 20:37:50 +00:00
Mike Stump
1a1d091751 re PR target/25908 (vtables with vague linkage is not being marked as vague on darwin)
PR darwin/25908
	* decl2.c (import_export_decl): Fix ABI breakage on darwin.

	* g++.dg/abi/key2.C: Add.

From-SVN: r111632
2006-03-02 02:20:54 +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
Gabriel Dos Reis
67f5655f98 call.c (alloc_conversion): Use cast when converting from void *.
* call.c (alloc_conversion): Use cast when converting from
	void *.
        (alloc_conversions): Likewise.
        (add_candidate): Likewise.
        (print_z_candidates): Likewise.
        (add_warning): Likewise.
        * pt.c (retrieve_local_specialization): Likewise.
        (process_partial_specialization): Likewise.
        (mangle_class_name_for_template): Likewise.
        (tsubst_template_args): Likewise.
        * typeck2.c (pat_calc_hash): Likewise.
        (pat_compare): Likewise.
        (abstract_virtuals_error): Likewise.
        * class.c (method_name_cmp): Likewise.
        (resort_method_name_cmp): Likewise.
        (get_vfield_name): Likewise.
        * decl2.c (generate_ctor_and_dtor_functions_for_priority):
	Likewise.
        * lex.c (init_reswords): Likewise.
        * rtti.c (create_pseudo_type_info): Likewise.
        * search.c (dfs_lookup_base): Likewise.
        (dfs_dcast_hint_pre): Likewise.
        (dfs_dcast_hint_post): Likewise.
        * tree.c (hash_tree_cons): Likewise.
        * repo.c (extract_string): Likewise.
        (afgets): Likewise.
        * cp-objcp-common.c (decl_shadowed_for_var_lookup): Likewise.
        * g++spec.c (lang_specific_driver): Likewise.

From-SVN: r110366
2006-01-29 09:10:48 +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
Mark Mitchell
520c308128 * decl2.c (mark_used): Fix typo in comment.
From-SVN: r109239
2006-01-02 17:53:44 +00:00
Mark Mitchell
7eab6e7b91 re PR c++/25369 (use of inline function in template class leads to undefined reference)
PR c++/25369
	* g++.dg/template/ptrmem16.C: New test.
	PR c++/25369
	* tree.c (really_overloaded_fn): Tweak comment.
	* pt.c (tsubst_call_declarator_parms): Remove.
	(tsubst_copy): Call mark_used on the member referenced by an
	OFFSET_REF.
	* semantics.c (finish_qualified_id_expr): Simplify.
	* decl2.c (mark_used): Accept BASELINKs.

From-SVN: r109010
2005-12-23 07:40:04 +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
Jason Merrill
96c993a890 re PR c++/17256 (undefined but used static or inline functions should be diagnosed)
PR c++/17256
        * decl2.c (cp_finish_file): Fix conditions for undefined warning.
        Set TREE_NO_WARNING instead of TREE_PUBLIC.
        * pt.c (instantiate_pending_templates): Set DECL_INITIAL to avoid
        a warning on a function we didn't instantiate because of excessive
        recursion.

Co-Authored-By: James A. Morrison <phython@gcc.gnu.org>

From-SVN: r106581
2005-11-07 01:17:47 -05:00
Kazu Hirata
dd36d4e1da * decl2.c, init.c, typeck.c: Fix comment typos.
From-SVN: r106533
2005-11-05 20:34:08 +00:00
Mark Mitchell
2d22db1f2a re PR c++/24389 (template variable not getting marked as weak)
PR c++/24389
	* decl2.c (mark_used): Use uses_template_parms instead of
	dependent_type_p.
	* init.c (constant_value_1): Handle uninstantiated templates
	specially.
	* pt.c (instantiate_decl): Add sanity check.
	PR c++/24389
	* g++.dg/template/static21.C: New test.
	* g++.dg/template/static21-a.cc: Likewise.

From-SVN: r105474
2005-10-16 23:17:53 +00:00
Richard Guenther
6cec5cb56a re PR middle-end/15855 (g++ crash with -O2 and -O3 on input file)
2005-09-26  Richard Guenther  <rguenther@suse.de>

	PR middle-end/15855
	* decl2.c (do_static_destruction): Remove.
	(finish_static_initialization_or_destruction): Likewise.
	(DECL_EFFECTIVE_INIT_PRIORITY): New macro.
	(NEEDS_GUARD_P): Likewise.
	(do_static_initialization): Rename to
	do_static_initialization_or_destruction.  Process all
	initializers/destructors and handle common conditionalizing.
	(start_static_initialization_or_destruction): Rename to
	one_static_initialization_or_destruction.  Handle only
	decl-specific conditionalizing.
	(cp_finish_file): Call do_static_initialization_or_destruction.

From-SVN: r104642
2005-09-26 08:42:57 +00:00
Richard Henderson
56b4ea3de8 decl2.c (build_anon_union_vars): Copy attributes from the base addr.
* decl2.c (build_anon_union_vars): Copy attributes from the base addr.
        * pt.c (tsubst_decl): Substitute in DECL_VALUE_EXPR.

        * g++.dg/other/error8.C: Update expected diagnostic text.

From-SVN: r104160
2005-09-11 21:04:03 -07:00
Richard Henderson
9bfa80fb88 dbxout.c: Include expr.h.
* dbxout.c: Include expr.h.
        (dbxout_global_decl): Don't suppress for DECL_RTL unset.
        (dbxout_symbol): Handle DECL_VALUE_EXPR.
        * Makefile.in (dbxout.o): Add EXPR_H.
cp/
        * cp-tree.def (ALIAS_DECL): Remove.
        * cp-lang.c (cp_init_ts): Remove support for it.
        * error.c (dump_decl): Likewise.
        * name-lookup.c (pushdecl): Likewise.
        * semantics.c (finish_id_expression): Likewise.
        * decl2.c (build_anon_union_vars): Use a VAR_DECL with
        DECL_VALUE_EXPR instead.

From-SVN: r104106
2005-09-09 14:00:49 -07: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