OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-stable/] [gcc-4.5.1/] [gcc/] [cp/] [ChangeLog-2008] - Rev 862

Go to most recent revision | Compare with Previous | Blame | View Log

2008-12-31  Jakub Jelinek  <jakub@redhat.com>

        PR c++/38647
        * parser.c (cp_parser_primary_expression) <case RID_FUNCTION_NAME>:
        Return error_mark_node if cp_parser_non_integral_constant_expression
        returns true.

        PR c++/38640
        * semantics.c (finish_decltype_type): Handle TEMPLATE_PARM_INDEX.

2008-12-29  Jakub Jelinek  <jakub@redhat.com>

        PR c++/38635
        * parser.c (cp_parser_condition): Use cp_parser_require
        instead of cp_lexer_consume_token to consume =.

        PR c++/38637
        * decl.c (start_enum): If enumtype is error_mark_node, exit early.

2008-12-28  Jakub Jelinek  <jakub@redhat.com>

        PR c++/38650
        * semantics.c (finish_omp_for): Don't add CLEANUP_POINT_EXPR
        around volatile iteration var in condition and/or increment
        expression.

2008-12-27  Jakub Jelinek  <jakub@redhat.com>

        PR c++/38639
        * pt.c (tsubst_omp_for_iterator): RECUR on whole init_expr instead of
        just its type.

2008-12-21  Jason Merrill  <jason@redhat.com>

        PR c++/38597
        * name-lookup.c (arg_assoc_type): Handle DECLTYPE_TYPE.

2008-12-20  Jakub Jelinek  <jakub@redhat.com>
            Manuel López-Ibáñez  <manu@gcc.gnu.org>

        PR c++/36921
        * c-common.c (warn_about_parentheses): Remove ARG_UNUSED from
        arg_left.  Don't warn about X<=Y<=Z if comparison's type isn't
        integral.

2008-12-19  Jakub Jelinek  <jakub@redhat.com>

        PR c++/38577
        * call.c (build_new_method_call): Handle call being COMPOUND_EXPR
        or NOP_EXPR.

2008-12-18  Jakub Jelinek  <jakub@redhat.com>

        PR c++/38427
        * init.c (perform_member_init): For value-initialized
        references call permerror instead of warning and don't emit any
        INIT_EXPR.

2008-12-18  Jason Merrill  <jason@redhat.com>

        PR c++/38485
        * parser.c (cp_parser_token_starts_cast_expression): An EOF
        can't start a cast-expression.

2008-12-17  Jason Merrill  <jason@redhat.com>

        * semantics.c (describable_type): New function.
        (finish_decltype_type): Use it for dependent exprs.
        * cp-tree.h: Declare it.
        * mangle.c (write_type) [DECLTYPE_TYPE]: Set skip_evaluation.
        (write_expression): If skip_evaluation, use type stubs.
        * tree.c (cp_tree_equal): Handle PARM_DECLs from different
        declarations of a function.
        * init.c (build_new): Do auto deduction if type is describable.
        * decl.c (cp_finish_decl): Likewise.
        * parser.c (cp_parser_omp_for_loop): Likewise.

2008-12-10  Jason Merrill  <jason@redhat.com>

        PR c++/35319
        * mangle.c (write_builtin_type): Add mangling for decimal floating 
        point and fixed point types.
        (write_type): Pass FIXED_POINT_TYPE along.

2008-12-09  Mark Mitchell  <mark@codesourcery.com>

        PR c++/37971
        * class.c (resolve_address_of_overloaded_function): Check
        accessibility of member functions unless FLAGS indicates
        otherwise.
        * call.c (standard_conversion): Adjust flags passed to
        instantiate_type.
        (convert_default_arg): Do not perform access checks.
        * cp-tree.h (tsubst_flags_t): Add tf_no_access_control.

2008-12-08  Steve Ellcey  <sje@cup.hp.com>

        * decl2.c (mark_used): Remove assemble_external call.

2008-12-08  Dodji Seketeli  <dodji@redhat.com>

        PR debug/38390
        * name-lookup.c (kept_level_p): Don't forget the case of levels
          having using directives.

2008-12-08  Richard Henderson  <rth@redhat.com>

        PR 38240
        * class.c (finish_struct_bits): Use SET_TYPE_MODE.
        * decl.c (record_unknown_type): Likewise.
        (start_enum, finish_enum): Likewise.

2008-12-05  Jakub Jelinek  <jakub@redhat.com>

        PR c++/35336
        * error.c (dump_expr): Handle BIT_FIELD_REF.

2008-12-05  Sebastian Pop  <sebastian.pop@amd.com>

        PR bootstrap/38262
        * Make-lang.in (cc1plus-dummy, cc1plus): Add BACKENDLIBS,
        remove GMPLIBS.

2008-12-04  Jason Merrill  <jason@redhat.com>

        PR c++/37906
        * decl.c (grok_special_member_properties): Set TYPE_HAS_COMPLEX_DFLT
        here.
        * class.c (check_bases_and_members): Rather than assuming any
        user-declared default constructor is complex here.

2008-12-04  Richard Guenther  <rguenther@suse.de>

        PR c++/38334
        * typeck.c (get_member_function_from_ptrfunc): Mark the vtbl
        pointer access with TREE_NO_WARNING.

2008-12-03  Jason Merrill  <jason@redhat.com>

        PR c++/38232
        * init.c (build_value_init): Do initial zero-initialization
        of a class with an implicitly-defined constructor using
        build_zero_init rather than in build_value_init.
        (build_value_init_1): Fold into build_value_init.

        PR c++/38256
        * parser.c (cp_parser_conversion_type_id): Diagnose
        'operator auto' here.
        * decl.c (grokdeclarator): Not here.

        PR c++/38380
        * decl.c (grokdeclarator): Only set DECL_NONCONVERTING_P
        on explicit constructors.
        * pt.c (tsubst_copy_and_build) [CONSTRUCTOR]: Propagate
        CONSTRUCTOR_IS_DIRECT_INIT.

2008-12-02  Jason Merrill  <jason@redhat.com>

        PR c++/35782, c++/37860
        * call.c (build_user_type_conversion_1): Remember
        list-initialization.
        (convert_like_real): Likewise.
        (build_over_call): Don't require the copy constructor
        for copy-list-initialization.
        * cp-tree.h (TARGET_EXPR_LIST_INIT_P): New macro.

        PR c++/37234
        * decl.c (cp_finish_decl): Handle =default and =delete for
        templates, too.

2008-12-01  Jakub Jelinek  <jakub@redhat.com>

        PR c++/38257
        * parser.c (cp_parser_omp_for_loop): Handle auto.
        * pt.c (tsubst_omp_for_iterator): Likewise.

2008-11-28  Jason Merrill  <jason@redhat.com>

        PR c++/38233
        * init.c (perform_member_init): Fix value-initialization.
        (build_value_init_1): Add assert to catch cases that will break
        in the gimplifier.
        (build_default_init): Remove.
        * cp-tree.h: Remove its prototype.
        * pt.c (tsubst_expr) [DECL_EXPR]: Use build_value_init for
        value-initialization.

        PR c++/38278
        * parser.c (cp_parser_class_name): Only call 
        maybe_note_name_used_in_class if we actually found a class name.

2008-11-25  Jason Merrill  <jason@redhat.com>

        PR c++/28743
        * decl2.c (check_classfn): Error rather than abort on parameter
        list mismatch.

2008-11-20  Jason Merrill  <jason@redhat.com>

        PR c++/28513
        * parser.c (cp_parser_class_name): Call maybe_note_name_used_in_class.

        PR c++/37540
        * call.c (build_over_call): Take the address of the function even
        in a template.
        (build_new_method_call): Remember the type of the called function
        in a template.

2008-11-19  Dodji Seketeli  <dodji@redhat.com>

        PR c++/37142
        * pt.c (coerce_template_template_parm): Use the more robust
        uses_template_parms instead of dependent_type_p.

2008-11-19  Dodji Seketeli  <dodji@redhat.com>

        PR c++/35405
        * pt.c (lookup_template_class): Check pointers before dereferencing
        them.
        * error.c (dump_template_decl): Likewise.

2008-11-19  Jason Merrill  <jason@redhat.com>

        PR c++/36410
        * decl2.c (grokfield): Pass ATTR_FLAG_TYPE_IN_PLACE for a typedef
        that names a class for linkage purposes.

        PR c++/37563
        * parser.c (cp_parser_pseudo_destructor_name): A pseudo-destructor
        name is not a declaration.

        PR c++/37256
        * pt.c (instantiate_decl): Don't require a definition of
        a template that is explicitly instantiated 'extern'.

2008-11-18  Jason Merrill  <jason@redhat.com>
            Jakub Jelinek  <jakub@redhat.com>
        
        PR c++/37962
        * parser.c (cp_parser_type_id): Complain about auto.
        * decl.c (grokdeclarator): Complain about parameters and
        conversion functions declared with auto.

        * call.c (standard_conversion): Use CLASS_TYPE_P instead of
        MAYBE_CLASS_TYPE_P.
        * cp-tree.h (TYPE_NON_AGGREGATE_CLASS): Likewise.

2008-11-17  Jakub Jelinek  <jakub@redhat.com>

        PR c++/36089
        * init.c (constant_value_1): Handle TREE_LIST init.

2008-11-15  Jakub Jelinek  <jakub@redhat.com>

        PR c++/37561
        * typeck.c (cp_build_unary_op): Don't call get_unwidened.  Use
        argtype instead of result_type.

2008-11-14  Jason Merrill  <jason@redhat.com>

        PR c++/38030
        * semantics.c (finish_call_expr): Don't repeat arg-dep lookup
        for a non-dependent call.

        PR c++/37740
        * call.c (build_aggr_conv): Increment i.

2008-11-13  Jason Merrill  <jason@redhat.com>

        PR c++/37932
        * typeck2.c (process_init_constructor_record): Update bitfield
        handling.
        (check_narrowing): Update bitfield handling, print source type.
        
2008-11-12  Jakub Jelinek  <jakub@redhat.com>

        PR c++/36478
        Revert:
        2007-05-07  Mike Stump  <mrs@apple.com>
        * parser.c (check_empty_body): Add.
        (cp_parser_iteration_statement): Add call to check_empty_body.

2008-11-12  Jason Merrill  <jason@redhat.com>

        PR c++/38007
        * typeck.c (cp_build_modify_expr): Update bitfield handling.

2008-11-12  Jakub Jelinek  <jakub@redhat.com>

        PR c++/34269
        * parser.c (cp_parser_simple_declaration): Don't commit
        to tentative parse if parse errors were seen.

        PR c++/35334
        * error.c (dump_expr): Handle COMPLEX_EXPR.

2008-11-10  Jakub Jelinek  <jakub@redhat.com>

        PR c++/38021
        * parser.c (cp_parser_enum_specifier): After parsing :,
        parse definitely.  Don't return early if type specifier
        is erroneous.

2008-11-06  David Edelsohn  <edelsohn@gnu.org>

        PR target/26397
        * g++spec.c (LIBSTDCXX_STATIC): New.
        (lang_spec_driver): Use LIBSTDCXX_STATIC when not
        shared_libgcc.
        
2008-11-05  Fabien Chene <fabien.chene@gmail.com>

        PR c++/32519
        * cp-tree.h: Fix DECL_NONSTATIC_MEMBER_P to handle member template
        functions.

2008-11-05  Richard Guenther  <rguenther@suse.de>

        PR middle-end/37742
        * decl.c (start_preparsed_function): Use the correct type for
        building the RESULT_DECL.

2008-10-31  Jakub Jelinek  <jakub@redhat.com>

        PR c++/37967
        * decl.c (grokdeclarator): Diagnose auto function decl without
        late return type and late return type function decl where type
        is not auto.

        PR c++/37965
        * decl.c (cp_finish_decl): Diagnose type_uses_auto type with
        no initializer.

2008-10-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

        PR 11492
        * class.c (check_bitfield_decl): Rename min_precision to
        tree_int_cst_min_precision.
        * decl.c (finish_enum): Likewise.

2008-10-29  Manuel López-Ibáñez  <manu@gcc.gnu.org>

        PR c++/26997
        * parser.c (cp_parser_token_starts_cast_expression): New.
        (cp_parser_cast_expression): Peek the next token to decide whether
        this could be a parenthesized constructor or is definitely an
        actual cast.

2008-10-24  Manuel López-Ibáñez  <manu@gcc.gnu.org>

        PR c/7543
        * typeck.c (build_x_binary_op): Update call to
        warn_about_parentheses.
        * parser.c (cp_parser_binary_expression): Add note about passing
        the correct code for unary expressions.

2008-10-24  Jakub Jelinek  <jakub@redhat.com>

        * Make-lang.in (check-c++-subtargets): New alias for
        check-g++-subtargets.
        (lang_checks_parallelized): Add check-g++.
        (check_g++_parallelize): New variable.

2008-10-21  Richard Guenther  <rguenther@suse.de>

        * semantics.c (simplify_aggr_init_exprs_r): Remove.
        (expand_or_defer_fn): Do not walk the function body to
        simplify aggr_init_exprs.

2008-10-20  Manuel López-Ibáñez  <manu@gcc.gnu.org>

        PR c++/37004
        * typeck.c (cp_common_type): New. The same as
        type_after_usual_arithmetic_conversions but without promotions.
        (type_after_usual_arithmetic_conversions): Do the promotions and
        call cp_common_type.
        (common_type): Make it behave like the C version of this
        function. Do not handle pointer types.
        (common_pointer_type): Move handling of pointer types from
        common_type to here.
        (cp_build_binary_op): Use common_pointer_type instead of
        common_type in call to pointer_diff.
        Use cp_common_type instead of common_type.
        * cp-tree.h (common_pointer_type): Declare.

2008-10-14  Jakub Jelinek  <jakub@redhat.com>

        PR c++/37819
        * cp-gimplify.c (cp_genericize_r): Only fold_convert COND_EXPR
        arguments if they don't already have COND_EXPR's type.

2008-10-14  Paolo Carlini  <paolo.carlini@oracle.com>

        PR c++/37650
        * pt.c (push_template_decl_real): Check that current_template_parms
        is not null.
        (process_partial_specialization): Assert current_template_parms not
        null.

2008-10-13  Doug Evans  <dje@google.com>

        * cp-tree.h (DECL_MAIN_P): Fix parentheses around expression.

2008-10-10  Jakub Jelinek  <jakub@redhat.com>

        PR c++/37146
        * cp-gimplify.c (cp_genericize_r): Fix up bitfield operands of
        COND_EXPR.

2008-10-09  Jakub Jelinek  <jakub@redhat.com>

        PR c++/37568
        * semantics.c (finalize_nrv_r): Clear DECL_INITIAL instead of
        setting it to error_mark_node.

2008-10-07  Steve Ellcey  <sje@cup.hp.com>

        * decl.c (start_cleanup_fn): Declare as inline.

2008-10-06  Jason Merrill  <jason@redhat.com>

        PR c++/37376, other mangling issues
        * mangle.c (write_type): Update TYPE_PACK_EXPANSION mangling.
        (write_member_name): Break out from...
        (write_expression): ...here.  Handle dependent COMPONENT_REF.
        (write_template_arg): Wrap an argument pack in 'I'/'E'.
        (write_builtin_type): Update char16/32_t mangling.
        (write_nested_name, write_prefix): Don't forget template args
        for typename types.
        * operators.def: Add ARROW_EXPR, update COMPONENT_REF and 
        EXPR_PACK_EXPANSION.

2008-10-06  Aldy Hernandez  <aldyh@redhat.com>

        * typeck.c (build_x_indirect_ref): Add location argument.
        (cp_build_binary_op): Pass location to warn_for_div_by_zero.
        (cp_build_unary_op): Add location argument.
        (cp_build_modify_expr): Same.
        * class.c (build_base_path): Pass location to build_indirect_ref.
        * semantics.c (handle_omp_for_class_iterator): Pass elocus to
        build_modify_expr.

2008-10-05  Dodji Seketeli  <dodji@redhat.com>

        PR c++/37410
        * cp-gimplify.c (cp_gimplify_expr): For each USING_STMT
        make sure an IMPORTED_DECL node is added to the BLOCK_VARS list
        of the innermost containing BLOCK.

2008-10-03  Paolo Carlini  <paolo.carlini@oracle.com>

        PR c++/37719
        * error.c (dump_function_decl): Save the exceptions in case of
        error about incompatible specifications in a specialization.

2008-10-01  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        * tree.c (lvalue_p_1): COMPOUND_LITERAL_EXPR is also an lvalue.

2008-09-30  H.J. Lu  <hongjiu.lu@intel.com>

        PR c++/37683
        * parser.c (cp_parser_selection_statement): Fix uninitialized
        variable.

