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