blob: 3269fa7f4a2c6e1f657ce30a77d77d9d428369ef [file] [log] [blame]
2005-12-30 Gabriel Dos Reis <>
* cxx-pretty-print.c (pp_cxx_constant): New. Print
string-literal in parens if input program says so.
(pp_cxx_primary_expression): Hand off constant printing to
(pp_cxx_pretty_printer_init): Set pp->c_base.constant.
(pp_cxx_expression): Use pp_cxx_constant for literals.
* error.c (dump_expr): Use pp_constant for literals.
2005-12-29 Nathan Sidwell <>
* method.c (make_thunk): Don't set comdat_linkage here.
(use_thunk): Make thunk one only here, if thunk target is
2005-12-26 Mark Mitchell <>
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
(cp_parser_declarator_id): Simplify BASELINKs here.
(cp_parser_member_declaration): Adjust calls to
2005-12-26 Mark Mitchell <>
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
* call.c (make_temporary_var_for_ref_to_temp): Use
* 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.
2005-12-23 Mark Mitchell <>
PR c++/24671
* pt.c (instantiate_template): Handle SFINAE.
2005-12-23 Volker Reichelt <>
* decl.c (grokdeclarator): Improve diagnostic for friend
declarations of class members.
2005-12-22 Mark Mitchell <>
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
* semantics.c (finish_qualified_id_expr): Simplify.
* decl2.c (mark_used): Accept BASELINKs.
PR c++/25364
* typeck.c (build_unary_op): Pass DECLs not names to
* init.c (build_offset_ref): Do not do name lookup. Do not call
* call.c (build_call): Simplify and tidy.
* semantics.c (finish_qualified_id_expr): Call mark_used.
2005-12-22 Volker Reichelt <>
PR c++/23333
* parser.c (cp_parser_pure_specifier): Check for PURE_ZERO to
identify a single '0'.
2005-12-20 Mark Mitchell <>
PR c++/21228
* decl.c (use_eh_spec_block): New function.
(store_parm_decls): Use it.
(finish_function): Likewise.
2005-12-19 Mark Mitchell <>
PR c++/24278
* init.c (expand_member_init): Print messages about baseclasses
using %T rather than %D.
PR c++/24915
* class.c (add_method): Do not treat templates as identical unless
their return types are the same.
2005-12-12 Mark Mitchell <>
PR c++/25300
* tree.c (build_qualified_name): Return error_mark_node for
erroneous input.
2005-12-10 Mark Mitchell <>
PR c++/25337
* pt.c (tsubst_copy_and_build): Permit dependent types for the
object in a class member access expression.
2005-12-10 Terry Laurenzo <>
PR java/9861
* mangle.c (write_bare_function_type): Mangle return type for
methods of Java classes
2005-12-08 Théodore Papadopoulo <>
* call.c (build_conditional_expr): Print types in error messages.
2005-12-07 Volker Reichelt <>
* expr.c (cxx_expand_expr): Call gcc_unreachable instead of abort.
2005-12-07 Volker Reichelt <>
* cp-gimplify.c (gimplify_cp_loop): Use fold_build3.
2005-12-07 Rafael Ávila de Espíndola <>
* (, c++.install-normal): Remove.
2005-12-07 Rafael Ávila de Espíndola <>
* Remove all dependencies on s-gtype.
2005-12-06 Aldy Hernandez <>
PR C++/24138
* decl.c (reshape_init_array_1): Handle max_index of -1.
2005-12-06 Roger Sayle <>
* typeck.c (build_binary_op): Issue warning if either operand of a
comparison operator is a string literal, except for testing equality
or inequality against NULL.
2005-12-06 Roger Sayle <>
PR c++/25263
* decl.c (compute_array_index_type): Check that itype is an
INTEGER_CST node before testing/clearing TREE_OVERFLOW.
2005-12-05 Daniel Berlin <>
* ptree.c (cxx_print_decl): Update to check for decl_common
2005-12-02 Mark Mitchell <>
PR c++/24173
* decl.c (duplicate_decls): Don't rely on DECL_TEMPLATE_INFO after
clobbering newdecl.
2005-12-02 Richard Guenther <>
* semantics.c (simplify_aggr_init_expr): Use buildN instead
of build.
2005-12-02 Gabriel Dos Reis <>
* parser.c (cp_lexer_new_main): Usr GGC_RESIZEVEC instead of
(cp_parser_template_argument_list): Use XRESIZEVEC instead of
* class.c (pushclass): Likewise.
2005-12-02 Gabriel Dos Reis <>
* 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.
2005-12-01 Gabriel Dos Reis <>
* parser.c (cp_parser_make_typename_type): Call make_typename_type
with tf_none instead of magic value 0.
(cp_parser_explicit_instantiation): Call do_type_instantiation
with tf_error instead of magic value 1.
(cp_parser_elaborated_type_specifier): Call make_typename_type
with tf_error instead of magic value 1.
(cp_parser_class_name): Likewise.
(cp_parser_lookup_name): Likewise.
2005-12-01 Gabriel Dos Reis <>
* parser.c (cp_parser_declaration): Set token2.type to CPP_EOF,
not RID_MAX.
2005-11-30 Jason Merrill <>
PR c++/21123
* cp-gimplify.c (cp_genericize_r): Don't dereference invisible reference
parms in a thunk.
2005-11-30 Ben Elliston <>
* typeck.c (build_x_unary_op): Correct spelling in error message.
2005-11-28 Nathan Sidwell <>
PR c++/21166
* class.c (check_field_decls): Only set DECL_PACKED on a field
when its natural alignment is > BITS_PER_UNIT.
2005-11-27 Volker Reichelt <>
PR c++/24979
* cp-tree.h (DECL_MAIN_P): Remove duplicate definition.
2005-11-26 Richard Henderson <>
* lex.c: Update for pragma_lex rename.
* parser.c: Likewise.
2005-11-25 Volker Reichelt <>
PR c++/9278
* decl.c (grokparms): Do not allow typedef-names in a '(void)'
2005-11-25 Volker Reichelt <>
* typeck2.c (process_init_constructor_union): Remove check for
unnamed union members.
2005-11-25 Volker Reichelt <>
* name-lookup.c (lookup_name_real): Merge two if's.
2005-11-25 Volker Reichelt <>
* pt.c (instantiate_class_template): Clean-up.
2005-11-25 Volker Reichelt <>
* pt.c (template_class_depth_real): Remove. Move functionality to ...
(template_class_depth): ... here, replacing count_specializations
with 0. Adjust comment.
2005-11-24 Richard Guenther <>
Dirk Mueller <>
PR c++/14024
* typeck.c (build_reinterpret_cast_1): Use
2005-11-23 Gabriel Dos Reis <>
PR c++/24235
* pt.c (check_instantiated_args): Reword diagnostic message about
template argument involving local types.
2005-11-23 Gabriel Dos Reis <>
PR c++/21667
* typeck.c (build_array_ref): Avoid code duplicate. Use common
C/C++ diagnostic function warn_array_subscript_with_type_char.
2005-11-21 Gabriel Dos Reis <>
PR c++/22238
* error.c (resolve_virtual_fun_from_obj_type_ref): New.
(dump_expr): Use it in <case CALL_EXPR>.
2005-11-21 Richard Henderson <>
* 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.
2005-11-18 Mark Mitchell <>
PR c++/8355
* decl.c (grokfndecl): Set up DECL_TEMPLATE_INFO before calling
* name-lookup.c (set_decl_namespace):
2005-11-18 Mike Stump <>
* cp-objcp-common.h (LANG_HOOKS_LOOKUP_NAME): Add.
* name-lookup.c (lookup_name_two): Remove.
(lookup_name_one): Add.
* name-lookup.h (lookup_name_two): Remove.
(lookup_name_one): Add.
2005-11-15 Jason Merrill <>
PR c++/24580
* method.c (locate_copy): Also use skip_artificial_parms here.
(synthesize_exception_spec): Use CLASS_TYPE_P rather than checking
(locate_ctor): Abort if we fail to find a default constructor.
2005-11-15 Mike Stump <>
* name-lookup.c (lookup_name_two): Add.
* name-lookup.h: Likewise.
2005-11-15 Mark Mitchell <>
PR c++/24667
* typeck.c (check_for_casting_away_constness): Use the diag_fn.
(build_const_cast_1): Call it, for C-style casts.
2005-11-14 Mark Mitchell <>
PR c++/24687
* pt.c (check_explicit_specialization): Don't check for C linkage.
(push_template_decl_real): Likewise.
* parser.c (cp_parser_explicit_specialization): Check here.
(cp_parser_template_declaration_after_export): And here.
* parser.c (cp_lexer_get_preprocessor_token): Initialize keyword
2005-11-14 Jason Merrill <>
PR c++/24580
* method.c (locate_ctor): Skip all artificial parms, not just
2005-11-14 Mark Mitchell <>
* parser.c (eof_token): Add initializer for ambiguous_p.
2005-11-13 Mark Mitchell <>
PR c++/24817
* decl.c (check_redeclaration_exception_specification): New
(duplicate_decls): Use it.
* error.c (fndecl_to_string): Print the template parameter list.
PR c++/20293
* cxx-pretty-print.c (pp_cxx_statement): Print qualifying scopes
for namespaces.
(pp_cxx_original_namespace_definition): Likewise.
* name-lookup.c (ambiguous_decl): Don't issue error messages;
instead return lists of ambiguous candidates.
(select_decl): Handle ambiguous namespace lookups.
* parser.c (cp_token): Add ambiguous_p.
(cp_lexer_get_preprocessor_token): Set it.
(cp_parser_diagnose_invalid_type_name): Avoid duplicate messages
when a qualified name uses an invalid scope.
(cp_parser_primary_expression): Print ambiguous candidates.
(cp_parser_type_parameter): Adjust comment to reflect new
parameter name for cp_parser_lookup_name.
(cp_parser_template_argument): Likewise.
(cp_parser_elaborated_type_specifier): Likewise.
(cp_parser_namespace_name): Likewise.
(cp_parser_class_name): Print ambiguous candidates.
(cp_parser_lookup_name): Rename ambiguous_p parameter to
ambiguous_decls. Use it to return a list of ambiguous candiates
when a lookup is ambiguous.
(cp_parser_lookup_name_simple): Adjust comment to reflect new
parameter name for cp_parser_lookup_name.
2005-11-12 Jakub Jelinek <>
PR c++/24780
* typeck.c (complete_type): Set TYPE_NEEDS_CONSTRUCTING
and TYPE_HAS_NONTRIVIAL_DESTRUCTOR flags for all variants
of array type.
PR c++/24761
* pt.c (tsubst_copy_asm_operands): New function.
(tsubst_expr) <case ASM_EXPR>: Use it.
2005-11-08 Jakub Jelinek <>
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.
2005-11-08 Jason Merrill <>
PR c++/21123
* method.c (use_thunk): Use build_cplus_new instead of
2005-11-06 Jason Merrill <>
James A. Morrison <>
PR c++/17256
* decl2.c (cp_finish_file): Fix conditions for undefined warning.
* pt.c (instantiate_pending_templates): Set DECL_INITIAL to avoid
a warning on a function we didn't instantiate because of excessive
2005-11-06 Mark Mitchell <>
* class.c (record_subobject_offsets): Don't record offsets past
biggest empty class for non-empty base classes.
(layout_class_type): Use TYPE_SIZE_UNIT, not TYPE_SIZE, when
keeping track of the size of emptyclasses.
PR c++/21308
* class.c (sizeof_biggest_empty_class): New variable.
(record_subobject_offsets): Don't record offsets past biggest
empty class for data members. Replace vbases_p parameter with
is_data_member parameter.
(build_base_field): Adjust call.
(layout_class_type): Likewise. Maintain
2005-11-05 Kazu Hirata <>
* decl2.c, init.c, typeck.c: Fix comment typos.
2005-11-04 Richard Guenther <>
PR c++/22487
* init.c (build_vec_init): Build comparison of matching
2005-11-03 Josh Conner <>
PR c++/19989
pt.c (tsubst): Accept zero-length array if tf_error is set
in complain flags. Change error message for negative-
length array.
2005-11-04 Joseph S. Myers <>
* cp-tree.h (cp_cpp_error), error.c (cp_cpp_error): Take va_list*
2005-11-03 Joseph S. Myers <>
PR c++/17964
* error.c (cp_cpp_error): New function.
* cp-tree.h (cp_cpp_error): Declare.
* parser.c (cp_lexer_new_main): Set CPP option client_diagnostic
and error callback after lexing.
2005-11-03 Mark Mitchell <>
PR c++/21627
* pt.c (register_specialization): Update inline flags on clones.y
2005-11-03 Andrew Pinski <>
PR c++/24582
* decl.c (declare_local_label): Return 0 for variables
with error_mark_node as their types.
2005-11-02 Mark Mitchell <>
PR c++/22434
* call.c (build_conditional_expr): Do bad conversions, if there's
no other choice.
PR c++/24560
* parser.c (cp_parser_postfix_dot_deref_expression): Improve error
message for use of overloaded functions on LHS of "." operator.
PR c++/19253
* parser.c (cp_parser_postfix_expression): Use
cp_parser_elaborated_type_specifier to handle typename-types in
functional casts.
(cp_parser_enclosed_argument_list): Skip ahead to the end of the
template argument list if the closing ">" is not found.
PR c++/24569
* pt.c (instantiate_decl): Use cp_finish_decl, not
2005-10-28 Andrew Pinski <>
* decl.c (grokfndecl): Remove the setting
of the return type of the function type
of main after erroring about must returning
2005-10-28 Andrew Pinski <>
PR C++/23229
* decl.c (grokfndecl): Create a new function type
after erroring out about main not returning int.
2005-10-28 Josh Conner <>
PR c++/22153
* parser.c (cp_parser_member_declaration): Detect and handle
a template specialization.
2005-10-28 Andrew Pinski <>
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
2005-10-21 Mark Mitchell <>
PR c++/24260
* parser.c (cp_parser_init_declarator): Pass attributes to
2005-10-20 Mark Mitchell <>
PR c++/22618
* search.c (accessible_p): Check access in the outermost set of
template parameters.
2005-10-20 Richard Guenther <>
* decl.c (grokdeclarator): Fix ambiguous pedwarn message.
2005-10-18 Volker Reichelt <>
PR c++/22293
* decl.c (grokdeclarator): Reject unqualified destructors in
friend declarations.
2005-10-18 Mark Mitchell <>
PR c++/23293
* pt.c (convert_template_argument): Use canonical type variants in
template specializations.
2005-10-18 Nathan Sidwell <>
PR c++/21383
* name-lookup.c (arg_assoc): Template args can be null in a
PR c++/22604
* class.c (update_vtable_entry_for_fn): Don't process invalid
covariant overriders.
PR c++/23118
* cp-tree.h (add_method): Add return value.
* class.c (add_method): Return success indicator.
* semantics.c (finish_member_declaration): Don't add an invalid
method to the method list.
2005-10-17 Mark Mitchell <>
PR c++/21908
* call.c (build_new_method_call): Do not show VTT parameters to
the user.
2005-10-17 Volker Reichelt <>
PR c++/23440
* parser.c (cp_parser_statement): If the parser reached CPP_EOF,
only complain about missing statement.
2005-10-17 Nathan Sidwell <>
PR c++/24386
* cp-tree.h (BASELINK_QUALIFIED_P): New.
* pt.c (tsubst_copy_and_build): <CALL_EXPR case>: Use it.
* typeck.c (finish_class_member_access_expr): Set it.
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.
2005-10-16 Mark Mitchell <>
PR c++/24389
* decl2.c (mark_used): Use uses_template_parms instead of
* init.c (constant_value_1): Handle uninstantiated templates
* pt.c (instantiate_decl): Add sanity check.
2005-10-16 Mark Mitchell <>
PR c++/22173
* typeck.c (check_template_keyword): Fix thinko.
2005-10-16 Andrew Pinski <>
PR c++/23959
* decl.c (pop_switch): Only call c_do_switch_warnings
when not processing templates.
2005-10-16 Mark Mitchell <>
PR c++/22173
* cp-tree.h (QUALIFIED_NAME_IS_TEMPLATE): New macro.
(check_template_keyword): New function.
(finish_id_expression): Change prototoype.
(finish_qualified_id_expr): Change prototype.
(build_qualified_name): New function.
(finish_class_member_access_expr): Change prototype.
* init.c (build_offset_ref): Use build_qualified_name.
* mangle.c (write_expression): Likewise.
* parser.c (cp_parser_primary_expression): Remove qualifying_class
parameter. Add address_p and template_arg_p. Use
(cp_parser_id_expression): Default *template_p to
template_keyword_p. Check for invalid uses of the template
(cp_parser_postfix_expression): Eliminate special handling for
qualified names. Adjust call to cp_parser_primary_expression.
(cp_parser_postfix_dot_deref_expression): Adjust call to
cp_parser_id_expression and finish_class_member_access_expr.
(cp_parser_template_argument_list): Add comment.
(cp_parser_template_argument): Adjust use of
cp_parser_primary_expression. Remove call to
(cp_parser_lookup_name): Use build_qualified_name.
* pt.c (tsubst): Use build_qualified_name.
(tsubst_qualified_id): Likewise. Adjust call to
(tsubst_copy): Use build_qualified_name.
(tsubst_copy_and_build): Adjusts call to finish_id_expression and
* semantics.c (finish_non_static_data_member): Use
(finish_qualified_id_expr): Add template_p and template_arg_p
(finish_id_expression): Remove qualifiying_class parameter. Add
template_p, done, address_p, and template_arg_p. Use
build_qualified_name. Adjust calls to
* tree.c (build_qualified_name): New function.
* typeck.c (check_template_keyword): New function.
(finish_class_member_access_expr): Add template_p argument. Check
for invalid uses of the template keyword.
2005-10-15 Mark Mitchell <>
PR c++/21347
* class.c (maybe_warn_about_overly_private_class): Lazy
constructors are public.
2005-10-14 Mark Mitchell <>
PR c++/19565
* call.c (convert_like_real): Rely on convert_and_check to issue
warnings about overflow and conversion to unsigned.
* decl.c (finish_enum): Use the location of the enumerators, not
the closing brace of the enumeration, when reporting warnings
about conversions.
(build_enumerator): Use error_mark_node for erroneous values.
* typeck2.c (digest_init): Remove reference to "signature pointer"
from comment.
2005-10-14 Nathan Sidwell <>
PR c++/17796
* optimize.c (update_cloned_parm): Add FIRST parameter. Use it.
(maybe_clone_body): Track the first clone.
2005-10-13 Nathan Sidwell <>
PR c++/23984
* class.c (build_base_path): The vtable is always the first thing
in the vtt.
2005-10-13 Mark Mitchell <>
PR c++/20721
* 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++/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
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
PR c++/22405
* pt.c (most_specialized_instantiation): Robustify.
PR c++/22464
* semantics.c (finish_id_expression): Issue errors about uses of
local variables in containing functions even in templates.
2005-10-12 Danny Smith <>
PR target/21801
PR target/23589
* class.c (finish_struct_1): Call
2005-10-12 Nathan Sidwell <>
PR c++/21592
* pt.c (build_non_dependent_expr): Don't wrap a COMPONENT_REF
with already looked up member functions. Assert we're not
returning a NON_DEPENDENT_EXPR with unknown type.
* typeck.c (finish_class_member_access_expr): We can get
non-template-id-expr baselinks. If the lookup finds a baselink,
remember it even inside templates.
PR c++/23797
* parser.c (cp_parser_functional_cast): Cope when TYPE is not a
TYPE_DECL. Use dependent_type_p to check type.
* pt.c (uses_template_parms_p): Use dependent_type_p for a
(type_dependent_expression_p): Assert we've not been given a
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.
2005-10-12 David Edelsohn <>
PR c++/23730
* call.c (build_object_call): If BINFO is NULL, bypass
lookup_fnfields and set fns to NULL_TREE.
2005-10-12 Paolo Bonzini <>
PR c++/24052
* error.c (dump_expr): Pass LABEL_DECL to dump_decl. Print
an ADDR_EXPR of a LABEL_DECL as &&.
2005-10-12 Nathan Sidwell <>
PR c++/19964
* class.c (walk_subobject_offsets): Don't walk error_mark_node.
2005-10-11 Ian Lance Taylor <>
PR c++/8057
* cvt.c (convert_to_void): Don't warn about unused values when
processing a template declaration.
2005-10-11 Mark Mitchell <>
PR c++/21089
* call.c (convert_like_real): Use decl_constant_value, not
* init.c (constant_value_1): New function.
(integral_constant_value): Use it.
(decl_constant_value): Likewise.
* typeck.c (decay_conversion): Use decl_constant_value, not
PR c++/21369
* parser.c (cp_parser_elaborated_type_specifier): Don't treat
class types as templates if the type is not appearing as part of a
type definition or declaration.
2005-10-10 Mark Mitchell <>
PR c++/24277
* pt.c (instantiate_decl): Call finish_static_data_member_decl for
static data members.
2005-10-10 Giovanni Bajo <>
Mark Mitchell <>
PR c++/23437
* parser.c (cp_parser_template_argument_list): Do not treat
contents of argument list as part of a constant expression.
2005-10-10 Mark Mitchell <>
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++/24275
* pt.c (instantiate_decl): Instantiate the initializer of
a static data member in the namespace containing the class
containing the static data member.
2005-10-08 James A. Morrison <>
PR c++/22172
* parser.c (cp_parser_postfix_expression) <RID_TYPENAME>: Treat nontype
scopes as nondependent.
2005-10-06 Volker Reichelt <>
* call.c (resolve_args): Remove redundant test.
2005-10-05 Paolo Bonzini <>
PR tree-optimization/21419
PR tree-optimization/24146
PR tree-optimization/24151
* semantics.c (finish_asm_stmt): Call readonly_error if outputs are
read-only. Set ASM_VOLATILE_P for asms without outputs.
2005-10-05 Nathan Sidwell <>
PR c++/23513
* call.c (joust): Adjust length count to more_specialized_fn.
* pt.c (more_specialized_fn): Cope with non-static member vs
2005-10-04 Andrew Pinski <>
PR middle-end/23125
* decl.c (make_rtl_for_nonlocal_decl): Use set_user_assembler_name
instead of change_decl_assembler_name.
2005-10-03 Alexandre Oliva <>
* error.c (dump_type) <UNKNOWN_TYPE>: Print reworded message.
2005-10-03 Mark Mitchell <>
PR c++/17775
* repo.c: Include flags.h.
(finish_repo): Add -frandom-seed to the arguments.
2005-10-02 Mark Mitchell <>
PR c++/22621
* parser.c (cp_parser_template_argument): Don't turn "T::f" into
* pt.c (convert_nontype_argument): Remove ??? comment.
PR c++/23840
* tree.c (lvalue_p_1): A VA_ARG_EXPR with class type is an lvalue,
when class rvalues are lvalues.
2005-09-28 Mark Mitchell <>
PR c++/16782
* decl.c (grokdeclarator): Always pedwarn about overqualified
member names.
2005-09-27 Mark Mitchell <>
PR c++/22147
* name-lookup.c (maybe_process_template_type_declaration): Don't
treat forward declarations of classes as templates just because
we're processing_template_decl.
* pt.c (tsubst_decl): Clear DECL_TEMPLATE_INFO for friend
2005-09-26 Jason Merrill <>
PR c++/13764
* cp-tree.h (FUNCTION_NEEDS_BODY_BLOCK): New macro.
* name-lookup.c (pushdecl_maybe_friend): Check it.
* 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.
2005-09-26 Richard Guenther <>
PR middle-end/15855
* decl2.c (do_static_destruction): Remove.
(finish_static_initialization_or_destruction): Likewise.
(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.
2005-09-22 Jakub Jelinek <>
PR c++/21983
* class.c (find_final_overrider): Move diagnostic about no unique final
overrider to...
(update_vtable_entry_for_fn): ... here.
2005-09-21 Mark Mitchell <>
PR c++/23993
* init.c (integral_constant_value): Use DECL_INTEGRAL_CONSTANT_VAR_P.
2005-09-21 Volker Reichelt <>
PR c++/23965
* call.c (resolve_args): Return error_mark_node on arguments
whose TREE_TYPE is error_mark_node.
2005-09-20 Jakub Jelinek <>
PR c++/23947
* rtti.c (get_pseudo_ti_init): Recompute ti pointer after
get_tinfo_ptr calls.
2005-09-16 Mark Mitchell <>
PR c++/23914
* parser.c (cp_parser_enclosed_template_argument_list): Make sure
skip_evaluation is false when processing template arguments.
PR c++/21514
* pt.c (check_instantiated_args): Treat uses of anonymous types as
causing type-deduction failure.
2005-09-15 Jason Merrill <>
PR c++/23357
* cp-tree.def (SIZEOF_EXPR, ALIGNOF_EXPR): Change code class to
2005-09-15 Mark Mitchell <>
PR c++/23896
* pt.c (tsubst_aggr_type): Make sure skip_evaluation is false when
processing template arguments.
* pt.c (check_explicit_instantiation_namespace): Fix typo.
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
(do_type_instantiation): Likewise.
2005-09-15 Nathan Sidwell <>
PR c++/23725
* error.c (dump_decl): <USING_DECL case> Use USING_DECL_SCOPE.
2005-09-13 Bastian Blank <>
PR c++/16171
* mangle.c (find_substitution): Do not use special substitutions
for identifiers not in std::.
2005-09-13 Mark Mitchell <>
PR c++/23839
* typeck.c (cxx_mark_addressable): Only check DECL_HARD_REGISTER
for VAR_DECLs.
2005-09-13 Mark Mitchell <>
PR c++/23842
* pt.c (tsubst_default_argument): Do treat default argument
expressions as occurring in the context of the function called.
2005-09-12 Mark Mitchell <>
PR c++/23841
* parser.c (cp_parser_primary_expression): Recognize the closing
">" of a template-argument-list after a floating-point literal as
the end of a cast expression.
2005-09-12 Mark Mitchell <>
PR c++/23789
* cvt.c (perform_qualification_conversions): Don't create
unnecessary NOP_EXPRs.
* pt.c (tsubst_template_arg): Use fold_non_dependent_expr.
2005-09-12 Ian Lance Taylor <>
PR g++/7874
* cp-tree.h (struct lang_decl_flags): Add hidden_friend_p
bitfield. Make dummy bitfield one bit smaller.
(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
* name-lookup.c (supplement_binding): Don't ignore a
(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
(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
* 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.
2005-09-11 Richard Henderson <>
* decl2.c (build_anon_union_vars): Copy attributes from the base addr.
* pt.c (tsubst_decl): Substitute in DECL_VALUE_EXPR.
2005-09-09 Gabriel Dos Reis <>
* parser.c (cp_parser_translation_unit): Simplify. The while-block
was actually executed at most once.
2005-09-09 Richard Henderson <>
PR debug/20998
* 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
2005-09-09 Mark Mitchell <>
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.
2005-09-08 Richard Henderson <>
PR debug/23190
* decl.c (wrapup_globals_for_namespace): Call
* decl2.c (cp_finish_file): Likewise.
2005-09-08 Mark Mitchell <>
PR c++/23691
* decl2.c (mark_used): Instantiate static data members initialized
by constants, even in a template.
2005-09-08 Andrew Pinski <>
PR obj-c++/16816
* parser.c (cp_parser_objc_selector_expression): Treat CPP_SCOPE as
2005-09-07 Richard Guenther <>
* cp-gimplify.c (cp_gimplify_expr): Create empty CONSTRUCTOR
2005-09-06 Jakub Jelinek <>
PR c/23075
* typeck.c (check_return_expr): Add no_warning argument. Set
*no_warning to true if "return-statement with no value, in function
returning" warning has been issued.
* cp-tree.h (check_return_expr): Adjust prototype.
* semantics.c (finish_return_stmt): Set TREE_NO_WARNING if
check_return_expr set *no_warning to true.
2005-09-06 Mark Mitchell <>
* cp-tree.h (rvalue): New function.
* call.c (build_conditional_expr): Use it.
* init.c (build_new_1): Likewise.
* rtti.c (build_dynamic_cast_1): Likewise.
* tree.c (rvalue): New function.
* typeck.c (build_unary_op): Use it.
(build_static_cast_1): Likewise.
PR c++/9782
* init.c (build_new_1): Make sure the entire array type is
complete, not just its element types.
2005-09-06 Volker Reichelt <>
* decl.c (check_elaborated_type_specifier): Remove redundant check.
2005-09-06 Jakub Jelinek <>
PR c++/23056
* typeck.c (ignore_overflows): New helper function.
(build_static_cast_1): Use it.
2005-09-06 Kazu Hirata <>
* cp-tree.h, decl.c, decl2.c, semantics.c: Fix comment typos.
Follow spelling conventions.
2005-09-05 Mark Mitchell <>
PR c++/23667
* pt.c (tsubst_decl): Clear DECL_TEMPLATE_INSTANTIATED when
copying a VAR_DECL.
2005-09-05 Mark Mitchell <>
PR c++/21440
* semantics.c (finish_stmt_expr_expr): Add an explicit
initialization to the last statement in the statement-expression.
* (finish_stmt_expr): Adjust accordingly.
2005-09-03 Mark Mitchell <>
PR c++/23699
* decl2.c (mark_used): Always instantiate static data members
initialized by constant expressions.
* pt.c (instantiate_decl): Instantiate the initializers for static
data members initialized by constant expressions.
PR c++/21687
* semantics.c (expand_or_defer_fn): Do not call ggc_collect when
finishing processing for a template function in a local class.
2005-09-02 Mark Mitchell <>
* parser.c (cp_parser_class_specifier): Push/pop GC contexts
around functions in local classes.
2005-09-02 Mark Mitchell <>
PR c++/21687
* parser.c (cp_parser_class_specifier): Push/pop GC contexts
around functions in local classes.
2005-08-31 Andrew Pinski <>
PR obj-c++/23640
* decl2.c (cp_finish_file): If this is obj-c++ and we need a static
init, call generate_ctor_or_dtor_function.
2005-08-31 Volker Reichelt <>
PR c++/13377
* parser.c (cp_parser_lookup_name): Pass LOOKUP_COMPLAIN to
lookup_name_real on final parse.
2005-08-31 Volker Reichelt <>
PR c++/23639
* semantics.c (qualified_name_lookup_error): Do not complain again
on invalid scope.
2005-08-30 Volker Reichelt <>
PR c++/23586
* parser.c (cp_parser_namespace_name): Move diagnostic for
invalid namespace-name to here from ...
* name-lookup.c (do_namespace_alias): ... here and ...
(do_using_directive): ... here. Remove dead code.
2005-08-28 Mark Mitchell <>
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.
2005-08-26 Mark Mitchell <>
PR c++/19004
* pt.c (uses_template_parms): Handle IDENTIFIER_NODE.
(type_dependent_expression_p): Allow BASELINKs whose associated
functions are simply a FUNCTION_DECL.
PR c++/23491
* cp-tree.h (build_vec_init): Adjust prototype.
* init.c (perform_member_init): Adjust call to build_vec_init.
(build_aggr_init): Likewise.
(build_new_1): Do not call build_default_init for array types.
(build_vec_init): Add explicit_default_init_p parameter. Perform
default initialization of vector elements when set.
* typeck.c (build_modify_expr): Adjust call to build_vec_init.
2005-08-25 Nathan Sidwell <>
PR c++/20817
* typeck.c (build_x_unary_op): Make sure OFFSET_REF is not for a
2005-08-24 Nathan Sidwell <>
PR c++/22454
* parser.c (cp_lexer_peek_nth_token): Relax assert.
2005-08-23 Nathan Sidwell <>
PR c++/23044
* pt.c (tsubst_qualified_id): A SCOPE_REF can still remain.
2005-08-22 James E Wilson <>
PR tree-optimization/23426
* decl.c (grokdeclarator): Use TYPE_SIZE_UNIT not TYPE_SIZE for
array size check.
2005-08-22 Volker Reichelt <>
PR c++/22233
* pt.c (push_template_decl_real): Return error_mark_node if the
number of template parameters does not match previous definition.
2005-08-22 Volker Reichelt <>
PR c++/23089
* decl.c (require_complete_types_for_parms): Mark incomplete types
as invalid.
2005-08-19 Volker Reichelt <>
* parser.c (cp_parser_nth_token_starts_template_argument_list_p):
Fix typo in leading comment.
2005-08-15 Kaveh R. Ghazi <>
* name-lookup.c, ptree.c: Delete HOST_PTR_PRINTF.
2005-08-15 Fariborz Jahanian <>
* cp-tree.h (can_convert_arg, fn_type_unification): New argument.
* call.c (add_template_candidate_real): Pass down 'flags' to
(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
2005-08-12 Giovanni Bajo <>
Nathan Sidwell <>
PR c++/21799
PR c++/8271
* pt.c (unify) <METHOD_TYPE>: Check this-pointer cv-qualifiers
2005-08-12 Nathan Sidwell <>
PR c++/21799
Revert my 2005-07-08 patch
* pt.c (type_unification_real): Remove is_method_argument and
assoicated checks.
(fn_type_unification, unify): Adjust type_unification_real calls.
2005-08-11 Volker Reichelt <>
PR c++/23266
* decl2.c (grokfield): Check that method is not static before
marking it as pure.
2005-08-11 Nathan Sidwell <>
PR c++/23219
* name-lookup.c (pushtag): Process the template type before
altering the identifier lookup fields. Remove unreachable code
creating an empty stub decl.
2005-08-10 Volker Reichelt <>
PR c++/20646
* decl.c (grokdeclarator): Reset storage_class after error.
2005-08-08 Volker Reichelt <>
PR c++/22508
* init.c (build_new_1): Check for empty candidate list.
2005-08-06 Volker Reichelt <>
PR c++/23191
* pt.c (tsubst) <case METHOD_TYPE>: Check for error_mark_node
before calling build_exception_variant.
2005-08-06 Volker Reichelt <>
PR c++/19498
* pt.c (tsubst_decl) <case TEMPLATE_DECL>: Return ERROR_MARK_NODE
if substitution of template args did not succeed.
2005-08-06 Michael Matz <>
* method.c (use_thunk): Call init_insn_lengths.
2005-08-05 James A. Morrison <>
PR c++/22514
* name-lookup.c (cp_emit_debug_info_for_using): Do nothing if
sorrycount or errorcount are nonzero.
2005-08-05 Mark Mitchell <>
* name-lookup.c (pushtag): Remove accidental commit from:
2004-12-21 Mark Mitchell <>
PR c++/19063
* decl.c (grokdeclarator): Return error_mark_node, not
void_type_node, to indicate errors.
* parser.c (cp_parser_template_parameter_list): Robustify.
(cp_parser_template_parameter): Likewise.
2005-08-01 Kazu Hirata <>
* class.c, decl.c, name-lookup.c, pt.c, typeck.c, typeck2.c:
Fix comment typos.
2005-07-29 Kazu Hirata <>
* method.c: Fix a comment typo.
2005-07-28 Mark Mitchell <>
PR c++/22545
* call.c (add_builtin_candidate): Adjust for changes in
representation of pointer-to-member types.
2005-07-28 Mike Stump <>
* pt.c (check_explicit_specialization): Add visibility logic.
(lookup_template_class): Likewise.
(instantiate_class_template): Likewise.
2005-07-27 Devang Patel <>
* name-lookup.c (pushtag): Do no set DECL_IGNORED_P bit.
2005-07-25 Ian Lance Taylor <>
* ptree.c (cxx_print_identifier): Print a leading space if the
indent level is 0.
2005-07-24 Kaveh R. Ghazi <>
* call.c (convert_for_arg_passing): Check function pointers when
-Wmissing-format-attribute is activated.
* typeck.c (convert_for_assignment): Likewise.
2005-07-22 Manfred Hollstein <>
* parser.c (cp_parser_declaration): Fix unitialised warnings.
2005-07-21 Andrew Pinski <>
* class.c (build_base_path): Fix typo.
2005-07-21 Andrew Pinski <>
PR C++/22358
* class.c (build_base_path): Convert BINFO_OFFSET to the correct type.
2005-07-21 Volker Reichelt <>
* call.c: Fix comment typo(s).
* cxx-pretty-print.h: Likewise.
* name-lookup.c: Likewise.
* parser.c: Likewise.
2005-07-20 Douglas Gregor <>
PR c++/2922
* semantics.c (perform_koenig_lookup): For dependent calls, just
return the set of functions we've found so far. Later, it will be
augmented by those found through argument-dependent lookup.
* name-lookup.c (lookup_arg_dependent): Implement DR 164 by removing
the optimization that skips namespaces where the functions were
originally found.
2005-07-20 Giovanni Bajo <>
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
* 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
(initialize_artificial_var, cp_complete_array_type): Update to cope
* 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
(expand_default_init): Update call to digest_init.
* parser.c (cp_parser_postfix_expression): Use a VEC for the
(cp_parser_initializer_list): Build a VEC of initializers.
* pt.c (tsubst_copy, tsubst_copy_and_build): Update to cope with VEC
* 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
* typeck.c (build_ptrmemfunc1): Likewise.
* typeck2.c: (cxx_incomplete_type_error, split_nonconstant_init_1):
(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.
New macros.
(build_functional_cast): Use build_constructor_from_list instead of
2005-07-18 Mark Mitchell <>
PR c++/22263
* cp-tree.h (instantiate_decl): Change prototype.
* decl2.c (mark_used): Adjust accordingly.
* pt.c (do_decl_instantiation): Likewise.
(instantiate_class_member): Likewise.
(instantiate_decl): Rename undefined_ok as expl_inst_class_mem_p.
Clear DECL_INTERFACE_KNOWN for an explicitly instantiated template
that has no definition available.
(instantiate_pending_templates): Adjust call to instantiate_decl.
2005-07-17 Mark Mitchell <>
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
2005-07-16 Kaveh R. Ghazi <>
* call.c (diagnostic_fn_t): New.
(build_temp, convert_like_real): Use diagnostic_fn_t.
2005-07-15 Mark Mitchell <>
PR c++/22204
* repo.c (repo_emit_p): Robustify.
2005-07-14 Daniel Berlin <>
Fix PR c++/22452
* tree.c (decl_linkage): Don't check DECL_COMDAT on CONST_DECL.
2005-07-15 Mark Mitchell <>
PR c++/22132
* call.c (implicit_conversion): Add c_cast_p parameter.
(standard_conversion): Likewise. Allow conversions between
differently-qualified pointer types when performing a C-style
(add_function_candidate): Adjust callee.
(build_builtin_candidate): Likewise.
(build_user_type_conversion_1): Likewise.
(conditional_conversion): Likewise.
(can_convert_arg): Likewise.
(can_convert_arg_bad): Likewise.
(perform_implicit_conversion): Likewise.
* cp-tree.h (comp_ptr_ttypes_const): Declare.
* typeck.c (comp_ptr_ttypes_const): Give it external linkage.
Return bool.
2005-07-12 Volker Reichelt <>
Nathan Sidwell <>
PR c++/20172
* pt.c (tsubst_template_parms): Check for invalid non-type
2005-07-09 Andrew Pinski <>
* cp-lang.c (shadowed_var_for_decl, decl_shadowed_for_var_lookup,
decl_shadowed_for_var_insert): Move over to cp-objcp-common.c.
(cp_init_ts): Call init_shadowed_var_for_decl.
Remove include of gt-cp-cp-lang.h.
* cp-objcp-common.c (shadowed_var_for_decl,
decl_shadowed_for_var_lookup, decl_shadowed_for_var_insert): Moved from
(init_shadowed_var_for_decl): New function to initialize
Include gt-cp-cp-objcp-common.h.
* (gt-cp-lang.h): Remove.
(gt-cp-cp-objcp-common.h): Add.
(cp/cp-lang.o): Remove dependancy on gt-cp-lang.h.
(cp/cp-objcp-common.o): Add dependancy on gt-cp-cp-objcp-common.h.
* (gtfiles): Remove cp-lang.c and Add cp-objcp-common.c.
* cp-tree (init_shadowed_var_for_decl): Add prototype.
2005-07-08 Daniel Berlin <>
* Add gt-cp-lang.h.
(cp-lang.o): Ditto.
* class.c (create_vtable_ptr): Stop setting DECL_ASSEMBLER_NAME on
the field.
* 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.
(DECL_SHADOWED_FOR_VAR): Use hashtable.
* decl.c (duplicate_decls): Update for new/updated structures.
* decl2.c (start_static_initialization_or_destruction): Deal with
* pt.c (tsubst_decl): Check TS_DECL_WRTL before doing
* tree.c (handle_init_priority_attribute): Handle priority.
2005-07-08 Nathan Sidwell <>
PR c++/21799
* pt.c (type_unification_real): Add is_method argument. Use it
for this pointer unification.
(fn_type_unification): Adjust type_unification_real call.
(unify): Likewise.
2005-07-07 Nathan Sidwell <>
* pt.c (type_unification_real): Remove allow_incomplete argument.
Remove unreachable code.
(fn_type_unification): Adjust call to type_unification_real.
(unify): Likewise.
2005-07-05 Paolo Bonzini <>
* (class.o, decl2.o): Adjust dependencies.
* class.c: Include tree-dump.h.
* decl2.c: Include tree-dump.h.
2005-07-02 Gabriel Dos Reis <>
* dump.c: Use dump_string_field.
2005-07-03 Joseph S. Myers <>
* cp-tree.h (GCC_DIAG_STYLE): #undef before defining. Change
minimum GCC version for format checking to 4.1.
2005-07-02 Kazu Hirata <>
* (cc1plus-checksum.c): Use
build/genchecksum$(build_exeext), not build/genchecksum$(exeext).
2005-07-02 Joseph S. Myers <>
* name-lookup.c, parser.c: Use %q, %< and %> to quote in
2005-07-02 Zack Weinberg <>
Joseph S. Myers <>
* 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_.
2005-06-30 Daniel Berlin <>
* decl.c (require_complete_types_for_parms): Call relayout_decl
instead of layout_decl.
2005-06-30 Zack Weinberg <>
Jakub Jelinek <>
* cp-lang.c: No need to include cxx-pretty-print.h.
* error.c (cp_printer): Update signature. No need to process
(print_instantiation_partial_context): Output last newline
with pp_base_newline.
* Update dependencies.
2005-06-30 Steven Bosscher <>
* decl.c (start_decl): Replace DECL_THREAD_LOCAL with
(cp_finish_decl): Likewise.
(grokvardecl): Set the default DECL_TLS_MODEL here.
2005-06-28 Joseph S. Myers <>
* cvt.c (ocp_convert): Use invalid_conversion hook.
* typeck.c (build_binary_op): Use invalid_binary_op hook.
(build_unary_op): Use invalid_unary_op hook.
2005-06-28 Paul Brook <>
* (cp/except.o): Depend on $(TARGET_H)
* except.c: Include target.h.
(init_exception_processing): Initialize unwind_resume_libfunc.
* doc/tm.texi: Document TARGET_ASM_TTYPE
2005-06-26 Kaveh R. Ghazi <>
* call.c (build_over_call): Pass in named argument list to
* typeck.c (build_function_call): Likewise.
2005-06-26 Kaveh R. Ghazi <>
* cp-tree.h (lang_check_failed): Add noreturn attribute.
2005-06-25 Kelley Cook <>
* all files: Update FSF address in copyright headers.
2005-06-23 Jason Merrill <>
PR c++/19317
* semantics.c (simplify_aggr_init_expr): Use
2005-06-23 Volker Reichelt <>
* pt.c (register_specialization): Remove superfluous assertion.
2005-06-18 Kaveh R. Ghazi <>
* call.c (convert_like_real): Add format attribute.
* typeck.c (check_for_casting_away_constness,
build_static_cast_1): Likewise.
* typeck2.c (readonly_error, cxx_incomplete_type_diagnostic):
2005-06-17 Geoffrey Keating <>
PR c++/17413
* pt.c (type_unification_real): Apply template type deduction even
to procedure parameters that are not dependent on a template
2005-06-16 Nathan Sidwell <>
* rtti.c (get_tinfo_decl): Avoid caching tinfo_descs when it might
(create_pseudo_type_info): First parameter is an int.
2005-06-15 Nathan Sidwell <>
PR c++/20678
* error.c (dump_expr) <COMPONENT_REF case>: Check DECL_NAME is not
* Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* (gtfiles): Add cp/rtti.c.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
2005-06-14 Roger Sayle <>
* decl.c (grokdeclarator): Only check TREE_OVERFLOW on INTEGER_CST.
2005-06-13 Geoffrey Keating <>
* (c++.install-man): Doesn't really depend on installdirs.
(rule for installing g++.1 manpage): Does depend on installdirs.
2005-06-13 Nathan Sidwell <>
PR c++/20789
* decl.c (cp_finish_decl): Clear runtime runtime initialization if
in-class decl's initializer is bad.
PR c++/21929
* parser.c (struct cp_parser): Document that scope could be
(cp_parser_diagnose_invalid_type_name): Cope with error_mark for
(cp_parser_nested_name_specifier): Return NULL_TREE on error.
(cp_parser_postfix_expression): Deal with null or error_mark
(cp_parser_elaborated_type_specifier): Adjust
cp_parser_nested_name_specifier call.
* parser (cp_parser_skip_to_end_of_block_or_statement): Cleanup.
2005-06-12 Roger Sayle <>
PR c++/21930
* error.c (dump_expr): UNARY_PLUS_EXPR need not handle void types.
Treat CONVERT_EXPR identically to NOP_EXPR.
2005-06-10 Aldy Hernandez <>
PR c++/10611
* cvt.c (build_expr_type_conversion): Same.
* typeck.c (build_binary_op): Handle vectors.
(common_type): Same.
(type_after_usual_arithmetic_conversions): Same.
2005-06-08 Nathan Sidwell <>
PR c++/19497
* cp-tree.def (USING_DECL): Update documentation.
* cp-tree.h (DECL_DEPENDENT_P): New.
* class.c (handle_using_decl): Move most of the processing to ...
* name-lookup.c (do_class_using_decl): ... here. Make stricter.
(push_using_decl): Use USING_DECL_SCOPE.
(cp_emit_debug_info_for_using): Make extern.
* cxx-pretty-print.c (pp_cxx_statement) <USING_DECL case>: Adjust.
* name-lookup.h (cp_emit_debug_info_for_using): Declare.
* pt.c (tsubst_decl) <USING_DECL case>: Use do_class_using_decl
when tsubsting.
(tsubst_expr): Use USING_DECL_SCOPE.
* search.c (lookup_field_1): Use DECL_DEPENDENT_P.
* semantics.c (finish_member_declaration): Likewise.
2005-06-08 Volker Reichelt <>
PR c++/19894
* pt.c (tsubst): Reject pointer-to-member of type void.
PR c++/20563
* parser.c (cp_parser_label_declaration): Deal with invalid/missing
2005-06-07 Nathan Sidwell <>
* cp-tree.def (DEFAULT_ARG): Adjust documentation.
(struct tree_default_arg): Add instantiations member.
* parser.c (cp_parser_late_parsing_default_args): Adjust to use a
* pt.c (tsubst_arg_types): Likewise.
* parser.c (cp_parser_late_parsing_default_args): Fix overeager
assert in previous patch.
2005-06-06 Jakub Jelinek <>
* error.c (locate_error): Use gmsgid instead of msgid for argument
(cp_error_at, cp_warning_at, cp_pedwarn_at): Likewise.
2005-06-06 Nathan Sidwell <>
PR 21903
* cp-tree.def (DEFAULT_ARG): Document TREE_CHAIN use.
* parser.c (cp_parser_late_parsing_default_args): Propagate parsed
argument to any early instantiations.
* pt.c (tsubst_arg_types): Chain early instantiation of default arg.
PR c++/20637
* cp-tree.h (add_method): Add using_decl parameter.
* class.c (add_method): Add using_decl parameter. Adjust error
(handle_using_decl): Pass the using decl to add_method.
(clone_function_decl): Adjust add_member calls.
* decl2.c (check_classfn): Likewise.
* method.c (lazily_declare_fn): Likewise.
* semantics.c (finish_member_declaration): Likewise.
* method.c (synthesize_method): Use inform, not warning.
2005-06-06 Hans-Peter Nilsson <>
* (target_libs): Remove target-gperf.
2005-06-05 Mark Mitchell <>
PR c++/21619
* cp-tree.h (DECL_IS_BUILTIN_CONSTANT_P): New macro.
* parser.c (cp_parser_postfix_expression): Allow non-constant
expressions as arguments to __builtin_constant_p.
* tree.c (builtin_valid_in_constant_expr_p): Use
2005-06-03 Mark Mitchell <>
PR c++/21853
* typeck.c (casts_away_constness_r): Do not drop cv-qualifiers on
the pointed-to type for a pointer-to-member.
PR c++/21336
* cp-tree.h (grok_op_properties): Remove friendp parameter.
* decl.c (grokfndecl): Adjust call.
(grok_op_properties): Determine the class of which the function is
a member by looking at its DECL_CONTEXT, not current_class_type.
* pt.c (tsubst_decl): Adjust call to grok_op_properties.
2005-06-02 Nathan Sidwell <>
* method.c (synthesize_method): Add addtional arg to warning call.
PR c++/21280
* (method.o): Add diagnostic.h
* decl.c (start_preparsed_function): Use decl's location for file
* decl2.c (cp_finish_file): Set input_location before synthesizing
a function.
(mark_used): When deferring a synthesized function, save current
location. Do not set function's location when actually
synthesizing it.
* method.c: #include diagnostic.h.
(synthesize_method): Set the functions source location. Show
needed location if errors are emitted.
* decl.c (start_decl): Simplify specialization handling. Remove
* mangle.c (discriminator_for_local_entity): Use VEC_index.
PR c++/20350
* decl.c (duplicate_decls): Copy all of DECL_USE_TEMPLATE.
PR c++/21151
* name-lookup.c (pushtag): Push local class even in a template.
2005-05-31 Nathan Sidwell <>
PR c++/21165
* init.c (integral_constant_value): Check the type of the
initializer, not the decl.
2005-05-30 Mark Mitchell <>
PR c++/21784
* name-lookup.c (do_nonmember_using_decl): Ignore builtin
functions, even when the used name is not a function.
2005-05-30 Kazu Hirata <>
* operators.def, optimize.c: Update copyright.
2005-05-28 Mark Mitchell <>
PR c++/21210
* call.c (standard_conversion): Permit conversions to complex
types if conversion to the corresponding scalar type would be
PR c++/21340
* method.c (implicitly_declare_fn): Clear processing_template_decl
when generating implicit declaration.
2005-05-27 Mark Mitchell <>
PR c++/21614
* typeck.c (get_member_function_from_ptrfunc): Do not attempt
conversions to base classes of incomplete types.
2005-05-27 Ian Lance Taylor <>
* semantics.c (add_stmt): Add C++ frontend specific version.
* cp-tree.h (STMT_IS_FULL_EXPR_P): Define.
(stmts_are_full_exprs_p): Declare.
2005-05-27 Roger Sayle <>
Giovanni Bajo <>
* cp-tree.def (UNARY_PLUS_EXPR): New C++ unary tree code.
* parser.c (cp_parser_unary_expression): Use UNARY_PLUS_EXPR instead
(cp_parser_unary_expression): Likewise.
* typeck.c (build_unary_op): Likewise.
* call.c (add_builtin_candidate, build_new_op): Likewise.
* error.c (dump_expr): Likewise.
* pt.c (tsubst_copy, tsubst_copy_and_build): Likewise.
* decl.c (ambi_op_p, grok_op_properties): Likewise.
* dump.c (dump_op): Likewise.
* lex.c (init_operators): Likewise.
* operators.def ("+"): Likewise.
* cp-gimplify.c (cp_gimplify_expr): Handle UNARY_PLUS_EXPR like a
conversion, if the result and argument types differ.
* tree.c (fold_if_not_in_template): Fold UNARY_PLUS_EXPR much
like a NOP_EXPR when !processing_template_decl.
* cxx-pretty-print.c (pp_cxx_cast_expression): Prototype.
(pp_cxx_unary_expression): Handle new UNARY_PLUS_EXPR tree code.
2005-05-27 Nathan Sidwell <>
PR c++/21455
* typeck.c (get_delta_difference): Cope with incomplete but equal
classes. Reorder if.
PR c++/21681
* parser.c (cp_parser_late_parsing_for_member): Disable access
checking for template functions.
2005-05-26 Volker Reichelt <>
PR c++/21768
* pt.c (redeclare_class_template): Change error message according
to coding conventions.
2005-05-26 Volker Reichelt <>
* call.c (build_op_delete_call): Fix quoting in error message.
2005-05-25 Richard Henderson <>
PR libgcj/21692
* cp-tree.h (make_alias_for): Declare.
* decl2.c (build_java_method_aliases): New.
(cp_finish_file): Call it.
* method.c (make_alias_for): Split out from ...
(make_alias_for_thunk): ... here.
2005-05-25 Volker Reichelt <>
PR c++/21686
* semantics.c (finish_id_expression): Fix quoting in error message.
2005-05-25 DJ Delorie <>
* decl.c (duplicate_decls): Move warning control from if() to
* name-lookup.c (parse_using_directive): Likewise.
* parser.c (cp_parser_elaborated_type_specifier): Likewise.
(cp_parser_init_declarator): Likewise.
* tree.c (handle_com_interface_attribute): Likewise.
2005-05-24 Ziemowit Laski <>
* class.c (layout_class_type): Do not issue C++ ABI warnings
for ObjC structs.
* decl.c (objc_mark_locals_volatile): Streamline by calling
* parser.c (cp_parser_objc_message_expression): Allow simple
type specifiers (instead of merely type names) as message
* pt.c (template_args_equal): Do not call objc_comptypes().
* typeck.c (composite_pointer_type): If both pointers are
ObjC-esque, arbitrarily choose the first; do not call
(comptypes): Do not call objc_comptypes().
(convert_for_assignment): Call objc_compare_types().
(comp_ptr_ttypes_real): Call objc_type_quals_match() before
concluding that types do not match.
2005-05-24 Andrew Pinski <>
PR C++/21645
* optimize.c (update_cloned_parm): Copy the TYPE also from the
original one.
2005-05-19 Jakub Jelinek <>
PR c++/21495
* decl.c (grokdeclarator): Fix "storage class specified for"
error reporting.
2005-05-19 Kazu Hirata <>
* parser.c: Fix comment typos.
2005-05-18 Geoffrey Keating <>
* (cc1plus-dummy): New.
(cc1plus-checksum.c): New.
(cc1plus-checksum.o): New.
(cc1plus): Add cc1plus-checksum.o.
2005-05-17 H.J. Lu <>
PR C++/19664
* decl2.c (determine_visibility): Don't set visibility to
hidden if it has been set explicitly by user.
2005-05-17 Ziemowit Laski <>
Mike Stump <>
Yet more Objective-C++...
* cp-objcp-common.h (cxx_get_alias_set): Move from
(cxx_warn_unused_global_decl): Likewise.
(cp_expr_size): Likewise.
(cp_tree_size): Likewise.
(cp_var_mod_type_p): Likewise.
(cxx_initialize_diagnostics): Likewise.
(cxx_types_compatible_p): Likewise.
* cp-tree.h: to here.
(do_poplevel): Add.
* lex.c (D_OBJC): Add.
(init_reswords): Add.
* (cp/pt.o): Add cp/cp-objcp-common.h.
* parser.c: Add c-common.h include.
* pt.c: Add c-common.h and cp-objcp-common.h includes.
(template_args_equal): Use objc_comptypes as well.
(tsubst_copy_and_build): Use objcp_tsubst_copy_and_build as well.
* semantics.c (do_poplevel): Remove static.
* decl.c (objc_mark_locals_volatile): Don't change decls that are
already ok.
* decl2.c (generate_ctor_or_dtor_function): Add code to initialize
Objective C++ early enough.
* lex.c (struct resword reswords): Add Objective-C++ support.
* parser.c (cp_lexer_get_preprocessor_token): Add Objective-C++.
(cp_parser_objc_message_receiver): Add.
(cp_parser_objc_message_args): Likewise.
(cp_parser_objc_message_expression): Likewise.
(cp_parser_objc_encode_expression): Likewise.
(cp_parser_objc_defs_expression): Likewise.
(cp_parser_objc_protocol_expression): Likewise.
(cp_parser_objc_selector_expression): Likewise.
(cp_parser_objc_expression): Likewise.
(cp_parser_objc_visibility_spec): Likewise.
(cp_parser_objc_method_type): Likewise.
(cp_parser_objc_protocol_qualifiers): Likewise.
(cp_parser_objc_typename): Likewise.
(cp_parser_objc_selector_p): Likewise.
(cp_parser_objc_selector): Likewise.
(cp_parser_objc_method_keyword_params): Likewise.
(cp_parser_objc_method_tail_params_opt): Likewise.
(cp_parser_objc_interstitial_code): Likewise.
(cp_parser_objc_method_signature): Likewise.
(cp_parser_objc_method_prototype_list): Likewise.
(cp_parser_objc_method_definition_list): Likewise.
(cp_parser_objc_class_ivars): Likewise.
(cp_parser_objc_identifier_list): Likewise.
(cp_parser_objc_alias_declaration): Likewise.
(cp_parser_objc_class_declaration): Likewise.
(cp_parser_objc_protocol_declaration): Likewise.
(cp_parser_objc_protocol_refs_opt): Likewise.
(cp_parser_objc_superclass_or_category): Likewise.
(cp_parser_objc_class_interface): Likewise.
(cp_parser_objc_class_implementation): Likewise.
(cp_parser_objc_end_implementation): Likewise.
(cp_parser_objc_declaration): Likewise.
(cp_parser_objc_try_catch_finally_statement): Likewise.
(cp_parser_objc_synchronized_statement): Likewise.
(cp_parser_objc_throw_statement): Likewise.
(cp_parser_objc_statement): Likewise.
(cp_parser_primary_expression): Add Objective-C++.
(cp_parser_statement): Likewise.
(cp_parser_declaration): Likewise.
(cp_parser_simple_type_specifier): Likewise.
(cp_parser_type_name): Likewise.
(cp_parser_parameter_declaration_list): Likewise.
(cp_parser_member_declaration) Likewise.
* tree.c: Include debug.h.
* typeck.c (composite_pointer_type): Add Objective-C++ support.
(finish_class_member_access_expr): Likewise.
(build_function_call): Allow objc to rewrite FUNCTION_DECLs.
(build_modify_expr): Allow objc to generate write barriers.
* (cp/tree.o): Add debug.h.
* tree.c (lvalue_p_1, case CONST_DECL): Add.
2005-05-18 Jan Hubicka <>
* method.c: Include tree-pass.h
(use_thunk): Lower body before expanding.
2005-05-17 Jakub Jelinek <>
PR c++/21454
* decl.c (maybe_deduce_size_from_array_init): Call
cp_apply_type_quals_to_decl after completing array type.
2005-05-16 Richard Henderson <>
* decl.c (build_library_fn_1): Move setting TREE_NOTHROW ...
(build_library_fn): ... here.
2005-05-12 Ian Lance Taylor <>
* cp-tree.h (cp_stmt_codes): Don't define.
(statement_code_p): Declare.
* lex.c (statement_code_p): Define.
(cxx_init): Use actual codes in stmt_codes initializer, not
cp_stmt_codes macro. Initialize statement_code_p directly, rather
2005-05-09 Mark Mitchell <>
* typeck.c (build_unary_op): Do not resort to address arithmetic
when taking the address of a COMPONENT_REF.
2005-05-08 Kazu Hirata <>
* class.c (vtbl_init_data_s): Change the type of fns to
(build_vtbl_initializer, add_vcall_offset, add_vcall_offset):
Use VEC instead of VARRAY.
2005-05-07 Richard Sandiford <>
* mangle.c: Remove a reference to the MIPS -mint64 option.
2005-05-07 Kazu Hirata <>
* decl.c (wrapup_globals_for_namespace): Use VEC instead of
* name-lookup.c (add_decl_to_level, begin_scope): Likewise.
* name-lookup.h (cp_binding_level): Change the type of
static_decls to VEC(tree,gc)*.
* mangle.c (globals): Change the type of substitutions to
(dump_substitution_candidates, add_substitution,
find_substitution, finish_mangling, init_mangle): Use VEC
instead of VARRAY.
2005-05-06 Kazu Hirata <>
* decl2.c (spew_debug): Remove.
* decl2.c (ssdf_decls, start_static_storage_duration_function,
generate_ctor_or_dtor_function): Use VEC instead of VARRAY.
* decl2.c (pending_statics, note_vague_linkage_var,
cp_finish_file): Use VEC instead of VARRAY.
(pending_statics_used): Remove.
2005-05-05 Kazu Hirata <>
* decl2.c (deferred_fns, note_vague_linkage_fn,
cp_finish_file): Use VEC instead of VARRAY.
2005-05-05 Mark Mitchell <>
PR c++/21352
* pt.c (build_non_dependent_expr): Use is_overloaded_fn.
2005-05-05 Kazu Hirata <>
* pt.c: Fix a comment typo.
2005-05-04 Kazu Hirata <>
* cp-tree.h (language_function): Change the type of
x_local_names to VEC.
* decl.c (push_local_name): Adjust uses of local_names.
2005-05-03 Kazu Hirata <>
* friend.c, lex.c, mangle.c, repo.c: Update copyright.
2005-05-02 Kazu Hirata <>
* class.c (local_classes, init_class_processing): Use VEC
instead of VARRAY.
* cp-tree.h (local_classes): Likewise.
* mangle.c (discriminator_for_local_entity): Likewise.
* name-lookup.c (pushtag): Likewise.
* class.c (current_lang_depth, push_lang_context,
pop_lang_context): Use VEC instead of VARRAY.
* cp-tree.h (saved_scope): Use VEC for lang_base instead of
* name-lookup.c (push_to_top_level): Use VEC instead of
2005-05-02 Paolo Bonzini <>
* semantics.c (finish_call_expr): Call resolve_overloaded_builtin
for BUILT_IN_MD built-ins.
2005-05-02 Michael Matz <>
PR c++/19542
* cp-tree.h (cp_tree_index): Remove CPTI_NULL, to be defined in C
common frontend.
(null_node): Remove.
* lex.c (cxx_init): Move null_node initialisation to C common frontend.
2005-04-25 Ian Lance Taylor <>
* cp-tree.def: Add EXPR_STMT.
* cp-tree.h (cp_stmt_codes): Add EXPR_STMT.
* cp-gimplify.c: Include "flags.h".
(gimplify_expr_stmt): New static function.
(cp_gimplify_expr): Handle EXPR_STMT.
* cxx-pretty-print.c (pp_cxx_statement): Use pp_cxx_expression
rather than pp_expression.
(pp_cxx_statement): Handle EXPR_STMT.
* dump.c (cp_dump_tree): Handle EXPR_STMT.
* lex.c (cxx_init): Don't use c_common_stmt_codes in stmt_codes
2005-04-25 Andrew Pinski <>
PR C++/21188
* rtti.c (ifnonnull): Cast the zero comparison operand
to the correct type.
2005-04-24 Jakub Jelinek <>
PR middle-end/20991
* class.c: Include cgraph.h.
(cp_fold_obj_type_ref): Set node->local.vtable_method.
* (cgraph.o): Depend on $(CGRAPH_H).
2005-04-12 Markus F.X.J. Oberhumer <>
* mangle.c (write_builtin_type): Handle integer types which are
not one of the shared integer type nodes and emit a "vendor
extended builtin type" with an encoding in the form of "u5int96".
2005-04-24 Ian Lance Taylor <>
* cp-tree.def (USING_STMT): Change class to tcc_statement.
2005-04-23 DJ Delorie <>
* call.c, class.c, cvt.c, decl.c, decl2.c, except.c, friend.c,
init.c, lex.c, mangle.c, method.c, name-lookup.c, parser.c,
repo.c, rtti.c, tree.c, typeck.c, typeck2.c: Adjust warning()
2005-04-22 Per Bothner <>
* decl.c (make_rtl_for_nonlocal_decl): Don't try get_fileinfo if
input_filename is NULL, as it is for (say) __PRETTY_FUNCTION__.
2005-04-22 Alexandre Oliva <>
PR c++/21087
* name-lookup.c (push_overloaded_decl): Do not overload with
non-duplicate anticipated built-in.
2005-04-21 Kazu Hirata <>
2005-04-21 Nathan Sidwell <>
* cp-tree.h: Adjust for new VEC API.
Define VEC(tree_pair_s,gc).
(struct save_scope): Adjust.
(struct lang_type_class): Adjust.
(unemitted_tinfo_decls): Adjust.
* class.c (add_method, resort_type_method_vec,
finish_struct_methods, struct find_final_overrider_data,
dfs_find_final_overrider_pre, find_final_overrider,
get_vcall_index, warn_hidden, walk_subobject_offsets,
check_methods, fixup_inline_methods, end_of_class,
warn_about_ambiguous_bases, finish_struct, build_vtbl_initializer,
add_vcall_offset): Adjust.
* decl.c (xref_basetypes, finish_method): Adjust.
* decl2.c (check_classfn): Adjust.
* init.c (sort_mem_initializers, push_base_cleanups): Adjust.
* method.c (do_build_copy_constructor): Adjust.
* name-lookup.c (new_class_binding, store_binding,
store_bindings, store_class_bindings): Adjust.
* name-lookup.h: Define VEC(cxx_saved_binding,gc),
(struct cp_binding_level): Adjust.
* parser.c: Define VEC(cp_token_position,heap).
(struct cp_lexer): Adjust.
(cp_lexer_new_main, cp_lexer_new_from_tokens, cp_lexer_destroy,
cp_lexer_save_tokens): Adjust.
* pt.c (retrieve_specialization,
check_explicit_specialization): Adjust.
* rtti.c (unemitted_tinfo_decls): Adjust.
(init_rtti_processing, get_tinfo_decl, get_pseudo_ti_init,
get_pseudo_ti_desc): Adjust.
* search.c (dfs_access_in_type, lookup_conversion_operator,
lookup_fnfields_1, dfs_walk_once, dfs_walk_once_accessible,
dfs_get_pure_virtuals, lookup_conversions_r, binfo_for_vbase): Adjust.
* semantics.c: Define VEC(deferred_access,gc).
(push_deferring_access_checks): Adjust.
* typeck2.c (abstract_virtuals_error): Adjust.
2005-04-20 Ian Lance Taylor <>
* cp-tree.def: Add STMT_EXPR.
* cp-tree.h (STMT_EXPR_NO_SCOPE): Define.
* cxx-pretty-print.c (pp_cxx_primary_expression): Handle
(pp_cxx_expression): Likewise.
(pp_cxx_statement): Call pp_cxx_statement, not pp_statement.
* dump.c (cp_dump_tree): Handle STMT_EXPR.
2005-04-18 Kazu Hirata <>
* decl.c (expand_static_init): Call build2 and build3 instead
of build.
* cp-tree.h (VPTR_NAME, VPTR_NAME_P): Remove.
2005-04-17 Ian Lance Taylor <>
* cxx-pretty-print.c (pp_cxx_postfix_expression): Handle
(pp_cxx_unary_expression): Handle SIZEOF_EXPR and ALIGNOF_EXPR.
(pp_cxx_expression): Handle ARROW_EXPR, SIZEOF_EXPR, and
* typeck.c (cxx_sizeof_or_alignof_type): Update call to
c_sizeof_or_alignof_type for change in parameter type.
2005-04-16 Mark Mitchell <>
PR c++/21025
* typeck.c (cxx_sizeof_or_alignof_type): Check whether the type to
which sizeof/alignof is dependent, rather than just whether we are
2005-04-17 Kazu Hirata <>
* cp-tree.h (LOOKUP_GLOBAL): Remove.
their values.
2005-04-15 Richard Henderson <>
PR middle-end/14311
* semantics.c (finish_call_expr): Call resolve_overloaded_builtin.
2005-04-15 Kazu Hirata <>
* cp-tree.h (lang_type_class): Remove redefined. Move
java_interface into where redefined was. Increment the width
of dummy.
2005-04-14 Kazu Hirata <>
2005-04-11 Mark Mitchell <>
* decl2.c (determine_visibility): Don't use export_class_data.
(import_export_decl): Honor TARGET_CXX_CLASS_DATA_ALWAYS_WEAK and
2005-04-09 Kazu Hirata <>
* cp-tree.h (cxx_alignof): Remove.
* cp-tree.h (DECL_ARRAY_DELETE_OPERATOR_P): Remove.
* cp-tree.h (VF_BINFO_VALUE, VF_BASETYPE_VALUE): Remove.
* cp-tree.h (cp_deprecated): Remove.
2005-04-08 Ian Lance Taylor <>
* cp-tree.def: Define FOR_STMT, WHILE_STMT, DO_STMT, BREAK_STMT,
* cp-tree.h (cp_stmt_codes): Add FOR_STMT, WHILE_STMT, DO_STMT,
(DO_COND, DO_BODY): Define.
* cp-gimplify.c (enum bc_t): Define.
(struct cp_gimplify_ctx, ctxp): Define.
(push_context, pop_context): New static functions.
(begin_bc_block, finish_bc_block): New static functions.
(build_bc_goto): New static function.
(gimplify_cp_loop, gimplify_for_stmt): New static functions.
(gimplify_while_stmt, gimplify_do_stmt): Likewise.
(gimplify_switch_stmt): Likewise.
(cp_gimplify_expr): Handle FOR_STMT, WHILE_STMT, DO_STMT,
(cp_genericize): Call push_context and pop_context.
* semantics.c (finish_break_stmt): Just call build_stmt
(BREAK_STMT) rather than build_break_stmt.
(finish_continue_stmt): Corresponding change.
* decl.c (pop_switch): Update call to c_do_switch_warnings for new
* cxx-pretty-print.c (pp_cxx_statement): Handle SWITCH_STMT,
* dump.c (cp_dump_tree): Likewise.
2005-04-08 Mark Mitchell <>
PR c++/20905
* parser.c (cp_parser_type_specifier_seq): Add is_condition
(cp_parser_new_type_id): Pass it.
(cp_parser_condition): Likewise.
(cp_parser_conversion_type_id): Likewise.
(cp_parser_type_id): Likewise.
(cp_parser_type_specifier_seq): In a condition, do not allow
invalid type-specifier combinations.
(cp_parser_exception_declaration): Adjust call to
* cp-tree.def (TINST_LEVEL): Document TINST_IN_SYSTEM_HEADER_P.
* cp-tree.h (struct tinst_level): Add in_system_header_p.
(make_tinst_level): Remove.
* pt.c (lookup_template_class): Preserve DECL_IN_SYSTEM_HEADER on
the instantiated class.
(push_tinst_level): Do not use make_tinst_level. Set
(pop_tinst_level): Likewise.
(instantiate_class_template): Set in_system_header.
(instantiate_pending_templates): Likewise.
* tree.c (make_tinst_level): Remove.
2005-04-06 Joseph S. Myers <>
* decl.c (start_decl): Apply pending #pragma weak regardless of
2005-04-06 Mark Mitchell <>
PR c++/20212
* pt.c (regenerate_decl_from_template): Copy attributes for
parameters from the pattern to the instantiation.
2005-04-05 Mark Mitchell <>
PR c++/20734
* cp-tree.def (OFFSET_REF): Correct comments.
* init.c (build_offset_ref): Remove misleading comment.
* typeck.c (build_unary_op): Handle pointer-to-member creation
here, rather than ...
(unary_complex_lvalue): ... here.
2005-04-06 Jason Merrill <>
PR c++/19312
* tree.c (stabilize_init): Don't bother trying to stabilize
something with no side-effects.
2005-04-05 Mark Mitchell <>
PR c++/20763
* decl.c (grokdeclarator): Correct attribute handling.
2005-04-05 Mark Mitchell <>
PR c++/19159
* decl2.c (import_export_decl): Use non-COMDAT external linkage
for virtual tables, typeinfo, etc. that will be emitted in only
one translation unit on systems without weak symbols.
2005-04-04 Mark Mitchell <>
PR c++/20679
* parser.c (cp_parser_template_name): Fix thinko.
2005-04-04 Nathan Sidwell <>
PR c++/20746
* method.c (use_thunk): Protect covariant pointer return
adjustments from NULL pointers.
2005-04-04 Jan Hubicka <>
* decl2.c (finish_objects): Revert my previous patch.
(cp_finish_file): Likewise.
2005-04-03 Kazu Hirata <>
* pt.c: Fix comment typos.
2005-04-03 Nathan Sidwell <>
PR c++/20723
* pt.c (more_specialized_fn): Member functions are unordered wrt
non-members. Conversion operators are unordered wrt other
2005-04-01 Nathan Sidwell <>
* call.c (add_template_candidates_real): Remove length parameter
from fn_type_unification call.
* class.c (resolve_address_of_overloaded_function): Likewise
* cp-tree.h (fn_type_unification): Remove length parameter.
* pt.c (get_bindings_overload): Remove.
(get_bindings_real): Rename to ...
(get_bindings): ... here. Remove length and strict
parameters. Change return type flag to boolean. Remove original
forwarding function.
(determine_specialization): Adjust get_bindings call.
(fn_type_unification): Remove length parameter. Adjust.
(type_unification_real): Remove length parameter. Adjust.
(resolve_overloaded_unification): Adjust get_bindings call.
(try_one_overload): Simplify confusing cascaded if control flow.
(unify): Remove length paramter from type_unification_real call.
(most_specialized_instantiation): Adjust get_bindings calls.
(most_specialized): Likewise.
2005-03-31 Nathan Sidwell <>
PR c++/19203, implement DR 214
* call.c (joust): Use more_specialized_fn.
* cp-tree.h (DEDUCE_ORDER): Remove.
(more_specialized): Replace with ...
(more_specialized_fn): ... this.
* pt.c (maybe_adjust_types_for_deduction): Remove DEDUCE_ORDER
(type_unification_real): Remove DEDUCE_ORDER case.
(more_specialized): Replace with ...
(more_specialized_fn): ... this. Implement DR 214.
(most_specialized_instantiation): Use get_bindings_real directly.
2005-03-31 Gabriel Dos Reis <>
PR c++/18644
* call.c (build_new_op): Remove check for -Wsynth.
2005-03-31 Jan Hubicka <>
* decl2.c (finish_objects): Mark ctor as needed.
(cp_finish_file): Output variables only in nonunit-at-a-time.
2005-03-29 Richard Henderson <>
PR c/20519
* decl.c (cp_complete_array_type): Rename from complete_array_type.
Use the new complete_array_type in c-common.c. Update all callers.
* cp-tree.h (cp_complete_array_type): Update to match.
2005-03-24 Geoffrey Keating <>
* typeck.c (build_static_cast_1): Allow scalar_cast between
any integral, floating, or enumeration type.
2005-03-24 Steven Bosscher <>
* typeck.c (comptypes): First determine if the types are compatible
from a target-independent point of view. Check target attributes
* class.c (build_base_path):
(add_vcall_offset): Replace fold (buildN (...)) with fold_buildN.
* error.c (dump_expr): Likewise.
* init.c (build_zero_init, expand_cleanup_for_base,
build_vec_delete_1): Likewise.
* mangle.c (write_integer_cst): Likewise.
* method.c (thunk_adjust): Likewise.
* pt.c (convert_nontype_argument, tsubst, unify): Likewise.
* tree.c (cxx_print_statistics, array_type_nelts_total): Likewise.
* typeck.c (build_ptrmemfunc_access_expr,
(get_member_function_from_ptrfunc): Likewise.
2005-03-23 Joseph S. Myers <>
* cp-objcp-common.h (LANG_HOOKS_TRUTHVALUE_CONVERSION): Remove.
2005-03-23 Joseph S. Myers <>
* cp-tree.h (perform_integral_promotions): Remove.
(default_conversion): Add.
2005-03-22 Mark Mitchell <>
* parser.c (cp_parser_warn_min_max): New function.
(cp_parser_binary_expression): Use it.
(cp_parser_assignment_operator_opt): Likewise.
(cp_parser_operator): Likewise.
2005-03-22 Volker Reichelt <>
PR c++/19980
* decl.c (start_preparsed_function): Robustify.
2005-03-22 Volker Reichelt <>
PR c++/20499
* parser.c (cp_parser_class_head): Return NULL_TREE when
encountering a redefinition.
2005-03-22 Nathan Sidwell <>
PR c++/20465
PR c++/20381
* typeck.c (build_ptrmemfunc): Allow OFFSET_REF when processing a
2005-03-21 Paolo Carlini <>
PR c++/20461
PR c++/20536
* init.c (emit_mem_initializers): Don't crash on undefined
2005-03-21 Paolo Carlini <>
PR c++/20147
* semantics.c (finish_stmt_expr_expr): Return immediately
if error_operand_p (expr).
2005-03-21 Joseph S. Myers <>
* cp-tree.h (lvalue_or_else, lvalue_p): New.
* typeck.c (lvalue_or_else): New. Call lvalue_error.
2005-03-19 Kriang Lerdsuwanakij <>
PR c++/20240
* decl.c (decls_match): Compare context of VAR_DECL.
2005-03-19 Kriang Lerdsuwanakij <>
PR c++/20333
* parser.c (cp_parser_postfix_expression) <case RID_TYPENAME>:
Check the return value of cp_parser_nested_name_specifier.
2005-03-18 Dale Johannesen <>
* cp/tree.c (cp_tree_equal): Handle SSA_NAME.
2005-03-18 Paolo Carlini <>
PR c++/20463
* parser.c (cp_parser_diagnose_invalid_type_name):
Check TYPE_BINFO (current_class_type) before attempting
to emit inform messages.
2005-03-17 Paolo Carlini <>
PR c++/19966
* cp-tree.h (grok_op_properties): Change return type to void.
* decl.c (grok_op_properties): Return early - don't check the
arity - in case of a static member or an operator that cannot
be non-member; tidy a bit.
2005-03-17 Nathan Sidwell <>
PR c++/20186
* pt.c (contains_dependent_cast_p): Remove.
(fold_non_dependent_expr): Don't use it.
(value_dependent_expression_p): Use a switch statement.
reference_exprs can be dependent.
2005-03-14 Kriang Lerdsuwanakij <>
PR c++/4403
PR c++/9783, DR433
* name-lookup.c (pushtag): Skip template parameter scope when
scope is ts_global. Don't push tag into template parameter
* pt.c (instantiate_class_template): Reorder friend class
template substitution to handle non-dependent friend class
that hasn't been previously declared.
2005-03-14 Kriang Lerdsuwanakij <>
Friend class name lookup 5/n
PR c++/1016
* cp-tree.h (pushtag): Adjust declaration.
* decl.c (lookup_and_check_tag): Call lookup_type_scope if
lookup_name fails.
(xref_tag): Adjust call to pushtag. Make hidden class visible.
(start_enum): Adjust call to pushtag.
* name-lookup.c (ambiguous_decl): Ignore hidden names.
(qualify_lookup): Change return type to bool.
(hidden_name_p): New function.
(lookup_namespace_name, unqualified_namespace_lookup,
lookup_name_real): Use it.
(lookup_type_scope): Update comments.
(maybe_process_template_type_declaration): Change parameter name
from globalize to is_friend.
(pushtag): Change globalize parameter of type int to tag_scope.
Hide name if introduced by friend declaration.
* name-lookup.h (hidden_name_p): Add declaration.
* parser.c (cp_parser_lookup_name): Don't deal with hidden name
* pt.c (push_template_decl_real): Make hidden class template
(lookup_template_class, instantiate_class_template): Adjust call
to pushtag.
* semantics.c (begin_class_definition): Likewise.
* rtti.c (init_rtti_processing, build_dynamic_cast_1,
tinfo_base_init, emit_support_tinfos): Use ts_current instead of
2005-03-13 Mark Mitchell <>
PR c++/20157
* pt.c (determine_specialization): Reject non-specializations.
2005-03-11 Per Bothner <>
* cp-tree.h (struct cp_declarator): New id_loc field.
* cp/parser.c (cp_lexer_get_preprocessor_token): Set cp_token's
location using c_lex_with_flags, instead of input_location.
(cp_parser_direct_declarator): Set declarator's id_loc from
cp_token's id_loc.
2005-03-10 Jakub Jelinek <>
PR c++/18384, c++/18327
* decl.c (reshape_init_array): Use UHWI type for max_index_cst
and index. Convert max_index to size_type_node if it isn't
host_integerp (, 1).
2005-03-09 Mark Mitchell <>
PR c++/20208
* pt.c (tsubst_decl): Apply array-to-pointer and
function-to-pointer conversions to function arguments.
(regenerate_decl_from_template): Likewise.
2005-03-09 Paolo Carlini <>
PR c++/16859
* decl.c (complete_array_type): In pedantic mode, return
3 for an empty initializer list as the initializer for an
array of unknown bound (8.5.1/4).
(maybe_deduce_size_from_array_init): Fix final test to use
the above.
2005-03-08 Nathan Sidwell <>
PR c++/20186
* pt.c (contains_dependent_cast_p): New.
(fold_non_dependent_expr): Call it.
2005-03-08 Mark Mitchell <>
PR c++/20142
* cp-tree.h (target_type): Remove.
* decl.c (layout_var_decl): Remove #if 0'd code.
(cp_finish_decl): Remove dead code.
* init.c (build_vec_init): When determining whether or not the
element type has an asignment operator, look through all array
* typeck.c (target_type): Remove.
2005-03-07 Mark Mitchell <>
* class.c (finish_struct_1): Do not warn about non-virtual
destructors in Java classes.
2005-03-05 Kriang Lerdsuwanakij <>
PR c++/19311
* init.c (build_offset_ref): Don't build non-dependent SCOPE_REF.
* pt.c (build_non_dependent_expr): Don't build NON_DEPENDENT_EXPR
* typeck.c (build_x_unary_op): Don't build non-dependent SCOPE_REF.
(build_unary_op): Handle building ADDR_EXPR of OFFSET_REF inside
2005-03-02 Alexandre Oliva <>
* name-lookup.c (push_overloaded_decl): Don't error if the new
decl matches the old one.
* decl.c (redeclaration_error_message): Likewise.
2005-03-01 Per Bothner <>
* decl.c (finish_function): Use SET_EXPR_LOCATION instead of
unavailable annotate_with_file_line, if USE_MAPPED_LOCATION.
2005-03-01 Nathan Sidwell <>
PR c++/20232
* class.c (update_vtable_entry_for_fn): Don't crash on invalid
* cp-tree.g (THUNK_TARGET): Expand comment.
* method.c (use_thunk): Make sure we also use the target, if that
is a thunk.
2005-02-27 Jakub Jelinek <>
PR c++/20206
* decl.c (cxx_comdat_group): Put thunks for
TARGET_USE_LOCAL_THUNK_ALIAS_P (function) functions into the same
comdat group as the thunk target.
2005-02-24 Volker Reichelt <>
* call.c, class.c, cp-tree.h, decl2.c, error.c, init.c, mangle.c,
parser.c: Fix comment typo(s).
2005-02-24 Jakub Jelinek <>
PR c++/20175
* decl.c (reshape_init): Don't warn about missing braces if STRING_CST
initializes a char/wchar_t array.
2005-02-23 Mark Mitchell <>
PR c++/19878
* decl.c (grokvardecl): Set DECL_INTERFACE_KNOWN for declarations
with internal linkage.
2005-02-23 Alexandre Oliva <>
* decl.c (grokvardecl): Don't exempt anonymous types from having
linkage for variables that have linkage other than "C".
2005-02-23 Kazu Hirata <>
* cp-objcp-common.h, error.c: Update copyright.
2005-02-22 Mark Mitchell <>
PR c++/20073
* decl.c (start_decl_1): Don't clear TREE_READONLY.
(cp_finish_decl): Likewise.
(complete_vars): Call cp_apply_type_quals_to_decl.
* typeck.c (cp_apply_type_quals): Avoid setting TREE_READONLY in
cases where that's not valid.
PR c++/19991
* init.c (integral_constant_value): Iterate if the value of a decl
is itself a constant.
PR c++/20152
* parser.c (cp_parser_class_head): Check for redefintions here.
* semantics.c (begin_class_definition): Not here.
PR c++/20153
* decl2.c (build_anon_union_vars): Add type parameter.
(finish_anon_union): Pass it.
PR c++/20148
* error.c (dump_expr): Do not print the body of a BIND_EXPR.
PR c++/19883
* parser.c (cp_parser_direct_declarator): Always complain about
non-constant array bounds when in a function scope.
* semantics.c (finish_id_expression): Do not mark dependent names
as non-constant.
2005-02-21 Douglas Gregor <>
PR c++/19076
PR c++/6628
* cp-tree.h (cp_apply_type_quals_to_decl): Declared.
* decl.c (grokdeclarator): Pedwarn about qualifying a function
Add qualifiers when declaring a typedef of a function type.
Member function pointers pick up the qualifiers of the typedef
used to declare them.
Don't complain about creating cv-qualified function types.
Complain about qualified function typedefs that are used to
declare non-static member functions or free functions.
Use cp_apply_type_quals_to_decl.
(start_preparsed_function): Use cp_apply_type_quals_to_decl.
(grokclassfn): Use cp_apply_type_quals_to_decl.
* error.c (dump_type_suffix): Print qualifiers for function
* pt.c (tsubst_decl): Use cp_apply_type_quals_to_decl.
(tsubst): When substituting a function type into a member
pointer type, pass along the qualifiers.
(unify): Unify member pointers to member function pointers.
* tree.c (cp_build_qualified_type_real): Function types may be
qualified. This includes restrict qualifiers.
* typeck.c (cp_apply_type_quals_to_decl): New function to replace
use of c_apply_type_quals_to_decl. Drops qualifiers that are being
added to function types.
2005-02-20 Zack Weinberg <>
PR 18785
* cp-objcp-common.h (LANG_HOOKS_TO_TARGET_CHARSET): Set to
c_common_to_target_charset. Delete bogus comment.
2005-02-18 Richard Henderson <>
PR libstdc++/10606
* except.c (do_get_exception_ptr): New.
(expand_start_catch_block): Use it.
2005-02-19 Jakub Jelinek <>
* decl.c (start_decl_1): Only check TYPE_NEEDS_CONSTRUCTING
if type is not error_mark_node.
2005-01-20 Giovanni Bajo <>
PR c++/19508
* decl2.c (grokfield): Do not apply attributes to template parameters
as they are ignored by tsubst anyway.
2005-02-18 Jakub Jelinek <>
PR c++/19813
* decl.c (start_decl_1): Clear TREE_READONLY flag if
(complete_vars): Likewise.
2005-02-17 Alexandre Oliva <>
PR c++/20028
* class.c (finish_struct): Initialize TYPE_SIZE_UNIT of a
template along with TYPE_SIZE.
PR c++/20022
* semantics.c (perform_deferred_access_checks): Use
get_deferred_access_checks to get the top of the stack.
2005-02-15 Alexandre Oliva <>
PR c++/17788
* class.c (add_implicitly_declared_members, check_field_decl)
(check_field_decls, check_bases): Remove arguments, tests and
assignments of cant_have_default_ctor-related variables.
2005-02-15 Alexandre Oliva <>
* decl2.c (mark_used): Set the source location of the used decl to
the current input location here...
* method.c (synthesize_method): ... not here. Set input_location
from the decl instead.
2005-02-14 Nathan Sidwell <>
PR c++/19608
* parser.c (cp_parser_late_parsing_for_member): Use
current_function_decl as scope to push to and from.
PR c++/19884
* pt.c (check_explicit_specialization): Make sure namespace
binding lookup found an overloaded function.
(lookup_template_function): Just assert FNS is an overloaded
PR c++/19895
* decl.c (grokdeclarator): Check for error mark node in ptrmem
2005-02-14 Alexandre Oliva <>
PR c++/17816
* decl.c (redeclaration_error_message): Report redefinition of
pure virtual function.
2005-02-14 Nathan Sidwell <>
PR c++/19891
* class.c (build_simple_base_path): Build the component_ref
(update_vtable_entry_for_fn): Walk the covariant's binfo chain
rather than using lookup_base.
* search.c (dfs_walk_once): Add non-recursive assert check.
* typeck.c (build_class_member_access_expr): It is possible for
the member type to be both const and volatile.
2005-02-12 Kriang Lerdsuwanakij <>
PR c++/14479
PR c++/19487
* pt.c (maybe_check_template_type): Remove.
* cp-tree.h (maybe_check_template_type): Remove prototype.
* name-lookup.c (maybe_process_template_type_declaration): Don't
use maybe_check_template_type.
2005-02-11 Richard Henderson <>
PR c++/19632
* pt.c (get_mostly_instantiated_function_type): Save and restore
flag_access_control instead of push/pop_access_scope.
2005-02-10 Mark Mitchell <>
PR c++/19755
* decl.c (reshape_init): Issue warnings about missing braces.
2005-02-11 Kazu Hirata <>
* cp-tree.def, except.c, ptree.c: Update copyright.
2005-02-09 Mark Mitchell <>
PR c++/19811
* call.c (build_op_delete_call): Check COMPLETE_TYPE_P before
attempting name lookup.
* parser.c (cp_parser_unqualified_id): Initialize type_decl.
PR c++/19787
* call.c (initialize_reference): Robustify.
PR ++/19732
* decl.c (grokdeclarator): Check for invalid use of destructor
PR c++/19762
* parser.c (cp_parser_unqualified_id): Avoid creating destructor
names with invalid types.
PR c++/19826
* parser.c (cp_parser_direct_declarator): Allow type-dependent
expressions as array bounds.
PR c++/19739
* parser.c (cp_parser_attributes_list): Allow empty lists.
2005-02-08 Mark Mitchell <>
PR c++/19733
* class.c (add_method): Don't set TYPE_HAS_DESTRUCTOR.
(check_bases): Give warnings about a base class with a
non-virtual destructor, even if it is implicit.
(finish_struct_bits): Don't copy TYPE_HAS_DESTRUCTOR.
(maybe_warn_about_overly_private_class): Don't use
(finish_struct_methods): Don't set TYPE_HAS_DESTRUCTOR.
(check_for_override): Give it external linkage.
(add_implicitly_declared_members): Generate destructors lazily.
(check_field_decls): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR, not
(check_bases_and_members): Call check_methods before
(check_bases_and_members): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR, not
(finish_struct_1): Do not use TYPE_HAS_DESTRUCTOR.
* cp-tree.def (PSEUDO_DTOR_EXPR): Document.
* cp-tree.h (TYPE_HAS_DESTRUCTOR): Remove.
(lang_type_class): Add lazy_destructor.
(check_for_override): Declare.
(build_vbase_delete): Remove.
* cvt.c (convert_to_void): Issue errors about pseudo-destructor
* decl.c (cxx_maybe_build_cleanup): Remove dead code.
* except.c (dtor_nothrow): Lazily create destructors if necessary.
* init.c (build_delete): Lazily create destructors, if necessary.
(build_vbase_delete): Remove.
* method.c (locate_dtor): Simplify.
(implicitly_declare_fn): Add support for destructors.
* parser.c (cp_parser_lookup_name): Lazily create destructors, if
* pt.c (check_explicit_specialization): Don't use
(instantiate_class_template): Likewise.
* ptree.c (cxx_print_type): Don't print TYPE_HAS_DESTRUCTOR.
* rtti.c (emit_support_tinfos): Robustify.
* search.c (lookup_fnfields_1): Lazily create destructors.
* typeck.c (build_class_member_access_expr): Remove
(lookup_destructor): Likewise.
2005-02-08 Kazu Hirata <>
* cxx-pretty-print.c, cxx-pretty-print.h, decl.h: Update
2005-02-07 Mark Mitchell <>
* parser.c (cp_lexer_start_debugging): Avoid arithmetic operations
on boolean variables.
(cp_lexer_stop_debugging): Likewise.
2005-02-03 Giovanni Bajo <>
PR c++/17401
* parser.c (cp_parser_pure_specifier): Emit a specific error
message with an invalid pure specifier.
* decl2.c (grok_function_init): Remove.
(grokfield): An initializer for a method is a always a pure
2005-02-02 Matt Austern <>
PR c++/19628
* cp-tree.h (builtin_valid_in_constant_expr_p): Declare.
* parser.c (cp_parser_postfix_expression): Accept function call in
constant expression if builtin_valid_in_constant_expr_p is true
for that function.
* pt.c (value_dependent_expression_p): Handle CALL_EXPRs properly.
* semantics.c (finish_id_expression): Accept function call in constant
expression if builtin_valid_in_constant_expr_p is true for that
* tree.c (builtin_valid_in_constant_expr_p): New.
2005-02-02 Volker Reichelt <>
PR c++/17413
* pt.c (check_instantiated_args): Improve error message.
Fix logic when to print its second part.
2005-02-02 Volker Reichelt <>
* cp-tree.h (complete_type_or_else): Remove macro.
(complete_type_or_diagnostic): Rename to complete_type_or_else
and remove last argument.
* typeck.c (complete_type_or_diagnostic): Rename to
complete_type_or_else and remove last argument.
2005-02-02 Volker Reichelt <>
* cp-tree.h (commonparms): Remove prototype.
(convert_arguments): Likewise.
* typeck.c (commonparms): Make static.
(convert_arguments): Add prototype. Make static.
(PFN_FROM_PTRMEMFUNC): Replace by pfn_from_ptrmemfunc.
2005-01-31 Mark Mitchell <>
* parser.c (cp_parser_primary_expression): Don't complain about
floating-point literals in integral constant expressions when
2005-02-01 Alexandre Oliva <>
* parser.c (cp_parser_template_id): Revert comment patch too.
PR c++/18757
PR c++/19366
PR c++/19499
* parser.c (cp_parser_template_id): Revert 2004-12-09's patch.
Issue an error when creating the template id.
* pt.c (fn_type_unification): Return early if the explicit
template arg list is an error_mark_node.
2005-01-31 Mark Mitchell <>
* decl.c (build_enumerator): Do not issue duplicate error messages
about invalid enumeration constants.
* parser.c (cp_parser_non_integral_constant_expression): Always
set parser->non_integral_constant_expression_p.
(cp_parser_primary_expression): Add cast_p parameter. Issue
errors about invalid uses of floating-point literals in
(cp_parser_postfix_expression): Add cast_p parameter.
(cp_parser_open_square_expression): Pass it.
(cp_parser_parenthesized_expression_list): Add cast_p parameter.
(cp_parser_unary_expression): Likewise.
(cp_parser_new_placement): Pass it.
(cp_parser_direct_new_declarator): Likewise.
(cp_parser_new_initializer): Likewise.
(cp_parser_cast_expression): Add cast_p parameter.
(cp_parser_binary_expression): Likewise.
(cp_parser_question_colon_clause): Likewise.
(cp_parser_assignment_expression): Likewise.
(cp_parser_expression): Likewise.
(cp_parser_constant_expression): If an integral constant
expression is invalid, return error_mark_node.
(cp_parser_expression_statement): Pass cast_p.
(cp_parser_condition): Likewise.
(cp_parser_iteration_statement): Likewise.
(cp_parser_jump_statement): Likewise.
(cp_parser_mem_initializer): Likewise.
(cp_parser_template_argument): Likewise.
(cp_parser_parameter_declaration): Likewise.
(cp_parser_initializer): Likewise.
(cp_parser_throw_expression): Likewise.
(cp_parser_attribute_list): Likewise.
(cp_parser_simple_cast_expression): Likewise.
(cp_parser_functional_cast): Likewise.
(cp_parser_late_parsing_default_args): Likewise.
(cp_parser_sizeof_operand): Save/restore
2005-01-31 Mike Stump <>
* parser.c (cp_lexer_new_main): Get the first token, first, before
doing anything.
2005-01-31 Mark Mitchell <>
* decl.c (start_decl): Add missing parentheses.
2005-01-30 Mark Mitchell <>
PR c++/19555
* cp-tree.h (DECL_USE_TEMPLATE): Expand documentation.
* decl.c (duplicate_decls): Do not discard
DECL_IMPLICIT_INSTANTIATION when merging declarations.
variables that do not have DECL_USE_TEMPLATE.
PR c++/19395
* decl.c (grokdeclarator): Refactor code so that qualified names
are never allowed as the declarator in a typedef.
PR c++/19367
* name-lookup.c (do_nonmember_using_decl): Avoid overloading
builtin declarations.
PR c++/19457
* call.c (convert_like_real): Inline call to
dubious_conversion_warnings here.
* cp-tree.h (dubious_conversion_warnings): Remove.
* semantics.c (finish_unary_op_expr): Copy INTEGER_CSTs before
* typeck.c (dubious_conversion_warnings): Remove.
PR c++/19349
* name-lookup.c (pushdecl_namespace_level): Avoid accessing free'd
2005-01-28 Mark Mitchell <>
PR c++/19253
* parser.c (cp_parser_diagnose_invalid_type_name): Commit to
tentative parses.
PR c++/19667
* pt.c (redeclare_class_template): Robustify.
2005-01-27 Steven Bosscher <>
* decl.c (finish_case_label): Use SWITCH_STMT accessor macros
instead of SWITCH_EXPR ones.
* pt.c (tsubst_expr): Likewise.
* semantics.c (begin_switch_stmt, finish_switch_cond,
finish_switch_stmt): Likewise.
2005-01-26 J"orn Rennecke <>
PR c++/18370
* parser.c (cp_parser_initializer_clause): Initialize *non_constant_p.
2005-01-25 Andrew Pinski <>
* class.c (abort_fndecl_addr): New variable.
(build_vtbl_initializer): If we have a pure virtual function
share the abort function's address.
Include gt-cp-class.h at the end.
* (gtfiles): Add cp/class.c.
2005-01-25 Volker Reichelt <>
* cxx-pretty-print.c (pp_cxx_statement): Add prototype. Make static.
(pp_cxx_function_definition): Make static.
* cxx-pretty-print.h (pp_cxx_statement): Remove prototype.
(pp_cxx_function_definition): Likewise.
2005-01-25 Volker Reichelt <>
* name-lookup.c (print_binding_level): Make static.
(constructor_name_full): Make static inline.
(current_decl_namespace): Make static.
* name-lookup.h (constructor_name_full): Remove prototype.
(print_binding_level): Likewise.
(current_decl_namespace): Likewise.
2005-01-25 Volker Reichelt <>
* decl.h (debug_bindings_indentation): Remove.
2005-01-23 Kazu Hirata <>
* typeck.c: Fix a comment typo.
2005-01-21 Giovanni Bajo <>
PR c++/19208
* pt.c (fold_decl_constant_value): Always call fold_non_dependent_expr
at least once.
(tsubst): Use fold_decl_constant_value in place of a bare call to
2005-01-20 Kazu Hirata <>
* typeck.c (more_qualified_p): Remove.
* cp-tree.h: Remove the corresponding prototype.
2005-01-19 Matt Austern <>
* typeck.c (comptypes): Handle return code from objc_comptypes
2005-01-19 Kazu Hirata <>
* cp-tree.h, name-lookup.h: Remove unused prototypes.
2005-01-19 Kriang Lerdsuwanakij <>
PR c++/19375
* semantics.c (finish_id_expression): Disable access checking for
already lookuped FIELD_DECL.
2005-01-18 Kazu Hirata <>
* decl.c (delete_block): Remove.
* cp-tree.h: Remove the corresponding prototype.
* decl.c (vtable_decl_p, vtype_decl_p, walk_globals_data,
walk_vtables_r, walk_vtables, walk_globals_r, walk_globals):
* cp-tree.h: Remove the corresponding prototypes.
* tree.c (count_functions, bound_pmf_p, cp_is_overload_p,
cp_update_decl_after_saving, name_p): Remove.
* cp-tree.h: Remove the corresponding prototypes.
2005-01-18 Andrew Pinski <>
PR c/19472
* semantics.c (finish_asm_stmt): Strip nops off
input memory operands.
2005-01-18 Kazu Hirata <>
*, call.c, cvt.c, init.c, rtti.c, tree.c,
typeck2.c: Update copyright.
2005-01-16 Kazu Hirata <>
* class.c (get_enclosing_class): Remove.
* cp-tree.h: Remove the corresponding prototypes.
* cvt.c (convert_lvalue): Remove.
* cp-tree.h: Remove the corresponding prototype.
* pt.c (tinst_for_decl): Remove.
* cp-tree.h: Remove the corresponding prototypes.
* tree.c (hash_chainon): Remove.
* cp-tree.h: Remove the corresponding prototypes.
2005-01-15 Jakub Jelinek <>
PR c++/19263
* typeck2.c (split_nonconstant_init_1) <case VECTOR_TYPE>: Put a copy
of CONSTRUCTOR's node into MODIFY_EXPR, as the original is modified.
2005-01-12 Kaveh R. Ghazi <>
* (cp-warn): Don't append $(WERROR).
2005-01-10 Kazu Hirata <>
* cp-tree.h: Fix a comment typo.
2005-01-07 Nathan Sidwell <>
PR c++/19298
* pt.c (tsubst_qualified_id): Call convert_from_reference.
2005-01-06 Mark Mitchell <>
PR c++/19244
* class.c (add_implicitly_declared_members): Remove dead code.
* decl.c (grokfndecl): Add sfk parameter. Use it do set
(grokdeclarator): Adjust calls to grokfndecl.
* method.c (implicitly_declare_fn): Improve documentation.
* parser.c (cp_parser_direct_declarator): Do not consider a
function to be a constructor if the containing class was
originally anonymous.
2005-01-06 Kriang Lerdsuwanakij <>
PR c++/17154
* search.c (lookup_field_1): Handle using declaration in
class template partial specialization.
2005-01-06 Kriang Lerdsuwanakij <>
PR c++/19258
* pt.c (push_access_scope): Handle friend defined in class.
(pop_access_scope): Likewise.
2005-01-06 Nathan Sidwell <>
PR c++/19270
* pt.c (tsubst_copy) <ARRAY_REF case>: Handle separately.
(tsubst_copy_and_build) <ARRAY_REF case>: Remove obsolete
array-new handling code. Use build_x_binary_op.
2005-01-05 Nathan Sidwell <>
PR c++/19030
* cp-tree.h (start_decl): Take pointer to pushed scope, not bool.
* name-lookup.h (push_scope): Return pushed scope, not flag.
* name-lookup.c (push_scope): Return scope that should be popped,
not a flag.
* decl.c (start_decl): Adjust.
(grokfndecl): Adjust scope push and pop.
* decl2.c (check_classfn): Likewise.
* parser.c (cp_parser_condition, cp_parser_conversion_function_id,
cp_parser_init_declarator, cp_parser_direct_declarator,
cp_parser_class_specifier, cp_parser_class_head,
cp_parser_constructor_declarator_p): Likewise.
* pt.c (instantiate_class_template,
resolve_typename_type): Likewise.
2005-01-03 Volker Reichelt <>
PR c++/14136
* parser.c (cp_parser_unqualified_id): Do not issue error message
for typedef-name as destructor declarator when performing an
uncommitted tentative parse.
2005-01-01 Steven Bosscher <>
PR middle-end/17544
* decl.c (finish_function): Fix comment. Annotate the compiler
generated return with the current file name and line 0.
Copyright (C) 2005 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.