2008-09-30  Simon Martin  <simartin@users.sourceforge.net>

        PR c++/37555
        PR c++/37556
        * decl.c (grokdeclarator): Set the type for typedefs to a
        nested-name-specifier to error_mark_node.

2008-09-30  Paolo Bonzini  <bonzini@gnu.org>

        * parser.c (cp_parser_selection_statement): Implement here the
        -Wempty-body warning for `if' and `else' statements.
        * semantics.c (finish_if_stmt): Do not call empty_body_warning.

2008-09-25  Paolo Carlini  <paolo.carlini@oracle.com>

        PR c++/37649
        * name-lookup.c (maybe_process_template_type_declaration): Check
        return value of push_template_decl_real for error_mark_node.

2008-09-24  Aldy Hernandez  <aldyh@redhat.com>

        * semantics.c (finish_fname): Pass location to fname_decl.

2008-09-23  Jakub Jelinek  <jakub@redhat.com>

        PR c++/37533
        * semantics.c (finish_omp_for): If processing_template_decl, just build
        MODIFY_EXPR for init instead of calling cp_build_modify_expr.

2008-09-23  Aldy Hernandez  <aldyh@redhat.com>

        * typeck.c (build_array_ref): Pass location to cp_build_binary_op.
        (get_member_function_from_ptrfunc): Same.
        (build_x_binary_op): Same.
        (build_binary_op): Same.
        (cp_build_binary_op): New location argument.
        (pointer_diff): Pass location to cp_build_binary_op.
        (cp_truthvalue_conversion): Pass location to build_binary_op.
        (convert_ptrmem): Pass location to cp_build_binary_op.
        (cp_build_modify_expr): Same.
        (build_ptrmemfunc): Same.
        * init.c (expand_cleanup_for_base): Pass location to
        c_common_truthvalue_conversion.
        (build_new_1): Pass location to cp_build_binary_op.
        (build_vec_delete_1): Pass location to *build_binary_op,
        c_common_truthvalue_conversion.
        (build_vec_init): Same.
        (build_delete): Same.
        * decl.c (compute_array_index_type): Same.
        * call.c (build_new_op): Same.
        * rtti.c (build_dynamic_cast_1): Same.
        * cp-tree.h: Add argument to cp_build_binary_op.
        * semantics.c (handle_omp_for_class_iterator): Pass location to
        *build_binary_op, c_common_truthvalue_conversion.
        * decl2.c (get_guard_cond): Same.

2008-09-17  Richard Guenther  <rguenther@suse.de>

        PR c++/22374
        * rtti.c (build_dynamic_cast_1): Convert the COND_EXPR
        result to the correct type.

2008-09-17  H.J. Lu  <hongjiu.lu@intel.com>

        PR c++/37450
        * name-lookup.c (pushdecl_maybe_friend): Don't return the old
        parameter for duplicate.

2008-09-17  Jason Merrill  <jason@redhat.com>

        PR c++/37588
        * name-lookup.c (lookup_type_scope): Look through sk_function_parms.

2008-09-17  Jakub Jelinek  <jakub@redhat.com>

        PR c++/37552
        * typeck.c (build_array_ref): Use protected_set_expr_location instead
        of SET_EXPR_LOCATION when ret might not be an expression.

2008-09-17  Jan Hubicka  <jh@suse.cz>

        PR c++/18071
        * cp/decl.c (start_method): Set DECL_NO_INLINE_WARNING_P.

2008-09-16  Jakub Jelinek  <jakub@redhat.com>

        PR c++/37531
        * semantics.c (finish_compound_literal): Return error_mark_node if
        type is errorneous.

        PR c++/37532
        * lex.c (init_reswords): Don't populate ridpointers for D_CONLY
        reserved words.

2008-09-15  Aldy Hernandez  <aldyh@redhat.com>

        * decl.c (duplicate_decls): Call error_at.
        (grokfndecl): New location argument.  Use location if available.
        (grokdeclarator): Pass declarator location to grokfndecl.
        * cp-tree.h (struct cp_declarator): Update comment for id_loc.
        * decl2.c (check_classfn): Use error_at.
        * parser.c (cp_parser_init_declarator): Set function_start_locus
        to brace location.
        (cp_parser_member_declaration): Set id_loc for function declarators.

2008-09-09  Jan Hubicka  <jh@suse.cz>

        PR middle-end/37500
        * pt.c (tsubst_decl): Do not copy DECL_STRUCT_FUNCTION pointer.

2008-09-09  Jakub Jelinek  <jakub@redhat.com>

        PR c++/37417
        * tree.c (array_type_nelts_top): Add size_one_node instead of
        integer_one_node.

2008-09-09  Jason Merrill  <jason@redhat.com>

        PR c++/37439
        * pt.c (tsubst_copy) [PARM_DECL]: Don't abort if the parm has
        DECL_CONTEXT set.

2008-09-09  Jakub Jelinek  <jakub@redhat.com>

        PR c++/37389
        * decl.c (build_enumerator): Handle previous value's DECL_INITIAL
        being error_operand_p.  Don't clear value if it was error_mark_node.

2008-09-09  Paolo Bonzini  <bonzini@gnu.org>

        * cp-objcp-common.h (LANG_HOOKS_EXPAND_DECL): Remove.
        * cp-tree.h: Don't mention DECL_ANON_UNION_ELEMS.
        * semantics.c (anon_aggr_type_p): Remove.

2008-09-06  Jason Merrill  <jason@redhat.com>

        PR c++/37302
        * parser.c (cp_parser_parameter_declaration_list): Process the
        PARM_DECLs as we go and push them.  Return a TREE_LIST.
        (cp_parser_parameter_declaration_clause): Return a TREE_LIST.
        (cp_parser_direct_declarator): Create a binding level and
        suppress deprecated warnings in the parameter list.
        (make_call_declarator): PARMS is now a tree.
        * cp-tree.h (struct cp_declarator): Function parms are now a tree.
        * decl.h (enum deprecated_states, deprecated_state): Move here.
        * decl.c: From here.
        (type_is_deprecated): New fn.
        (grokparms): PARMLIST is a tree now.  Warn about parms that
        use deprecated types.
        * mangle.c (write_expression): Handle PARM_DECL, CALL_EXPR and
        0-operand cast.
        * pt.c (tsubst) [DECLTYPE_TYPE]: Set skip_evaluation.
        (tsubst_copy) [PARM_DECL]: Handle a PARM_DECL used outside of a 
        function.
        * name-lookup.c (pushtag): Look through function parameter scopes.
        (pushdecl_maybe_friend): Don't set DECL_CONTEXT on a PARM_DECL 
        when we're parsing a function declarator.

2008-09-05  Douglas Gregor  <doug.gregor@gmail.com>

       PR c++/37342
       * tree.c (cp_build_qualified_type_real): Deal with sharing of
       TYPE_LANG_SPECIFIC in the canonical types of pointer-to-method
       types.
        
2008-09-04  Ian Lance Taylor  <iant@google.com>

        * parser.c (check_no_duplicate_clause): Change code parameter to
        enum omp_clause_code.

2008-09-03  Jakub Jelinek  <jakub@redhat.com>

        PR c++/37348
        * decl.c (cp_finish_decl): Only set
        DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P if decl is VAR_DECL.

        PR c++/37189
        * cp-tree.h (defer_mark_used_calls, deferred_mark_used_calls): New
        extern decls.
        * decl2.c (mark_used): If defer_mark_used_calls, push decl into
        deferred_mark_used_calls vector and exit early.
        * decl.c (defer_mark_used_calls, deferred_mark_used_calls): New
        variables.
        (finish_function): Set defer_mark_used_calls for the duration of the
        function.  Call mark_used on any queued decls.

2008-09-02  Jason Merrill  <jason@redhat.com>

        PR c++/37208
        * call.c (build_over_call): Make =delete work with SFINAE.
        * class.c (resolve_address_of_overloaded_function): Likewise.

        * cp-tree.h (struct lang_decl_flags): Rename threadprivate_p to
        threadprivate_or_deleted_p.
        (CP_DECL_THREADPRIVATE_P): Adjust.
        (DECL_DELETED_FN): Likewise.
        (SD_UNINITIALIZED, SD_INITIALIZED, SD_DEFAULTED): New macros.
        (SD_DELETED): New macro.
        * parser.c (cp_parser_init_declarator): Use them.
        * decl.c (start_decl): Use them.

        * decl2.c (mark_used): Give =deleted error even in sizeof.

        * typeck2.c (check_narrowing): Downgrade narrowing error to
        permerror.

2008-09-02  Aldy Hernandez  <aldyh@redhat.com>

        * typeck.c (build_array_ref): Use new location argument.
        * class.c (build_vtbl_ref_1): Pass location to build_array_ref.
        * call.c (build_new_op): Same.
        * decl2.c (grok_array_decl): Same.
        * cp-tree.h (build_array_ref): Add location argument to prototype.

2008-09-01  Aldy Hernandez  <aldyh@redhat.com>

        * typeck.c (build_x_indirect_ref): Add location argument.
        * class.c (build_base_path): Pass location to build_indirect_ref.
        * pt.c (tsubst_copy_and_build): Pass location to
        finish_label_address_expr.
        * parser.c (cp_parser_unary_expression): Same.

2008-08-31  Jason Merrill  <jason@redhat.com>

        Implement late-specified return type using 'auto'.
        * cp-tree.h (struct cp_declarator): Add late_return_type field to
        function declarator.
        * parser.c (cp_parser_late_return_type_opt): New fn.
        (cp_parser_direct_declarator): Use it.
        (make_call_declarator): Put it in the declarator.
        * decl.c (grokdeclarator): Splice in late-specified return type.
        * pt.c (splice_late_return_type): New fn.

2008-08-29  Michael Meissner  <gnu@the-meissners.org>

        * decl.c (builtin_function_1): Take a bool argument to decide
        whether to use pushdecl or pushdecl_top_level.
        (duplicate_decls): Copy function specific target and optimization
        options on duplicate declarations.
        (cxx_builtin_function): Update builtin_function_1 call.
        (cxx_builtin_function_ext_scope): New function, guarantee that the
        declaration is done at global scope.

        * cp-objcp-common.h (LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE): New
        macro, define builtin function hook for delayed machine specific
        builtins.

        * cp-tree.h (cxx_builtin_function_ext_scope): Add declaration.

2008-08-30  Jason Merrill  <jason@redhat.com>

        PR c++/37288
        * pt.c (dependent_type_p): Don't abort on auto outside of a template.

2008-08-29  Jason Merrill  <jason@redhat.com>

        Implement C++0x 'auto' semantics.
        * decl.c (start_decl_1): Don't complain about auto being incomplete.
        (cp_finish_decl): Deduce auto.
        * init.c (build_new): Handle 'new auto'.
        * typeck2.c (cxx_incomplete_type_diagnostic): Give a different
        message for auto than for normal template type parms.
        * pt.c (type_dependent_expression_p): Handle { }.
        (make_auto): New function.
        (listify_autos): New function.
        (do_auto_deduction): New function.
        (is_auto): New function.
        (type_uses_auto): New function.
        * cp-tree.h: Declare them.
        * parser.c (cp_parser_decl_specifier_seq): In C++0x mode, don't
        treat auto as a declspec.
        (cp_parser_simple_type_specifier): It's a type-specifier.

2008-08-29  Mark Mitchell  <mark@codesourcery.com>

        * mangle.c (write_type): Add target-specific manglings for
        non-fundamental types to the substitution table.
        gcc/testsuite/

2008-08-29  Jakub Jelinek  <jakub@redhat.com>

        PR fortran/29635
        PR fortran/23057
        * name-lookup.c (do_using_directive, cp_emit_debug_info_for_using):
        Adjust debug_hooks->imported_module_or_decl callers.

2008-08-29  Jan Hubicka  <jh@suse.cz>

        * cp-gimplify.c (cp_gimplify_expr): Add PRED_CONTINUE heuristic.

2008-08-28  Paolo Carlini  <paolo.carlini@oracle.com>

        PR c++/37260
        * decl.c (reshape_init_r): Check init for error_mark_node.

2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

        PR c++/17880
        * semantics.c (maybe_convert_cond): Call verify_sequence_points.
        (finish_return_stmt): Likewise.
        (finish_switch_condition): Likewise.

2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

        * cp-tree.h: Fix #error directive.

2008-08-26  Douglas Gregor  <doug.gregor@gmail.com>

        * typeck.c (type_after_usual_arithmetic_conversions): Don't do the
        usual arithmetic conversions on scoped enumeration types.
        (common_type): Ditto.
        (default_conversion): Don't perform integral promotions on scoped
        enumeration types. 
        (build_array_ref): Scoped enumeration types can't be used as
        subscripts.
        * decl.c (start_enum): If building a C++0x scoped enumeration,
        enter its scope. If provided with an underlying type, check that
        underlying type and set up the enumeration type accordingly.
        (finish_enum): Only compute an underlying type if the underlying
        type isn't already fixed, and only convert the enumerator values
        now if we've just computed the underlying type. Finish the scope
        of C++0x scoped enumerations.
        (build_enumerator): For enumerations with a fixed underlying type,
        check the enumerator values when the enumerator is defined.
        (lookup_enumerator): New.
        * call.c (standard_conversion): Don't allow assignment from
        integers to scoped enumeration types, even with -fpermissive.
        Don't convert from scoped enumerations to bool or any arithmetic
        types.
        (build_conditional_expr): Don't per the usual arithmetic
        conversions for scoped enumeration types.
        (convert_like_real): Check complain to see if we should
        produce warnings.
        * error.c (class_key_or_enum_as_string): Print scoped enums.
        * cp-tree.h (MAYBE_CLASS_TYPE_P): Check CLASS_TYPE_P, not
        TYPE_LANG_FLAG_5.
        (INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P): New.
        (SCOPED_ENUM_P): New.
        (UNSCOPED_ENUM_P): New.
        (SET_SCOPED_ENUM_P): New.
        (ENUM_UNDERLYING_TYPE): New.
        * pt.c (lookup_template_class): Update the instantiation of enum
        types to deal with C++0x scoped enumerations and underlying
        types.
        * name-lookup.c (begin_scope): Deal with scoped enumeration
        scopes.
        (lookup_qualified_name): Deal with lookup into enumeration types.
        * name-lookup.h (enum scope_kind): Add sk_scoped_enum.
        * parser.c (cp_parser_class_or_namespace_name): Rename to...
        (cp_parser_qualifying_entity): ... this. Also, in C++0x mode,
        parse a type-name that can be an enumeration type.
        (cp_parser_nested_name_specifier_opt): Update with C++0x grammar.
        (cp_parser_elaborated_type_specifier): Parse the
        optional `struct' or `class' following enum (in C++0x).
        (cp_parser_enum_specifier): Parse C++0x scoped enumerations and
        enum-base clauses.

2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

        * typeck.c: Update all calls to pedwarn.
        * decl.c: Likewise.
        * call.c: Likewise.
        * error.c: Likewise.
        * pt.c: Likewise.
        * name-lookup.c: Likewise.
        * parser.c: Likewise.

2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

        PR c++/35158
        * parser.c (cp_parser_omp_for_loop): Handle parenthesized
        initializers.

2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

        * parser.c: Update all calls to inform.
        * typeck.c: Likewise.
        * init.c: Likewise.
        * class.c: Likewise.
        * call.c: Likewise.
        * method.c: Likewise.
        * friend.c: Likewise.
        * typeck2.c: Likewise.
        * pt.c: Likewise.
        * name-lookup.c: Likewise.
        * lex.c: Likewise.

2008-08-19  Jakub Jelinek  <jakub@redhat.com>

        PR debug/37156
        * error.c (cp_print_error_function): Deal with recursive BLOCK trees.

2008-08-18  Tomas Bily  <tbily@suse.cz>

        * tree.c (cp_tree_equal): Use CONVERT_EXPR_CODE_P.

2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

        * typeck.c: Update all callers of permerror.
        * init.c: Likewise.
        * class.c: Likewise.
        * decl.c: Likewise.
        * call.c: Likewise.
        * except.c: Likewise.
        * cvt.c: Likewise.
        * typeck2.c: Likewise.
        * pt.c: Likewise.
        * semantics.c: Likewise.
        * name-lookup.c: Likewise.
        * lex.c: Likewise.
        * decl2.c: Likewise.
        * parser.c: Likewise.

2008-08-14  Paolo Carlini  <paolo.carlini@oracle.com>

        PR c++/34485
        * pt.c (check_template_shadow): Change to return a bool.
        * name-lookup.c (push_class_level_binding): Early return if
        check_template_shadow returns false.
        * cp-tree.h (check_template_shadow): Adjust declaration.

2008-08-14  Paolo Carlini  <paolo.carlini@oracle.com>

        PR c++/34600
        * decl.c (grokdeclarator): In case of extern and initializer, return
        error_mark_node after the error.

