URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [cp/] [ChangeLog-2007] - Rev 778
Go to most recent revision | Compare with Previous | Blame | View Log
2007-12-20 Jason Merrill <jason@redhat.com>PR c++/34111* call.c (standard_conversion): Derived-to-base is considered astandard conversion.2007-12-19 Jakub Jelinek <jakub@redhat.com>PR c++/34513* parser.c (cp_parser_omp_parallel): For non-combined parallelcall cp_parser_statement rather thancp_parser_already_scoped_statement.2007-12-18 Jason Merrill <jason@redhat.com>PR c++/34206* pt.c (tsubst_aggr_type): Do nothing if the type already doesn'tuse template parms.(dependent_type_p_r): Handle the domain of an array.2007-12-18 Douglas Gregor <doug.gregor@gmail.com>Jakub Jelinek <jakub@redhat.com>PR c++/32565PR c++/33943PR c++/33965* pt.c (template_template_parm_bindings_ok_p): New; verifiesbindings of template template parameters after all templatearguments have been deduced.(coerce_template_parms): Don't complain when COMPLAIN doesn'tinclude tf_error.(fn_type_unification): Use template_template_parm_bindings_ok_p.(unify): Deal with variadic, bound template template parameters.(get_class_bindings): Use template_template_parm_bindings_ok_p.2007-12-18 Jakub Jelinek <jakub@redhat.com>PR c++/34488* decl.c (grokdeclarator): Reject friend sfk_constructorFUNCTION_TYPE.2007-12-17 Jakub Jelinek <jakub@redhat.com>PR c/34506* parser.c (cp_parser_omp_all_clauses): Accept optional commain between clauses.2007-12-15 Alexandre Oliva <aoliva@redhat.com>PR debug/7081* cp-lang.c (cp_classify_record): New.(LANG_HOOKS_CLASSIFY_RECORD): Override.2007-12-11 Jakub Jelinek <jakub@redhat.com>PR c++/34238* decl2.c (cp_write_global_declarations): Revert 2007-11-22 change.PR c++/34364* rtti.c (build_dynamic_cast): Call convert_from_reference even fordynamic_cast in a template.2007-12-10 Simon Martin <simartin@users.sourceforge.net>PR c++/34059* typeck.c (build_class_member_access_expr): Compute MEMBER_SCOPE fromMEMBER's BASELINK_ACCESS_BINFO instead of its BASELINK_BINFO.2007-12-10 Jakub Jelinek <jakub@redhat.com>PR c++/34395* error.c (dump_type_prefix, dump_type_suffix): HandleTYPE_PACK_EXPANSION.PR c++/34394* error.c (dump_expr): Handle ABS_EXPR.2007-12-09 Jakub Jelinek <jakub@redhat.com>PR c++/34178PR c++/34340* repo.c (repo_emit_p): Return 2 for DECL_INTEGRAL_CONSTANT_VAR_Pin class scope rather than DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P.Return 2 also if DECL_EXPLICIT_INSTANTIATION.* decl2.c (import_export_decl): Don't make VAR_DECLs import_p whenflag_use_repository and repo_emit_p returned 2.2007-12-06 Jakub Jelinek <jakub@redhat.com>PR c++/34336* tree.c (stabilize_call, stabilize_init): Do nothing ifprocessing_template_decl.2007-12-05 Jakub Jelinek <jakub@redhat.com>PR c++/34271* semantics.c (finish_decltype_type): For SCOPE_REF issue anerror instead of assertion failure.* parser.c (cp_parser_decltype): If closing paren is not found,return error_mark_node.2007-12-04 Douglas Gregor <doug.gregor@gmail.com>PR c++/34101* name-lookup.c (arg_assoc_template_arg): Recurse on argumentpacks.(arg_assoc_type): We don't need to handle TYPE_ARGUMENT_PACK here,since arg_assoc_template_arg will deal with them (better).2007-12-04 Douglas Gregor <doug.gregor@gmail.com>PR c++/33509* pt.c (tsubst_exception_specification): Handle substitutions intomember templates, where tsubst_pack_expansion returns aTYPE_PACK_EXPANSION.2007-12-04 Douglas Gregor <doug.gregor@gmail.com>PR c++/33091* pt.c (unify_pack_expansion): If we didn't deduce any actualbindings for the template parameter pack, don't try to keep theempty deduced arguments.(unify): If a parameter is a template-id whose template argumentlist contains a pack expansion that is not at the end, then wecannot unify against that template-id.2007-12-02 Paolo Carlini <pcarlini@suse.de>PR c++/34061* pt.c (current_template_args): Use error_operand_p.2007-12-02 Paolo Carlini <pcarlini@suse.de>PR c++/34273* error.c (dump_decl): Handle TREE_BINFO.2007-12-01 Ollie Wild <aaw@google.com>PR c++/8171* typeck.c (build_binary_op): Add conversion of pointers to functionmembers appearing as operands to the equality operators.2007-11-30 Jakub Jelinek <jakub@redhat.com>PR c++/34275* error.c (dump_expr): Handle OBJ_TYPE_REF.2007-11-29 Jakub Jelinek <jakub@redhat.com>PR c++/34270* tree.c (lvalue_p_1) <case COND_EXPR>: Handle x ?: yin templates.* typeck.c (is_bitfield_expr_with_lowered_type) <case COND_EXPR>:Likewise.PR c++/34267PR c++/34268* parser.c (cp_parser_decltype): Don't call finish_id_expressionon ~type.* semantics.c (finish_decltype_type): Issue error on types, TYPE_DECLsand ~type early.2007-11-27 Jakub Jelinek <jakub@redhat.com>PR tree-optimization/34181* method.c (use_thunk): Don't inline the call in the thunk.PR c++/34213* tree.c (decl_linkage): Static data members and static memberfunctions in anonymous ns classes are lk_external.2007-11-26 Andreas Krebbel <krebbel1@de.ibm.com>PR c++/34081* decl.c (start_preparsed_function): Passprocessing_template_decl for the new allocate_struct_functionparameter.2007-11-25 Richard Guenther <rguenther@suse.de>* decl.c (poplevel): Use BLOCK_CHAIN.2007-11-24 Ollie Wild <aaw@google.com>* typeck.c (delta_from_ptrmemfunc): New function.(get_member_function_from_ptrfunc): Call delta_from_ptrmemfunc.(build_binary_op): Call delta_from_ptrmemfunc.2007-11-23 Jakub Jelinek <jakub@redhat.com>PR c++/30293PR c++/30294* decl.c (cp_finish_decl): Disallow variable or fielddefinitions if extern "Java" aggregates.(grokparms): Disallow parameters with extern "Java"aggregates.(check_function_type): Disallow function return valueswith extern "Java" aggregates.* init.c (build_new_1): Disallow placement new withextern "Java" aggregates.2007-11-23 Mark Mitchell <mark@codesourcery.com>Manuel Lopez-Ibanez <manu@gcc.gnu.org>PR c++/5310* call.c (convert_like_real): Build a zero constant when __null isconverted to an integer type.2007-11-22 Jakub Jelinek <jakub@redhat.com>PR c++/34094* decl2.c (cp_write_global_declarations): Issue error about staticdata members in anonymous namespace which are declared and used,but not defined.2007-11-20 Jakub Jelinek <jakub@redhat.com>PR c++/34089* parser.c (cp_parser_class_head): Reject function template ids.PR c++/28879* tree.c (build_cplus_array_type_1): Don't pass any VLA typeswhen processing_template_decl to build_array_type.PR c++/33962* pt.c (more_specialized_fn): Don't segfault if one orboth argument list end with ellipsis.2007-11-18 Jakub Jelinek <jakub@redhat.com>PR c++/30988* semantics.c (finish_call_expr): Setcurrent_function_returns_abnormally if fn is noreturn FUNCTION_DECLor OVERLOAD with all noreturn functions.2007-11-16 Jakub Jelinek <jakub@redhat.com>PR c++/34100* pt.c (apply_late_template_attributes): Do nothing if decl's type iserror_mark_node.2007-11-13 Jakub Jelinek <jakub@redhat.com>PR c++/34054PR c++/34056PR c++/34057PR c++/34058PR c++/34060* pt.c (find_parameter_packs_r): If ppd->set_packs_to_error,set to error_mark_node the outermost POINTER_TYPE to the pack ifit is seen in a POINTER_TYPE.(push_template_decl_real): If check_for_bare_parameter_packsfails for function return type, set the return type tointeger_type_node. If check_for_bare_parameter_packs failedfor non-function, return error_mark_node.PR c++/29225* call.c (build_new_op): Call resolve_args before callingbuild_over_call.2007-11-11 Tom Tromey <tromey@redhat.com>PR c++/17577:* lex.c (handle_pragma_implementation): Use cpp_included_before.2007-11-12 Manuel Lopez-Ibanez <manu@gcc.gnu.org>PR c++/8570* pt.c (redeclare_class_template): Update error message. Use anote to show the previous declaration.(tsubst_friend_class): Use the location of the friend template asthe input location before calling redeclare_class_template.2007-11-11 Jakub Jelinek <jakub@redhat.com>PR c++/34068* semantics.c (finish_pseudo_destructor_expr): Handleobject == error_mark_node.2007-11-10 Jakub Jelinek <jakub@redhat.com>PR c++/32241* pt.c (tsubst_copy_and_build) <case COMPONENT_REF>: If object_typeis not scalar type, let finish_class_member_access_expr handlediagnostics. Pass BIT_NOT_EXPR argument tofinish_pseudo_destructor_expr. Handle SCOPE_REF properly.2007-11-09 Douglas Gregor <doug.gregor@gmail.com>PR c++/33510* decl.c (cp_complete_array_type): If any of the initializerelements are pack expansions, don't compute the array size yet.2007-11-08 Andrew Pinski <pinskia@gmail.com>PR c++/30297:* tree.c (decl_linkage): Fields have no linkage.2007-11-08 Daniel Jacobowitz <dan@codesourcery.com>* class.c (build_ctor_vtbl_group): Lay out the new type and decl.2007-11-07 Douglas Gregor <doug.gregor@gmail.com>PR c++/33045PR c++/33837PR c++/33838* semantics.c (finish_decltype_type): See through INDIRECT_REFs.Be careful with ERROR_MARK_NODEs.* parser.c (cp_parser_check_access_in_redeclaration): Handle NULLargument.2007-11-07 Jakub Jelinek <jakub@redhat.com>PR c++/33501* call.c (build_over_call): Don't check TREE_ADDRESSABLEon incomplete type.2007-11-06 Douglas Gregor <doug.gregor@gmail.com>PR c++/33977PR c++/33886* tree.c (c_build_qualified_type): Define bridge tocp_build_qualified_type.2007-11-06 Douglas Gregor <doug.gregor@gmail.com>PR c++/31439PR c++/32114PR c++/32115PR c++/32125PR c++/32126PR c++/32127PR c++/32128PR c++/32253PR c++/32566* typeck.c (check_return_expr): Pass address of retval tocheck_for_bare_parameter_packs.* class.c (build_base_field): Tolerate bases that have no layoutdue to errors.(end_of_base): Ditto.* tree.c (canonical_type_variant): Be careful withERROR_MARK_NODE.* cp-tree.h (check_for_bare_parameter_packs): Now accepts atree*.* pt.c (find_parameter_pack_data): Add set_packs_to_error field,which states whether parameter packs should be replaced withERROR_MARK_NODE.(find_parameter_packs_r): Pass addresses to cp_walk_tree whereverpossible. If set_packs_to_error is set true, replace the parameterpack with ERROR_MARK_NODE. Manage our own pointer sets.(uses_parameter_packs): Don't set parameter packs toERROR_MARK_NODE.(check_for_bare_parameter_packs): Now takes a pointer to a tree,which may be modified (if it is a parameter pack). Instructsfind_parameter_packs_r to replace parameter packs withERROR_MARK_NODE (so that they won't cause errors later on).(process_template_parm): Pass pointer tocheck_for_bare_parameter_packs.(process_partial_specialization): Replace pack expansions beforethe end of the template argument list with ERROR_MARK_NODE.(push_template_decl_real): Pass pointer tocheck_for_bare_parameter_packs. Replace parameter packs not at theend of the template parameter list with ERROR_MARK_NODE.(convert_template_argument): Be more careful about using DECL_NAMEon only declarations.(unify): Can't unify against ERROR_MARK_NODE.* semantics.c (finish_cond): Pass pointer tocheck_for_bare_parameter_packs.(finish_expr_stmt): Ditto.(finish_for_expr): Ditto.(finish_switch_cond): Pass pointer tocheck_for_bare_parameter_packs, and call it before we put thecondition into the statement.(finish_mem_initializers): Pass pointer tocheck_for_bare_parameter_packs.(finish_member_declaration): Ditto.* parser.c (cp_parser_base_clause): Ditto.2007-11-06 Jakub Jelinek <jakub@redhat.com>PR target/33168* decl.c (cp_finish_decl): Call make_rtl_for_nonlocal_decl alreadywith the final TREE_READONLY flag in place. processing_template_declis known to be 0 in this part of function.PR c++/33894* cp-tree.h: Update comment - TYPE_LANG_FLAG_0 is notOMP_ATOMIC_DEPENDENT_P in OMP_ATOMIC.* pt.c (tsubst_expr): Assert OMP_ATOMIC_DEPENDENT_P.* semantics.c (finish_omp_atomic): Revert most of the2007-02-05 changes, just keep the new representation ofOMP_ATOMIC_DEPENDENT_P OMP_ATOMIC.2007-11-05 H.J. Lu <hongjiu.lu@intel.com>PR c++/33871* decl2.c (constrain_visibility): Clear DECL_ONE_ONLY if markedlocal.2007-11-05 Douglas Gregor <doug.gregor@gmail.com>PR c++/33996PR c++/33235PR c++/33930* typeck.c (merge_types): Don't lose rvalue references whenmerging types.* call.c (build_over_call): Don't elide move constructors justbecause the copy constructor is trivial (!).(compare_ics): If comparing cv-qualifiers fails, we can still orderbased on binding lvalues vs. rvalues.2007-11-05 Douglas Gregor <doug.gregor@gmail.com>PR c++/33939* pt.c (unify_pack_expansion): bring handling of function callarguments into line with type_unification_real.2007-11-05 Manuel Lopez-Ibanez <manu@gcc.gnu.org>* typeck.c (build_binary_op): Use pedwarn instead of error forconsistency.2007-11-05 Jakub Jelinek <jakub@redhat.com>PR c++/33836* parser.c (cp_parser_unary_expression): For &&label callcp_parser_non_integral_constant_expression and return error_mark_nodeif it returned true.PR c++/33969* decl.c (grokdeclarator): Don't call build_memfn_type if typeis neither FUNCTION_TYPE nor METHOD_TYPE.2007-11-02 Jakub Jelinek <jakub@redhat.com>PR c++/33516* parser.c (cp_parser_nested_name_specifier_opt): UseTYPE_MAIN_VARIANT (new_scope) as scope if new_scope is an incompletetypedef of currently open class.2007-11-02 Paolo Carlini <pcarlini@suse.de>PR c++/33495* error.c (dump_expr): Deal specially with statements.2007-11-01 Jason Merrill <jason@redhat.com>PR c++/30897* pt.c (push_template_decl_real): Set DECL_CONTEXT on templatetemplate parms.(lookup_template_class): Use it to get the outer template argsfor instantiating one.PR c++/29236* pt.c (reduce_template_parm_level): tsubst the parametersof a template template parm.2007-11-01 Douglas Gregor <doug.gregor@gmail.com>PR c++/33955* pt.c (find_parameter_packs_r): Handle TYPENAME_TYPE.2007-11-01 Jakub Jelinek <jakub@redhat.com>PR c++/32384* parser.c (cp_parser_postfix_dot_deref_expression): IfPOSTFIX_EXPRESSION is type dependent, try to parse it as pseudo dtorfirst and if that succeeds and type is SCALAR_TYPE_P, createPSEUDO_DTOR_EXPR.PR c++/32260* rtti.c (enum_tinfo_kind): Fix TK_TYPE_INFO_TYPE comment.(typeid_ok_p): Use the same alias set for abi::__type_info_pseudoas for std::type_info.2007-10-31 Paolo Carlini <pcarlini@suse.de>PR c++/33494* cxx-pretty-print.c (pp_cxx_typeid_expression,pp_cxx_delete_expression): Change to static linkage.* cxx-pretty-print.h: Adjust declarations.* error.c (dump_expr, case EXPR_PACK_EXPANSION, TYPEID_EXPR,MEMBER_REF, DOTSTAR_EXPR, DELETE_EXPR, VEC_DELETE_EXPR,MODOP_EXPR): Forward to pp_expression.* cxx-pretty-print.c (pp_cxx_expression, case NON_DEPENDENT_EXPR):Fix typo.2007-10-31 Christian Bruel <christian.bruel@st.com>Mark Mitchell <mark@codesourcery.com>PR c++/19531* typeck.c (check_return_expr): Don't set named_return_value_okay_pif retval is volatile.2007-10-30 Jakub Jelinek <jakub@redhat.com>PR c++/33616* decl2.c (build_offset_ref_call_from_tree): Callbuild_non_dependent_expr on object prior to building ADDR_EXPR from itif FN is DOTSTAR_EXPR.2007-10-30 Douglas Gregor <doug.gregor@gmail.com>PR c++/31993PR c++/32252* pt.c (find_parameter_packs_r): Fix typo in comment.(convert_template_argument): Look at the pattern of a packexpansion to determine what kind of entity we're converting.(coerce_template_parameter_pack): When we have coerced a non-typetemplate parameter pack, substitute into the type of that pack.(tsubst_pack_expansion): When our substitution of a parameter packis a "trivial" substitution of itself, just substitute into thepack expansion rather than actually expanding.2007-10-29 Jakub Jelinek <jakub@redhat.com>PR c++/33841* class.c (check_bitfield_decl): Don't set field's type to error_mark_nodefor non-integral type bitfields. Return true if bitfield is correct, falseerror has been diagnosed.(check_field_decls): If check_bitfield_decl returned false, call alsocheck_field_decl.2007-10-28 Paolo Carlini <pcarlini@suse.de>Mark Mitchell <mark@codesourcery.com>PR c++/30659* pt.c (do_decl_instantiation): If the VAR_DECL is not aclass member error out and return.2007-10-27 Jakub Jelinek <jakub@redhat.com>* error.c (reinit_cxx_pp): Initialize cxx_pp->enclosing_scopeto current_function_decl rather than 0.PR c++/33844* cxx-pretty-print.c (pp_cxx_pm_expression) <case MEMBER_REF>: Print->* rather than .*.* error.c (dump_expr): Handle MEMBER_REF and DOTSTAR_EXPR.2007-10-27 Jason Merrill <jason@redhat.com>PR c++/5247* call.c (convert_default_arg): Detect recursion.2007-10-27 Jakub Jelinek <jakub@redhat.com>PR c++/33842* cxx-pretty-print.h (pp_cxx_offsetof_expression): New prototype.* cxx-pretty-print.c (pp_cxx_primary_expression): HandleOFFSETOF_EXPR.(pp_cxx_offsetof_expression_1, pp_cxx_offsetof_expression): Newfunctions.* error.c (dump_expr): Handle OFFSETOF_EXPR.2007-10-26 Jason Merrill <jason@redhat.com>PR c++/24791* pt.c (get_template_info): New fn.(template_class_depth): Use it.(push_template_decl_real): Check that the template args of thedefinition match the args of the previous declaration.2007-10-26 Paolo Carlini <pcarlini@suse.de>PR c++/31988* decl2.c (coerce_new_type): Do not allow a default argument forthe first parameter.2007-10-26 Douglas Gregor <doug.gregor@gmail.com>PR c++/33839* parser.c (cp_parser_decltype): Return ERROR_MARK_NODE if wedon't see the leading '('. Only lookup names if we get anIDENTIFIER_NODE.2007-10-26 Jakub Jelinek <jakub@redhat.com>PR c++/33744* parser.c (cp_parser_parenthesized_expression_list): Setgreater_than_is_operator_p to true in between the parens.2007-10-26 Paolo Carlini <pcarlini@suse.de>PR c++/31747* decl.c (grokdeclarator): In case of conflicting specifiersjust return error_mark_node.2007-10-26 Ollie Wild <aaw@google.com>* expr.c (cxx_expand_expr): Removed.* cp-tree.h (exx_expand_expr): Removed.* cp-objcp-common.h (LANK_HOOKS_EXPAND_EXPR): Replace cxx_expand_exprwith c_expand_expr.2007-10-25 Paolo Carlini <pcarlini@suse.de>PR c++/33843* cxx-pretty-print.c (pp_cxx_unqualified_id): Deal with BIT_NOT_EXPR.2007-10-23 Jason Merrill <jason@redhat.com>PR c++/25950 (DR 391)* call.c (struct conversion): Remove check_copy_constructor_p.(reference_binding): Always bind a reference directly to acompatible class rvalue. Pass down LOOKUP_NO_TEMP_BIND duringtemporary creation.(check_constructor_callable): Remove.(convert_like_real): Don't call it.(initialize_reference): Don't call check_constructor_callable.(standard_conversion): Check LOOKUP_NO_CONVERSION instead ofLOOKUP_CONSTRUCTOR_CALLABLE. Don't require a temporary for baseconversions if LOOKUP_NO_TEMP_BIND.(implicit_conversion): Pass through LOOKUP_NO_TEMP_BIND.(build_user_type_conversion_1): Pass through LOOKUP_NO_TEMP_BIND forsecond conversion.* cp-tree.h (LOOKUP_CONSTRUCTOR_CALLABLE): Remove.2007-10-22 Jakub Jelinek <jakub@redhat.com>PR c++/33372* semantics.c (finish_omp_clauses): Check !type_dependent_expression_pbefore checking if its type is integral.2007-10-22 Jason Merrill <jason@redhat.com>PR c++/33620* class.c (finish_struct_bits): Copy TYPE_ATTRIBUTES.* pt.c (apply_late_template_attributes): Splice out dependentattributes from DECL_ATTRIBUTES.* decl.c (cxx_maybe_build_cleanup): Use build_address.2007-10-17 Manuel Lopez-Ibanez <manu@gcc.gnu.org>* typeck.c (build_binary_op) : Use appropriate warning optioninstead of unnamed warning.2007-10-16 Paolo Carlini <pcarlini@suse.de>PR c++/31446* pt.c (current_template_args): Do not change TREE_LIST elementswith a TREE_VALUE of error_mark_node.2007-10-16 Mark Mitchell <mark@codesourcery.com>* typeck.c (cp_apply_type_quals_to_decl): Expand documentation.* decl.c (start_decl): Tidy.(start_decl_1): Call cp_apply_type_quals_to_decl after completingthe type.(grokdeclarator): Clarify comment.2007-10-14 Andrew Pinski <pinskia@gmail.com>PR c++/30303* decl.c (grokfndecl): Return NULL after the "definition ofimplicitly-declared" error happened.2007-10-12 Simon Martin <simartin@users.sourceforge.net>PR c++/26698* call.c (build_user_type_conversion_1): Do not consider conversionfunctions to convert a (possibly cv-qualified) object to the (possiblycv-qualified) same object type (or a reference to it), to a (possiblycv-qualified) base class of that type (or a reference to it).2007-10-12 Paolo Carlini <pcarlini@suse.de>* pt.c (tsubst): Use template_parm_level_and_index.2007-10-12 Jakub Jelinek <jakub@redhat.com>PR c++/32121* parser.c (cp_parser_compound_statement): Handle label-declarationsat the beginning of the compound statement.(cp_parser_block_declaration): Issue diagnostics about __label__not at the beginning of a block.2007-10-11 Paolo Carlini <pcarlini@suse.de>PR c++/33461* pt.c (coerce_template_parameter_pack): Do not pass error_mark_nodeto convert_template_argument.(coerce_template_parms): Return error_mark_node after fixed-lengtherror.(tsubst_decl): Check for error_mark_node the return value of thefirst tsubst in 'case VAR_DECL'.2007-10-08 Ollie Wild <aaw@google.com>* typeck2.c (digest_init): Call cplus_expand_constant afterconvert_for_initialization.* cp-objcp-common.h (LANG_HOOKS_EXPAND_CONSTANT): Removed.* expr.c (cplus_expand_constant): Updated function description.2007-10-04 Jason Merrill <jason@redhat.com>PR c++/20416* call.c (initialize_reference): Handle local static referencetemps properly.2007-10-03 Jason Merrill <jason@redhat.com>PR c++/32470* name-lookup.c (push_namespace_with_attrs): Fold back into...(push_namespace): Here.(handle_namespace_attrs): New fn for the attr code.(leave_scope): Don't pop_visibility.* name-lookup.h (struct cp_binding_level): Remove has_visibility.* parser.c (cp_parser_namespace_definition): Callhandle_namespace_attrs and pop_visibility as appropriate.PR c++/11756* mangle.c (write_type) [TYPEOF_TYPE]: Just sorry.2007-10-03 Alexandre Oliva <aoliva@redhat.com>* decl.c (duplicate_decls): Preserve linkage flags for mereredeclarations of gnu_inline definitions.2007-10-03 Jason Merrill <jason@redhat.com>PR c++/15764* decl.c (wrap_cleanups_r): New fn.(wrap_temporary_cleanups): New fn.(initialize_local_var): Call it.2007-09-29 Jason Merrill <jason@redhat.com>PR c++/33094* decl.c (make_rtl_for_nonlocal_decl): It's ok for a memberconstant to not have DECL_EXTERNAL if it's file-local.2007-09-28 Ollie Wild <aaw@google.com>Revert2007-09-27 Ollie Wild <aaw@google.com>* typeck2.c (digest_init): Call cplus_expand_constant afterconvert_for_initialization.* cp-objcp-common.h (LANG_HOOKS_EXPAND_CONSTANT): Removed.* expr.c (cplus_expand_constant): Updated function description.2007-09-28 Jason Merrill <jason@redhat.com>PR c++/10179* class.c (layout_empty_base): Take rli parameter, updaterli->record_align if empty base has user-specified alignment.(build_base_field): Pass rli to it.2007-09-28 Paolo Carlini <pcarlini@suse.de>PR c++/33213* error.c (dump_decl): Deal with TYPE_PACK_EXPANSION.2007-09-28 Paolo Carlini <pcarlini@suse.de>PR c++/33118* error.c (dump_expr): Deal with ARGUMENT_PACK_SELECT.(dump_type): Use dump_template_argument for TYPE_ARGUMENT_PACK.(dump_parameters): Just call dump_type for argument packs too.2007-09-28 Jakub Jelinek <jakub@redhat.com>PR c++/31434* tree.c (cp_build_qualified_type_real): Handle TYPE_PACK_EXPANSIONqualification by creating qualified PACK_EXPANSION_PATTERN andthen calling make_pack_expansion on it.2007-09-27 Ollie Wild <aaw@google.com>* typeck2.c (digest_init): Call cplus_expand_constant afterconvert_for_initialization.* cp-objcp-common.h (LANG_HOOKS_EXPAND_CONSTANT): Removed.* expr.c (cplus_expand_constant): Updated function description.2007-09-27 Jason Merrill <jason@redhat.com>PR c++/33571* decl2.c (is_late_template_attribute): Don't crash on unknownattribute.2007-09-27 Paolo Carlini <pcarlini@suse.de>PR c++/33493* error.c (dump_expr): Deal with DELETE_EXPR and VEC_DELETE_EXPR.* cxx-pretty-print.c (pp_cxx_delete_expression): Add missingspaces in the formatting.* cxx-pretty-print.h (pp_cxx_delete_expression): Declare.2007-09-27 Jakub Jelinek <jakub@redhat.com>* error.c (cxx_print_error_function): Add third argument, passit over to lhd_print_error_function.(cp_print_error_function): If diagnostic->abstract_origin, printvirtual backtrace.* cp-tree.h (struct diagnostic_info): New forward decl.(cxx_print_error_function): Add third argument.2007-09-25 Simon Martin <simartin@users.sourceforge.net>PR c++/33207* name-lookup.c (pushtag): Do not create an implicit typedef beforethe associated type declaration is known to be valid.2007-09-25 Jakub Jelinek <jakub@redhat.com>* tree.c (cxx_printable_name): Compare FUNCTION_DECL uidsrather than pointers.2007-09-24 Danny Smith <dannysmith@user.sourceforge.net>PR c++/14688* search.c (check_final_overrider): Fail iftargetm.comp_type_attributes returns 0.2007-09-24 Jason Merrill <jason@redhat.com>PR c++/33239* pt.c (resolve_typename_type): Don't look things up in the originaltemplate if it would mean losing template arguments.2007-09-24 Jakub Jelinek <jakub@redhat.com>PR c++/33506* cp-tree.h (cxx_type_hash_eq): New prototype.* cp-objcp-common.h (LANG_HOOKS_TYPE_HASH_EQ): Redefine.* tree.c (cxx_type_hash_eq): New function.2007-09-24 Douglas Gregor <doug.gregor@gmail.com>PR c++/33185* tree.c (cp_build_qualified_type_real): Build a canonicalARRAY_TYPE if the original ARRAY_TYPE was not a canonical type.2007-09-24 Douglas Gregor <doug.gregor@gmail.com>PR c++/33112PR c++/33185* tree.c (cplus_array_compare): Compare pointers, not types.(build_cplus_array_type_1): Store new array type into the hashtable before building the canonical type; build the canonical typecorrectly.(cp_build_qualified_type_real): Put all of the array types withcv-qualified element types into the C++ array hash table, built asvariants of the unqualified versions.2007-09-23 Jason Merrill <jason@redhat.com>PR c++/16370* decl.c (grokdeclarator): Look through implicit TYPE_DECLsfor deprecation warnings.2007-09-22 Jason Merrill <jason@redhat.com>PR c++/15269* call.c (build_over_call): Warn about deprecated virtuals.PR c++/19407* cp-tree.h (ATTR_IS_DEPENDENT): New macro.(MAYBE_TAGGED_TYPE_P): Remove.* pt.c (apply_late_template_attributes): Check ATTR_IS_DEPENDENTinstead of calling is_late_template_attribute again.(tsubst_decl) [TYPE_DECL]: Just check if the name is the tag.(tsubst): A typedef is a TYPE_NAME != TYPE_MAIN_DECL.Don't crash on typedefs from non-template classes.* decl2.c (grokfield): Don't sorry about attrs on template parms.(is_late_template_attribute): All attributes applied to templateparms or typename types are dependent. Static.(splice_template_attributes): Pass decl through.(save_template_attributes): Likewise.2007-09-20 Jakub Jelinek <jakub@redhat.com>PR c++/33496* pt.c (tsubst_copy) <case SIZEOF_EXPR>: Handle error_mark_nodereturned from tsubst_pack_expansion.(tsubst_copy_and_build) <case SIZEOF_EXPR>: Likewise.(tsubst_copy_and_build) <case CONSTRUCTOR>: Likewise.2007-09-20 Paolo Carlini <pcarlini@suse.de>PR c++/33460* semantics.c (finish_id_expression): Use consistentlycontext_for_name_lookup.* decl.c (fixup_anonymous_aggr): Fix error message foranonymous struct (vs union).2007-09-19 Jason Merrill <jason@redhat.com>PR c++/7586* pt.c (tsubst): Handle typedefs by looking for the specialization.(retrieve_specialization): Only tagged types useDECL_TEMPLATE_INSTANTIATIONS.(instantiate_class_template): Push nested classes too.(tsubst_decl) [TYPE_DECL]: Only check for canonical decl fortagged types.* cp-tree.h (MAYBE_TAGGED_TYPE_P): New macro.* init.c (is_aggr_type): Remove redundant tests.* class.c (push_nested_class): Use CLASS_TYPE_P.2007-09-20 Paolo Carlini <pcarlini@suse.de>PR c++/33459* init.c (build_zero_init): If, recursively, build_zero_initreturns a NULL_TREE, do not append it to the VEC of constructors.2007-09-18 Jason Merrill <jason@redhat.com>PR c++/17743* pt.c (apply_late_template_attributes): Set processing_template_decl.(tsubst_decl) [TYPE_DECL]: Preserve naming typedef, passATTR_FLAG_TYPE_IN_PLACE.(tsubst): Do unqualified lookup to find typedefs from current class.[ARRAY_TYPE]: Propagate alignment info.* decl2.c (is_late_template_attribute): Only defer handling ofattribute aligned if the expression is dependent.(save_template_attributes): If we're deferring any attributes,make this a naming typedef.2007-09-18 Paolo Carlini <pcarlini@suse.de>PR c++/33462 (again)* cxx-pretty-print.c (pp_cxx_va_arg_expression): Printva_arg instead of __builtin_va_arg.2007-09-18 Paolo Carlini <pcarlini@suse.de>PR c++/33462* cxx-pretty-print.c (pp_cxx_va_arg_expression): Add.(pp_cxx_primary_expression): Use it.* cxx-pretty-print.h (pp_cxx_va_arg_expression): Declare.* error.c (dump_expr): Use it.2007-09-18 Paolo Carlini <pcarlini@suse.de>PR c++/33463* cxx-pretty-print.c (pp_cxx_postfix_expression): Splitout case TYPEID_EXPR to...(pp_cxx_typeid_expression): ... here; use pp_cxx_left_parenand pp_cxx_right_paren.* cxx-pretty-print.h (pp_cxx_typeid_expression): Declare.* error.c (dump_expr): Use it.2007-09-18 Paolo Carlini <pcarlini@suse.de>PR c++/33464* cxx-pretty-print.c (pp_cxx_trait_expression): Add.(pp_cxx_primary_expression): Use it.* cxx-pretty-print.h (pp_cxx_trait_expression): Declare.* error.c (dump_expr): Use it.2007-09-16 Paolo Carlini <pcarlini@suse.de>PR c++/33124* init.c (build_new): Remove warning for zero-elementallocations.2007-09-16 Nathan Sidwell <nathan@codesourcery.com>PR c++/32756* call.c (maybe_handle_implicit_object): Set this_p, clearrvaluedness_matches_p.(compare_ics): Do not compare rvaluedness matching when one of theoperands is an implicit object.2007-09-14 Jason Merrill <jason@redhat.com>PR c++/17743, c++/19163* decl2.c (is_late_template_attribute): New fn.(splice_template_attributes, save_template_attributes): New fns.(cplus_decl_attributes): Call save_template_attributes.* pt.c (apply_late_template_attributes): New fn.(instantiate_class_template, tsubst_decl): Use it.* cp-tree.h: Declare is_late_template_attribute.2007-09-13 Tom Tromey <tromey@redhat.com>* parser.c (cp_lexer_new_main): Don't usec_lex_return_raw_strings.(cp_lexer_get_preprocessor_token): Update. Add special case whenlexer is NULL.2007-09-11 Jan Hubicka <jh@suse.cz>* method.c (use_thunk): Use tree_rest_of_compilation* cp-objecp-common.h (LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Kill.(LANG_HOOKS_CALLGRAPH_EMIT_ASSOCIATED_THUNKS): Define.* cp-tree.h (expand_body): Kill.(emit_associated_thunks): Declare.* semantics.c (emit_associated_thunks): Export.(expand_body): Kill.2007-09-09 David Daney <ddaney@avtrex.com>PR c++/33324* init.c (build_new_1): Use POINTER_PLUS_EXPR instead of MINUS_EXPRto calculate cookie_ptr.2007-09-08 Jason Merrill <jason@redhat.com>PR c++/33342* pt.c (most_specialized_class): Set processing_template_declwhile tsubsting partial spec args.2007-09-06 Jason Merrill <jason@redhat.com>* decl2.c (get_guard): Copy visibility from the guarded variable.2007-09-06 Jan Hubicka <jh@suse.cz>* semantics.c (expand_body): Do not mark arguments of clones used.2007-09-06 Paolo Carlini <pcarlini@suse.de>PR c++/32674* decl.c (cp_finish_decl): When processing_template_decl,deal correctly with init as TREE_LIST.2007-09-06 Tom Tromey <tromey@redhat.com>* decl.c (finish_function): Put return's location on line zero offile.2007-09-05 Jason Merrill <jason@redhat.com>PR c++/15745* except.c (prepare_eh_type): Use type_decays_to.PR c++/15097* init.c (build_delete): Use build_headof to get the address of thecomplete object if we aren't using the deleting destructor.* rtti.c (build_headof): No longer static.* cp-tree.h: Declare it.2007-09-06 Jakub Jelinek <jakub@redhat.com>* decl.c (duplicate_decls): Set TREE_NOTHROW on __builtin_XXdecl if a prototype for XX is provided with throw().PR c++/33289* decl.c (builtin_function_1): Set DECL_ANTICIPATED alsoon __*_chk non-__builtin_* decls.2007-09-05 Paolo Carlini <pcarlini@suse.de>PR c++/30302* semantics.c (finish_id_expression): Use context_for_name_lookupinsted of DECL_CONTEXT, to see through anonymous structs and unions.* class.c (finish_struct_anon): Deal correctly with anonymousstructs (vs unions, as GNU extension) in error messages.2007-09-05 Jan Hubicka <jh@suse.cz>* sematics.c (expand_body): Remove unnecesary import_export_declcall, DECL_EXTERNAL checks and current_function_decl saving.2007-09-05 Paolo Carlini <pcarlini@suse.de>PR c++/29731 (again)* parser.c (cp_parser_primary_expression): Return error_mark_nodewhen a statement-expression is found in a template-argument list.2007-09-04 Jason Merrill <jason@redhat.com>* except.c (initialize_handler_parm): Usefold_build_cleanup_point_expr.PR c++/31419* call.c (reference_binding): Don't look for user-defined conversionsto the same type.PR c++/31411* except.c (initialize_handler_parm): Put a CLEANUP_POINT_EXPR insidethe MUST_NOT_THROW_EXPR.2007-09-04 Richard Sandiford <richard@codesourcery.com>* decl.c (cp_finish_decl): Call determine_visibility beforemake_rtl_for_nonlocal_decl.2007-09-04 Jason Merrill <jason@redhat.com>PR c++/14032* pt.c (most_specialized_class): Substitute outer templatearguments into the arguments of a member template partialspecialization.(strip_innermost_template_args): New fn.2007-09-03 Daniel Jacobowitz <dan@codesourcery.com>* Make-lang.in (g++spec.o): Remove SHLIB_MULTILIB.2007-09-03 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>* call.c (name_as_c_string): Supply a TYPE for CONST_CAST.* decl.c (cp_make_fname_decl): Likewise,* parser.c (cp_parser_string_literal): Likewise,* tree.c (pod_type_p, zero_init_p): Use CONST_CAST_TREE.* typeck.c (cp_type_quals, cp_type_readonly, cp_has_mutable_p):Likewise,2007-09-02 Paolo Carlini <pcarlini@suse.de>PR c++/33208* typeck.c (build_unary_op): Fix error message forBoolean expression as operand to operator--.2007-09-01 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>* tree.c (pod_type_p, zero_init_p): Use strip_array_types.* typeck.c (cp_type_quals, cp_type_readonly, cp_has_mutable_p):Likewise.2007-08-31 Douglas Gregor <doug.gregor@gmail.com>PR c++/32597* init.c (build_default_init): Make extern.* cp-tree.h (build_default_init): Declare here.* pt.c (tsubst_expr): When the instantiation of the initializer ofa variable results in an empty list, default-initialize thevariable.(tsubst_copy_and_build): When the instantiation of the initializerin a new expression results in an empty initializer list,default-initialize it.2007-08-31 Douglas Gregor <doug.gregor@gmail.com>* mangle.c (write_type): Change mangling of rvalue reference from`RR' to `O'.2007-08-31 Jakub Jelinek <jakub@redhat.com>* decl.c (duplicate_decls): Remove duplicated line.2007-08-31 Paolo Carlini <pcarlini@suse.de>PR c++/33210* cxx-pretty-print.c (pp_cxx_unqualified_id): Deal withBOUND_TEMPLATE_TEMPLATE_PARM.2007-08-31 Paolo Carlini <pcarlini@suse.de>PR c++/32113* search.c (lookup_member): Check the name argument forerror_mark_node.2007-08-31 Paolo Carlini <pcarlini@suse.de>PR c++/33212* parser.c (cp_parser_trait_expr): Check rerurn value ofcp_parser_type_id.2007-08-30 Ollie Wild <aaw@google.com>* cvt.c (cp_convert_to_pointer): Remove force parameter. Callconvert_ptrmem for pointer to member conversions.(convert_to_pointer_force): Update cp_convert_to_pointer call.(ocp_convert): Update cp_convert_to_pointer call.* typeck.c (convert_ptrmem): Add conditional for null pointers tomembers.(build_static_cast_1): Check can_convert for conversions in eitherdirection.(get_delta_difference_1): New function.(get_delta_difference): Refactor to call get_delta_difference_1.2007-08-30 Jakub Jelinek <jakub@redhat.com>* decl.c (start_preparsed_function): SetDECL_DISREGARD_INLINE_LIMITS for GNU_INLINE_P functions.2007-08-28 Paolo Carlini <pcarlini@suse.de>PR c++/33209* error.c (dump_expr): Deal with TEMPLATE_TYPE_PARM andBOUND_TEMPLATE_TEMPLATE_PARM.2007-08-28 Jakub Jelinek <jakub@redhat.com>PR c++/32596PR c++/32400* pt.c (check_explicit_specialization): Set DECL_INTERFACE_KNOWNand DECL_NOT_REALLY_EXTERN if tmpl_func is not public.2007-08-27 Jason Merrill <jason@redhat.com>PR c++/29000* pt.c (build_non_dependent_expr, type_dependent_expression_p):Look inside STMT_EXPR.* semantics.c (stmt_expr_value_expr): New fn.* cp-tree.h: Declare it.PR c++/28558* decl.c (groktypename): Ignore attributes applied to class type.2007-08-28 Richard Guenther <rguenther@suse.de>* decl.c (duplicate_decls): Merge DECL_DISREGARD_INLINE_LIMITS.2007-08-28 Gabriel Dos Reis <gdr@integrable-solutions.net>* error.c (dump_expr): Handle COMPLEX_CST.* cxx-pretty-print.c (pp_cxx_primary_expression): Likewise.(pp_cxx_expression): Likewise.2007-08-27 Alexandre Oliva <aoliva@redhat.com>* decl.c (GNU_INLINE_P): New.(duplicate_decls): Handle gnu_inline. Merge attributes andsome flags in overriding definitions.(redeclaration_error_message): Handle gnu_inline.(start_preparsed_function): Likewise.2007-08-25 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>* call.c (sufficient_parms_p): Constify.* class.c (same_signature_p): Likewise.* cp-gimplify.c (is_invisiref_parm,cxx_omp_privatize_by_reference): Likewise.* cp-objcp-common.c (has_c_linkage): Likewise.* cp-tree.h (NON_THUNK_FUNCTION_CHECK, THUNK_FUNCTION_CHECK,sufficient_parms_p, same_signature_p, copy_fn_p, move_fn_p,grok_ctor_properties, nothrow_libfn_p, skip_artificial_parms_for,num_artificial_parms_for, comp_template_parms,template_parameter_pack_p, any_dependent_template_arguments_p,any_type_dependent_arguments_p, any_value_dependent_elements_p,repo_export_class_p, cxx_omp_privatize_by_reference, pod_type_p,zero_init_p, member_p, cp_lvalue_kind,builtin_valid_in_constant_expr_p, decl_anon_ns_mem_p,varargs_function_p, is_dummy_object, special_function_kind,string_conv_p, type_unknown_p, comp_except_specs, compparms,comp_cv_qualification, is_bitfield_expr_with_lowered_type,unlowered_expr_type, ptr_reasonably_similar, cp_type_readonly,cp_has_mutable_p, at_least_as_qualified_p,invalid_nonstatic_memfn_p, lvalue_or_else, lvalue_p): Likewise.* decl.c (copy_fn_p, move_fn_p, grok_ctor_properties): Likewise.* except.c (nothrow_libfn_p): Likewise.* method.c (skip_artificial_parms_for, num_artificial_parms_for):Likewise.* pt.c (comp_template_parms, template_parameter_pack_p,any_type_dependent_arguments_p, any_value_dependent_elements_p,any_dependent_template_arguments_p): Likewise.* repo.c (repo_export_class_p): Likewise.* semantics.c (anon_aggr_type_p): Likewise.* tree.c (lvalue_p_1, real_lvalue_p, lvalue_p,builtin_valid_in_constant_expr_p, decl_anon_ns_mem_p,varargs_function_p, member_p, is_dummy_object, pod_type_p,zero_init_p, special_function_p): Likewise.* typeck.c (comp_array_types, type_unknown_p, comp_except_specs,comp_array_types, at_least_as_qualified_p, comp_cv_qualification,compparms, invalid_nonstatic_memfn_p,is_bitfield_expr_with_lowered_type, unlowered_expr_type,string_conv_p, ptr_reasonably_similar, cp_type_readonly,cp_has_mutable_p, lvalue_or_else): Likewise.2007-08-25 Paolo Bonzini <bonzini@gnu.org>* decl.c (cp_tree_node_structure): Kill TINST_LEVEL case.* cp-objcp-common.c (cp_tree_size): Ditto.* tree.c (cp_walk_subtrees): Ditto* cp-tree.def (TINST_LEVEL): Go away.* cp-tree.h (struct tinst_level_s): Rename to struct tinst_level,move together with other non-tree structs.(enum cp_tree_node_structure_enum): Nuke TS_CP_TINST_LEVEL.(union lang_tree_node): Eliminate tinst_level field.(TINST_DECL, TINST_LOCATION, TINST_IN_SYSTEM_HEADER_P): Annihilate.(current_instantiation, outermost_tinst_level): Returna "struct tinst_level *".* error.c (print_instantiation_partial_context): Change secondparameter to a "struct tinst_level *". Replace accessor macroswith field access.(print_instantiation_full_context): Likewise.* lex.c (in_main_input_context): Likewise.* pt.c (struct pending_templates): New.(pending_templates, last_pending_template): Use it as a type.(current_tinst_level): Change typo to "struct tinst_level *"(reopen_tinst_level): Accept "struct tinst_level *", return decl.(add_pending_template): Construct a "struct pending_template".Replace TINST_LEVEL accessor macros with field access.(push_tinst_level): Likewise, using GGC_NEW instead of make_node.(pop_tinst_level): Likewise.(instantiate_pending_templates): Likewise. Factor common code usedwhen an instantiation has been done.(outermost_tinst_level): Replace tree_last with loop.(current_instantiation): Return a "struct tinst_level *".2007-08-24 Ollie Wild <aaw@google.com>* name-lookup.c (add_decl_to_level): Remove addition to vtables chain.* name-lookup.h (cp_binding_level): Remove vtables member.2007-08-24 Richard Guenther <rguenther@suse.de>* tree.c (cp_cannot_inline_tree_fn): Remove.* cp-tree.h (cp_cannot_inline_tree_fn): Likewise.* cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN):Remove define.2007-08-24 Jakub Jelinek <jakub@redhat.com>PR c++/32567* typeck.c (build_unary_op) <case PREINCREMENT_EXPR>: Returnerror_mark_node right away if build_expr_type_conversionreturned it.PR c++/32898* name-lookup.c (set_decl_namespace): lookup_qualified_name failureis error_mark_node rather than NULL_TREE.* pt.c (check_explicit_specialization): Likewise.PR c++/31941* error.c (resolve_virtual_fun_from_obj_type_ref): HandleTARGET_VTABLE_USES_DESCRIPTORS targets properly.2007-08-22 Jason Merrill <jason@redhat.com>PR c++/29365* pt.c (outermost_tinst_level): New function.* lex.c (in_main_input_context): New function.* cp-tree.h: Declare it.* decl2.c (constrain_class_visibility): Use it to avoid warningabout uses of the anonymous namespace in the main input file.2007-08-21 Jakub Jelinek <jakub@redhat.com>* init.c (build_new_1): Use get_target_expr instead of save_expr.2007-08-20 Pawel Sikora <pluto@pld-linux.org>PR c++/7302* class.c (finish_struct_1): Warn when a class has virtualfunctions and accessible non-virtual destructor.2007-08-20 Richard Guenther <rguenther@suse.de>PR c++/22369PR c++/22451* call.c (build_new_method_call): Convert initializer tothe basetype.* init.c (build_aggr_init): Do not fiddle with types.(build_vec_delete_1): Use correct type for POINTER_PLUS_EXPR.* except.c (build_throw): Do not drop qualifiers for thepointer type.* typeck.c (get_member_function_from_ptrfunc): Do notfiddle with types, instead convert.(build_ptrmemfunc1): Convert to the target type forinitialization.(gfc_trans_allocate): Convert result to target type.* cp-objcp-common.c (cxx_get_alias_set): Pointers topointer-to-member structures shall have alias set zero as well.2007-08-20 Richard Guenther <rguenther@suse.de>* cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P):Remove.* cp-tree.h (cp_auto_var_in_fn_p): Remove.(nonstatic_local_decl_p): Likewise.* tree.c (cp_auto_var_in_fn_p): Remove.* decl.c (nonstatic_local_decl_p): Remove.2007-08-20 Richard Guenther <rguenther@suse.de>* cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_WALK_SUBTREES):Remove define.* tree.h (cp_walk_tree): New define to walk_tree_1 withcp_walk_subtrees lh parameter.(cp_walk_tree_without_duplicates): New define towalk_tree_without_duplicates_1 with cp_walk_subtrees lh parameter.* tree.c (count_trees): Callcp_walk_tree_without_duplicates.(verify_stmt_tree): Call cp_walk_tree.(break_out_target_exprs): Likewise.(WALK_SUBTREE): Likewise.* cp-gimplify.c (cp_genericize): Likewise.* cp-pt.c (find_parameter_packs_r): Likewise.(uses_parameter_packs): Likewise.(make_pack_expansion): Likewise.(check_for_bare_parameter_packs): Likewise.(for_each_template_parm): Likewise.* decl.c (check_default_argument): Callcp_walk_tree_without_duplicates.* except.c (build_throw): Likewise.* decl2.c (type_visibility): Likewise.* semantics.c (expand_or_defer_fn): Likewise.(finalize_nrv): Call cp_walk_tree.2007-08-20 Jakub Jelinek <jakub@redhat.com>PR c++/33025* init.c (build_new_1): Rename placement_var variable to placement_expr.Initialize it with save_expr rather than get_temp_regvar.2007-08-17 Andrew Pinski <andrew_pinski@playstation.sony.com>PR c++/28989* tree.c (lvalue_p_1 <case SAVE_EXPR>): SAVE_EXPRs are neverlvalues.2007-08-17 Ollie Wild <aaw@google.com>PR c++/31749* name-lookup.c (do_nonmember_using_decl): Shift implicit typedeclarations into appropriate slots for comparison. Fix typecomparison.2007-08-17 Paolo Carlini <pcarlini@suse.de>PR c++/32112* error.c (dump_decl): Deal with UNBOUND_CLASS_TEMPLATE.* cxx-pretty-print.c (pp_cxx_unqualified_id): Likewise.2007-08-17 Paolo Carlini <pcarlini@suse.de>PR c++/32870* parser.c (cp_parser_class_head): Improve error message.2007-08-16 Seongbae Park <seongbae.park@gmail.com>* pt.c (instantiate_decl): Set input_locationfor the function end.2007-08-16 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>* cp-objcp-common.c (cxx_warn_unused_global_decl, cp_expr_size):Constify.* cp-tree.h (local_variable_p, nonstatic_local_decl_p,class_tmpl_impl_spec_p, cp_auto_var_in_fn_p, cp_type_quals,cxx_incomplete_type_diagnostic, cxx_incomplete_type_error,cxx_warn_unused_global_decl, cp_expr_size): Likewise.* decl.c (local_variable_p, nonstatic_local_decl_p): Likewise.* tree.c (class_tmpl_impl_spec_p, cp_auto_var_in_fn_p): Likewise.* typeck.c (cp_type_quals): Likewise.* typeck2.c (cxx_incomplete_type_diagnostic,cxx_incomplete_type_error): Likewise.2007-08-16 Paolo Carlini <pcarlini@suse.de>PR c++/31132* pt.c (tsubst_friend_function): When check_classfnreturns error_mark_node likewise return it.2007-08-15 Jakub Jelinek <jakub@redhat.com>PR c++/32992* typeck.c (check_return_expr): Don't NRV optimize vars inanonymous unions.* decl.c (finish_function): Comment fix.2007-08-15 Paolo Carlini <pcarlini@suse.de>PR c++/33035* pt.c (push_template_decl_real): Depending on TYPE_Puse either TYPE_CONTEXT or DECL_CONTEXT.2007-08-14 Mark Mitchell <mark@codesourcery.com>* semantics.c (finish_omp_clauses): Strip a NOP_EXPR ifconstructors and destructors return this.2007-08-14 Paolo Carlini <pcarlini@suse.de>PR c++/27211* decl2.c (check_classfn): Return error_mark_node in case of error;in that case, do not call add_method.* decl.c (start_decl): Deal with check_classfn returningerror_mark_node.(grokfndecl): Likewise.* pt.c (tsubst_friend_function): Likewise.2007-08-14 Andrew Pinski <pinskia@gmail.com>PR c++/30428* typeck.c (build_binary_op): Disallow vector float types withBIT_IOR_EXPR, BIT_AND_EXPR, and BIT_XOR_EXPR.2007-08-11 Ian Lance Taylor <iant@google.com>* cp-objcp-common.c (cxx_get_alias_set): Change return type toalias_set_type.* cp-tree.h (cxx_get_alias_set): Update declaration.2007-08-10 Ollie Wild <aaw@google.com>* name-lookup.c (do_nonmember_using_decl): Print an error for ambiguoustype lookups.(ambiguous_decl): Construct tree of ambiguous types. Remove extaneousfunction parameter.(unqualified_namespace_lookup): Fix ambiguous_decl call.(lookup_using_namespace): Fix ambiguous_decl call.(qualified_lookup_using_namespace): Fix ambiguous_decl call.2007-08-10 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>* call.c (name_as_c_string): Use CONST_CAST.* decl.c (build_decl): Likewise.* parser.c (cp_parser_string_literal): Likewise.2007-08-10 Paolo Carlini <pcarlini@suse.de>PR c++/17763* error.c (dump_expr): Consistently use the *_cxx_*variants of the pretty-print functions.2007-08-10 Paolo Carlini <pcarlini@suse.de>PR c++/22256* decl.c (check_special_function_return_type): Just erroron return type specified for conversion operator.2007-08-09 Daniel Berlin <dberlin@dberlin.org>* typeck2.c (readonly_error): Handle general expressions.* error.c (dump_expr): Handle POINTER_PLUS_EXPR2007-08-06 Dan Hipschman <dsh@google.com>* method.c (use_thunk): Use DECL_NAME instead of DECL_RTL toaccess function name.2007-08-04 Alfred Minarik <a.minarik@aon.at>PR pch/13676* lang-specs.h: Add .hp, .hxx, .hpp, .h, .HPP, .tcc as c++ header.* g++spec.c (lang_specific_driver): Check them.2007-08-06 Paolo Carlini <pcarlini@suse.de>PR c++/19532* pt.c (inline_needs_template_parms): Fix comment; change return typeto bool.2007-08-05 Volker Reichelt <v.reichelt@netcologne.de>Revert:2007-03-26 Dirk Mueller <dmueller@suse.de>* parser.c (cp_parser_member_declaration): Pedwarnabout stray semicolons after member declarations.2007-08-02 Lee Millward <lee.millward@gmail.com>PR c++/30849PR c++/30850PR c++/30851* parser.c (cp_parser_asm_definition): Detect and discard asmstatements with invalid inputs or outputs.(cp_parser_asm_operand_list): Return error mark node if anyof the operands are invalid. Adjust documentation.2007-08-02 Nick Clifton <nickc@redhat.com>* typeck.c: Change copyright header to refer to version 3 of theGNU General Public License and to point readers at the COPYING3file and the FSF's license web page.* optimize.c, lang-specs.h, init.c, class.c, repo.c, decl.c,config-lang.in, cp-tree.def, call.c, decl.h, ptree.c,Make-lang.in, method.c, rtti.c, cp-objcp-common.c, g++spec.c,cp-objcp-common.h, except.c, error.c, operators.def, cvt.c,tree.c, mangle.c, cp-tree.h, dump.c, search.c, friend.c, expr.c,cp-gimplify.c, cxx-pretty-print.c, cp-lang.c, typeck2.c, pt.c,cxx-pretty-print.h, semantics.c, name-lookup.c, lex.c, decl2.c,name-lookup.h, parser.c: Likewise.2007-08-01 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>PR middle-end/32668* call.c (magic_varargs_p): Honor the "type generic" attribute.2007-07-30 Paolo Carlini <pcarlini@suse.de>PR c++/32108* semantics.c (finish_label_stmt): Reject the __label__extension outside function scopes.2007-07-29 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>* parser.c (eof_token): Un-constify.(cp_lexer_new_main, cp_lexer_new_from_tokens, VEC_alloc,cp_lexer_consume_token, cp_lexer_purge_token): Remove spuriouscasts.2007-07-28 Kazu Hirata <kazu@codesourcery.com>* pt.c, tree.c, typeck2.c: Fix comment typos.2007-07-28 Simon Martin <simartin@users.sourceforge.net>Mark Mitchell <mark@codesourcery.com>PR c++/30917* name-lookup.c (lookup_name_real): Non namespace-scope bindings can behidden due to friend declarations in local classes.2007-07-27 Douglas Gregor <doug.gregor@gmail.com>* typeck.c (structural_comptypes): Compare DECLTYPE_TYPE nodes.* cp-tree.def (DECLTYPE_TYPE): New.* error.c (dump_type): Dump DECLTYPE_TYPE nodes.(dump_type_prefix): Ditto.(dump_type_suffix): Ditto.* tree.c (DECLTYPE_TYPE): Walk DECLTYPE_TYPE nodes.* mangle.c (write_type): Handle DECLTYPE_TYPE.* cp-tree.h (IS_AGGR_TYPE): DECLTYPE_TYPE nodes can be aggregatetypes.(DECLTYPE_TYPE_EXPR): New.(DECLTYPE_TYPE_ID_EXPR_OR_MEMBER_ACCESS_P): New.(finish_declared_type): Declare.* cxx-pretty-print.c (pp_cxx_type_specifier_seq): PrintDECLTYPE_TYPE nodes.(pp_cxx_type_id): Ditto.* pt.c (for_each_template_parm_r): Walk DECLTYPE_TYPE children.(tsubst): Substitute into a DECLTYPE_TYPE node.(tsubst_copy): Ditto.(unify): Cannot deduce anything from TYPEOF_TYPE or DECLTYPE_TYPEnodes.(dependent_type_p_r): DECLTYPE_TYPE types are always dependent.* semantics.c (finish_typeof): TYPEOF_TYPE types need to usestructural equality (because we can't hash the expressions).(finish_declared_type): New.* lex.c (reswords): Add "decltype" keyword.* parser.c cp_lexer_next_token_is_decl_specifier_keyword(cp_parser_postfix_expression): Add member_access_only_p torestrict postfix expression to member access expressions.(cp_parser_unary_expression): Update call tocp_parser_postfix_expression to reflect new parameter.(cp_parser_declared_type): New.(cp_parser_simple_type_specifier): Parse decltype types.2007-07-27 Mark Mitchell <mark@codesourcery.com>PR c++/32346* call.c (convert_for_arg_passing): Only widen bitfields to theirdeclared types if necessary.2007-07-25 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>* parser.c (cp_parser_string_literal, cp_parser_sizeof_operand):Constify.2007-07-25 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>* decl.c (typename_hash, typename_compare): Constify.* mangle.c (hash_type, compare_type): Likewise.* pt.c (eq_local_specializations, hash_local_specialization):Likewise.* tree.c (cplus_array_hash, cplus_array_compare, list_hash_eq,list_hash): Likewise.* typeck2.c (pat_compare): Likewise.2007-07-24 Nathan Sidwell <nathan@codesourcery.com>* method.c (implicitly_declare_fn): Increase alignment if memberfunction pointer format requires it.2007-07-24 Paolo Carlini <pcarlini@suse.de>PR c++/29001* typeck.c (check_return_expr): Do not pass a null argumentto null_ptr_cst_p.2007-07-24 Paolo Carlini <pcarlini@suse.de>PR c++/32561* decl.c (redeclaration_error_message): Call DECL_ANON_UNION_VAR_Ponly on VAR_DECL.2007-07-22 Nathan Sidwell <nathan@codesourcery.com>PR c++/32839* typeck.c (convert_arguments): Only use default args if we havea function decl.PR c++/30818* typeck.c (structural_comptypes): No need to checkresolve_typename_type return value here.* cp-tree.h (TYPENAME_IS_RESOLVING_P): New.* pt.c (resolve_typename_type): Follow typename typedefs. Returnoriginal type rather than error_mark_node in case of failure.* parser.c (cp_parser_nested_name_specifier_opt): Adjustresolve_typename_type result check.(cp_parser_direct_declarator, cp_parser_head,cp_parser_constructor_declarator_p): Likewise.2007-07-12 Kazu Hirata <kazu@codesourcery.com>* pt.c (template_parms_variadic_p): Remove.* cp-tree.h: Remove the prototype for template_parms_variadic_p.2007-07-12 Jakub Jelinek <jakub@redhat.com>PR c++/30854* error.c (dump_expr) <case AGGR_INIT_EXPR>: Pass true as lastargument to dump_aggr_init_expr_args instead of false.2007-07-11 Douglas Gregor <doug.gregor@gmail.com>* typeck.c (comptypes): When USE_CANONICAL_TYPES, use thecanonical types; otherwise, fall back to structural typecomparisons. If ENABLE_CHECKING and USE_CANONICAL_TYPES, give aninternal compiler error if the canonical types are wrong.2007-07-11 Paolo Carlini <pcarlini@suse.de>PR c++/32560* parser.c (cp_parser_make_indirect_declarator): When thethe code argument is ERROR_MARK return cp_error_declarator.2007-07-09 Geoffrey Keating <geoffk@apple.com>PR 32617* decl.c (cxx_init_decl_processing): Don't setforce_align_functions_log.(grokfndecl): Honour ptrmemfunc_vbit_in_pfn.* typeck.c (cxx_alignof_expr): When alignof is used on a plainFUNCTION_DECL, return its alignment.2007-07-09 Richard Guenther <rguenther@suse.de>* decl.c (start_preparsed_function): Do not promote return type.2007-07-08 Paolo Carlini <pcarlini@suse.de>PR c++/30535* pt.c (unify): Never pass error_mark_node to template_decl_level.2007-07-07 Mark Mitchell <mark@codesourcery.com>PR c++/32232* pt.c (resolve_overloaded_unification): Robustify. Return abool, not an int.(type_unification_real): Adjust accordingly.2007-07-06 Richard Guenther <rguenther@suse.de>* init.c (build_new_1): Use the correct pointer type.* typeck2.c (build_m_component_ref): Likewise.2007-07-05 Mark Mitchell <mark@codesourcery.com>PR c++/32245* init.c (build_zero_init): Always build an initializer fornon-static storage.* typeck2.c (build_functional_cast): Use build_zero_init.PR c++/32251* init.c (build_new_1): Always pass the allocation function tobuild_op_delete_call.* call.c (build_op_delete_call): Handle operator delete with avariable-argument list. Do not issue an error when no matchingdeallocation function is available for a new operator.PR c++/31992* cp-tree.h (any_value_dependent_elements_p): Declare it.* decl.c (value_dependent_init_p): New function.(cp_finish_decl): Use it.* pt.c (value_dependent_expression_p): Useany_value_dependent_elements_p.* parser.c (cp_parser_primary_expression): Add comment abouttreating dependent qualified names as integralconstant-expressions.2007-07-04 Douglas Gregor <doug.gregor@gmail.com>* decl.c (build_ptrmemfunc_type): Always use structural equalitytests when comparing pointer-to-member-function types, because thehandling of TYPE_GET_PTRMEMFUNC_TYPE currently defeats canonicaltypes.2007-07-03 Mark Mitchell <mark@codesourcery.com>* init.c (build_new): Tweak comment.2007-06-29 Dave Brolley <brolley@redhat.com>PR c++/31743* parser.c (cp_parser_new_type_id): Don't reduce a named arraytype to its base type and number of elements here.* init.c (build_new): Call complete_type_or_else to ensure that thetype is complete and to issue a diagnostic if it is not.(build_new_1): Don't call complete_type_or_else here.2007-07-03 Richard Guenther <rguenther@suse.de>PR c++/32609* class.c (fixed_type_or_null): Re-lookup the hashtable slotafter recursing.2007-07-02 Simon Baldwin <simonb@google.com>* parser.c (cp_parser_elaborated_type_specifier): Added a warningfor inner-style nested forward declarations that don't declareanything useful.2007-07-02 Jakub Jelinek <jakub@redhat.com>PR c++/31748* semantics.c (finish_omp_clauses): Use %qD instead of %qE forDECL_P in not a variable and appears more than once error messages.2007-07-01 Ollie Wild <aaw@google.com>* name-lookup.c (ambiguous_decl): Fix case when new->value is hidden.(select_decl): Remove function.(unqualified_namespace_lookup): Populate binding by callingambiguous_decl. Remove select_decl call.(lookup_qualified_name): Remove select_decl call.* decl.c (lookup_and_check_tag): Check for ambiguous references.* parser.c (cp_parser_elaborated_type_specifier): Skip redundant errorgeneration when name lookup is ambiguous.2007-06-29 Douglas Gregor <doug.gregor@gmail.com>PR c++/31724* init.c (build_new_1): Use structural equality on the copy of thearray type.2007-06-28 Geoffrey Keating <geoffk@apple.com>* decl2.c (determine_visibility): Implementflag_visibility_ms_compat effect on type info.* decl.c (cxx_init_decl_processing): Implementglobal effect of flag_visibility_ms_compat.2007-06-28 Geoffrey Keating <geoffk@apple.com>* decl2.c (start_objects): Mark constructor-running functionas artificial.2007-06-26 Simon Martin <simartin@users.sourceforge.net>PR c++/32111* decl.c (grokdeclarator): Reset friendp for member functions declaredfriend of their own class.2007-06-23 Mark Mitchell <mark@codesourcery.com>* decl2.c (determine_visibility): Don't look for dllexport here.(determine_visibility_from_class): Tidy.2007-06-18 Simon Baldwin <simonb@google.com>PR c++/31923* parser.c (cp_parser_single_declaration): Added check for storageclass other than sc_none in parsed declaration, and a flag to indicateif the call is part of an explicit template specialization parse.* (cp_parser_explicit_specialization): Specialization check flag addedto call to cp_parser_single_declaration(), set true.* (cp_parser_template_declaration_after_export): Specialization checkflag added to call to cp_parser_single_declaration(), set false.* pt.c (check_explicit_specialization): Added code to copy visiblityand linkage from the templated function to the explicit specialization.2007-06-15 Andrew Pinski <andrew_pinski@playstation.sony.com>* typeck.c (build_binary_op): For templates build theexpression in pieces to avoid the assert in build2_stat.(get_member_function_from_ptrfunc):Change over to using POINTER_PLUS_EXPR and convertthe second operand to sizetype.* typeck2.c (build_m_component_ref): Likewise.* init.c (expand_virtual_init): Create a POINTER_PLUS_EXPRinstead of PLUS_EXPR for pointers.(build_new_1): Likewise.(build_vec_delete_1): Likewise.(build_vec_delete): Likewise.* class.c (build_base_path): Likewise.(build_base_path): Likewise.(convert_to_base_statically): Likewise.(fixed_type_or_null): Handle POINTER_PLUS_EXPR.(get_vtbl_decl_for_binfo): Handle POINTER_PLUS_EXPRinstead of PLUS_EXPR.(dfs_accumulate_vtbl_inits): Create a POINTER_PLUS_EXPRinstead of PLUS_EXPR for pointers.* call.c (build_special_member_call): Likewise.* rtti.c (build_headof): Likewise.Use sizetype instead of ptrdiff_type_node.(tinfo_base_init): Create a POINTER_PLUS_EXPRinstead of PLUS_EXPR for pointers.* except.c (expand_start_catch_block): Do aNEGATIVE and then a POINTER_PLUS_EXPR insteadof a MINUS_EXPR.* cp-gimplify.c (cxx_omp_clause_apply_fn): ConvertPLUS_EXPR on pointer types over to usePOINTER_PLUS_EXPR and remove the conversionto the pointer types.* method.c (thunk_adjust): Use POINTER_PLUS_EXPR foradding to a pointer type. Use size_int instead ofssize_int. Convert the index to sizetype beforeadding it to the pointer.2007-06-15 Mark Mitchell <mark@codesourcery.com>* cp-tree.h (DECL_VAR_MARKED_P): Remove.(DECL_ANON_UNION_VAR_P): New macro.* class.c (fixed_type_or_null): Tidy. Use a hash table, ratherthan DECL_VAR_MARKED_P, to keep track of which variables we haveseen.* decl.c (redeclaration_error_message): Complain about redeclaringanonymous union members at namespace scope.* decl2.c (build_anon_union_vars): Set DECL_ANON_UNION_VAR_P.2007-06-14 Geoff Keating <geoffk@apple.com>* decl2.c (determine_visibility): Ensure that functions withhidden types as parameters are hidden.PR 31093* decl2.c (determine_visibility): Remove duplicate code forhandling type info.2007-06-12 Ian Lance Taylor <iant@google.com>PR libstdc++/29286* init.c (avoid_placement_new_aliasing): New static function.(build_new_1): Call it.2007-06-11 Rafael Ávila de Espíndola <espindola@google.com>* cp-objcp-common.h (LANG_HOOKS_SIGNED_TYPE): Remove.(LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.2007-06-08 Jakub Jelinek <jakub@redhat.com>PR c++/32177* semantics.c (finish_omp_for): Call fold_build_cleanup_point_expron init, the non-decl cond operand and increment value.2007-06-07 Simon Martin <simartin@users.sourceforge.net>PR c++/30759* decl.c (check_initializer): Report an error when a brace enclosedinitializer is used for a non-aggregate type in C++98.(redeclaration_error_message): Rewrote flag_cpp0x in terms ofcxx_dialect.(grokdeclarator): Likewise.(move_fn_p): Likewise.* typeck.c (check_return_expr): Likewise.* call.c (reference_binding): Likewise.* error.c (cp_cpp_error): Likewise.* pt.c (check_default_tmpl_args): Likewise.(tsubst): Likewise.* lex.c (init_reswords): Likewise.* parser.c (p_parser_primary_expression): Likewise.(TOKEN_PRECEDENCE): Likewise.(cp_parser_init_declarator): Likewise.(cp_parser_ptr_operator): Likewise.(cp_parser_parameter_declaration): Likewise.(cp_parser_enclosed_template_argument_list): Likewise.(cp_parser_skip_to_end_of_template_parameter_list): Likewise.(cp_parser_next_token_ends_template_argument_p): Likewise.2007-06-04 Simon Baldwin <simonb@google.com>* decl.c (grokdeclarator): Readability change. Moved case labelsinto direct switch statement scope.2007-06-04 Paolo Carlini <pcarlini@suse.de>* call.c (convert_like_real): Remove pointless code.2007-05-31 Mark Mitchell <mark@codesourcery.com>* decl.c (get_atexit_fn_ptr_type): New function.(get_atexit_node): Use it.(start_cleanup_fn): Likewise.(register_dtor_fn): Use the object's destructor, instead of aseparate cleanup function, where possible.* cp-tree.h (CPTI_ATEXIT_FN_PTR_TYPE): New enumerator.(atexit_fn_ptr_type_node): New macro.* decl2.c (build_cleanup): Use build_address.2007-05-31 Daniel Berlin <dberlin@dberlin.org>* typeck.c (build_binary_op): Include types in error.2007-05-31 Jakub Jelinek <jakub@redhat.com>PR c++/31806* decl.c (cp_finish_decl): Also clear was_readonly if a static varneeds runtime initialization.2007-05-31 Paolo Carlini <pcarlini@suse.de>PR c++/32158* semantics.c (finish_trait_expr): Complete the types.2007-05-30 Russell Yanofsky <russ@yanofsky.org>Douglas Gregor <doug.gregor@gmail.com>Pedro Lamarao <pedro.lamarao@mndfck.org>Howard Hinnant <howard.hinnant@gmail.com>PR c++/7412PR c++/29939* typeck.c (comptypes): Don't consider rvalue and lvaluereference types to be equivalent.(check_return_expr): Move from certain lvalues when returningthem.* decl.c (grokdeclarator): Implement reference collapsing.(copy_fn_p): Don't consider constructors taking rvalue referencesto be copy constructors.(move_fn_p): New.* call.c (conversion): New "rvaluedness_matches_p" member.(convert_class_to_reference): Require reference type as firstparameter instead of base type.(reference_binding): Add logic to handle rvalue references.(implicit_conversion): Update inaccurate comment.(convert_like_real): Disable creation of temporaries that areimpossible to initialize for types with move constructors.(build_over_call): Elide move constructors when possible.(maybe_handle_implicit_object): Set "rvaluedness_matches_p".(maybe_handle_ref_bind): Return conversion instead of type node.(compare_ics): Add logic to use "rvaluedness_matches_p" values todetermine preferred conversion sequences.* cp-tree.h (TYPE_REF_IS_RVALUE): New.(LOOKUP_PREFER_RVALUE): New.(DECL_MOVE_CONSTRUCTOR_P): New.(struct cp_declarator): Add "reference" member for referencetypes, with new "rvalue_ref" flag.(cp_build_reference_type): Declare.(move_fn_p): Declare.* error.c (dump_type_prefix): Format rvalue reference typescorrectly in error messages.* except.c (build_throw): Move from certain lvalues whenthrowing.* mangle.c (write_type): Mangle rvalue references differentlythan regular references.* parser.c (make_reference_declarator): Add boolean parameter forrvalue references.(cp_parser_make_indirect_declarator): New.(cp_parser_new_declarator_opt): Callcp_parser_make_indirect_declarator.(cp_parser_conversion_declarator_opt): Ditto.(cp_parser_declarator): Ditto.(cp_parser_ptr_operator): Parse "&&" tokens into rvalue referencedeclarators.* pt.c (tsubst): Implement reference collapsing.(maybe_adjust_types_for_deduction): Implement special templateparameter deduction rule for rvalue references.(type_unification_real): Update calls tomaybe_adjust_types_for_deduction.(try_one_overload): Ditto.(unify_pack_expansion): Ditto.* tree.c (lvalue_p_1): Handle rvalue reference types.(cp_build_reference_type): New.2007-05-30 Jakub Jelinek <jakub@redhat.com>PR c++/31809* decl.c (cp_finish_decl): Clear TREE_READONLY flag on TREE_STATICvariables that need runtime initialization.2007-05-28 Andrew Pinski <Andrew_pinski@playstation.sony.com>PR c++/31339* typeck.c (build_unary_op <case PREINCREMENT_EXPR,case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,case POSTDECREMENT_EXPR>): Return the error_mark_nodeif either the real or imaginary parts would anerror_mark_node.2007-05-25 Simon Martin <simartin@users.sourceforge.net>Manuel Lopez-Ibanez <manu@gcc.gnu.org>PR c++/31745* parser.c (cp_parser_skip_to_closing_brace): Return true if the nexttoken is a closing brace, false if there are no tokens left.(cp_parser_namespace_alias_definition): Only consume the next token ifit is a closing brace.* parser.c (cp_parser_class_specifier): Likewise.2007-05-25 H.J. Lu <hongjiu.lu@intel.com>* semantics.c (finish_member_declaration): Fix a typo in thelast checkin.2007-05-25 Douglas Gregor <doug.gregor@gmail.com>PR c++/31431PR c++/31432PR c++/31434PR c++/31435PR c++/31437PR c++/31438PR c++/31442PR c++/31443PR c++/31444PR c++/31445* error.c (dump_type): Dump TYPE_ARGUMENT_PACK nodes.* cp-tree.h (check_for_bare_parameter_packs): Returns bool.* pt.c (check_for_bare_parameter_packs): Return bool indicatedwhether everything was okay. Fix indentation.(push_template_decl_real): Check for bare parameter packs infunction parameters; where errors occur, mark the parameter typeswith ERROR_MARK_NODEs to avert ICEs.(coerce_template_parameter_pack): New.(coerce_template_parms): Moved parameter pack coercion intocoerce_template_parameter_pack, and permit it anywhere in thetemplate parameter list (not just at the end). Parameter andargument indices can vary (somewhat) separately now, so addPARM_IDX and ARG_IDX.(fn_type_unification): Don't set an argument pack as incomplete ifno argument pack was deduced.(type_unification_real): If a type parameter is a parameter packand has not otherwise been deduced, it will be deduced to an emptyparameter pack.(more_specialized_fn): Use the actual lengths of the argumentlists when comparing against expansions.* semantics.c (finish_member_declaration): If a field's type hasbare parameter packs, error and set its type to ERROR_MARK_NODE.2007-05-24 Danny Smith <dannysmith@users.sourceforge.net>PR target/27067* mangle.c (mangle_decl): Call targetm.mangle_decl_assembler_name.2007-05-22 Ollie Wild <aaw@google.com>* name-lookup.c (ambiguous_decl): Adds check for hidden types.(unqualified_namespace_lookup): Adds check for hidden types.2007-05-22 Ollie Wild <aaw@google.com>* decl.c (duplicate_decls): Verify namespace names are unique.2007-05-21 Mark Mitchell <mark@codesourcery.com>* decl.c (cxx_maybe_build_cleanup): Handle__attribute__((cleanup)).2007-05-19 Manuel Lopez-Ibanez <manu@gcc.gnu.org>* cvt.c (cp_convert_and_check): Don't check warnings if theconversion failed.2007-05-18 Geoffrey Keating <geoffk@apple.com>* mangle.c (write_real_cst): Use 'unsigned long' for %lx.2007-05-14 Paolo Carlini <pcarlini@suse.de>PR c++/29928* rtti.c (get_tinfo_decl_dynamic, get_typeid): Try to complete thetype only if is a class type (5.2.8/4).2007-05-14 Rafael Ávila de Espíndola <espindola@google.com>* cp-objcp-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.* decl.c (grokdeclarator): Use unsigned_type_for instead ofc_common_unsigned_type.2007-05-11 Silvius Rus <rus@google.com>* typeck.c (build_indirect_ref): Add call tostrict_aliasing_warning.(build_reinterpret_cast_1): Condition call tostrict_aliasing_warning.2007-05-11 Jan Hubicka <jh@suse.cz>* semantics.c (expand_or_defer_fn): Do not call c_record_cdtor_fn.* decl2.c (start_objects): ctors and dtors are no longer public.(cp_write_global_declarations): Do not call c_build_cdtor_fns.2007-05-07 Andrew Pinski <andrew_pinski@playstation.sony.com>* typeck.c (build_unary_op): Remove code that used tohandle non lvalue increments/decrements.2007-05-07 Mike Stump <mrs@apple.com>* parser.c (check_empty_body): Add.(cp_parser_iteration_statement): Add call to check_empty_body.2007-05-05 Geoffrey Keating <geoffk@apple.com>PR 31775* mangle.c (write_mangled_name): Mangle static variable names.(write_unqualified_name): Use local-source-name fornamespace-scope static variables.2007-05-04 Dirk Mueller <dmueller@suse.de>* cp-tree.h (DECL_MAIN_P): only if -ffreestanding isnot in effect.2007-05-02 Seongbae Park <seongbae.park@gmail.com>PR c++/31663* decl2.c (constrain_class_visibility):Use strip_pointer_or_array_types instead of strip_array_types.2007-04-28 Andrew Pinski <andrew_pinski@playstation.sony.com>PR C++/30221* decl.c (reshape_init_r): Don't reshape the first element if itis a pointer to member function.2007-04-27 Simon Baldwin <simonb@google.com>* decl.c (grokparms): Changed message format from %qD to %qE.2007-04-27 Douglas Gregor <doug.gregor@gmail.com>* error.c (maybe_warn_variadic_templates): Variadic templates arenow in C++0x, so only warn about them in C++98 mode.2007-04-26 Andrew Pinski <andrew_pinski@playstation.sony.com>PR C++/30016* typeck.c (build_reinterpret_cast_1): Only allow conversion tointegeral types from vectors types.2007-04-26 Jakub Jelinek <jakub@redhat.com>PR c++/31598* semantics.c (finish_omp_clauses): Don't create CP_OMP_CLAUSE_INFOfor type dependent OMP_CLAUSE_DECLs.2007-04-24 Mark Mitchell <mark@codesourcery.com>PR c++/31338* cp-tree.h (ARITHMETIC_TYPE): Include COMPLEX_TYPE.* typeck.c (type_after_usual_arithmetic_conversions): Adjust, asCOMPLEX_TYPE is now an ARITHMETIC_TYPE.* init.c (build_zero_init): Adjust, asCOMPLEX_TYPE is now a SCALAR_TYPE.* typeck2.c (digest_init): Allow brace-enclosed initializers forCOMPLEX_TYPE, even though that is now a SCALAR_TYPE.2007-04-25 Paolo Carlini <pcarlini@suse.de>* semantics.c (classtype_has_nothrow_copy_or_assign_p): Adjustper N2255; rename as classtype_has_nothrow_assign_or_copy_p.(trait_expr_value): Adjust.2007-04-23 Simon Baldwin <simonb@google.com>* decl.c (grokparms): Added new error for duplicate functionparameters names in function prototypes, to match gcc behavior.2007-04-23 Jan Hubicka <jh@suse.cz>* decl2.c (finish_objects): Do not call target constructor/destructorbits dirrectly.2007-04-21 Andrew Pinski <andrew_pinski@playstation.sony.com>* cp-tree.h (lang_tree_node): Use GENERIC_NEXTinstead of checking GIMPLE_STMT_P in chain_next.2007-04-17 Mark Mitchell <mark@codesourcery.com>PR c++/31513* call.c (convert_for_arg_passing): Convert bitfields to theirdeclared types.2007-04-17 Simon Martin <simartin@users.sourceforge.net>PR c++/31517* pt.c (value_dependent_expression_p): Handle MODOP_EXPRs.2007-04-16 Seongbae Park <seongbae.park@gmail.com>PR c++/29365* decl2.c (constrain_class_visibility):Do not warn about the use of anonymous namespace in the main input file.2007-04-15 Mark Mitchell <mark@codesourcery.com>* cp-tree.h (current_template_parms): Fix typo in comment.2007-04-15 Kazu Hirata <kazu@codesourcery.com>* cp-tree.h, error.c: Fix comment typos.2007-04-13 Jason Merrill <jason@redhat.com>PR c++/31074* call.c (reference_binding): Add c_cast_p parm. If true,add quals to TO as needed to make it reference-compatible.2007-04-11 Jan Hubicka <jh@suse.cz>* class.c (convert_to_base_statically): Fold produced tree; verifythat we are not processing template_decl.2007-04-09 Mark Mitchell <mark@codesourcery.com>PR c++/31449* class.c (build_base_path): Ensure that the converted pointer hasthe same cv-qualification as the input.2007-04-09 Paolo Carlini <pcarlini@suse.de>* tree.c (cp_tree_equal): Deal with TRAIT_EXPR.2007-04-08 Steven Bosscher <steven@gcc.gnu.org>* cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS):Do not set it.(LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do not set it.* tree.c (cp_add_pending_fn_decls): Remove.* cp-tree.h (cp_add_pending_fn_decls): Remove prototype.2007-04-07 Daniel Berlin <dberlin@dberlin.org>Revert change removing staticp.2007-04-06 Daniel Berlin <dberlin@dberlin.org>* cp-objcp-common.c (cxx_staticp): Remove.* cp-objcp-common.h (LANG_HOOKS_STATICP): Remove.* cp-tree.h (cxx_staticp):2007-04-04 Danny Smith <dannysmith.users.sourceforge.net>* class.c (check_for_override): Don't remove dllmport attributeof virtual methods.2007-04-03 Jakub Jelinek <jakub@redhat.com>PR c++/30847* typeck.c (build_modify_expr): For COND_EXPR on LHS, if RHS has voidtype issue error and return early.2007-03-30 Jason Merrill <jason@redhat.com>PR c++/31187* typeck.c (cp_type_readonly): New fn.* cp-tree.h: Declare it.* decl.c (start_decl): Set implicit DECL_THIS_STATIC here.(cp_finish_decl): Not here.2007-03-31 Richard Guenther <rguenther@suse.de>* optimize.c (maybe_clone_body): Replace splay-tree usage bypointer-map.2007-03-31 Douglas Gregor <doug.gregor@gmail.com>PR c++/31138PR c++/31140PR c++/31141* parser.c (declarator_can_be_parameter_pack): New.(cp_parser_template_parameter): Only parse the `...' if thedeclarator can be a parameter pack.(cp_parser_parameter_declaration): Ditto. Also, handle when TYPEis NULL.* pt.c (find_parameter_packs_r): Look into the bounds on integertypes (they could be used as array bounds).(check_for_bare_parameter_packs): Deal with TEMPLATE_PARM_INDEX.(tsubst_pack_expansion): Handle failure to expand parameterpacks.2007-03-30 Paolo Carlini <pcarlini@suse.de>PR c++/26099* cp-tree.h (enum cp_trait_kind, struct tree_trait_expr,TRAIT_EXPR_TYPE1, TRAIT_EXPR_TYPE2, TRAIT_EXPR_KIND): Add.(enum cp_tree_node_structure_enum, union lang_tree_node): Update.(CLASS_TYPE_NON_UNION_P): Add.(struct lang_type_class): Add has_complex_dflt.(TYPE_HAS_COMPLEX_DFLT, TYPE_HAS_TRIVIAL_DFLT): Add.(locate_copy, locate_ctor, locate_dtor, finish_trait_expr): Declare.* cp-tree.def: Add TRAIT_EXPR.* cp-objcp-common.c (cp_tree_size): Add TRAIT_EXPR case.* lex.c (struct resword): Add __has_nothrow_assign,__has_nothrow_constructor, __has_nothrow_copy, __has_trivial_assign,__has_trivial_constructor, __has_trivial_copy,__has_trivial_destructor, __has_virtual_destructor, __is_abstract,__is_base_of, __is_class, __is_convertible_to, __is_empty, __is_enum,__is_pod, __is_polymorphic, __is_union.* parser.c (cp_parser_primary_expression): Deal with the new RIDs.(cp_parser_trait_expr): New.* semantics.c (finish_trait_expr, trait_expr_valueclasstype_has_nothrow_copy_or_assign_p): New.* method.c (locate_copy, locate_ctor, locate_dtor): Do not defineas static.* decl.c (cp_tree_node_structure): Add TRAIT_EXPR.* class.c (check_bases, check_field_decl, check_bases_and_members):Deal with TYPE_HAS_COMPLEX_DFLT (t) too.* pt.c (uses_template_parms, tsubst_copy_and_build,value_dependent_expression_p, type_dependent_expression_p): Deal withTRAIT_EXPR.* tree.c (cp_walk_subtrees): Deal with TRAIT_EXPR.2007-03-29 Richard Guenther <rguenther@suse.de>* tree.c (cp_walk_subtrees): Do not set input_location.2007-03-28 Simon Martin <simartin@users.sourceforge.net>PR c++/29077* decl.c (grokfndecl): Properly setup decl if it is a constructor or adestructor.2007-03-28 Douglas Gregor <doug.gregor@gmail.com>* parser.c (struct cp_parser): Update comment forgreater_than_is_operator_p.(cp_parser_primary_expression): In C++0x mode, a cast operator canbe terminated with a `>>' token when !GREATER_THAN_IS_OPERATOR_P.(TOKEN_PRECEDENCE): In C++0x mode, `>>' is treated like `>' when!GREATER_THAN_IS_OPERATOR_P.(cp_parser_binary_expression): When -Wc++0x-compat, warn about`>>' operators that will become two `>' tokens in C++0x.(cp_parser_parameter_declaration): Treat `>>' like `>' in C++0xmode, allowing it to terminate default arguments.(cp_parser_enclosed_template_argument_list): In C++0x mode, treat`>>' like two consecutive `>' tokens.(cp_parser_skip_to_end_of_template_parameter_list): Ditto.(cp_parser_next_token_ends_template_argument_p): In C++0x, `>>'ends a template argument.2007-03-28 Douglas Gregor <doug.gregor@gmail.com>* decl.c (redeclaration_error_message): Complain when redeclaringa friend function with default template arguments (C++0x mode only).* cp-tree.h (check_default_tmpl_args): Declare.* pt.c (check_default_tmpl_args): In C++0x mode, permit defaulttemplate arguments in function templates. Add support for checkingthe default template arguments of friend templates.(push_template_decl_real): Fix call to check_default_tmpl_args.(type_unification_real): If a template parameter has not beendeduced but provides a default template argument, substitute intothat default template argument.* parser.c (cp_parser_init_declarator): When declaring (but notdefining!) a function template in C++0x mode, check for defaulttemplate arguments.2007-03-28 Douglas Gregor <doug.gregor@gmail.com>PR c++/29993* decl.c (grokdeclarator): Deal with cv-qualified function typetypedefs in the same way for member and non-member functions.2007-03-26 Dirk Mueller <dmueller@suse.de>* parser.c (cp_parser_member_declaration): Pedwarnabout stray semicolons after member declarations.2007-03-26 Paolo Carlini <pcarlini@suse.de>PR c++/30500* pt.c (instantiate_decl): Set in_system_header.2007-03-22 Mark Mitchell <mark@codesourcery.com>* cp-tree.h (current_tempalte_parms): Improve documentation.* pt.c (current_template_args): Likewise.PR c++/30863* parser.c (cp_parser_parse_and_diagnose_invalid_type_name): Donot consume tokens when failing.2007-03-22 Jim Wilson <wilson@specifix.com>Mark Mitchell <mark@codesourcery.com>PR c++/31273* call.c (standard_conversion): Use type_decays_to. Keep FCODEconsistent with FROM.2007-03-22 Gabriel Dos Reis <gdr@integrable-solutions.net>* error.c (dump_expr): Handle dependent names that designate types.* cxx-pretty-print.c (pp_cxx_unqualified_id): Handle TYPENAME_TYPE.2007-03-17 Kazu Hirata <kazu@codesourcery.com>* cp-tree.def, parser.c, pt.c: Fix comment typos.2007-03-16 Manuel Lopez-Ibanez <manu@gcc.gnu.org>* cvt.c (cp_convert_and_check) : Define.* cp-tree.h (cp_convert_and_check): Declare.* call.c (convert_conversion_warnings): Rename toconversion_null_warnings. The warning for floating-point tointeger is handled by convert_and_check in convert_like_real.(convert_like_real): convert_conversion_warnings was renamed asconversion_null_warnings.* typeck.c (build_binary_op): Use cp_convert_and_check to warn foroverflow and changes of value during conversion.2007-03-15 Manuel Lopez-Ibanez <manu@gcc.gnu.org>PR c++/30891* parser.c (cp_parser_statement): If 'namespace' is found, thisonly can be a namespace alias definition, so parse it now.(cp_parser_namespace_alias_definition): if we find an open braceinstead of '=', then this is actually a misplaced namespacedefinition.2007-03-15 Manuel Lopez-Ibanez <manu@gcc.gnu.org>PR c++/24924* decl.c (cxx_init_decl_processing): Move command-line optionsprocessing to c-opts.c.2007-03-15 Douglas Gregor <doug.gregor@gmail.com>* ptree.c (cxx_print_type): Use formatting markup for integerswhen printing template parameter index/level/orig level.(cxx_print_xnode): Ditto.* cp-tree.h (TEMPLATE_PARM_PARAMETER_PACK): Use TREE_LANG_FLAG_0.(struct template_parm_index_s): Remove the PARAMETER_PACK member.Make INDEX, LEVEL, and ORIG_LEVEL integers instead ofHOST_WIDE_INTs.(struct saved_scope): Make X_PROCESSING_TEMPLATE_DECL an int,rather than a HOST_WIDE_INT.Turn X_PROCESSING_EXPLICIT_INSTANTIATION, SKIP_EVALUATION, andNEED_POP_FUNCTION_CONTEXT into bool bitfields; reorder fields forbetter bit-packing.(struct language_function): Make RETURNS_VALUE, RETURNS_NULL,RETURNS_ABNORMALLY, IN_FUNCTION_TRY_HANDLER, andIN_BASE_INITIALIZER bool bitfields.(struct cp_declarator): Make KIND a 4-bit field. MakePARAMETER_PACK_P a bool bitfield just after KIND.* pt.c (uses_parameter_packs): Destroy the pointer set.(make_pack_expansion): Ditto.(check_for_bare_parameter_packs): Ditto.* name-lookup.c (push_to_top_level): Make need_pop a bool value.2007-03-14 Andrew Pinski <andrew_pinski@playstation.sony.com>PR c++/31165* call.c (convert_default_arg): Instead of copying the node,unshare it.2007-03-15 Dirk Mueller <dmueller@suse.de>PR c++/30860* call.c (convert_conversion_warnings): New..(convert_like_real): .. factored out from here.(convert_conversion_warnings): Add warning aboutfalse being converted to NULL in argument passing.2007-03-14 Dirk Mueller <dmueller@suse.de>* semantics.c (c_finish_if_stmt): Call empty_if_body_warning.(finish_do_body): Warn about empty body in do/while statement.2007-03-14 Manuel Lopez-Ibanez <manu@gcc.gnu.org>* class.c (warn_hidden): Add OPT_Woverloaded_virtual to warning.2007-03-14 Manuel Lopez-Ibanez <manu@gcc.gnu.org>PR c/21438* typeck.c (build_binary_op): Call warn_for_div_zero instead ofwarning.2007-03-13 Alexandre Oliva <aoliva@redhat.com>* repo.c (init_repo): Initialize random_seed saved options.(finish_repo): Adjust.2007-03-13 Mark Mitchell <mark@codesourcery.com>PR bootstrap/30899* Make-lang.in (doc/g++.1): Use $< to specify the location fromwhich to copy.2007-03-12 Seongbae Park <seongbae.park@gmail.com>* decl.c (compute_array_index_type): New warning flag warn_vla.2007-03-12 Mark Mitchell <mark@codesourcery.com>PR c++/30108* call.c (convert_default_arg): Copy non-constant arguments.2007-03-11 Mark Mitchell <mark@codesourcery.com>PR c++/31038* parser.c (cp_parser_postfix_expression): Disallow compoundliterals in constant expressions.PR c++/30328* semantics.c (finish_typeof): Use unlowered_expr_type.2007-03-10 Mark Mitchell <mark@codesourcery.com>PR c++/30274* cp-tree.h (unlowered_expr_type): New function.* typeck.c (is_bitfield_expr_with_lowered_type): HandleCOMPOUND_EXPR, MODIFY_EXPR, and SAVE_EXPR.(unlowered_expr_type): New function.(build_unary_op): Disallow predecrements of bool bitfields.* call.c (build_conditional_expr): Use unlowered_expr_type.* pt.c (type_unification_real): Likewise.2007-03-09 Douglas Gregor <doug.gregor@gmail.com>PR c++/20599* typeck.c (check_return_expr): Check for bare parameter packs.(comptypes): Compare template parameter packs andtype pack expansions.* decl.c (grokdeclarator): Deal with the declaration of functionparameter packs.(grokparms): Verify that the (optional) function parameter pack isat the end of the parameter list.(xref_basetypes): Handle pack expansions in the base class.(cp_tree_node_structure): Handle ARGUMENT_PACK_SELECT.* cp-tree.def (TYPE_ARGUMENT_PACK): New.(NONTYPE_ARGUMENT_PACK): New.(TYPE_PACK_EXPANSION): New.(EXPR_PACK_EXPANSION): New.(ARGUMENT_PACK_SELECT): New.* cp-objcp-common.c (cp_tree_size): Compute size of(NON)TYPE_ARGUMENT_PACK, (TYPE|EXPR)_PACK_EXPANSION, andARGUMENT_PACK_SELECT.* error.c (dump_template_argument): Print template argument packs.(dump_template_argument_list): Ditto.(dump_template_parameter): Dump `...' for template type parameterpacks.(dump_type): Dump TYPE_PACK_EXPANSION nodes.(dump_parameters): Print function parameter packs.(dump_template_parms): Print template argument packs.(dump_expr): Dump EXPR_PACK_EXPANSION nodes.(maybe_warn_variadic_templates): New.* operators.def: Add ellipsis operator for EXPR_PACK_EXPANSION.* tree.c (cp_walk_subtrees): Walk BASELINK, TYPE_ARGUMENT_PACK,NONTYPE_ARGUMENT_PACK, TYPE_PACK_EXPANSION, EXPR_PACK_EXPANSION,CAST_EXPR.* mangle.c (write_type): Mangle TYPE_PACK_EXPANSION.(write_template_arg): Write argument packs as separate arguments.* cp-tree.h (struct template_parm_index_s): Add flag thatindicates that the template parameter is actually a parameterpack.(struct tree_argument_pack_select): New.(enum cp_tree_node_structure_enum): Add TS_CP_ARGUMENT_PACK_SELECT.(union lang_tree_node): Add argument_pack_select.(FUNCTION_PARAMETER_PACK_P): New.(PACK_EXPANSION_P): New.(PACK_EXPANSION_PATTERN): New.(SET_PACK_EXPANSION_PATTERN): New.(PACK_EXPANSION_PARAMETER_PACKS): New.(ARGUMENT_PACK_P): New.(ARGUMENT_PACK_ARGS): New.(SET_ARGUMENT_PACK_ARGS): New.(ARGUMENT_PACK_INCOMPLETE_P): New.(ARGUMENT_PACK_EXPLICIT_ARGS): New.(TEMPLATE_PARM_PARAMETER_PACK): New.(TEMPLATE_TYPE_PARAMETER_PACK): New.(ARGUMENT_PACK_SELECT_FROM_PACK): New.(ARGUMENT_PACK_SELECT_INDEX): New.(ARGUMENT_PACK_SELECT_ARG): New.(struct cp_declarator): Add parameter_pack_p flag.(maybe_warn_variadic_templates): Declare.(process_template_parm): Add bool parameter IS_PARAMETER_PACK, toindicate a template parameter pack.(uses_parameter_packs): Declare.(template_parameter_pack_p): Declare.(template_parms_variadic_p): Declare.(make_pack_expansion): Declare.(check_for_bare_parameter_packs): Declare.* cxx-pretty-print.c (pp_cxx_unary_expression): Printsizeof... expressions.(pp_cxx_expression): Print pack expansions and non-type argumentpacks.(pp_cxx_exception_specification): Print pack expansions.(pp_cxx_direct_declarator): Print ellipsis for parameter packs.(pp_cxx_ctor_initializer): Print pack expansions.(pp_cxx_type_id): Print pack expansions.(pp_cxx_template_argument_list): Print argument packs.(pp_cxx_template_parameter): Print ellipsis for template parameterpacks.* pt.c (comp_template_parms): Compare template parameter packs.(template_parameter_pack_p): New.(template_parms_variadic_p): New.(template_args_variadic_p): New.(make_ith_pack_parameter_name): New.(struct find_parameter_pack_data): New.(find_parameter_packs_r): New.(uses_parameter_packs): New.(make_pack_expansion): New.(check_for_bare_parameter_packs): New.(expand_template_argument_pack): New.(reduce_template_parm_level): Propagate parameter pack flag.(process_template_parm): Add is_parameter_pack parameter to statewhen the parameter is actually a parameter pack. Create templateparameter packs when is_parameter_pack is true.(current_template_args): The argument for a template parameterpack is an argument pack containing a single pack expansion.(process_partial_specialization): When checking that non-typeargument expressions do not involve template parameters, loop overthe arguments in argument packs separately.(push_template_decl_real): Check that the type of the declarationdoes not have any bare parameter packs. Check that primarytemplates have no more than one parameter pack, and that it comesat the end of the template parameter list.(convert_template_argument): Handle coercions for pack expansionexpressions by coercing the pattern then rebuilding the expansion.(coerce_template_parms): When coercing the arguments for avariadic template, pack "extra" arguments into an argument pack.(coerce_template_template_parms): Cannot coerce between parameterpacks and non-pack parameters.(template_args_equal): Compare PACK_EXPANSION_P expressions.(comp_template_args): Expand all template arguments packs beforecomparing template argument lists.(mangle_class_name_for_template): Make argument packs as separatetemplate arguments.(for_each_template_parm_r): No need to handle BASELINK.(instantiate_class_template): Handle pack expansions in the baseclass list.(tsubst_pack_expansion): New.(tsubst_template_args): Handle substitutions of argument packs andpack expansion into template argument lists.(tsubst_decl): Expand function parameter packs into separatefunction parameters.(tsubst_arg_types): Expand a type pack expansion into separateargument types.(tsubst_exception_specification): Handle pack expansions inexception specifiers.(tsubst): See through ARGUMENT_PACK_SELECT arguments whenreplacing a template parameter with its argument. If we encountera substitution for an argument pack, just return the parameteritself.(tsubst_copy): sizeof(X...) returns the number of elements inparameter pack X. See through ARGUMENT_PACK_SELECT when thePARM_DECL is a parameter pack.(tsubst_expr): Expression pack expansions and argument packscannot show up here; they will all be handled through functioncalls, sizeof, and template argument lists.(tsubst_copy_and_build): sizeof(X...) returns the number ofelements in parameter pack X. Handle pack expansions in TREE_LISTand CONSTRUCTOR nodes.(fn_type_unification): Handle "incomplete" explicit templateargument lists that specify some of the arguments for a templateparameter pack.(type_unification_real): Unify arguments against pack expansions.(template_parm_level_and_index): New, helper function.(unify_pack_expansion): New.(unify): Unify argument packs on an argument-by-argument basis,handling variadic argument packs as well.(more_specialized_fn): Handle unification of function parameterpacks. All things being equal, prefer non-variadic functiontemplates to variadic function templates.(more_specialized_class): Prefer the variadic class templatepartial specialization that binds fewer arguments to a parameterpack.(regenerate_decl_from_template): Expand function parameter packsinto separate parameters.(instantiate_decl): Ditto.(tsubst_initializer_list): Handle pack expansions for base-classinitializers.(dependent_type_p_r): Determine dependent types in argument packsand pack expansions.(value_dependent_expression_p): Determine value-dependence ofnon-type argument packs.(dependent_template_arg_p): Handle argument packs.* semantics.c (finish_cond): Check for bare parameter packs.(finish_expr_stmt): Ditto.(finish_for_expr): Ditto.(finish_switch_cond): Ditto.(finish_mem_initializers): Ditto.* name-lookup.c (arg_assoc_type): Handle pack expansions andargument packs.* decl2.c (cp_build_parm_decl): Mark function parameter packs.* parser.c (make_declarator): Declarator is not an expansion.(make_pointer_declarator): Transfer parameter pack flag to outerdeclarator.(make_reference_declarator): Ditto.(make_ptrmem_declarator): Ditto.(make_call_declarator): Ditto.(make_array_declarator): Ditto.(cp_parser_postfix_expression): Allow pack expansion expressionsin the argument list for a call expression.(cp_parser_parenthesized_expression_list): Add new parameterALLOW_EXPANSION_P. When true, parse the ellipsis to mean "expandinto separate arguments."(cp_parser_new_placement): Allow pack expansion expressions.(cp_parser_new_initializer): Ditto.(cp_parser_mem_initializer_list): Allow ellipsis to create abase-class initializer expansion.(cp_parser_mem_initializer): Ditto.(cp_parser_template_parameter_list): Keep track of whether thetemplate parameter is a template parameter pack.(cp_parser_template_parameter): Parse the ellipsis to indicate atemplate parameter pack.(cp_parser_type_parameter): Ditto.(cp_parser_template_argument_list): Parse the ellipsis to indicatea pack expansion.(cp_parser_direct_declarator): Parse the ellipsis to indicate thatthis declarator is a parameter pack.(cp_parser_parameter_declaration): The ellipsis does not end theparameter declaration, because it might be a parameter pack. Parsethe ellipsis to indicate a parameter pack.(cp_parser_initializer): Allow pack expansions.(cp_parser_initializer_list): Allow ellipsis to create aninitializer expansion.(cp_parser_base_clause): Allow ellipsis to create a base specifierexpansion.(cp_parser_type_id_list): Allow ellipsis to create an exceptionspecifier expansion.(cp_parser_attribute_list): Don't allow pack expansions.(cp_parser_functional_cast): Allow pack expansions.(cp_parser_sizeof_operand): Allow ellipsis following "sizeof" tocompute the length of a parameter pack.(cp_parser_next_token_ends_template_argument_p): An ellipsis canend a template argument.* tree.c (cp_walk_subtrees): Walk BASELINK, TYPE_ARGUMENT_PACK,NONTYPE_ARGUMENT_PACK, TYPE_PACK_EXPANSION, EXPR_PACK_EXPANSION,CAST_EXPR.2007-03-09 Dirk Mueller <dmueller@suse.de>* call.c (build_new_op): Call warn_logical_operator.2007-03-08 Volker Reichelt <v.reichelt@netcologne.de>PR c++/30852* semantics.c (finish_offsetof): Handle COMPOUND_EXPR.PR c++/30534* pt.c (any_template_arguments_need_structural_equality_p):Robustify.2007-03-08 Alexandre Oliva <aoliva@redhat.com>* decl.c (grokdeclarator): Disable warnings for anonymousbitfields.2007-03-05 Volker Reichelt <v.reichelt@netcologne.de>* typeck2.c (readonly_error): Always emit a hard error.Remove last argument.* cp-tree.h (readonly_error): Adjust prototype.* semantics.c (finish_asm_stmt): Adjust call to readonly_error.* typeck.c (build_unary_op): Likewise.(build_modify_expr): Likewise.2007-03-04 Simon Martin <simartin@users.sourceforge.net>PR c++/30895* tree.c (cp_tree_equal): Properly handle COMPLEX_CST trees.2007-03-03 Manuel Lopez-Ibanez <manu@gcc.gnu.org>PR c++/15787* parser.c (struct cp_parser): New IN_IF_STMT.(cp_parser_statement_seq_opt): Handle an unexpected 'else',returning if parsing the body of an 'if' statement or issuing anerror and continuing.(cp_parser_selection_statement): Set IN_IF_STMT bit when parsingbody of 'if'.(cp_parser_jump_statement): Mask new IN_IF_STMT bit.2007-03-02 Simon Martin <simartin@users.sourceforge.net>PR c++/28253* class.c (update_vtable_entry_for_fn): Properly handle invalid overridersfor thunks.2007-03-02 Geoffrey Keating <geoffk@apple.com>* g++spec.c (lang_specific_driver): Add -lstdc++ when compilingObjective-C++. Don't exit early if -shared-libgcc needs to beadded.2007-03-02 Manuel Lopez-Ibanez <manu@gcc.gnu.org>* typeck.c (common_base_type): Delete unused function.2007-03-01 Brooks Moses <brooks.moses@codesourcery.com>* Make-lang.in: Add dummy lang.install-pdf target.2007-03-01 Simon Baldwin <simonb@google.com>PR c++/23689* decl.c (check_tag_decl): Added new warning for typedef ignoredwhen it precedes an otherwise valid non-typedef declaration.2007-02-28 Sandra Loosemore <sandra@codesourcery.com>* typeck.c (build_function_call): Store converted argumentsin a stack-allocated array instead of building a list.(convert_arguments): Store arguments in the array passed in as anargument, and return the actual number of arguments.* call.c (build_call): Delete, and replace with...(build_call_n, build_call_a): New.(build_op_delete_call): Rewrite to avoid constructing argument lists.(build_over_call): Store converted arguments in a stack-allocatedarray instead of building a list.(build_cxx_call): Pass arguments in an array instead of as a list.(build_java_interface_fn_ref): Rewrite to avoid constructingargument lists.* tree.h: Update declarations to reflect above changes.* method.c (use_thunk): Use a stack-allocated array to holdthe arguments instead of a list.* rtti.c (throw_bad_cast): Update call to cxx_call.(throw_bad_typeid): Likewise.(build_dynamic_cast_1): Likewise.* init.c (build_builtin_delete_call): Use build_call_n.* decl.c (expand_static_init): Likewise.* except.c (cp_protect_cleanup_actions): Likewise.* cp-gimplify.c (genericize_eh_spec_block): Likewise.(gimplify_must_not_throw_expr): Likewise.(cxx_omp_apply_fn): Use build_call_a.2007-02-26 Mark Mitchell <mark@codesourcery.com>* semantics.c (expand_or_defer_fn): Call c_record_cdtor_fn.* decl2.c (cp_write_gloabl_declarations): Call c_build_cdtor_fns.2007-02-25 Mark Mitchell <mark@codesourcery.com>* cp-tree.h (static_ctors): Remove.* cp-tree.h (static_dtors): Likewise.* cp-objcp-common.c (decl_shadowed_for_var_lookup): Adjust forrefactoring of tree_map hierarchy.(decl_shadowed_for_var_insert): Likewise.* semantics.c (expand_body): Use c_expand_body.(expand_or_defer_fn): Don't update static_ctors or static_dtors.* decl2.c (static_ctors): Remove.(static_dtors): Likewise.(generate_ctor_or_dtor_function): Pass NULL_TREE toobjc_generate_static_init_call. Do not call static_[cd]tors.(generate_ctor_and_dtor_functions_for_priority): Do not check forstatic_[cd]tors.(cp_write_global_declarations): Likewise.2007-02-23 Richard Guenther <rguenther@suse.de>* class.c (note_name_declared_in_class): Make declarationchanges meaning a pedwarn.2007-02-22 Michael Matz <matz@suse.de>PR c++/29433* cp-tree.h (TFF_UNQUALIFIED_NAME): New formatting flag.* error.c (dump_aggr_type, dump_simple_decl, dump_decl,dump_function_decl): Guard emitting outer scopes by new flag.* cp-lang.c (cxx_dwarf_name): New function.(LANG_HOOKS_DWARF_NAME): Define to cxx_dwarf_name.* pt.c (classtype_mangled_name, mangle_class_name_for_template):Remove functions.(push_template_decl_real, lookup_template_class): Remove callsto above functions.2007-02-19 Mark Mitchell <mark@codesourcery.com>* call.c (build_new_method_call): Ensure that explicit calls ofdestructors have type "void".2007-02-19 Manuel Lopez-Ibanez <manu@gcc.gnu.org>* typeck.c (build_binary_op): Replace -Wstring-literal-comparisonand -Walways-true with -Waddress.* cvt.c (convert_to_void): Replace unconditional warning with-Waddress.2007-02-18 Kazu Hirata <kazu@codesourcery.com>* decl.c, tree.c: Fix comment typos.2007-02-15 Andrew Pinski <andrew_pinski@playstation.sony.com>PR C++/30158* semantics.c (finish_stmt_expr_expr): Set TREE_TYPE of thestatement expression if we had an error mark node.2007-02-15 Sandra Loosemore <sandra@codesourcery.com>Brooks Moses <brooks.moses@codesourcery.com>Lee Millward <lee.millward@codesourcery.com>* cp-tree.def (AGGR_INIT_EXPR): Adjust documentation.Change class to tcc_vl_exp.* call.c (build_call): Use build_call_list insteadof build3.(build_over_call): Likewise.(build_new_method_call): Use build_min_non_dep_call_listinstead of build_min_non_dep.* error.c (dump_call_expr_args): New function.(dump_aggr_init_expr_args): New function.(dump_expr) <AGGR_INIT_EXPR, CALL_EXPR, INDIRECT_REF>: Use them.Update to use new CALL_EXPR and AGGR_INIT_EXPR accessor macros.* cvt.c (convert_to_void): Use build_call_array insteadof build3; use new AGGR_INIT_EXPR accessor macros.* mangle.c (write_expression): Use TREE_OPERAND_LENGTHinstead of TREE_CODE_LENGTH.* dump.c (cp_dump_tree) <AGGR_INIT_EXPR>: Update to use newAGGR_INIT_EXPR accessor macros.* cp-gimplify.c (cp_gimplify_init_expr): UseAGGR_INIT_EXPR_SLOT to set the slot operand.* cp-tree.h (AGGR_INIT_EXPR_FN): New macro.(AGGR_INIT_EXPR_SLOT): New macro.(AGGR_INIT_EXPR_ARG): New macro.(aggr_init_expr_nargs): New macro.(AGGR_INIT_EXPR_ARGP): New macro.(aggr_init_expr_arg_iterator): New.(init_aggr_init_expr_arg_iterator): New.(next_aggr_init_expr_arg): New.(first_aggr_init_expr_arg): New.(more_aggr_init_expr_args_p): New.(FOR_EACH_AGGR_INIT_EXPR_ARG): New.(stabilize_aggr_init): New declaration.(build_min_non_dep_call_list): Likewise.* tree.c (process_aggr_init_operands): New function.(build_aggr_init_array) New function.(build_cplus_new): Update to use new CALL_EXPR andAGGR_INIT_EXPR accessor macros. Replace use of build3 withbuild_aggr_init_array.(build_min_non_dep_call_list) New function.(build_min_nt): Assert input code parameter is not a variablelength expression class.(build_min, build_min_non_dep): Likewise.(cp_tree_equal) <CALL_EXPR>: Iterate through the argumentsto check for equality instead of recursing. Handle tcc_vl_exptree code classes.(stabilize_call): Update to only handle CALL_EXPRs, notAGGR_INIT_EXPRs; use new CALL_EXPR accessor macros.(stabilize_aggr_init): New function.(stabilize_init): Use it.* cxx-pretty-print.c (pp_cxx_postfix_expression)<AGGR_INIT_EXPR, CALL_EXPR>: Update to use new CALL_EXPR andAGGR_INIT_EXPR accessor macros and argument iterators.* pt.c (tsubst_copy) <CALL_EXPR>: Replace build_nt withbuild_vl_exp. Iterate through the operands, recursivelyprocessing each one.(tsubst_copy_and_build) <CALL_EXPR>: Update to use newCALL_EXPR accessor macros.(value_dependent_expression_p) <default>: Handle tcc_vl_exptree code classes. Use TREE_OPERAND_LENGTH instead ofTREE_CODE_LENGTH.* semantics.c (finish_call_expr): Use build_nt_call_listinstead of build_nt.(simplify_aggr_init_expr): Update to use new AGGR_INIT_EXPRaccessor macros. Use build_call_array to construct theCALL_EXPR node instead of build3* decl2.c (build_offset_ref_call_from_tree): Usebuild_nt_call_list and build_min_non_dep_call_list insteadof build_min_nt and build_min_non_dep.* parser.c (cp_parser_postfix_expression) <CPP_OPEN_PAREN>:Use build_nt_call_list instead of build_min_nt.2007-02-15 Manuel Lopez-Ibanez <manu@gcc.gnu.org>PR c++/28943* call.c (build_conditional_expr): Improve error message.2007-02-13 Dirk Mueller <dmueller@suse.de>* friend.c (do_friend): Annotate warning about frienddeclarations in templates with OPT_Wnon_template_friend.Convert informal message from warning() to inform().2007-02-12 Simon Martin <simartin@users.sourceforge.net>Mark Mitchell <mark@codesourcery.com>PR c++/14622* pt.c (do_decl_instantiation): Detect type mismatches in explicitinstantiations for variables.2007-02-12 Manuel Lopez-Ibanez <manu@gcc.gnu.org>PR middle-end/7651* cp-gimplify.c (gimplify_expr_stmt): Don't check extra_warnings.Check warn_unused_value just once.2007-02-11 Mark Mitchell <mark@codesourcery.com>PR c++/26988* pt.c (determine_specialization): Use skip_artificial_parms_for.(fn_type_unificiation): Likewise.(get_bindings): Likewise.o2007-02-06 Mark Mitchell <mark@codesourcery.com>PR target/29487* decl.c (finish_function): Use DECL_REPLACEABLE.* tree.c (cp_cannot_inline_tree_fn): Likewise.2007-02-10 Gabriel Dos Reis <gdr@integrable-solutions.net>* parser.c (cp_parser_primary_expression): Reformat overly long lines.2007-02-10 Richard Henderson <rth@redhat.com>, Jakub Jelinek <jakub@redhat.com>* decl.c (grokvardecl): Don't error if !have_tls.(grokdeclarator): Likewise.* parser.c (cp_parser_omp_threadprivate): Likewise.2007-02-07 Jakub Jelinek <jakub@redhat.com>PR c++/30703* cp-gimplify.c (cp_genericize_r): Don't dereference invisirefparameters and result decls in omp clauses.(cxx_omp_privatize_by_reference): Pass also invisiref PARM_DECLsby reference.2007-02-05 Dirk Mueller <dmueller@suse.de>PR bootstrap/30510* parser.c (cp_parser_class_specifier): Always initialize bases.2007-02-05 Paolo Bonzini <bonzini@gnu.org>* cp-tree.h (OMP_ATOMIC_CODE): Delete.(OMP_ATOMIC_DEPENDENT_P): Rewrite.* pt.c (tsubst_expr): Adjust for new format of dependent OMP_ATOMICexpressions.* semantics.c (finish_omp_atomic): Store a whole expression nodein operand 1, and integer_zero_node in operand 0, for dependentOMP_ATOMIC. Rewrite to make flow easier to understand.2007-02-03 Gabriel Dos Reis <gdr@integrable-solutions.net>* decl.c (grokdeclarator): Use OPT_Wreturn_type instead of 0.2007-02-04 Kazu Hirata <kazu@codesourcery.com>* class.c, cp-tree.h, decl.c, decl2.c, g++spec.c, init.c,parser.c, pt.c, tree.c, typeck.c: Follow spelling conventions.2007-02-03 Douglas Gregor <doug.gregor@gmail.com>* parser.c (cp_lexer_get_preprocessor_token): Attach the C++0xkeyword warning to -Wc++0x-compat.2007-02-03 Gabriel Dos Reis <gdr@integrable-solutions.net>* decl.c (grokdeclarator): Update documentation.2007-02-02 Jakub Jelinek <jakub@redhat.com>PR c++/30536* decl.c (grokdeclarator): If __thread is used together witha storage class other than extern and static, clear thread_pafter issuing diagnostics and fall through to checking thestorage class.2007-01-30 Roger Sayle <roger@eyesopen.com>* error.c (dump_type_suffix): Avoid use of cp_build_binary_op whencalculating the size of an array (to avoid recursive errors).2007-01-30 Manuel Lopez-Ibanez <manu@gcc.gnu.org>PR c++/24745* typeck.c (build_binary_op): Fix logic for warning. Move warningto -Wpointer-arith.* call.c (convert_like_real): Don't warn when converting toboolean type.2007-01-29 Manuel Lopez-Ibanez <manu@gcc.gnu.org>* decl.c (pop_label): Replace warning with call towarn_for_unused_label.2007-01-28 Andrew Pinski <pinskia@gmail.com>PR C++/28988* semantics.c (finish_pseudo_destructor_expr): Check thedestrutor name by calling check_dtor_name.2007-01-24 Douglas Gregor <dgregor@osl.iu.edu>* lex.c (D_CPP0X): Rename.(D_CXX0X): To this.(reswords): D_CPP0X -> D_CXX0X.(init_reswords): Ditto.* parser.c (cp_lexer_get_preprocessor_token): Warn about the useof C++0x keywords as identifiers.2007-01-23 Simon Martin <simartin@users.sourceforge.net>PR c++/27492* decl.c (duplicate_decls): Don't reset DECL_INVALID_OVERRIDER_P forfunction decls.2007-01-23 Ian Lance Taylor <iant@google.com>* typeck.c (convert_for_assignment): Only warn about a = b = cwhen converting to bool.2007-01-23 Roger Sayle <roger@eyesopen.com>* call.c (null_ptr_cst_p): Replace use of TREE_CONSTANT_OVERFLOW withTREE_OVERFLOW.* typeck.c (ignore_overflows): Remove the remaining uses ofTREE_CONSTANT_OVERFLOW.2007-01-20 Jan Hubicka <jh@suse.cz>* decl2.c (start_objects, start_static_storage_duration_function):Do not make the functions uninlinable.2007-01-17 Ian Lance Taylor <iant@google.com>* class.c (add_method): Call VEC_reserve_exact rather than passinga negative size to VEC_reserve.2007-01-11 Simon Martin <simartin@users.sourceforge.net>PR c++/29573* tree.c (cp_tree_equal): Properly handle MODOP_EXPR trees.2007-01-10 Mark Mitchell <mark@codesourcery.com>PR c++/28999* decl.c (make_typename_type): If the qualified name is not atype, issue an error.* parser.c (cp_parser_elaborated_type_specifier): Fix commentformatting.2007-01-08 Geoffrey Keating <geoffk@apple.com>* rtti.c: Include target.h.(emit_support_tinfos): If ! targetm.cxx.library_rtti_comdat (),don't emit typeinfo for fundamental types as weak.* Make-lang.in (cp/rtti.o): Update and correct dependencies.2007-01-08 Richard Guenther <rguenther@suse.de>* cvt.c (cp_convert_to_pointer): Use build_int_cst_type.2007-01-08 Mark Shinwell <shinwell@codesourcery.com>* call.c (standard_conversion): Pass flag tovector_types_convertible_p to disallow emission of note.* typeck.c (convert_for_assignment): Pass flag tovector_types_convertible_p to allow emission of note.(ptr_reasonably_similar): Pass flag to vector_types_convertible_pto disallow emission of note.2007-01-07 Manuel Lopez-Ibanez <manu@gcc.gnu.org>PR c++/28986* typeck.c (build_binary_op): Call overflow_warning ifTREE_OVERFLOW_P is true for the result and not for any of theoperands.2007-01-06 Lee Millward <lee.millward@codesourcery.com>PR c++/19439* class.c (add_method): Don't wait until templateinstantiation time to complain about duplicate methods.2007-01-05 Manuel Lopez-Ibanez <manu@gcc.gnu.org>PR c/19978* semantics.c (finish_unary_op_expr): Warn only if resultoverflowed and operands did not.2007-01-05 Ian Lance Taylor <iant@google.com>* typeck.c (build_binary_op): Warn about comparing a non-weakaddress to NULL.2007-01-05 Douglas Gregor <doug.gregor@gmail.com>* pt.c (tsubst): Propagate the need for structural equality checkswhen reducing the level of template parameters.2007-01-03 Kazu Hirata <kazu@codesourcery.com>* pt.c: Fix a comment typo.2007-01-02 Ian Lance Taylor <iant@google.com>* semantics.c (maybe_convert_cond): Optionally warn when using anassignment as a condition.* typeck.c (convert_for_assignment): Optionally warn aboutassigning the result of an assignment to a bool.2007-01-02 Douglas Gregor <doug.gregor@gmail.com>* pt.c (canonical_template_parms): Correct typo in comment.2007-01-02 Douglas Gregor <doug.gregor@gmail.com>* typeck.c (structural_comptypes): Renamed from "comptypes".(comptypes): Use canonical type information to perform fast typecomparison. When VERIFY_CANONICAL_TYPES, verify that thecanonical type comparison returns the same results as we would seefrom the current, structural check. Support COMPARE_STRUCTURALwhen we need structural checks.* decl.c (typename_compare): Fix comment.(build_typename_type): TYPENAME_TYPE nodes require structuralequality checks, because they resolve different based on thecurrent class type.(make_unbound_class_template): UNBOUND_CLASS_TEMPLATE nodesrequire structural equality checks (for now).(build_ptrmemfunc_type): Build the canonical pointer to memberfunction type.(compute_array_index_type): Whenever we build a new index typeto represent the size of an array in a template, we need to markthis index type as requiring structural equality. This goes forarrays with value-dependent sizes with the current ABI, or allarrays with ABI-1.* tree.c (cplus_array_hash): New.(struct cplus_array_info): New.(cplus_array_compare): New.(cplus_array_htab): New.(build_cplus_array_type_1): Use a hash table to cache the arraytypes we build. Build the canonical array type for each arraytype.(cp_build_qualified_type_real): When building a cv-qualified arraytype, use the hash table of array types and build canonical arraytypes as necessary.(bind_template_template_parm): BOUND_TEMPLATE_TEMPLATE_PARM nodesuse structural equality (for now).* cp-tree.h (COMPARE_STRUCTURAL): New.* pt.c (canonical_template_parms): New.(canonical_type_parameter): New.(process_template_parm): Find the canonical type parameter.(lookup_template_class): When we have named the primary templatetype, set the canonical type for our template class to the primarytemplate type. If any of the template arguments need structuralequality checks, the template class needs structural equalitychecks.(tsubst): When reducing the level of a template templateparameter, we require structural equality tests for the resultingparameter because its template parameters have not had their typescanonicalized. When reducing a template type parameter, find thecanonical reduced type parameter.(any_template_arguments_need_structural_equality_p): New.Copyright (C) 2007 Free Software Foundation, Inc.Copying and distribution of this file, with or without modification,are permitted in any medium without royalty provided the copyrightnotice and this notice are preserved.
Go to most recent revision | Compare with Previous | Blame | View Log