2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

        PR 30551
        * decl.c (grokfndecl): Call check_main_parameters_type only if
        -Wmain.

2008-08-12  Paolo Carlini  <paolo.carlini@oracle.com>

        PR c++/37087
        * parser.c (cp_parser_class_head): Early return error_mark_node in
        case of global qualification of class name or qualified name that
        does not name a class.

2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

        PR c++/12242
        * cvt.c (ocp_convert): Warn for out-of-range conversions to enum.

2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

        PR 36901
        * cp-tree.h (struct diagnostic_context, struct diagnostic_info):
        Delete forward declarations. Check that toplev.h has not been
        included before this file. Include toplev.h and diagnostic.h.
        * error.c (cp_cpp_error): Use DK_PEDWARN.
        (cxx_incomplete_type_diagnostic): Update declaration.
        (cxx_incomplete_type_error): Use DK_ERROR.
        * typeck2.c (cxx_incomplete_type_diagnostic): Take a diagnostic_t
        as argument. Use emit_diagnostic.
        (cxx_incomplete_type_error): Use DK_ERROR.
        (add_exception_specifier): Use diagnostic_t instead of custom
        codes.  
        * typeck.c (complete_type_or_else): Update call to
        cxx_incomplete_type_diagnostic.
        * init.c (build_delete): Likewise.  
        * call.c (diagnostic_fn_t): Remove unused typedef.
        (build_temp): Pass a pointer to diagnostic_t.
        (convert_like_real): Use emit_diagnostic.
        (joust): Check return value of warning before giving informative
        note.  
        * friend.c (do_friend): Check return value of warning
        before giving informative note.
        * parser.c (cp_parser_template_id): Likewise.

2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

        PR 7651
        * class.c (check_bases_and_members): Warn with -Wuninitialized
        instead of -Wextra.
        
2008-08-08  Volker Reichelt  <v.reichelt@netcologne.de>

        PR c++/35985
        * decl.c (xref_basetypes): Check base for MAYBE_CLASS_TYPE_P,
        and make sure it is not a union.

2008-08-07  H.J. Lu  <hongjiu.lu@intel.com>

        * semantics.c (finish_decltype_type): Initialize type.

2008-08-07  Douglas Gregor  <doug.gregor@gmail.com>

        * semantics.c (finish_decltype_type): Handle calls to function
        pointers and references to functions properly.

2008-08-06  Douglas Gregor  <doug.gregor@gmail.com>

        PR c++/36460
        * parser.c (cp_parser_template_argument): Don't assume that '>>'
        following a type-id is an error when in C++0x mode.

2008-08-06  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

        PR 26785
        * decl.c (grokdeclarator): Use explicit location with permerror_at.

2008-08-06  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

        PR 8715
        * typeck.c (cp_build_binary_op): Move code to c-common.c.

2008-08-05  Jason Merrill  <jason@redhat.com>

        PR c++/37016
        * decl.c (build_ptrmemfunc_type): Don't require structural
        comparison of PMF types.
        * tree.c (cp_build_qualified_type_real): Don't clear
        a valid TYPE_PTRMEMFUNC_TYPE.
        * typeck.c (cp_build_unary_op): Still do build_ptrmemfunc in
        templates.

2008-08-04  Jason Merrill  <jason@redhat.com>

        PR c++/36963
        * typeck2.c (check_narrowing): Allow narrowing conversion
        from an explicit floating-point constant.

        PR c++/37006
        * pt.c (tsubst_decl): Leave DECL_INITIAL set on deleted
        instantiations.

2008-08-04  Simon Baldwin  <simonb@google.com>

        PR c++/36999
        * parser.c (cp_parser_elaborated_type_specifier): Warn only when
        the declaration's id is followed by a semicolon.

2008-07-31  Jakub Jelinek  <jakub@redhat.com>

        PR c++/36405
        * rtti.c (get_tinfo_decl_dynamic, get_typeid): Call
        complete_type_or_else even for UNKNOWN_TYPE to get diagnostics.

2008-07-31  Jason Merrill  <jason@redhat.com>

        PR c++/36633
        * init.c (build_new_1): Don't convert pointer to the data type
        until we're actually going to treat it as that type.

        PR c++/11309
        * tree.c (build_aggr_init_expr): Split out...
        (build_cplus_new): ...from here.
        (stabilize_init): Don't mess with AGGR_INIT_EXPR either.
        * init.c (build_new_1): new T() means value-initialization,
        not default-initialization.
        (build_vec_init): Likewise.
        (build_value_init_1): Use build_aggr_init_expr.

2008-07-30  Dodji Seketeli  <dseketel@redhat.com>

        PR c++/36767
        * decl2.c (fix_temporary_vars_context_r): New function.
         (one_static_initialization_or_destruction): Make sure temporary
         variables part of the initialiser have their DECL_CONTEXT()
         properly set.

2008-07-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

        PR 34389
        * typeck.c (build_binary_op): Encapsulate code into
        shorten_binary_op.

2008-07-29  Jakub Jelinek  <jakub@redhat.com>

        PR c++/36852
        * tree.c (cplus_array_hash, build_cplus_array_type_1): Hash on
        TYPE_UID instead of pointers.

2008-07-29  Jan Hubicka  <jh@suse.cz>

        * optimize.c (maybe_clone_body): Remove DECL_INLINE.
        * decl.c (duplicate_decls): Likewise.
        (grokfndecl): Likewise.
        (start_method): Likewise.
        * method.c (make_thunk, make_alias_for, implicitly_declare_fn):
        Likewise.
        * pt.c (register_specialization, regenerate_decl_from_template):
        Likewise.
        * decl2.c (grokfield): Likewise.

2008-07-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

        PR 34985
        * decl.c (duplicate_decls): Merge USED flags.

2008-07-27  Jason Merrill  <jason@redhat.com>

        PR c++/36943
        * decl.c (reshape_init_r): Allow C++0x initializer lists.

2008-07-28  Richard Guenther  <rguenther@suse.de>

        Merge from gimple-tuples-branch.

        2008-07-22  Aldy Hernandez  <aldyh@redhat.com>

        * cp-gimplify.c (gimplify_if_stmt): Set location on newly created
        COND_EXPR.

        2008-07-18  Jakub Jelinek  <jakub@redhat.com>

        * decl.c (finish_function): Call gimple_body after cp_genericize.

        2008-07-18  Aldy Hernandez  <aldyh@redhat.com>

        * optimize.c: Include gimple.h instead of tree-gimple.h.
        * Make-lang.in (cp-gimplify.o): Depend on tree-iterator.h.
        * cp-gimplify.c: Rename tree-gimple.h to gimple.h.  Include
        tree-iterator.h.

        2008-07-16  Jakub Jelinek  <jakub@redhat.com>

        * optimize.c (maybe_clone_body): Clear DECL_SAVED_TREE for the clone.

        2008-07-14  Jakub Jelinek  <jakub@redhat.com>

        * cp-gimplify.c (cp_gimplify_expr): Update comment.

        2008-07-14  Aldy Hernandez  <aldyh@redhat.com>

        * cp-tree.h (union lang_tree_node): Rename GENERIC_NEXT to
        TREE_CHAIN.
        * cp-gimplify.c (cxx_omp_clause_apply_fn): Rename
        GIMPLE_MODIFY_STMT to MODIFY_EXPR.
        (cxx_omp_clause_copy_ctor): Same.
        (cxx_omp_clause_assign_op): Same.

        2008-05-28  Jakub Jelinek  <jakub@redhat.com>

        * cp-gimplify.c (cp_gimplify_omp_for): Add pre_p argument.  Tuplify.
        (cp_gimplify_expr): Adjust caller.

        2008-05-11 Doug Kwan  <dougkwan@google.com>

        * init.c (build_vec_delete): Add type conversion for argument
        0 of POINTER_PLUS_EXPR.

        2008-04-29  Doug Kwan  <dougkwan@google.com>

        * decl2 (File): Include "gimple.h"
        (cp_write_global_declarations): Use gimple_body instead of
        DECL_SAVED_TREE.
        * Make-lang.in (cp/decl2.o): Add $(GIMPLE_H)

        2008-04-10  Diego Novillo  <dnovillo@google.com>

        http://gcc.gnu.org/ml/gcc-patches/2008-04/msg00913.html

        * optimize.c (maybe_clone_body): Re-enable call to
        clone_body.
        * cp-gimplify.c (cp_gimplify_omp_for): Mark disabled
        code with call to gimple_unreachable.
        (cp_genericize): Fix handling of clone bodies.

        2008-04-04  Diego Novillo  <dnovillo@google.com>

        http://gcc.gnu.org/ml/gcc-patches/2008-04/msg00413.html

        * optimize.c (maybe_clone_body): Re-enable.

        2008-02-19  Diego Novillo  <dnovillo@google.com>
                    Oleg Ryjkov  <olegr@google.com>

        http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00804.html

        * cp-gimplify.c (gimplify_for_stmt): Change gimple_seq
        argument to gimple_seq *.  Update all users.
        (gimplify_must_not_throw_expr): Likewise.

        2008-02-04  Oleg Ryjkov <olegr@google.com>

        * except.c: Include gimple.h
        (cp_protect_cleanup_actions): Convert to tuples.
        * Make-lang.in (cp/except.o): Add dependency on gimple.h

        2007-11-10  Aldy Hernandez  <aldyh@redhat.com>

        * cp-gimplify.c (gimplify_cp_loop): Call tree_annotate_all_with_locus
        instead of annotating each block manually.

        2007-10-30  Aldy Hernandez  <aldyh@redhat.com>

        * cp-gimplify.c (gimplify_cp_loop): Tuplify.
        (gimplify_for_stmt): Same.
        (gimplify_switch_stmt): Same.
        (cp_gimplify_expr): [FOR_STMT]: Do not call gimplify_for_stmt.  Return
        GS_OK.
        [WHILE_STMT]: Return GS_OK.
        [SWITCH_STMT]: Same.
        [CONTINUE_STMT]: Same.
        [BREAK_STMT]: Same.
        (cp_genericize): Set gimple_body() of cloned functions when needed.

        2007-10-29  Aldy Hernandez  <aldy@quesejoda.com>

        * cp-gimplify.c: Move build_gimple_eh_filter_tree here.
        (cp_gimplify_init_expr): Convert to tuples.
        (gimplify_must_not_throw_expr): Make function return a
        gimplify_status and convert to tuples.

        2007-10-18  Aldy Hernandez  <aldy@quesejoda.com>

        * cp-gimplify.c (genericize_try_block): Enable and do not call
        gimplify_stmt.
        (genericize_catch_block): Same.
        (genericize_eh_spec_block): Same.
        Rename gimple_build_eh_filter_tree to build_gimple_eh_filter_tree.
        (cp_gimplify_expr): Enable TRY_BLOCK, HANDLER, and EH_SPEC_BLOCK.

        2007-10-16  Aldy Hernandez  <aldy@quesejoda.com>

        * optimize.c (maybe_clone_body): Comment out call to clone_body.
        * decl.c (finish_function): Use gimple_body instead of
        DECL_SAVED_TREE.
        * cp-tree.h (cp_gimplify_expr): Last 2 arguments are sequences.
        * cp-gimplify.c (genericize_try_block): Comment out.
        (genericize_catch_block): Same.
        (genericize_eh_spec_block): Same.
        (gimplify_cp_loop): Comment out calls to gimplify_stmt.
        (gimplify_for_stmt): Comment out.
        (gimplify_switch_stmt): Comment out call to gimplify_stmt.
        (cp_gimplify_omp_for): Same.
        (gimplify_must_not_throw_expr): Argument pre_p is a sequence.
        Comment out call to gimplify_stmt and append_to_statement_list.
        Rename gimple_build_eh_filter_tree to build_gimple_eh_filter_tree.
        (cp_gimplify_init_expr): Arguments pre_p and post_p are sequences.
        (cp_gimplify_expr): Same.
        Comment out calls to genericize_*_block.  Comment out call to
        gimplify_for_stmt.

2008-07-27  H.J. Lu  <hongjiu.lu@intel.com>

        PR c++/36944
        * class.c (type_has_user_provided_default_constructor): Handle
        default parameters.

2008-07-27  Paolo Carlini  <paolo.carlini@oracle.com>

        * decl.c (push_library_fn): Add a parameter for the exceptions that
        the function may throw.
        (push_void_library_fn, push_throw_library_fn, expand_static_init):
        Adjust.
        (build_library_fn): Change to static.
        * cp-tree.h: Adjust declarations.
        * except.c (declare_nothrow_library_fn): New.
        (do_get_exception_ptr, do_begin_catch, do_free_exception,
        do_allocate_exception):  Use the latter, adjust the declarations
        (ie, add empty exception-specification), consistently with the
        actual implementation in libsupc++.

2008-07-25  Jan Hubicka  <jh@suse.cz>

        * typeck.c (inline_conversion): Remove.
        (cp_build_function_call): Do not use inline_conversion.
        * decl.c (duplicate_decls): Do not insist on inline being declared
        early.
        (start_cleanup_fn): Do not assume that INLINE flags prevent function
        from being output.  We now remove static functions always.
        (finish_function): Do return warning on all static functions.
        * call.c (build_over_call): Do not use inline_conversion.
        * cp-tree.h (possibly_inlined_p): Declare.
        (inline_conversion): Remove.
        * pt.c (instantiate_decl): Use possibly_inlined_p predicate.
        * decl2.c (cp_write_global_declarations): Likewise.
        (mark_used): Likewise.
        (possibly_inlined_p): New functions.

2008-07-25  Jason Merrill  <jason@redhat.com>

        * class.c (type_has_user_provided_default_constructor): Handle
        templates.

2008-07-23  Jan Hubicka  <jh@suse.cz>

        * decl.c (duplicate_decls): Update comment and unit-at-a-time.
        (grogfndecl): Drop flag_inline_trees code.
        * pt.c (instantiate_decl): Drop flag_iline_trees code.
        * lex.c (cxx_init): Do not set unit-at-a-time.

2008-07-23  Jason Merrill  <jason@redhat.com>

        * mangle.c (write_unqualified_name): Avoid infinite recursion when
        trying to mangle a decl with no name.

        Implement defaulted/deleted functions as per N2346
        * cp-tree.h (struct lang_decl_flags): Add defaulted_p bitfield.
        (DECL_DELETED_FN): New macro.
        (DECL_DEFAULTED_FN): New macro.
        * class.c (user_provided_p): New fn.
        (defaultable_fn_p): New fn.
        (type_has_user_provided_constructor): New fn.
        (type_has_user_provided_default_constructor): New fn.
        (check_methods): A defaulted fn is still trivial.
        (check_bases_and_members): Likewise.
        * decl.c (grok_special_member_properties): Likewise.
        (duplicate_decls): Complain about redeclaring a function as deleted.
        (start_decl): initialized==2 means deleted.
        (cp_finish_decl): Handle deleted/defaulted semantics.
        * decl2.c (grokfield): Likewise.
        (mark_used): Check DECL_DEFAULTED_FN instead of DECL_ARTIFICIAL.
        Complain about using a deleted fn.
        * init.c (build_value_init_1): Use type_has_user_provided_constructor.
        (perform_member_init): Check for a user-provided default constructor
        even if TYPE_NEEDS_CONSTRUCTING.
        (build_new_1): Likewise.
        * call.c (build_over_call): Don't call mark_used twice.
        * method.c (implicitly_declare_fn): Set DECL_DEFAULTED_FN.
        * search.c (check_final_overrider): Check for deleted mismatch.
        * parser.c (cp_parser_init_declarator): Tell start_decl about =delete.
        (cp_parser_pure_specifier): Handle =default and =delete.

        * error.c (maybe_warn_cpp0x): Suggest -std=gnu++0x as well.

2008-07-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

        PR 35058
        * typeck.c: All calls to pedwarn changed.
        * decl.c: All calls to pedwarn changed.
        * call.c: All calls to pedwarn changed.
        * error.c: All calls to pedwarn changed.
        * typeck2.c: All calls to pedwarn changed.
        * pt.c: All calls to pedwarn changed.
        * name-lookup.c: All calls to pedwarn changed.
        * parser.c: All calls to pedwarn changed.

2008-07-21  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

        * call.c: Fix comment typos.
        * class.c: Likewise.
        * cp-tree.h: Likewise.
        * cxx-pretty-print.c: Likewise.
        * decl.c: Likewise.
        * init.c: Likewise.
        * name-lookup.c: Likewise.
        * operators.def: Likewise.
        * parser.c: Likewise.
        * pt.c: Likewise.
        * tree.c: Likewise.
        * typeck.c: Likewise.

2008-07-21  Paolo Carlini  <paolo.carlini@oracle.com>

        PR c++/36871
        PR c++/36872
        * semantics.c (classtype_has_nothrow_assign_or_copy_p): Only check
        copy constructors and copy assignment operators proper.

2008-07-21  Rafael Ávila de Espíndola  <espindola@google.com>

        * parser.c (cp_token): Remove in_system_header.
        (eof_token): Remove in_system_header.
        (cp_lexer_get_preprocessor_token): Don't set in_system_header.
        (cp_lexer_set_source_position_from_token): Don't set in_system_header.
        (cp_parser_member_declaration):  Use in_system_header_at.
        * pt.c (lookup_template_class): Don't set DECL_IN_SYSTEM_HEADER.
        (pop_tinst_level): Don't set in_system_header.
        (instantiate_class_template): Don't set in_system_header.
        (instantiate_decl): Don't set in_system_header.
        (instantiate_pending_templates): Don't set in_system_header.

2008-07-21  Paolo Carlini  <paolo.carlini@oracle.com>

        PR c++/36870
        * semantics.c (classtype_has_nothrow_assign_or_copy_p): Use
        TYPE_NOTHROW_P, not TREE_NOTHROW.
        (trait_expr_value): Likewise.

2008-07-18  Dodji Seketeli  <dseketel@redhat.com>

        PR c++/36407
        * call.c (convert_like_real): Don't take the error code path
          when a rvalue or base conversion has the bad_p field set.

2008-07-18  Kris Van Hees  <kris.van.hees@oracle.com>

        * rtti.c (emit_support_tinfos): Add char16_type_node and
        char32_type_node.
        * typeck2.c (digest_init): Support char16_t and char32_t.

2008-07-18  Kavih R. Ghazi  <ghazi@caip.rutgers.edu>

        * cvt.c (convert_to_void): Avoid C++ keywords.
        * decl.c (walk_namespaces_r, wrapup_globals_for_namespace):
        Likewise.
        * friend.c (is_friend): Likewise.
        * init.c (perform_member_init): Likewise.
        * mangle.c (write_template_prefix, write_template_template_param):
        Likewise.
        * name-lookup.c (do_namespace_alias, do_using_directive,
        parse_using_directive, ambiguous_decl, arg_assoc): Likewise.
        * parser.c (cp_parser_template_id, cp_parser_namespace_definition,
        cp_parser_objc_typename, cp_parser_objc_method_keyword_params):
        Likewise.
        * pt.c (is_specialization_of_friend, lookup_template_class,
        push_tinst_level, instantiate_class_template,
        tsubst_copy_and_build): Likewise.
        * tree.c (add_stmt_to_compound): Likewise.
        * typeck.c (finish_class_member_access_expr): Likewise.

2008-07-17  Julian Brown  <julian@codesourcery.com>
            Mark Mitchell  <mark@codesourcery.com>

        * decl2.c (determine_visibility): Allow target to override
        visibility of class data.

2008-07-17  Paolo Carlini  <paolo.carlini@oracle.com>

        PR c++/36855
        * semantics.c (trait_expr_value): Update __has_trivial_destructor
        semantics to the current WP (N2691).

2008-07-16  Dodji Seketeli  <dseketel@redhat.com>

        PR c++/13699
        * name-lookup.c (lookup_extern_c_fun_binding_in_all_ns): New function.
        (pushdecl_maybe_friend): Check if a redeclaration of extern C function
        complies with exception specification constraints.

2008-07-14  Jason Merrill  <jason@redhat.com>

        * lex.c (init_reswords): Always set D_OBJC.

2008-07-11  Tom Tromey  <tromey@redhat.com>
            Ian Lance Taylor  <iant@google.com>

        * lex.c (struct resword, reswords): Don't define.
        (D_EXT, D_ASM, D_OBJC, D_CXX0X): Don't define.
        (init_reswords): Clarify mask code.  Use c_common_reswords rather
        than reswords.

2008-07-11  Dodji Seketeli  <dseketel@redhat.com>

        PR c++/13101
        * decl.c (grokdeclarator): Warn about initializing variables
        of storage class 'extern' only after the type of the declarator
        has been properly computed.

2008-07-11  Dodji Seketeli  <dseketel@redhat.com>

        PR c++/31754
        * cp-tree.h (struct cp_decl_specifier_seq): Add a location field. It
        carries the location of the primary type.
        * parser.c (cp_parser_check_type_definition): Update documentation.
        (cp_parser_check_for_definition_in_return_type,
        cp_parser_check_for_invalid_template_id,
        cp_parser_set_decl_spec_type,
        cp_parser_check_for_definition_in_return_type,
        cp_parser_diagnose_invalid_type_name,
        cp_parser_new_expression, cp_parser_explicit_instantiation,
        cp_parser_type_specifier, cp_parser_simple_type_specifier,
        cp_parser_omp_for_loop, cp_parser_pragma): Use location in error
        messages.

2008-07-11 Dodji Seketeli <dseketel@redhat.com>

        PR c++/31754
        * pt.c, semantic.c:
        * semantic.c (qualified_name_lookup_error, finish_id_expression):
        Add a location_t parameter so that
        error message can have a more accurate location.
        * cp-tree.h: Updated prototype
        * pt.c (tsubst_qualified_id): Use location in error messages.
        * parser.c (cp_parser_postfix_expression,
        cp_parser_objc_statement, cp_parser_trait_expr,
        cp_parser_token_is_class_key,
        cp_parser_uncommitted_to_tentative_parse_p,
        cp_parser_check_for_invalid_template_id, cp_parser_is_string_literal,
        cp_parser_error, cp_parser_name_lookup_error,
        cp_parser_simulate_error, cp_parser_check_decl_spec,
        cp_parser_check_decl_spec, cp_parser_non_integral_constant_expression,
        cp_parser_diagnose_invalid_type_name,
        cp_parser_parse_and_diagnose_invalid_type_name,
        cp_parser_require_pragma_eol, cp_parser_make_typename_type,
        cp_parser_string_literal, cp_parser_primary_expression,
        cp_parser_primary_expression, cp_parser_unqualified_id,
        cp_parser_nested_name_specifier_opt, cp_parser_postfix_expression,
        cp_parser_postfix_dot_deref_expression, cp_parser_new_expression,
        cp_parser_direct_new_declarator, cp_parser_builtin_offsetof,
        cp_parser_label_for_labeled_statement, cp_parser_statement_seq_opt,
        cp_parser_jump_statement, cp_parser_block_declaration,
        cp_parser_simple_declaration, cp_parser_decl_specifier_seq,
        cp_parser_function_specifier_opt, cp_parser_decltype,
        cp_parser_mem_initializer_list, cp_parser_mem_initializer,
        cp_parser_mem_initializer_id, cp_parser_template_parameter,
        cp_parser_type_parameter, cp_parser_template_id,
        cp_parser_template_name, cp_parser_template_argument): Likewise.

2008-07-09  Paolo Carlini  <paolo.carlini@oracle.com>

        PR c++/36760
        * pt.c (tsubst_function_type): Remove warning for type qualifiers
        on function return type.

2008-07-09  Paolo Carlini  <paolo.carlini@oracle.com>

        PR c++/36760
        * pt.c (tsubst_function_type): Don't warn for type qualifiers
        on function return type in case of system header.

2008-07-09  Raksit Ashok <raksit@google.com>

        * parser.c (cp_parser_postfix_expression): New warning based on flag
        warn_disallowed_functions.

2008-07-08  Simon Martin  <simartin@users.sourceforge.net>

        PR c++/34963
        * decl.c (grokdeclarator): Reset storage_class and staticp for friend
        functions declared with a storage class qualifier.

2008-07-03  Richard Guenther  <rguenther@suse.de>

        PR c++/36128
        * typeck.c (cp_build_function_call): Move code to verify
        builtin function arguments ...
        * call.c (build_cxx_call): ... here.

2008-07-02  Jason Merrill  <jason@redhat.com>

        * Make-lang.in (cp/typeck2.o): Add $(REAL_H) dependency.

        Implement WG21 N2672, Initializer List proposed wording
        * cp-tree.h (enum cp_tree_index): Add CPTI_INIT_LIST_TYPE.
        (struct lang_type_class): Add has_list_ctor bitfield.
        (TYPE_HAS_LIST_CTOR): New macro.
        (BRACE_ENCLOSED_INITIALIZER_P): Expect init_list_type_node.
        (CONSTRUCTOR_IS_DIRECT_INIT): New macro.
        (LOOKUP_NO_NARROWING): New macro.
        (LOOKUP_NO_COPY_CTOR_CONVERSION): New macro.
        * parser.c (cp_parse_braced_list): Split out from...
        (cp_parser_initializer_clause): ...here.
        (cp_parser_postfix_expression): Build up CONSTRUCTOR for compound
        literal here.
        (cp_lexer_next_token_is_not_keyword): New fn.
        (cp_parser_parenthesized_expression_list): Handle { }.
        (cp_parser_new_expression, cp_parser_new_initializer): Likewise.
        (cp_parser_assignment_expression, cp_parser_condition): Likewise.
        (cp_parser_jump_statement, cp_parser_simple_declaration): Likewise.
        (cp_parser_mem_initializer, cp_parser_init_declarator): Likewise.
        (cp_parser_initializer, cp_parser_functional_cast): Likewise.
        (cp_parser_omp_for_loop, cp_parser_cache_group): Likewise.
        (cp_parser_save_member_function_body): Likewise.
        * call.c (conversion_kind): Add ck_list, ck_aggr.
        (struct conversion): Add check_narrowing bitfield, conversion list.
        (build_list_conv): New fn.
        (build_aggr_conv): New fn.
        (implicit_conversion): Call them.
        (standard_conversion): Set check_narrowing if appropriate.
        (add_function_candidate): Handle LOOKUP_NO_COPY_CTOR_CONVERSION.
        (build_user_type_conversion_1): When converting from an init list,
        we allow additional conversions except when calling a copy ctor.
        (convert_like_real): Calling an explicit ctor for an init list is
        ill-formed.  Handle ck_list and ck_addr.  Check narrowing.
        (build_new_method_call): If CONSTRUCTOR_IS_DIRECT_INIT is set and
        class doesn't have a list ctor, break the {} into a TREE_LIST.
        (compare_ics): ck_list is better than other UDCs.
        (set_up_extended_ref_temp): Split out from initialize_reference.
        (is_std_init_list): New fn.
        (is_list_ctor): New fn.
        * decl.c (cxx_init_decl_processing): Create init_list_type_node.
        (reshape_init_array_1): Pass it to build_constructor.
        (reshape_init_class): Ditto.
        (initialize_artificial_var): Pass the appropriate type.
        (build_aggr_init_full_exprs): Split out from...
        (check_initializer): ...here.  Handle new semantics.
        (build_init_list_var_init): New subroutine of check_initializer.
        (grokdeclarator): Converting constructors can have more than one parm.
        (grok_special_member_properties): Set TYPE_HAS_LIST_CTOR.
        * init.c (expand_default_init): Only do digest_init for aggregates.
        * rtti.c (tinfo_base_init): Pass init_list_type_node to
        build_constructor_from_list.
        (generic_initializer, ptr_initializer): Ditto.
        (ptm_initializer, class_initializer): Ditto.
        (get_pseudo_ti_init): Ditto.
        * error.c (dump_type): Handle init_list_type_node.
        (maybe_warn_cpp0x): New fn.
        (maybe_varn_variadic_templates): Call it.
        * cvt.c (ocp_convert): Handle conversion from { }.
        * tree.c (build_array_of_n_type): New fn.
        * typeck2.c (store_init_value): Use init_list_type_node.
        (digest_init): Likewise.
        (check_narrowing): New fn.
        * semantics.c: (finish_compound_literal): Take CONSTRUCTOR instead
        of vector of constructor elts.  Handle non-aggregate types.  Make
        constant literals static.
        * pt.c: (tsubst_copy_and_build): Adjust.
        (unify): Handle { }.
        * name-lookup.c (arg_assoc_type): Handle init_list_type_node.

2008-07-01  Daniel Jacobowitz  <dan@codesourcery.com>

        * typeck.c (comp_ptr_ttypes_real): Use vector_targets_convertible_p.
        (comp_ptr_ttypes_const): Likewise.

2008-07-01  Andrew Haley  <aph@redhat.com>

        * decl.c (finish_constructor_body): Don't set the return value of
        the constructor if the constructor is that of a Java type.

2008-06-30  Jakub Jelinek  <jakub@redhat.com>

        PR c++/36662
        * decl2.c (is_late_template_attribute): If the first attribute
        argument is IDENTIFIER_NODE, don't consider it when checking
        if arguments are value or type dependent.

2008-06-29  Paolo Carlini  <paolo.carlini@oracle.com>

        PR c++/36655
        * pt.c (do_type_instantiation): In c++0x mode do not warn for
        extern template.

2008-06-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

        * Make-lang.in (cp-warn): Delete $(CXX_COMPAT_WARN).

2008-06-28  Jakub Jelinek  <jakub@redhat.com>

        PR c++/36364
        * repo.c (repo_emit_p): Put const static data members initialized
        by const expr into *.rpo file, just return 2 if IDENTIFIER_REPO_CHOSEN
        for it is 0.

2008-06-27  Paolo Carlini  <paolo.carlini@oracle.com>

        PR c++/36655
        * pt.c (do_decl_instantiation): In c++0x mode do not warn for
        extern template.

2008-06-24  Jonathan Wakely  <jwakely.gcc@gmail.com>

        PR c++/23194
        * typeck.c (cp_build_function_call): Show example syntax in
        diagnostic.

2008-06-21  Jonathan Wakely  <jwakely.gcc@gmail.com>

        * typeck.c (composite_pointer_type_r, cxx_sizeof_expr,
        cxx_alignof_expr, check_template_keyword, cp_build_binary_op,
        pointer_diff, cp_build_unary_op, build_x_compound_expr_from_list,
        build_reinterpret_cast_1, cp_build_c_cast, check_return_expr): Change
        pedwarn to permerror.
        * init.c (perform_member_init, build_new_1, build_new): Likewise.
        * decl.c (warn_extern_redeclared_static, duplicate_decls,
        * identify_goto, check_previous_goto_1, check_goto, define_label,
        check_tag_decl, start_decl, check_class_member_definition_namespace,
        grokfndecl, grokdeclarator): Likewise.
        * except.c (check_handlers): Likewise.
        * typeck2.c (digest_init): Likewise.
        * pt.c (check_specialization_namespace,
        check_explicit_instantiation_namespace,
        maybe_process_partial_specialization, check_explicit_specialization,
        convert_template_argument, do_decl_instantiation,
        do_type_instantiation, instantiate_decl): Likewise.
        * semantics.c (finish_template_type_parm): Likewise.
        * name-lookup.c (pushdecl_maybe_friend,
        check_for_out_of_scope_variable): Likewise.
        * decl2.c (finish_static_data_member_decl, build_anon_union_vars,
        coerce_new_type): Likewise.
        * parser.c (cp_parser_nested_name_specifier_opt,
        cp_parser_mem_initializer, cp_parser_elaborated_type_specifier,
        cp_parser_class_head, cp_parser_check_class_key): Likewise.
        (cp_parser_parameter_declaration): Check flag_permissive instead of
        flag_pedantic_errors.
        * call.c (joust): Change pedwarn to warning.
        * friend.c (make_friend_class): Likewise.

2008-06-16  Jan Hubicka  <jh@suse.cz>

        * method.c: Include cgraph.h.
        (use_thunk): Use cgraph_add_new_function instead of calling backend
        directly.

2008-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

        * parser.c: Fix comment typo.

2008-06-14  Simon Martin  <simartin@users.sourceforge.net>

        PR c++/35320
        * decl2.c (grokbitfield): Receive the list of attributes, pass it to
        grokdeclarator and apply it to the created declaration.
        * cp-tree.h (grokbitfield): Update prototype.
        * parser.c (cp_parser_member_declaration): Don't apply the attributes
        since they are now applied in grokbitfield. Adjusted the call to
        grokbitfield.
        (cp_parser_objc_class_ivars): Likewise.

2008-06-14  Simon Martin  <simartin@users.sourceforge.net>

        PR c++/35317
        * class.c (type_requires_array_cookie): Do not consider delete[]
        operators with an ellipsis as second argument.

2008-06-09  Jakub Jelinek  <jakub@redhat.com>

        PR c++/36408
        * semantics.c (stmt_expr_value_expr): Don't crash on empty
        STATEMENT_LIST.

2008-06-08  Paolo Carlini  <paolo.carlini@oracle.com>

         PR c++/35242
         * pt.c (maybe_process_partial_specialization): Check the tree
        returned by push_template_decl for error_mark_node.
        * parser.c (cp_parser_class_head): Likewise, check the tree
        returned by the latter.

2008-06-07  Paolo Carlini  <paolo.carlini@oracle.com>

         PR c++/35327
         * decl.c (grokdeclarator): In case of wrong return type return
        immediately error_mark_node.

2008-06-06  Jakub Jelinek  <jakub@redhat.com>

        * cp-tree.h (cxx_omp_finish_clause, cxx_omp_create_clause_info,
        dependent_omp_for_p, begin_omp_task, finish_omp_task,
        finish_omp_taskwait): New prototypes.
        (cxx_omp_clause_default_ctor): Add outer argument.
        (finish_omp_for): Add new clauses argument.
        * cp-gimplify.c (cxx_omp_finish_clause): New function.
        (cxx_omp_predetermined_sharing): Moved from semantics.c, rewritten.
        (cxx_omp_clause_default_ctor): Add outer argument.
        (cp_genericize_r): Walk OMP_CLAUSE_LASTPRIVATE_STMT.
        * cp-objcp-common.h (LANG_HOOKS_OMP_FINISH_CLAUSE): Define.
        * parser.c (cp_parser_omp_for_loop): Parse collapsed for loops.
        Add par_clauses argument.  If decl is present in parallel's
        lastprivate clause, change that clause to shared and add
        a lastprivate clause for decl to OMP_FOR_CLAUSES.
        Fix wording of error messages.  Adjust finish_omp_for caller.
        Add clauses argument.  Parse loops with random access iterators.
        (cp_parser_omp_clause_collapse, cp_parser_omp_clause_untied): New
        functions.
        (cp_parser_omp_for, cp_parser_omp_parallel): Adjust
        cp_parser_omp_for_loop callers.
        (cp_parser_omp_for_cond, cp_parser_omp_for_incr): New helper
        functions.
        (cp_parser_omp_clause_name): Handle collapse and untied
        clauses.
        (cp_parser_omp_clause_schedule): Handle auto schedule.
        (cp_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_COLLAPSE
        and PRAGMA_OMP_CLAUSE_UNTIED.
        (OMP_FOR_CLAUSE_MASK): Add PRAGMA_OMP_CLAUSE_COLLAPSE.
        (OMP_TASK_CLAUSE_MASK): Define.
        (cp_parser_omp_task, cp_parser_omp_taskwait): New functions.
        (cp_parser_omp_construct): Handle PRAGMA_OMP_TASK.
        (cp_parser_pragma): Handle PRAGMA_OMP_TASK and
        PRAGMA_OMP_TASKWAIT.
        * pt.c (tsubst_omp_clauses): Handle OMP_CLAUSE_COLLAPSE and
        OMP_CLAUSE_UNTIED.  Handle OMP_CLAUSE_LASTPRIVATE_STMT.
        (tsubst_omp_for_iterator): New function.
        (dependent_omp_for_p): New function.
        (tsubst_expr) <case OMP_FOR>: Use it.  Handle collapsed OMP_FOR
        loops.  Adjust finish_omp_for caller.  Handle loops with random
        access iterators.  Adjust for OMP_FOR_{INIT,COND,INCR} changes.
        (tsubst_expr): Handle OMP_TASK.
        * semantics.c (cxx_omp_create_clause_info): New function.
        (finish_omp_clauses): Call it.  Handle OMP_CLAUSE_UNTIED and
        OMP_CLAUSE_COLLAPSE.
        (cxx_omp_predetermined_sharing): Removed.
        * semantics.c (finish_omp_for): Allow pointer iterators.  Use
        handle_omp_for_class_iterator and dependent_omp_for_p.  Handle
        collapsed for loops.  Adjust c_finish_omp_for caller.  Add new
        clauses argument.  Fix check for type dependent cond or incr.
        Set OMP_FOR_CLAUSES to clauses.  Use cp_convert instead of
        fold_convert to convert incr amount to difference_type.  Only
        fold if not in template.  If decl is mentioned in lastprivate
        clause, set OMP_CLAUSE_LASTPRIVATE_STMT.  Handle loops with random
        access iterators.  Adjust for OMP_FOR_{INIT,COND,INCR}
        changes.
        (finish_omp_threadprivate): Allow static class members of the
        current class.
        (handle_omp_for_class_iterator, begin_omp_task, finish_omp_task,
        finish_omp_taskwait): New functions.

        * parser.c (cp_parser_binary_expression): Add prec argument.
        (cp_parser_assignment_expression): Adjust caller.
        * cp-tree.h (outer_curly_brace_block): New prototype.
        * decl.c (outer_curly_brace_block): No longer static.

2008-06-02  Paolo Carlini  <paolo.carlini@oracle.com>

         PR c++/36404
         * pt.c (push_template_decl_real): Consistently return error_mark_node
        on error.

2008-06-02  Tomas Bily  <tbily@suse.cz>

         * typeck.c (is_bitfield_expr_with_lowered_type): Use CASE_CONVERT.
         (cp_build_unary_op): Likewise.
         (cp_build_indirect_ref): Use CONVERT_EXPR_P.
         (maybe_warn_about_returning_address_of_local): Likewise.

2008-05-29  Paolo Carlini  <paolo.carlini@oracle.com>

         PR c++/35243
         * pt.c (tsubst_initializer_list): Consistently check the tree
         returned by tsubst_pack_expansion for error_mark_node.

2008-05-27  Michael Matz  <matz@suse.de>

        PR c++/27975
        * call.c (build_new_op): Make warning conditional on
        OPT_Wenum_compare.

2008-05-27  Alexandre Oliva  <aoliva@redhat.com>

        PR c++/35909
        * call.c (convert_like_real): Convert bitfield to desired type
        before creating temporary.

2008-05-26  Daniel Franke  <franke.daniel@gmail.com>

        * Makefile.in: Adjusted dependencies on c-incpath.o.

2008-05-23  Jakub Jelinek  <jakub@redhat.com>

        PR c++/36237
        * cp-gimplify.c (cxx_omp_clause_apply_fn): Call
        fold_build_cleanup_point_expr on build_call_a results.

        PR c++/36308
        * semantics.c (omp_clause_info_fndecl): New function.
        (finish_omp_clauses): Use it.

2008-05-21  Jakub Jelinek  <jakub@redhat.com>

        PR c++/36023
        * cp-tree.h (check_array_initializer): New prototype.
        * decl.c (check_array_initializer): New function.
        (check_initializer): Call it.
        * semantics.c (finish_compound_literal): Call it for ARRAY_TYPEs.

2008-05-21  Tom Tromey  <tromey@redhat.com>

        * mangle.c (save_partially_mangled_name): Remove.
        (restore_partially_mangled_name): Likewise.
        (write_encoding): Update.
        (write_unqualified_name): Likewise.
        (start_mangling): Always use name_obstack.  Remove 'ident_p'
        argument.
        (get_identifier_nocopy): Remove.
        (finish_mangling_internal): Rename from finish_mangling.
        (finish_mangling): New function.
        (finish_mangling_get_identifier): Likewise.
        (partially_mangled_name, partially_mangled_name_len): Remove.
        (mangle_decl_string): Change return type.  Update.
        (mangle_decl, mangle_type_string, mangle_special_for_type,
        mangle_ctor_vtbl_for_type, mangle_thunk, mangle_guard_variable,
        mangle_ref_init_variable): Update.

2008-05-12  Paolo Carlini  <paolo.carlini@oracle.com>

         PR c++/35331
         * semantics.c (begin_class_definition): Extend checks on the first
        argument.

2008-05-12  Tomas Bily  <tbily@suse.cz>

         * typeck2.c (digest_init): Use CONVERT_EXPR_P.
         * call.c (build_over_call): Likewise.
         * error.c (dump_expr): Use CASE_CONVERT.
         * class.c (fixed_type_or_null): Likewise.

2008-05-11  Volker Reichelt  <v.reichelt@netcologne.de>

        * parser.c (cp_parser_omp_clause_reduction): Add missing "expected"
        in error message.
        (cp_parser_omp_clause_schedule): Remove superfluous "expected"
        in error message.

2008-05-07  Kenneth Zadeck  <zadeck@naturalbridge.com>

        * decl.c (duplicate_decls): Merge in DECL_PURE_P, TREE_READONLY,
        DECL_LOOPING_CONST_OR_PURE_P attributes.
        * rtti.c (build_dynamic_cast_1): Rename DECL_IS_PURE to
        DECL_PURE_P.

2008-05-02  Simon Baldwin  <simonb@google.com>

        PR bootstrap/36108
        * typeck.c (build_array_ref): Remove warn_array_subscript_range.

2008-05-01  Simon Baldwin  <simonb@google.com>

        * typeck.c (build_array_ref): Call warn_array_subscript_range.

2008-04-30  Jakub Jelinek  <jakub@redhat.com>

        PR c++/35986
        * pt.c (more_specialized_fn): Stop the loop even if there are no
        arguments before ellipsis.

2008-04-29  Jakub Jelinek  <jakub@redhat.com>

        PR c++/35650
        * parser.c (cp_parser_lookup_name): Look through single function
        OVERLOAD.

        PR c++/35987
        * typeck.c (cp_build_modify_expr) <case PREINCREMENT_EXPR>: Don't build
        COMPOUND_EXPR if the second argument would be error_mark_node.

2008-04-28  Jason Merrill  <jason@redhat.com>
            Liu Guanwei <liu_gw@163.com>

        PR c++/57
        * parser.c (cp_parser_parameter_declaration): Handle < ambiguity
        in default arguments.

2008-04-25  Jan Hubicka  <jh@suse.cz>

        * typeck.c (check_return_expr): Update.
        * decl.c (start_preparsed_function): Update.
        * method.c (use_thunk): Update.

2008-04-24  Jakub Jelinek  <jakub@redhat.com>

        PR c++/35758
        * cp-tree.h (cp_reconstruct_complex_type): New prototype.
        * cp-objcp-common.h (LANG_HOOKS_RECONSTRUCT_COMPLEX_TYPE): Define.
        * decl2.c (is_late_template_attribute): Only make vector_size
        late tmpl attribute if argument is type or value dependent.
        (cp_reconstruct_complex_type): New function.

2008-04-24  Richard Guenther  <rguenther@suse.de>

        * typeck.c (cp_build_function_call): Call
        check_builtin_function_arguments.

2008-04-23  Paolo Bonzini  <bonzini@gnu.org>

        * typeck.c (get_member_function_from_ptrfunc): Don't set TREE_INVARIANT.
        (build_ptrmemfunc1): Don't set TREE_INVARIANT.
        * init.c (build_zero_init): Don't set TREE_INVARIANT.
        * class.c (build_base_path): Don't set TREE_INVARIANT.
        (build_vtbl_ref_1): Don't set TREE_INVARIANT.
        (build_vtbl_initializer): Don't set TREE_INVARIANT.
        * decl.c (build_enumerator): Don't set TREE_INVARIANT.
        * rtti.c (tinfo_base_init): Don't set TREE_INVARIANT.
        (generic_initializer): Don't set TREE_INVARIANT.
        (ptr_initializer): Don't set TREE_INVARIANT.
        (ptm_initializer): Don't set TREE_INVARIANT.
        (class_initializer): Don't set TREE_INVARIANT.
        * typeck2.c (process_init_constructor): Don't set TREE_INVARIANT.
        * pt.c (push_inline_template_parms_recursive): Don't set TREE_INVARIANT.
        (build_template_parm_index): Don't set TREE_INVARIANT.
        (reduce_template_parm_level): Don't set TREE_INVARIANT.
        (process_template_parm): Don't set TREE_INVARIANT.

2008-04-22  Jason Merrill  <jason@redhat.com>

        PR c++/35316
        * semantics.c (finish_decltype_type): Check DECL_BIT_FIELD_TYPE
        to see if DECL_BIT_FIELD_TYPE should be used, not some other flag.
        * typeck.c (is_bitfield_expr_with_lowered_type): Likewise.

2008-04-22  Jakub Jelinek  <jakub@redhat.com>

        PR c++/35747
        * semantics.c (finish_stmt_expr): Call pop_stmt_list even if the stmt
        expression is errorneous.

2008-04-21  Jason Merrill  <jason@redhat.com>

        PR c++/35325
        * tree.c (cp_tree_equal): Handle FIXED_CST.

        PR c++/35678
        * pt.c (template_template_parm_bindings_ok_p): Set
        processing_template_decl while in this function.

2008-04-18  Kris Van Hees <kris.van.hees@oracle.com>

        * cvt.c (type_promotes_to): Support char16_t and char32_t.
        * decl.c (grokdeclarator): Disallow signed/unsigned/short/long on
        char16_t and char32_t.
        * lex.c (reswords): Add char16_t and char32_t (for c++0x).
        * mangle.c (write_builtin_type): Mangle char16_t/char32_t as vendor
        extended builtin type "u8char{16,32}_t".
        * parser.c (cp_lexer_next_token_is_decl_specifier_keyword): Support
        RID_CHAR{16,32}.
        (cp_lexer_print_token): Support CPP_STRING{16,32}.
        (cp_parser_is_string_literal): Idem.
        (cp_parser_string_literal): Idem.
        (cp_parser_primary_expression): Support CPP_CHAR{16,32} and
        CPP_STRING{16,32}.
        (cp_parser_simple_type_specifier): Support RID_CHAR{16,32}.
        * tree.c (char_type_p): Support char16_t and char32_t as char types.
        * typeck.c (string_conv_p): Support char16_t and char32_t.

2008-04-17  Jason Merrill  <jason@redhat.com>

        PR c++/35773
        * call.c (build_user_type_conversion_1): Represent second step of
        copy-init with an rvalue conversion.
        (convert_like_real) [ck_user]: Don't implicitly add it here.

2008-04-15  Jakub Jelinek  <jakub@redhat.com>

        PR c/35751
        * decl.c (layout_var_decl): If extern or static var has variable
        size, set TREE_TYPE (decl) to error_mark_node.

2008-04-16  Danny Smith  <dannysmith@users.sourceforge.net>

        PR target/35921
        * optimize.c (maybe_clone_body): Copy DECL_DLLIMPORT_P flag
        to clone.

2008-04-09  Jason Merrill  <jason@redhat.com>

        PR c++/35708
        * semantics.c (finish_compound_literal): Return a TARGET_EXPR,
        not a pushed variable.

2008-04-09  Volker Reichelt  <v.reichelt@netcologne.de>

        * call.c (build_op_delete_call): Fix quotation in warning message.
        * decl.c (grokdeclarator): Quote keyword in error message.
        * pt.c (check_for_bare_parameter_packs): Fix quotation in error
        message.

        * parser.c (cp_parser_check_type_definition): Print error string
        directly rather than using "%s".
        (cp_parser_postfix_expression): Fix quotation.
        (cp_parser_decltype): Likewise.
        (cp_parser_sizeof_operand): Fix quotation. Simplify.

        * parser.c (cp_parser_non_integral_constant_expression): Build error
        message with CONCAT rather than using "%s".
        (cp_parser_primary_expression): Fix quotation.
        (cp_parser_postfix_expression): Likewise.
        (cp_parser_postfix_dot_deref_expression): Likewise.
        (cp_parser_unary_expression): Likewise.
        (cp_parser_new_expression): Likewise.
        (cp_parser_delete_expression): Likewise.

        * parser.c (cp_parser_asm_specification_opt): Print CPP_CLOSE_PAREN
        as `)', not as `('.  Fix quotation.
        (cp_parser_consume_semicolon_at_end_of_statement): Fix quotation.
        (cp_parser_primary_expression): Likewise.
        (cp_parser_nested_name_specifier_opt): Likewise.
        (cp_parser_postfix_expression): Likewise.
        (cp_parser_postfix_open_square_expression): Likewise.
        (cp_parser_parenthesized_expression_list): Likewise.
        (cp_parser_pseudo_destructor_name): Likewise.
        (cp_parser_new_expression): Likewise.
        (cp_parser_direct_new_declarator): Likewise.
        (cp_parser_delete_expression): Likewise.
        (cp_parser_cast_expression): Likewise.
        (cp_parser_question_colon_clause): Likewise.
        (cp_parser_builtin_offsetof): Likewise.
        (cp_parser_trait_expr): Likewise.
        (cp_parser_label_for_labeled_statement): Likewise.
        (cp_parser_compound_statement): Likewise.
        (cp_parser_selection_statement): Likewise.
        (cp_parser_condition): Likewise.
        (cp_parser_iteration_statement): Likewise.
        (cp_parser_already_scoped_statement): Likewise.
        (cp_parser_simple_declaration): Likewise.
        (cp_parser_linkage_specification): Likewise.
        (cp_parser_static_assert): Likewise.
        (cp_parser_decltype): Likewise.
        (cp_parser_conversion_function_id): Likewise.
        (cp_parser_operator_function_id): Likewise.
        (cp_parser_operator): Likewise.
        (cp_parser_type_parameter): Likewise.
        (cp_parser_template_id): Likewise.
        (cp_parser_explicit_instantiation): Likewise.
        (cp_parser_explicit_specialization): Likewise.
        (cp_parser_enum_specifier): Likewise.
        (cp_parser_namespace_definition): Likewise.
        (cp_parser_namespace_alias_definition): Likewise.
        (cp_parser_using_declaration): Likewise.
        (cp_parser_using_directive): Likewise.
        (cp_parser_asm_definition): Likewise.
        (cp_parser_direct_declarator): Likewise.
        (cp_parser_ptr_operator): Likewise.
        (cp_parser_parameter_declaration_clause): Likewise.
        (cp_parser_initializer_clause): Likewise.
        (cp_parser_class_specifier): Likewise.
        (cp_parser_member_specification_opt): Likewise.
        (cp_parser_member_declaration): Likewise.
        (cp_parser_pure_specifier): Likewise.
        (cp_parser_constant_initializer): Likewise.
        (cp_parser_base_clause): Likewise.
        (cp_parser_exception_specification_opt): Likewise.
        (cp_parser_try_block): Likewise.
        (cp_parser_function_try_block): Likewise.
        (cp_parser_handler): Likewise.
        (cp_parser_throw_expression): Likewise.
        (cp_parser_asm_operand_list): Likewise.
        (cp_parser_attributes_opt): Likewise.
        (cp_parser_label_declaration): Likewise.
        (cp_parser_constructor_declarator_p): Likewise.
        (cp_parser_template_declaration_after_export): Likewise.
        (cp_parser_single_declaration): Likewise.
        (cp_parser_objc_message_expression): Likewise.
        (cp_parser_objc_message_args): Likewise.
        (cp_parser_objc_encode_expression): Likewise.
        (cp_parser_objc_defs_expression): Likewise.
        (cp_parser_objc_protocol_expression): Likewise.
        (cp_parser_objc_selector_expression): Likewise.
        (cp_parser_objc_protocol_refs_opt): Likewise.
        (cp_parser_objc_typename): Likewise.
        (cp_parser_objc_method_keyword_params): Likewise.
        (cp_parser_objc_superclass_or_category): Likewise.
        (cp_parser_objc_try_catch_finally_statement): Likewise.
        (cp_parser_objc_synchronized_statement): Likewise.
        (cp_parser_objc_throw_statement): Likewise.
        (cp_parser_omp_var_list_no_open): Likewise.
        (cp_parser_omp_clause_default): Likewise.
        (cp_parser_omp_clause_if): Likewise.
        (cp_parser_omp_clause_num_threads): Likewise.
        (cp_parser_omp_clause_reduction): Likewise.
        (cp_parser_omp_clause_schedule): Likewise.
        (cp_parser_omp_critical): Likewise.
        (cp_parser_omp_for_loop): Likewise.
        (cp_parser_omp_sections_scope): Likewise.

        * parser.c (cp_parser_template_parameter_list): Simplify.

2008-04-07  James E. Wilson  <wilson@tuliptree.org>

        * pt.c (tsubst_copy, case SIZEOF_EXPR): Initialize len.

2008-04-07  Jason Merrill  <jason@redhat.com>

        PR c++/35734
        * class.c (type_has_user_nondefault_constructor): A template
        counts as a nondefault constructor.

2008-04-04  Paolo Bonzini  <bonzini@gnu.org>

        * decl.c (cxx_push_function_context): Delete.
        (cxx_pop_function_context): Delete.
        (start_preparsed_function): Merge cxx_push_function_context (!f->decl
        code only).
        * cp-objcp-common.h (LANG_HOOKS_FUNCTION_INIT,
        LANG_HOOKS_FUNCTION_FINAL): Delete.
        (LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P): Rename to
        LANG_HOOKS_MISSING_NORETURN_OK_P.
        * cp-tree.h (cxx_push_function_context, cxx_pop_function_context):
        Delete prototype.
        * semantics.c (current_stmt_tree): Fix comment.

2008-04-03  Jakub Jelinek  <jakub@redhat.com>

        PR c++/35741
        * semantics.c (finish_offsetof): Undo effect of convert_from_reference
        before calling fold_offsetof.

2008-04-03  Tom Tromey  <tromey@redhat.com>

        * Make-lang.in (c++_OBJS): New variable.

2008-04-03  Paolo Bonzini  <bonzini@gnu.org>

        * optimize.c (clone_body): New, from tree-inline.c.

2008-04-03  Paolo Bonzini  <bonzini@gnu.org>

         * method.c (synthesize_method): Use {push,pop}_function_context.
         * name-lookup.c (push_to_top_level): Likewise.
         * parser.c (cp_parser_late_parsing_for_member): Likewise.

2008-03-30  Volker Reichelt  <v.reichelt@netcologne.de>

        PR c++/35578
        * parser.c (cp_parser_decl_specifier_seq): Add location to error
        message.

2008-03-27  Tom Tromey  <tromey@redhat.com>

        * Make-lang.in: Revert automatic dependency patch.

2008-03-27  Douglas Gregor  <doug.gregor@gmail.com>

        PR obj-c++/35704
        * typeck.c (build_x_compound_expr): Use cp_build_compound_expr.
        (build_compound_expr): New, for compatibility with C
        build_compound_expr.
        (cp_build_compound_expr): Renamed from build_compound_expr.
        (build_c_cast): New, for compatibility with C build_c_cast.
        (cp_build_c_cast): Renamed from build_c_cast.
        * init.c (build_vec_delete_1): Fix calls to build_compound_expr.
        * decl.c (cxx_maybe_build_cleanup): Ditto.
        * cp-tree.h (build_compound_expr): Add C-compatibile prototype.
        (cp_build_compound_expr): Renamed from build_compound_expr.
        (build_c_cast): Add C-compatible prototype.
        (cp_build_c_cast): Renamed from build_c_cast.
        * typeck2.c (build_functional_cast): Use cp_build_c_cast.
        * parser.c (cp_parser_cast_expression): Fix call to build_c_cast.

2008-03-27  Douglas Gregor  <doug.gregor@gmail.com>

        * pt.c (tsubst_copy) <case SIZEOF_EXPR>: Cope with
        tsubst_pack_expansion returning a pack expansion, or a TREE_VEC
        ending in a pack expansion, both of which can occur when
        substituting into a nested template.
        (tsubst_copy_and_build) <case SIZEOF_EXPR>: When we're
        instantiating the sizeof...(X) form, make tsubst_copy do the work.
        * parser.c (cp_parser_template_parameter): Deal with unnamed
        non-type template parameter packs identified by pack expansions in
        the parameter type.

2008-03-26  Jakub Jelinek  <jakub@redhat.com>

        PR c++/35546
        * pt.c (apply_late_template_attributes): Don't call tsubst on
        first attribute argument if it is IDENTIFIER_NODE.

        PR c++/35332
        * error.c (dump_expr): Pass {,UN}ORDERED_EXPR, UN{LT,LE,GT,GE,EQ}_EXPR
        and LTGT_EXPR to pp_expression.

2008-03-26  Douglas Gregor  <doug.gregor@gmail.com>

        * pt.c (coerce_template_template_parm): Moved the body of the loop
        of coerce_template_template_parms here, to make iteration over a
        template argument pack simpler.
        Also, allow matching of a template parameter pack in the template
        template parameter to a template parameter in the template
        template argument.
        (coerce_template_template_parms): Deal with variadic template
        template parameters. Use coerce_template_template_parm.
        (unify): Make sure we coerce the template template argument's
        template arguments to the template template parameter's template
        parameters, not the other way around.

2008-03-25  Tom Tromey  <tromey@redhat.com>

        * Make-lang.in: Remove .o targets.
        (cp/g++spec.o): Moved to cp/.  Reduce to variable setting.
        (GXX_OBJS): Update.
        (c++_OBJS): New variable.
        (CXX_TREE_H, CXX_PRETTY_PRINT_H): Remove.

2008-03-25  Douglas Gregor  <doug.gregor@gmail.com>

        * typeck.c (composite_pointer_type_r): Add SFINAE support.
        (composite_pointer_type): Ditto.
        (common_type): Fix call to composite_pointer_type.
        (cxx_sizeof_nowarn): New; used to be a macro.
        (cxx_sizeof_expr): Add SFINAE support.
        (cxx_alignof_expr): Ditto.
        (decay_conversion): Fix calls for SFINAE support.
        (rationalize_conditional_expr): Add SFINAE support.
        (build_class_member_access_expr): Ditto.
        (finish_class_member_access_expr): Ditto.
        (build_x_indirect_ref): Ditto.
        (build_indirect_ref): Original version renamed to
        cp_build_indirect_ref; new version provides a bridge from
        c-common.
        (cp_build_indirect_ref): Was build_indirect_ref; added SFINAE
        support.
        (get_member_function_from_ptrfunc): Fix calls for SFINAE support.
        (build_function_call): Original version renamed to
        cp_build_function_call; new version provides a bridge from
        c-common.
        (cp_build_function_call): Was build_function_call; added SFINAE
        support.
        (convert_arguments): Add SFINAE support.
        (build_x_binary_op): Ditto.
        (build_binary_op): Original version renamed to cp_build_binary_op;
        new version provides a bridge from c-common.
        (cp_build_binary_op): Was build_binary_op; added SFINAE support.
        (pointer_diff): Fix calls for SFINAE.
        (build_x_unary_op): Add SFINAE support.
        (condition_conversion): Fix calls for SFINAE.
        (build_unary_op): Original version renamed to cp_build_unary_op;
        new version provides a bridge from c-common.
        (cp_build_unary_op): Was build_unary_op; added SFINAE support.
        (unary_complex_lvalue): Fix calls for SFINAE.
        (build_x_conditional_expr): Add SFINAE support.
        (build_x_compound_expr_from_list): Fix calls for SFINAE.
        (build_x_compound_expr): Add SFINAE support.
        (convert_ptrmem): Fix calls for SFINAE.
        (build_static_cast_1): Add SFINAE support.
        (build_static_cast): Ditto.
        (build_reinterpret_cast_1): Ditto.
        (build_reinterpret_cast): Ditto.
        (build_const_cast_1): Ditto.
        (build_const_cast): Ditto.
        (build_c_cast): Ditto.
        (build_modify_expr): Original version renamed to
        cp_build_modify_expr; new version provides a bridge from c-common.
        (cp_build_modify_expr): Was build_modify_expr; added SFINAE
        support.
        (build_x_modify_expr): Add SFINAE support.
        (build_ptrmemfunc): Fix calls for SFINAE.
        (convert_for_assignment): Add SFINAE support.
        (convert_for_initialization): Ditto.
        (check_return_expr): Fix calls for SFINAE.
        (lvalue_or_else): Add SFINAE support.
        * init.c (perform_member_init): Fix calls for SFINAE.
        (emit_mem_initializers): Ditto.
        (expand_virtual_init): Ditto.
        (expand_cleanup_for_base): Ditto.
        (build_aggr_init): Add SFINAE support.
        (expand_default_init): Ditto.
        (expand_aggr_init_1): Fix calls for SFINAE.
        (build_offset_ref): Ditto.
        (build_new_1): Add SFINAE support.
        (build_new): Ditto.
        (build_vec_delete_1): Fix calls for SFINAE.
        (get_temp_regvar): Ditto.
        (build_vec_init): Add SFINAE support.
        (build_dtor_call): Fix calls for SFINAE.
        (build_delete): Ditto.
        (push_base_cleanups): Ditto.
        (build_vec_delete_1): Ditto.
        * class.c (build_base_path): Fix calls for SFINAE.
        (build_simple_base_path): Ditto.
        (convert_to_base_statically): Ditto.
        (build_vfn_ref): Ditto.
        (resolve_address_of_overloaded_function): Ditto.
        * decl.c (check_initializer): Fix calls for SFINAE.
        (register_dtor_fn): Ditto.
        (compute_array_index_type): Ditto.
        (finish_enum): Ditto.
        (start_preparsed_function): Ditto.
        (cxx_maybe_build_cleanup): Ditto.
        * call.c (convert_like): Add COMPLAIN argument.
        (convert_like_with_context): Ditto.
        (build_this): Fix calls for SFINAE.
        (build_user_type_conversion): Ditto.
        (resolve_args): Ditto.
        (build_new_function_call): Add SFINAE support.
        (build_operator_new_call): Fix calls for SFINAE.
        (build_object_call): Add SFINAE support.
        (build_conditional_expr): Ditto.
        (build_new_op): Ditto.
        (build_op_delete_call): Fix calls for SFINAE.
        (build_temp): Ditto.
        (convert_like_real): Add SFINAE support.
        (build_x_va_arg): Fix calls for SFINAE.
        (convert_default_arg): Ditto.
        (build_over_call): Add SFINAE support.
        (build_java_interface_fn_ref): Fix calls for SFINAE.
        (build_special_member_call): Add SFINAE support.
        (build_new_method_call): Ditto.
        (perform_implicit_conversion): Ditto.
        (perform_direct_initialization_if_possible): Ditto.
        (initialize_reference): Fix calls for SFINAE.
        * method.c (do_build_assign_ref): Fix calls for SFINAE.
        * rtti.c (build_headof): Fix calls for SFINAE.
        (get_tinfo_decl_dynamic): Ditto.
        (get_typeid): Ditto.
        (build_dynamic_cast_1): Add SFINAE support.
        (build_dynamic_cast): Ditto.
        (tinfo_base_init): Fix calls for SFINAE.
        * except.c (do_get_exception_ptr): Fix calls for SFINAE.
        (do_end_catch): Ditto.
        (initialize_handler_parm): Ditto.
        (expand_start_catch_block): Ditto.
        (do_allocate_exception): Ditto.
        (do_free_exception): Ditto.
        (build_throw): Ditto.
        * cvt.c (build_up_reference): Fix calls for SFINAE.
        (convert_to_reference): Ditto.
        (ocp_convert): Ditto.
        (convert_to_void): Add SFINAE support.
        * tree.c (build_dummy_object): Fix calls for SFINAE.
        (stabilize_expr): Ditto.
        * cp-tree.h (build_conditional_expr): Add tsubst_flags_t
        parameter.
        (build_new_method_call): Ditto.
        (build_special_member_call): Ditto.
        (build_new_op): Ditto.
        (perform_implicit_conversion): Ditto.
        (perform_direct_initialization_if_possible): Ditto.
        (convert_to_void): Ditto.
        (build_aggr_init): Ditto.
        (build_new): Ditto.
        (build_vec_init): Ditto.
        (build_dynamic_cast): Ditto.
        (finish_call_expr): Ditto
        (cxx_sizeof_or_alignof_expr): Add COMPLAIN parameter.
        (cxx_sizeof_nowarn): Remove macro; add function declaration.
        (build_class_member_access_expr): Add tsubst_flags_t parameter.
        (finish_class_member_access_expr): Ditto.
        (build_x_indirect_ref): Ditto.
        (cp_build_indirect_ref): New.
        (cp_build_function_call): Add tsubst_flags_t parameter.
        (build_x_unary_op): Ditto.
        (cp_build_unary_op): New.
        (build_x_conditional_expr): Add tsubst_flags_t parameter.
        (build_x_compound_expr): Ditto.
        (build_compound_expr): Ditto.
        (build_static_cast): Ditto.
        (build_reinterpret_cast): Ditto.
        (build_const_cast): Ditto.
        (build_c_cast): Ditto.
        (build_x_modify_expr): Ditto.
        (cp_build_modify_expr): New.
        (convert_for_initialization): Add tsubst_flags_t parameter.
        (cp_build_binary_op): Remove macro; add function declaration.
        (invalid_nonstatic_memfn_p): Add tsubst_flags_t parameter.
        (lvalue_or_else): Ditto.
        (build_functional_cast): Ditto.
        * typeck2.c (digest_init): Fix calls for SFINAE.
        (process_init_constructor_array): Ditto.
        (process_init_constructor_record): Ditto.
        (build_x_arrow): Ditto.
        (build_m_component_ref): Ditto.
        (build_functional_cast): Add SFINAE support.
        * pt.c (tsubst_copy_and_build): Add (more) SFINAE support.
        * semantics.c (simplify_loop_decl_cond): Fix calls for SFINAE.
        (finish_expr_stmt): Ditto.
        (finish_for_expr): Ditto.
        (finish_asm_stmt): Ditto.
        (finish_non_static_data_member): Ditto.
        (finish_qualified_id_expr): Ditto.
        (finish_call_expr): Add SFINAE support.
        (finish_increment_expr): Fix calls for SFINAE.
        (finish_unary_op_expr): Ditto.
        (simplify_aggr_init_expr): Ditto.
        (finish_omp_clauses): Ditto.
        (finish_omp_for): Ditto.
        (finish_omp_barrier): Ditto.
        (finish_omo_flush): Ditto.
        * decl2.c (grok_array_decl): Fix calls or SFINAE.
        (build_anon_union_vars): Ditto.
        (get_guard_cond): Ditto.
        (set_guard): Ditto.
        (one_static_initialization_or_destruction): Ditto.
        (do_static_initialization_or_destruction): Ditto.
        (generate_ctor_or_dtor_function): Ditto.
        (build_offset_ref_call_from_tree): Ditto.
        * parser.c (cp_parser_postfix_expression): Fix calls for SFINAE.
        (cp_parser_postfix_dot_deref_expression): Ditto.
        (cp_parser_unary_expression): Ditto.
        (cp_parser_new_expression): Ditto.
        (cp_parser_cast_expression): Ditto.
        (cp_parser_binary_expression): Ditto.
        (cp_parser_question_colon_clause): Ditto.
        (cp_parser_assignment_expression): Ditto.
        (cp_parser_expression): Ditto.
        (cp_parser_builtin_offsetof): Ditto.
        (cp_parser_template_argument): Ditto.
        (cp_parser_functional_cast): Ditto.

2008-03-24  Tom Tromey  <tromey@redhat.com>

        * lex.c (handle_pragma_interface): Don't copy the filename.
        (handle_pragma_implementation): Copy filename using xstrdup.

2008-03-21  Paolo Carlini  <pcarlini@suse.de>

        * cp-tree.h (IS_AGGR_TYPE): Rename to MAYBE_CLASS_TYPE_P.
        (SET_IS_AGGR_TYPE): Rename to SET_CLASS_TYPE_P.
        (IS_AGGR_TYPE_CODE): Rename to RECORD_OR_UNION_CODE_P.
        (PROMOTES_TO_AGGR_TYPE): Remove.
        (CLASS_TYPE_P, TYPE_NON_AGGREGATE_CLASS): Adjust.
        * typeck.c (unary_complex_lvalue, build_modify_expr,
        convert_for_initialization): Adjust.
        * init.c (is_aggr_type): Remove.
        (is_class_type): Add.
        (build_offset_ref, build_new_1, build_vec_delete_1, build_vec_init,
        build_delete): Adjust.
        * lex.c (make_aggr_type): Remove.
        (make_class_type): Add.
        (cxx_make_type): Adjust.
        * class.c (finish_struct_1, fixed_type_or_null, is_empty_class):
        Adjust.
        * decl.c (build_typename_type, make_typename_type,
        make_unbound_class_template, cxx_init_decl_processing,
        check_tag_decl, groktypename, start_decl_1, layout_var_decl,
        check_initializer, cp_finish_decl, build_ptrmemfunc_type, grokparms,
        grok_op_properties, xref_tag, check_function_type): Adjust.
        * call.c (check_dtor_name, standard_conversion, implicit_conversion,
        add_builtin_candidate, add_builtin_candidates,
        build_user_type_conversion_1, convert_like_real, build_cxx_call,
        is_subseq, compare_ics): Adjust.
        * method.c (use_thunk): Adjust.
        * rtti.c (build_dynamic_cast_1, create_pseudo_type_info,
        create_tinfo_types): Adjust.
        * cvt.c (cp_convert_to_pointer, convert_to_pointer_force,
        build_up_reference, convert_to_reference, convert_from_reference,
        ocp_convert, build_expr_type_conversion): Adjust.
        * tree.c (bind_template_template_parm, error_type): Adjust.
        * dump.c (cp_dump_tree): Adjust.
        * search.c (lookup_member): Adjust.
        * friend.c (make_friend_class, do_friend): Adjust.
        * typeck2.c (store_init_value, process_init_constructor_array,
        process_init_constructor_record, build_x_arrow, build_m_component_ref,
        build_functional_cast): Adjust.
        * pt.c (finish_member_template_decl, process_template_parm,
        lookup_template_class, tsubst_function_type, tsubst,
        tsubst_copy_and_build, get_template_base, bt_instantiate_type_proc):
        Adjust.
        * semantics.c (begin_class_definition, finish_base_specifier,
        finish_typeof, cxx_omp_predetermined_sharing, finish_decltype_type):
        Adjust.
        * name-lookup.c (constructor_name_p, push_overloaded_decl,
        do_class_using_decl, lookup_qualified_name,
        maybe_process_template_type_declaration): Adjust.
        * decl2.c (grok_array_decl, check_member_template,
        constrain_class_visibility): Adjust.
        * parser.c (cp_parser_class_name): Adjust.

2008-03-18  Paolo Bonzini  <bonzini@gnu.org>

         * cp-lang.c (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS): Delete.

2008-03-17  Jason Merrill  <jason@redhat.com>

        PR c++/35548
        * call.c (reference_binding): Check LOOKUP_NO_TEMP_BIND when binding
        a temp directly to a reference as per DR391.

2008-03-12  Richard Guenther  <rguenther@suse.de>

        PR c++/35469
        Revert:
        2008-02-04  Richard Guenther  <rguenther@suse.de>

         PR java/35035
         * decl.c (record_builtin_java_type): Make jboolean a
         integer type again where its mode doesn't match that of bool.

        2008-01-25  Richard Guenther  <rguenther@suse.de>

         PR c++/33887
         * decl.c (record_builtin_java_type): Make __java_boolean
         a variant of bool.
         * typeck.c (structural_comptypes): Move TYPE_FOR_JAVA check
         after TYPE_MAIN_VARIANT check.

2008-03-10  Jakub Jelinek  <jakub@redhat.com>

        PR c++/35328
        * semantics.c (finish_omp_clauses): Look through NOP_EXPR even
        if errorcount.

        PR c++/35337
        * semantics.c (finish_omp_clauses): Use %qD instead of %qE for
        DECL_P in not a variable and appears more than once error messages.

2008-03-07  Paolo Bonzini  <bonzini@gnu.org>

        Revert:

        2008-02-06  Douglas Gregor  <doug.gregor@gmail.com>

        PR c++/35049
        PR c++/35096
        * typeck.c (structural_comptypes): Call cp_comptypes.
        (comptypes): New; called from the C/C++ common bits to perform
        strict checks.
        (cp_comptypes): Renamed from comptypes, which is already used,
        with a different signature, by the C++ front end.
        (build_reinterpret_cast_1): Call cp_comptypes.
        (ptr_reasonably_similar): Ditto.
        * decl.c (decls_match): Ditto.
        * cvt.c (convert_to_reference): Ditto.
        * cp-tree.h (same_type_p): Ditto.
        (same_or_base_type_p): Ditto.
        (comptypes): Rename to cp_comptypes.
        * pt.c (canonical_type_parameter): Call cp_comptypes.

2008-03-07  Paolo Bonzini  <bonzini@gnu.org>

        * cp-objcp-common.c (cxx_types_compatible_p): Remove obsolete
        test for equivalence between pointer and references.

2008-03-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

        PR 24924
        * class.c (finish_struct_anon): Use permerror instead of pedwarn.
        (check_field_decls): Likewise.
        (note_name_declared_in_class): Likewise.
        * call.c (build_new_op): Likewise.
        (convert_like_real): Likewise.
        (build_over_call): Likewise.
        * lex.c (unqualified_fn_lookup_error): Likewise.
        * parser.c (cp_parser_template_id): Likewise.
        * cvt.c (warn_ref_binding): Likewise.
        (convert_to_reference): Likewise.
        (ocp_convert): Likewise.
        (convert_to_void): Use error instead of pedwarn.
        * error.c (cp_cpp_error): Use pedantic_warning_kind.
        * decl.c (compute_array_index_type): Use constant_expression_error.

2008-03-01  Douglas Gregor  <doug.gregor@gmail.com>

        * parser.c (cp_lexer_next_token_is_decl_specifier_keyword): Note
        that auto is either a storage class or a simple type specifier,
        depending on the dialect.
        (cp_parser_decl_specifier_seq): Complain about `auto' as a storage
        specifier in C++98 mode, error in C++0x mode (since we don't
        support auto as a type specifier, yet).
        (cp_parser_storage_class_specifier_opt): Don't treat `auto' as a
        storage specifier in C++0x mode.
        (cp_parser_simple_type_specifier): Parse `auto' as a
        simple-type-specifier, but error because we don't support it yet.

2008-02-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

        * parser.c (cp_parser_nonclass_name): New.
        (cp_parser_pseudo_destructor_name): Use it instead of
        cp_parser_type_name.
        (cp_parser_type_name): Move code to cp_parser_nonclass_name.

2008-02-29  Tom Tromey  <tromey@redhat.com>

        * parser.c (struct cp_token) <input_file_stack_index>: Remove.
        (cp_lexer_get_preprocessor_token): Update.
        (cp_lexer_set_source_position_from_token): Don't call
        restore_input_file_stack.
        * lex.c (cxx_init): Don't use push_srcloc or pop_srcloc.

2008-02-28  Richard Guenther  <rguenther@suse.de>

        Revert:
        2008-02-26  Richard Guenther  <rguenther@suse.de>

        * decl.c (duplicate_decls): Remove decl from global mapping
        before ggc_freeing it.

2008-02-27  Jakub Jelinek  <jakub@redhat.com>

        PR c++/35368
        * rtti.c: Include c-pragma.h.
        (push_abi_namespace, pop_abi_namespace): New functions.
        (build_dynamic_cast_1, tinfo_base_init, get_pseudo_ti_index,
        create_tinfo_types, emit_support_tinfos): Use them.
        * Make-lang.in (cp/rtti.o): Depend on $(C_PRAGMA_H).

2008-02-26  Jason Merrill  <jason@redhat.com>

        PR c++/35315
        * decl.c (grokdeclarator): Allow a typedef of an unnamed struct
        to name the struct for linkage purposes even if it has attributes.
        (start_decl): In that case, set ATTR_FLAG_TYPE_IN_PLACE.

2008-02-26  Tom Tromey  <tromey@redhat.com>

        * parser.c (eof_token): Remove old location code.
        (check_empty_body): Remove test of USE_MAPPED_LOCATION.
        * decl2.c (generate_ctor_or_dtor_function): Remove old location
        code.
        (cp_write_global_declarations): Likewise.
        * lex.c (cxx_init): Remove old location code.
        (handle_pragma_implementation): Remove test of
        USE_MAPPED_LOCATION.
        * pt.c (tsubst): Remove old location code.
        * error.c (cp_print_error_function): Remove test of
        USE_MAPPED_LOCATION.
        * decl.c (pop_label): Remove old location code.
        (finish_function): Likewise.

2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

        PR 26264
        * call.c (magic_varargs_p):  Remove BUILT_IN_STDARG_START.

2008-02-26  Richard Guenther  <rguenther@suse.de>

        * decl.c (duplicate_decls): Remove decl from global mapping
        before ggc_freeing it.

2008-02-26  Paolo Carlini  <pcarlini@suse.de>

         PR c++/35323
         * name-lookup.c (arg_assoc_type): Handle FIXED_POINT_TYPE.

2008-02-26  Manuel Lopez-Ibanez <manu@gcc.gnu.org>

        * typeck.c (build_class_member_access_expr): Add appropriate
        OPT_W* parameter to warning.
        (build_reinterpret_cast_1): Likewise.
        * name-lookup.c (push_overloaded_decl): Likewise.

2008-02-25  Paolo Carlini  <pcarlini@suse.de>

         PR c++/35333
         * error.c (dump_expr): Handle CONJ_EXPR.

2008-02-25  Paolo Carlini  <pcarlini@suse.de>

         PR c++/35338
         * error.c (dump_type): Handle FIXED_POINT_TYPE.
        (dump_expr): Handle FIXED_CST.

2008-02-24  Jason Merrill  <jason@redhat.com>

        * parser.c (cp_parser_declaration): Handle "inline namespace".
        (cp_parser_namespace_definition): Likewise.

        PR c++/33486
        * name-lookup.c (arg_assoc_namespace): Look down into inline
        namespaces, too.

2008-02-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

        * typeck.c (check_for_casting_away_constness): Use 1 single
        argument, the type of cast, to decide what diagnostics generate.
        (build_static_cast_1): Remove unused code. Update call to
        check_for_casting_away_constness.
        (build_reinterpret_cast_1): Update call to
        check_for_casting_away_constness.
        (build_const_cast_1): Likewise.

2008-02-24  Paolo Carlini  <pcarlini@suse.de>

        * error.c (dump_expr): Don't deal directly with NEW_EXPR (and
        VEC_NEW_EXPR), forward to pp_expression.
        * cxx-pretty-print.c (pp_cxx_new_expression): Fix FIXME.

2008-02-24  Danny Smith  <dannysmith@users.sourceforge.net>

        PR c++/34749
        * friend.c (do_friend): Call cplus_decl_attributes earlier.

2008-02-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        PR C++/34715
        * decl.c (duplicate_decls): Merge DECL_DISREGARD_INLINE_LIMITS for
        template decls' function decl.

2008-02-22  Paolo Carlini  <pcarlini@suse.de>

        PR c++/35282
        Revert:
        2008-02-14  Paolo Carlini  <pcarlini@suse.de>

         PR c++/28743
         * pt.c (determine_specialization): In case of function templates,
        when the type of DECL does not match FN there is no match.

2008-02-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

        PR c/19999
        * typeck.c (build_binary_op): Warn about floating point
        comparisons if FLOAT_TYPE_P, not only for REAL_TYPE.

2008-02-19  Jason Merrill  <jason@redhat.com>

        PR c++/34950
        * pt.c (resolve_overloaded_unification): Set processing_template_decl
        while we look for possible bindings.

2008-02-19  Jakub Jelinek  <jakub@redhat.com>

        PR c++/35028
        * cp-gimplify.c (cxx_omp_clause_apply_fn): Handle vararg copy ctors.

        PR c++/34964
        PR c++/35244
        * semantics.c (finish_omp_threadprivate): Do nothing for error_operand_p
        vars.  Afterwards ensure v is VAR_DECL.

        PR c++/35078
        * parser.c (cp_parser_omp_for_loop): If DECL has REFERENCE_TYPE, don't
        call cp_finish_decl.
        * semantics.c (finish_omp_for): Fail if DECL doesn't have integral type
        early.

2008-02-15  Douglas Gregor  <doug.gregor@gmail.com>

        PR c++/35023
        PR c++/35024
        PR c++/35026
        * pt.c (finish_member_template_decl): If the type in a TYPE_DECL
        is error_mark_node, return an error early.
        (find_parameter_packs_r): Pass the pointer set along to recursive
        calls of cp_walk_subtrees; don't try to manage the pointer set
        ourselves.
        (uses_parameter_packs): Pass the pointer set to cp_walk_tree.
        (make_pack_expansion): Ditto.
        (check_for_bare_parameter_packs): Ditto. Also, don't bother taking
        a second pass through the tree with find_parameter_packs_r; that
        second pass no longer does anything.
        (push_template_decl_real): If we have an erroneous declaration,
        set its type to error_mark_node before returning an error.

2008-02-14  Douglas Gregor  <doug.gregor@gmail.com>

        PR c++/34050
        * pt.c (tsubst_initializer_list): Deal with the use of
        VOID_TYPE_NODE to indicate value-initialization of the bases.

2008-02-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
            Jason Merrill  <jason@redhat.com>

        PR c++/5645
        PR c++/11159
        * class.c (type_has_user_nondefault_constructor): New fn.
        * cp-tree.h: Declare it.
        * init.c (emit_mem_initializers): Use it for -W warning about
        missing base initializer.

2008-02-14  Paolo Carlini  <pcarlini@suse.de>

         PR c++/28743
         * pt.c (determine_specialization): In case of function templates,
        when the type of DECL does not match FN there is no match.

2008-02-13  Jakub Jelinek  <jakub@redhat.com>
            Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

        PR c++/35138
        * parser.c (cp_parser_pseudo_destructor_name): If next tokens
        are not identifier :: ~, return before calling cp_parser_type_name.

2008-02-13  Jason Merrill  <jason@redhat.com>

        PR c++/34962, c++/34937, c++/34939
        * decl2.c (is_late_template_attribute): Always defer attributes
        vector_size and weak.

        PR c++/34774
        * pt.c (value_dependent_expression_p): Look into DECL_INITIAL
        of enumerators, too.

2008-02-12  Jason Merrill  <jason@redhat.com>

        PR c++/34824
        * call.c (convert_like_real): Pass LOOKUP_NO_CONVERSION to build_temp
        if we're doing conversions to call a user-defined conversion function.

2008-02-12  Steven Bosscher  <steven@gcc.gnu.org>

        PR c++/29048
        * semantics.c (finish_qualified_id_expr): Avoid duplicate access
        check here, too.

2008-02-12  Jakub Jelinek  <jakub@redhat.com>

        PR c++/34862
        * init.c (build_new_1): Don't create placement_expr before
        constructing alloc_call.  Verify that the pointer is passed by
        value to operator new.

2008-02-11  Jason Merrill  <jason@redhat.com>

        PR c++/35097
        * pt.c (tsubst): Don't look up a template typedef in an explicit
        specialization.

2008-02-11  Douglas Gregor  <doug.gregor@gmail.com>

        PR c++/35113
        * tree.c (cp_build_qualified_type_real): When building a
        cv-qualified array type, build it as a unique type with
        build_cplus_array_type_1 and then adopt the unqualified type's
        main variant.

2008-02-11  Paolo Carlini  <pcarlini@suse.de>

        PR c++/35077
        * decl.c (groktypename): Check grokdeclarator return.

2008-02-10  Jason Merrill  <jason@redhat.com>

        PR c++/34094
        * decl2.c (cp_write_global_declarations): Don't write out static
        data members with DECL_IN_AGGR_P set.

2008-02-08  Jason Merrill  <jason@redhat.com>

        PR c++/35116
        * tree.c (build_target_expr_with_type): Handle void initializer.
        (bot_manip): Remap slot before recursing.

2008-02-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

        PR other/35107
        * Make-lang.in (cc1plus-dummy, cc1plus): Add $(GMPLIBS).

2008-02-06  Alexandre Oliva  <aoliva@redhat.com>

        PR c++/35056
        * tree.c: Include tree-flow.h.
        (build_target_expr): Check type compatibility.
        * Make-lang.in (cp/tree.o): Depend on $(TREE_FLOW_H).
        * call.c (convert_like_real): Convert bitfield to expected type.

2008-02-06  Douglas Gregor  <doug.gregor@gmail.com>

        PR c++/35049
        PR c++/35096
        * typeck.c (structural_comptypes): Call cp_comptypes.
        (comptypes): New; called from the C/C++ common bits to perform
        strict checks.
        (cp_comptypes): Renamed from comptypes, which is already used,
        with a different signature, by the C++ front end.
        (build_reinterpret_cast_1): Call cp_comptypes.
        (ptr_reasonably_similar): Ditto.
        * decl.c (decls_match): Ditto.
        * cvt.c (convert_to_reference): Ditto.
        * cp-tree.h (same_type_p): Ditto.
        (same_or_base_type_p): Ditto.
        (comptypes): Rename to cp_comptypes.
        * pt.c (canonical_type_parameter): Call cp_comptypes.

2008-02-05  Jakub Jelinek  <jakub@redhat.com>

        PR c++/33553
        * pt.c (tsubst) <case INTEGER_TYPE>: Don't issue error if max is
        value dependent expression.

2008-02-05  Douglas Gregor  <doug.gregor@gmail.com>

        PR c++/35074
        * decl2.c (save_template_attributes): When we're modifying the
        TYPE_MAIN_VARIANT to add new attributes, be sure to also modify
        all of the other variants to add those same attributes. Otherwise,
        the main variant will be inconsistent with those other variants.

2008-02-04  Richard Guenther  <rguenther@suse.de>

        PR java/35035
        * decl.c (record_builtin_java_type): Make jboolean a
        integer type again where its mode doesn't match that of bool.

2008-02-02  Jason Merrill  <jason@redhat.com>
            Mark Mitchell  <mark@codesourcery.com>

        PR c++/33916
        * init.c (build_value_init_1): New function.
        (build_value_init): New function.
        * typeck2.c (build_functional_cast): Call it.
        * cp-gimplify.c (cp_gimplify_init_expr): Handle its output.

        * cp-tree.h (TYPE_HAS_USER_CONSTRUCTOR): Rename from
        TYPE_HAS_CONSTRUCTOR.
        * class.c (finish_struct_bits, maybe_warn_about_overly_private_class,
        add_implicitly_declared_members): Adjust.
        (check_field_decls): Adjust. Remove warnings about reference/const
        in class without constructor.
        (check_bases_and_members): Adjust.  Give those warnings here instead.
        * decl.c (fixup_anonymous_aggr): Adjust.
        (check_initializer): Adjust, clarify logic slightly.
        (grok_special_member_properties): Adjust, only set if user-provided.
        * rtti.c (create_tinfo_types): Don't set.
        * cvt.c (ocp_convert): Remove exception for vtable_entry_type et al.
        Use same_type_ignoring_top_level_qualifiers_p.
        * pt.c (check_explicit_specialization): Adjust.
        (instantiate_class_template): Adjust.

2008-01-31  Douglas Gregor  <doug.gregor@gmail.com>
            Jakub Jelinek  <jakub@redhat.com>

        PR c++/34935
        PR c++/34936
        * typeck.c (structural_comptypes): Handle comparisons of
        VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, FIXED_POINT_TYPE, and
        REAL_TYPE nodes.
        * mangle.c (write_builtin_type): Map down to the canonical type,
        which will be one of the predefined type nodes.

2008-01-29  Michael Meissner  <michael.meissner@amd.com>

        PR 35004
        * cp-tree.h (struct full_lang_decl): Make tree_code bitfield 16
        bits to allow for expansion of the number of middle end tree
        codes.

2008-01-29  Douglas Gregor  <doug.gregor@gmail.com>

        PR c++/34055
        PR c++/34103
        PR c++/34219
        PR c++/34606
        PR c++/34753
        PR c++/34754
        PR c++/34755
        PR c++/34919
        PR c++/34961
        * typeck.c (check_return_expr): Tweak call to
        check_for_bare_parameter_packs.
        * class.c (add_method): Be careful with error_mark_nodes.
        * cp-tree.h (check_for_bare_parameter_packs): Remove "*" from
        signature.
        * pt.c (struct find_parameter_pack_data): Remove
        SET_PACKS_TO_ERROR.
        (find_parameter_packs_r): Don't use SET_PACKS_TO_ERROR.
        (uses_parameter_packs): Don't set SET_PACKS_TO_ERROR.
        (make_pack_expansion): Ditto.
        (check_for_bare_parameter_packs): Parameter is now a tree, not a
        tree*.
        (process_template_parm): Tweak call to
        check_for_bare_parameter_packs.
        (push_template_decl_real): Tweak calls to
        check_for_bare_parameter_packs. If bare parameter packs are found
        in the list of exceptions, clear out that list after giving an
        error.
        * semantics.c (finish_cond): Tweak call to
        check_for_bare_parameter_packs.
        (finish_expr_stmt): Ditto.
        (finish_for_expr): Ditto.
        (finish_switch_cond): Ditto.
        (finish_mem_initializers): Ditto.
        (finish_member_declaration): Ditto.
        (finish_static_assert): Check for bare parameter packs in the
        condition.
        * decl2.c (cplus_decl_attributes): Check for bare parameter packs in the
        attributes of a declaration.
        * parser.c (cp_parser_using_declaration): Tweak call to
        check_for_bare_parameter_packs.
        (cp_parser_base_clause): Ditto.

2008-01-28  Jason Merrill  <jason@redhat.com>

        PR c++/35007
        * class.c (build_base_path): Fix !want_pointer case.

2008-01-27  Jason Merrill  <jason@redhat.com>

        PR c++/27177
        * class.c (build_base_path): Fix previous change.

2008-01-26  Jakub Jelinek  <jakub@redhat.com>

        PR c++/34965
        * error.c (dump_expr): Handle TRUTH_AND_EXPR, TRUTH_OR_EXPR
        and TRUTH_XOR_EXPR.

2008-01-26  Richard Guenther  <rguenther@suse.de>

        PR c++/34235
        * typeck.c (build_binary_op): Remove code to shorten compares.

2008-01-25  Richard Guenther  <rguenther@suse.de>

        PR c++/33887
        * decl.c (record_builtin_java_type): Make __java_boolean
        a variant of bool.
        * typeck.c (structural_comptypes): Move TYPE_FOR_JAVA check
        after TYPE_MAIN_VARIANT check.

2008-01-25  Jason Merrill  <jason@redhat.com>

        PR c++/27177
        * class.c (build_base_path): Don't mess with virtual access if
        skip_evaluation.
        * call.c (standard_conversion): Don't check whether source type
        is complete.

        * decl2.c (is_late_template_attribute): Don't defer attribute
        visibility just because the type is dependent.

2008-01-25  Jason Merrill  <jason@redhat.com>
            Mark Mitchell  <mark@codesourcery.com>

        PR c++/31780
        * call.c (standard_conversion): Allow conversion from integer/real
        to complex.
        (compare_ics): Such a conversion is worse than a normal arithmetic
        conversion.

2008-01-25  Richard Guenther  <rguenther@suse.de>

        PR c++/33887
        * cp-lang.c (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS): Define
        to true.

2008-01-24  Paolo Carlini  <pcarlini@suse.de>

         PR c++/34603
         * pt.c (push_template_decl_real): Return error_mark_node in case
        of template definition of non-template.

2008-01-24  Jason Merrill  <jason@redhat.com>

        PR c++/34913
        * decl2.c (is_late_template_attribute): Defer any attribute with
        dependent args.  Also defer type attributes if the type is dependent.

2008-01-22  Jakub Jelinek  <jakub@redhat.com>
            Alexandre Oliva  <aoliva@redhat.com>

        PR c++/33984
        * call.c (reference_binding): For bitfields use the declared bitfield
        type.
        (add_builtin_candidates): Likewise.
        * class.c (layout_class_type): For bitfields copy over the
        original type quals.

2008-01-22  Jason Merrill  <jason@redhat.com>

        PR c++/28560
        * decl.c (groktypename): Also ignore attributes on dependent
        possibly-class types.

        PR c++/34912
        * friend.c (do_friend): Check for prior declaration of a friend
        function of a local class.
        * name-lookup.c (lookup_name_innermost_nonclass_level):
        No longer static.
        * name-lookup.h: Declare it.

2008-01-22  Tom Tromey  <tromey@redhat.com>

        PR c++/34829:
        * init.c (build_new_1): Only disallow Java aggregates.

2008-01-22  Jakub Jelinek  <jakub@redhat.com>

        PR c++/34607
        * semantics.c (finish_omp_for): Don't call c_finish_omp_for
        if decl or init is error_mark_node.

        PR c++/34918
        * error.c (dump_expr): Handle VECTOR_CST.

2008-01-21  Jason Merrill  <jason@redhat.com>

        PR c++/33959
        * pt.c (tsubst_aggr_type): Make sure our context is complete.

        PR c++/34573
        * pt.c (retrieve_local_specialization): Robustify.
        (tsubst_pack_expansion, tsubst_decl): Remove redundant checks.

        PR c++/34846
        * pt.c (tsubst): Only call retrieve_local_specialization if the
        original typedef was in a function template.

        PR c++/34196
        * decl.c (wrap_cleanups_r): Set TRY_CATCH_IS_CLEANUP.

2008-01-21  Richard Guenther  <rguenther@suse.de>

        PR c++/34850
        * error.c (cp_print_error_function): Deal with recursive
        BLOCK trees.

2008-01-20  Paolo Carlini  <pcarlini@suse.de>

         PR c++/34891
         * error.c (dump_expr): Deal with VIEW_CONVERT_EXPR.

2008-01-20  Paolo Carlini  <pcarlini@suse.de>

         PR c++/34776
        PR c++/34486
         * name-lookup.c (do_class_using_decl): Do not call constructor_name_p
        on non-IS_AGGR_TYPE scope.
        (constructor_name_p): Assert IS_AGGR_TYPE.

2008-01-18  Ian Lance Taylor  <iant@google.com>

        PR c++/33407
        * decl.c (duplicate_decls): Copy DECL_IS_OPERATOR_NEW flag.
        (grok_op_properties): For NEW_EXPR and VEC_NEW_EXPR set
        DECL_IS_OPERATOR_NEW flag.

2008-01-16  Richard Guenther  <rguenther@suse.de>

        PR c++/33819
        * typeck.c (is_bitfield_expr_with_lowered_type): Recurse
        for conversions to type variants.

2008-01-15  Andreas Tobler  <a.tobler@schweiz.org>

        * parser.c (cp_parser_template_parameter): Fix C90 issue with mixing
        declaration and code.  Update copyright year.

2008-01-15  Douglas Gregor  <doug.gregor@gmail.com>

        PR c++/34399
        * friend.c (do_friend): Don't query TYPE_BEING_DEFINED unless we
        know we have a class type.

2008-01-15  Douglas Gregor  <doug.gregor@gmail.com>

        PR c++/34751
        * pt.c (coerce_template_parameter_pack): When substituting into
        the type of a non-type template parameter pack. use the
        deduced/substituted arguments.
        * parser.c (declarator_can_be_parameter_pack): A pointer-to-member
        can be a parameter pack with the ellipsis following it.  When we
        have an erroneous declaration, allow it to be a parameter pack.
        (cp_parser_template_parameter): Complain about default
        arguments on non-type template parameter packs, and parse them
        using the new cp_parser_default_argument.
        (cp_parser_parameter_declaration): Complain about parameter packs
        with default arguments. Move parsing of default arguments into a
        new function, cp_parser_default_argument.
        (cp_parser_default_argument): New; extracted from
        cp_parser_parameter_declaration.

2008-01-15  Douglas Gregor  <doug.gregor@gmail.com>

        PR c++/34051
        PR c++/34055
        PR c++/34102
        PR c++/34103
        * typeck.c (check_return_expr): If there are bare parameter packs
        in the return value, set it to error_mark_node.
        * tree.c (cp_walk_subtrees): Walk USING_DECL nodes.
        * pt.c (find_parameter_packs_r): Look at the type of
        IDENTIFIER_NODEs (e.g., for user-defined conversions).
        (check_for_bare_parameter_packs): Flip the result: now returns
        TRUE when there were bare parameter packs, FALSE otherwise.
        (push_template_decl_real): Deal with flipped result of
        check_for_bare_parameter_packs.
        * semantics.c (finish_cond): If there are bare parameter packs in
        the conditional, set it to error_mark_node.
        (finish_expr_stmt): If there are bare parameter packs in the
        expression, set it to error_mark_node.
        (finish_for_expr): Ditto.
        (finish_switch_cond): If there are bare parameter packs in
        the conditional, set it to error_mark_node.
        (finish_mem_initializers): If there are bare parameter packs in
        the member initializer, set it to error_mark_node.
        (finish_member_declaration): Check the attributes of the
        declaration for bare parameter packs, and remove the attributes if
        any have bare parameter packs.
        * parser.c (cp_parser_using_declaration): Check the using
        declaration for bare parameter packs.
        (cp_parser_base_clause): If there are bare parameter packs in a
        base specifier, don't add it to the chain.

2008-01-15  Douglas Gregor  <doug.gregor@gmail.com>

        PR c++/34314
        * error.c (dump_simple_decl): Display ellipsis for template
        non-type parameter packs.
        (dump_decl): Display ellipsis for template type parameter packs.
        (dump_template_decl): Display ellipsis for template template
        parameter packs.
        * pt.c (redeclare_class_template): When redeclaring a class
        template, check for collisions between template parameters and
        template parameter packs.

2008-01-15  Douglas Gregor  <doug.gregor@gmail.com>

        PR c++/33964
        * pt.c (process_partial_specialization): Don't mark template
        parameters that occur in non-deduced contexts.
        (struct pair_fn_data): Add include_nondeduced_p.
        (for_each_template_parm_r): Only visit non-deduced contexts if
        include_nondeduced_p is set.
        (for_each_template_parm): Added parameter include_nondeduced_p,
        which states whether template parameters found in non-deduced
        contexts should be visited.
        (uses_template_parms): Visit all template parameters, even those
        in non-deduced contexts.

2008-01-15  Douglas Gregor  <doug.gregor@gmail.com>

        PR c++/34052
        * pt.c (check_default_tmpl_args): Check for parameter packs that
        aren't at the end of a primary template.
        (push_template_decl_real): Remove check for parameter packs that
        aren't at the end of a primary template; that now happens in
        check_default_tmpl_args.
        * semantics.c (finish_template_template_parm): Use
        check_default_tmpl_args to check for errors in the template
        parameter list.

2008-01-12  Doug Kwan  <dougkwan@google.com>

        * decl.c: (grokdeclarator): Use OPT_Wignored_qualifiers
        instead of OPT_Wreturn_type in warning due to ignored return type
        qualifiers.
        * pt.c: (tsubst_function_type): Use OPT_Wignored_qualifiers
        instead of OPT_Wreturn_type in warning due to ignored return type
        qualifiers.

2008-01-08  Jakub Jelinek  <jakub@redhat.com>

        PR c++/33890
        * semantics.c (finish_omp_for): Don't call
        fold_build_cleanup_point_expr if processing_template_decl.

2008-01-04  Paolo Carlini  <pcarlini@suse.de>
            Jakub Jelinek  <jakub@redhat.com>

        PR c++/34611
        * error.c (dump_template_argument): Deal with TREE_LIST.

2008-01-01  Douglas Gregor  <doug.gregor@gmail.com>

        * parser.c (cp_parser_check_decl_spec): Don't warn about "long
        long" in C++0x mode; change the warning to note that "long long"
        is only unsupported in C++98 mode.


Copyright (C) 2008 Free Software Foundation, Inc.

Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.