1 2007-11-06 Douglas Gregor <doug.gregor@gmail.com>
5 * tree.c (c_build_qualified_type): Define bridge to
6 cp_build_qualified_type.
8 2007-11-06 Douglas Gregor <doug.gregor@gmail.com>
19 * typeck.c (check_return_expr): Pass address of retval to
20 check_for_bare_parameter_packs.
21 * class.c (build_base_field): Tolerate bases that have no layout
24 * tree.c (canonical_type_variant): Be careful with
26 * cp-tree.h (check_for_bare_parameter_packs): Now accepts a
28 * pt.c (find_parameter_pack_data): Add set_packs_to_error field,
29 which states whether parameter packs should be replaced with
31 (find_parameter_packs_r): Pass addresses to cp_walk_tree wherever
32 possible. If set_packs_to_error is set true, replace the parameter
33 pack with ERROR_MARK_NODE. Manage our own pointer sets.
34 (uses_parameter_packs): Don't set parameter packs to
36 (check_for_bare_parameter_packs): Now takes a pointer to a tree,
37 which may be modified (if it is a parameter pack). Instructs
38 find_parameter_packs_r to replace parameter packs with
39 ERROR_MARK_NODE (so that they won't cause errors later on).
40 (process_template_parm): Pass pointer to
41 check_for_bare_parameter_packs.
42 (process_partial_specialization): Replace pack expansions before
43 the end of the template argument list with ERROR_MARK_NODE.
44 (push_template_decl_real): Pass pointer to
45 check_for_bare_parameter_packs. Replace parameter packs not at the
46 end of the template parameter list with ERROR_MARK_NODE.
47 (convert_template_argument): Be more careful about using DECL_NAME
49 (unify): Can't unify against ERROR_MARK_NODE.
50 * semantics.c (finish_cond): Pass pointer to
51 check_for_bare_parameter_packs.
52 (finish_expr_stmt): Ditto.
53 (finish_for_expr): Ditto.
54 (finish_switch_cond): Pass pointer to
55 check_for_bare_parameter_packs, and call it before we put the
56 condition into the statement.
57 (finish_mem_initializers): Pass pointer to
58 check_for_bare_parameter_packs.
59 (finish_member_declaration): Ditto.
60 * parser.c (cp_parser_base_clause): Ditto.
62 2007-11-06 Jakub Jelinek <jakub@redhat.com>
65 * decl.c (cp_finish_decl): Call make_rtl_for_nonlocal_decl already
66 with the final TREE_READONLY flag in place. processing_template_decl
67 is known to be 0 in this part of function.
70 * cp-tree.h: Update comment - TYPE_LANG_FLAG_0 is not
71 OMP_ATOMIC_DEPENDENT_P in OMP_ATOMIC.
72 * pt.c (tsubst_expr): Assert OMP_ATOMIC_DEPENDENT_P.
73 * semantics.c (finish_omp_atomic): Revert most of the
74 2007-02-05 changes, just keep the new representation of
75 OMP_ATOMIC_DEPENDENT_P OMP_ATOMIC.
77 2007-11-05 H.J. Lu <hongjiu.lu@intel.com>
80 * decl2.c (constrain_visibility): Clear DECL_ONE_ONLY if marked
83 2007-11-05 Douglas Gregor <doug.gregor@gmail.com>
88 * typeck.c (merge_types): Don't lose rvalue references when
90 * call.c (build_over_call): Don't elide move constructors just
91 because the copy constructor is trivial (!).
92 (compare_ics): If comparing cv-qualifiers fails, we can still order
93 based on binding lvalues vs. rvalues.
95 2007-11-05 Douglas Gregor <doug.gregor@gmail.com>
98 * pt.c (unify_pack_expansion): bring handling of function call
99 arguments into line with type_unification_real.
101 2007-11-05 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
103 * typeck.c (build_binary_op): Use pedwarn instead of error for
106 2007-11-05 Jakub Jelinek <jakub@redhat.com>
109 * parser.c (cp_parser_unary_expression): For &&label call
110 cp_parser_non_integral_constant_expression and return error_mark_node
114 * decl.c (grokdeclarator): Don't call build_memfn_type if type
115 is neither FUNCTION_TYPE nor METHOD_TYPE.
117 2007-11-02 Jakub Jelinek <jakub@redhat.com>
120 * parser.c (cp_parser_nested_name_specifier_opt): Use
121 TYPE_MAIN_VARIANT (new_scope) as scope if new_scope is an incomplete
122 typedef of currently open class.
124 2007-11-02 Paolo Carlini <pcarlini@suse.de>
127 * error.c (dump_expr): Deal specially with statements.
129 2007-11-01 Jason Merrill <jason@redhat.com>
132 * pt.c (push_template_decl_real): Set DECL_CONTEXT on template
134 (lookup_template_class): Use it to get the outer template args
135 for instantiating one.
138 * pt.c (reduce_template_parm_level): tsubst the parameters
139 of a template template parm.
141 2007-11-01 Douglas Gregor <doug.gregor@gmail.com>
144 * pt.c (find_parameter_packs_r): Handle TYPENAME_TYPE.
146 2007-11-01 Jakub Jelinek <jakub@redhat.com>
149 * parser.c (cp_parser_postfix_dot_deref_expression): If
150 POSTFIX_EXPRESSION is type dependent, try to parse it as pseudo dtor
151 first and if that succeeds and type is SCALAR_TYPE_P, create
155 * rtti.c (enum_tinfo_kind): Fix TK_TYPE_INFO_TYPE comment.
156 (typeid_ok_p): Use the same alias set for abi::__type_info_pseudo
157 as for std::type_info.
159 2007-10-31 Paolo Carlini <pcarlini@suse.de>
162 * cxx-pretty-print.c (pp_cxx_typeid_expression,
163 pp_cxx_delete_expression): Change to static linkage.
164 * cxx-pretty-print.h: Adjust declarations.
165 * error.c (dump_expr, case EXPR_PACK_EXPANSION, TYPEID_EXPR,
166 MEMBER_REF, DOTSTAR_EXPR, DELETE_EXPR, VEC_DELETE_EXPR,
167 MODOP_EXPR): Forward to pp_expression.
169 * cxx-pretty-print.c (pp_cxx_expression, case NON_DEPENDENT_EXPR):
172 2007-10-31 Christian Bruel <christian.bruel@st.com>
173 Mark Mitchell <mark@codesourcery.com>
176 * typeck.c (check_return_expr): Don't set named_return_value_okay_p
177 if retval is volatile.
179 2007-10-30 Jakub Jelinek <jakub@redhat.com>
182 * decl2.c (build_offset_ref_call_from_tree): Call
183 build_non_dependent_expr on object prior to building ADDR_EXPR from it
184 if FN is DOTSTAR_EXPR.
186 2007-10-30 Douglas Gregor <doug.gregor@gmail.com>
190 * pt.c (find_parameter_packs_r): Fix typo in comment.
191 (convert_template_argument): Look at the pattern of a pack
192 expansion to determine what kind of entity we're converting.
193 (coerce_template_parameter_pack): When we have coerced a non-type
194 template parameter pack, substitute into the type of that pack.
195 (tsubst_pack_expansion): When our substitution of a parameter pack
196 is a "trivial" substitution of itself, just substitute into the
197 pack expansion rather than actually expanding.
199 2007-10-29 Jakub Jelinek <jakub@redhat.com>
202 * class.c (check_bitfield_decl): Don't set field's type to error_mark_node
203 for non-integral type bitfields. Return true if bitfield is correct, false
204 error has been diagnosed.
205 (check_field_decls): If check_bitfield_decl returned false, call also
208 2007-10-28 Paolo Carlini <pcarlini@suse.de>
209 Mark Mitchell <mark@codesourcery.com>
212 * pt.c (do_decl_instantiation): If the VAR_DECL is not a
213 class member error out and return.
215 2007-10-27 Jakub Jelinek <jakub@redhat.com>
217 * error.c (reinit_cxx_pp): Initialize cxx_pp->enclosing_scope
218 to current_function_decl rather than 0.
221 * cxx-pretty-print.c (pp_cxx_pm_expression) <case MEMBER_REF>: Print
223 * error.c (dump_expr): Handle MEMBER_REF and DOTSTAR_EXPR.
225 2007-10-27 Jason Merrill <jason@redhat.com>
228 * call.c (convert_default_arg): Detect recursion.
230 2007-10-27 Jakub Jelinek <jakub@redhat.com>
233 * cxx-pretty-print.h (pp_cxx_offsetof_expression): New prototype.
234 * cxx-pretty-print.c (pp_cxx_primary_expression): Handle
236 (pp_cxx_offsetof_expression_1, pp_cxx_offsetof_expression): New
238 * error.c (dump_expr): Handle OFFSETOF_EXPR.
240 2007-10-26 Jason Merrill <jason@redhat.com>
243 * pt.c (get_template_info): New fn.
244 (template_class_depth): Use it.
245 (push_template_decl_real): Check that the template args of the
246 definition match the args of the previous declaration.
248 2007-10-26 Paolo Carlini <pcarlini@suse.de>
251 * decl2.c (coerce_new_type): Do not allow a default argument for
254 2007-10-26 Douglas Gregor <doug.gregor@gmail.com>
257 * parser.c (cp_parser_decltype): Return ERROR_MARK_NODE if we
258 don't see the leading '('. Only lookup names if we get an
261 2007-10-26 Jakub Jelinek <jakub@redhat.com>
264 * parser.c (cp_parser_parenthesized_expression_list): Set
265 greater_than_is_operator_p to true in between the parens.
267 2007-10-26 Paolo Carlini <pcarlini@suse.de>
270 * decl.c (grokdeclarator): In case of conflicting specifiers
271 just return error_mark_node.
273 2007-10-26 Ollie Wild <aaw@google.com>
275 * expr.c (cxx_expand_expr): Removed.
276 * cp-tree.h (exx_expand_expr): Removed.
277 * cp-objcp-common.h (LANK_HOOKS_EXPAND_EXPR): Replace cxx_expand_expr
280 2007-10-25 Paolo Carlini <pcarlini@suse.de>
283 * cxx-pretty-print.c (pp_cxx_unqualified_id): Deal with BIT_NOT_EXPR.
285 2007-10-23 Jason Merrill <jason@redhat.com>
287 PR c++/25950 (DR 391)
288 * call.c (struct conversion): Remove check_copy_constructor_p.
289 (reference_binding): Always bind a reference directly to a
290 compatible class rvalue. Pass down LOOKUP_NO_TEMP_BIND during
292 (check_constructor_callable): Remove.
293 (convert_like_real): Don't call it.
294 (initialize_reference): Don't call check_constructor_callable.
295 (standard_conversion): Check LOOKUP_NO_CONVERSION instead of
296 LOOKUP_CONSTRUCTOR_CALLABLE. Don't require a temporary for base
297 conversions if LOOKUP_NO_TEMP_BIND.
298 (implicit_conversion): Pass through LOOKUP_NO_TEMP_BIND.
299 (build_user_type_conversion_1): Pass through LOOKUP_NO_TEMP_BIND for
301 * cp-tree.h (LOOKUP_CONSTRUCTOR_CALLABLE): Remove.
303 2007-10-22 Jakub Jelinek <jakub@redhat.com>
306 * semantics.c (finish_omp_clauses): Check !type_dependent_expression_p
307 before checking if its type is integral.
309 2007-10-22 Jason Merrill <jason@redhat.com>
312 * class.c (finish_struct_bits): Copy TYPE_ATTRIBUTES.
313 * pt.c (apply_late_template_attributes): Splice out dependent
314 attributes from DECL_ATTRIBUTES.
316 * decl.c (cxx_maybe_build_cleanup): Use build_address.
318 2007-10-17 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
320 * typeck.c (build_binary_op) : Use appropriate warning option
321 instead of unnamed warning.
323 2007-10-16 Paolo Carlini <pcarlini@suse.de>
326 * pt.c (current_template_args): Do not change TREE_LIST elements
327 with a TREE_VALUE of error_mark_node.
329 2007-10-16 Mark Mitchell <mark@codesourcery.com>
331 * typeck.c (cp_apply_type_quals_to_decl): Expand documentation.
332 * decl.c (start_decl): Tidy.
333 (start_decl_1): Call cp_apply_type_quals_to_decl after completing
335 (grokdeclarator): Clarify comment.
337 2007-10-14 Andrew Pinski <pinskia@gmail.com>
340 * decl.c (grokfndecl): Return NULL after the "definition of
341 implicitly-declared" error happened.
343 2007-10-12 Simon Martin <simartin@users.sourceforge.net>
346 * call.c (build_user_type_conversion_1): Do not consider conversion
347 functions to convert a (possibly cv-qualified) object to the (possibly
348 cv-qualified) same object type (or a reference to it), to a (possibly
349 cv-qualified) base class of that type (or a reference to it).
351 2007-10-12 Paolo Carlini <pcarlini@suse.de>
353 * pt.c (tsubst): Use template_parm_level_and_index.
355 2007-10-12 Jakub Jelinek <jakub@redhat.com>
358 * parser.c (cp_parser_compound_statement): Handle label-declarations
359 at the beginning of the compound statement.
360 (cp_parser_block_declaration): Issue diagnostics about __label__
361 not at the beginning of a block.
363 2007-10-11 Paolo Carlini <pcarlini@suse.de>
366 * pt.c (coerce_template_parameter_pack): Do not pass error_mark_node
367 to convert_template_argument.
368 (coerce_template_parms): Return error_mark_node after fixed-length
370 (tsubst_decl): Check for error_mark_node the return value of the
371 first tsubst in 'case VAR_DECL'.
373 2007-10-08 Ollie Wild <aaw@google.com>
375 * typeck2.c (digest_init): Call cplus_expand_constant after
376 convert_for_initialization.
377 * cp-objcp-common.h (LANG_HOOKS_EXPAND_CONSTANT): Removed.
378 * expr.c (cplus_expand_constant): Updated function description.
380 2007-10-04 Jason Merrill <jason@redhat.com>
383 * call.c (initialize_reference): Handle local static reference
386 2007-10-03 Jason Merrill <jason@redhat.com>
389 * name-lookup.c (push_namespace_with_attrs): Fold back into...
390 (push_namespace): Here.
391 (handle_namespace_attrs): New fn for the attr code.
392 (leave_scope): Don't pop_visibility.
393 * name-lookup.h (struct cp_binding_level): Remove has_visibility.
394 * parser.c (cp_parser_namespace_definition): Call
395 handle_namespace_attrs and pop_visibility as appropriate.
398 * mangle.c (write_type) [TYPEOF_TYPE]: Just sorry.
400 2007-10-03 Alexandre Oliva <aoliva@redhat.com>
402 * decl.c (duplicate_decls): Preserve linkage flags for mere
403 redeclarations of gnu_inline definitions.
405 2007-10-03 Jason Merrill <jason@redhat.com>
408 * decl.c (wrap_cleanups_r): New fn.
409 (wrap_temporary_cleanups): New fn.
410 (initialize_local_var): Call it.
412 2007-09-29 Jason Merrill <jason@redhat.com>
415 * decl.c (make_rtl_for_nonlocal_decl): It's ok for a member
416 constant to not have DECL_EXTERNAL if it's file-local.
418 2007-09-28 Ollie Wild <aaw@google.com>
421 2007-09-27 Ollie Wild <aaw@google.com>
423 * typeck2.c (digest_init): Call cplus_expand_constant after
424 convert_for_initialization.
425 * cp-objcp-common.h (LANG_HOOKS_EXPAND_CONSTANT): Removed.
426 * expr.c (cplus_expand_constant): Updated function description.
428 2007-09-28 Jason Merrill <jason@redhat.com>
431 * class.c (layout_empty_base): Take rli parameter, update
432 rli->record_align if empty base has user-specified alignment.
433 (build_base_field): Pass rli to it.
435 2007-09-28 Paolo Carlini <pcarlini@suse.de>
438 * error.c (dump_decl): Deal with TYPE_PACK_EXPANSION.
440 2007-09-28 Paolo Carlini <pcarlini@suse.de>
443 * error.c (dump_expr): Deal with ARGUMENT_PACK_SELECT.
444 (dump_type): Use dump_template_argument for TYPE_ARGUMENT_PACK.
445 (dump_parameters): Just call dump_type for argument packs too.
447 2007-09-28 Jakub Jelinek <jakub@redhat.com>
450 * tree.c (cp_build_qualified_type_real): Handle TYPE_PACK_EXPANSION
451 qualification by creating qualified PACK_EXPANSION_PATTERN and
452 then calling make_pack_expansion on it.
454 2007-09-27 Ollie Wild <aaw@google.com>
456 * typeck2.c (digest_init): Call cplus_expand_constant after
457 convert_for_initialization.
458 * cp-objcp-common.h (LANG_HOOKS_EXPAND_CONSTANT): Removed.
459 * expr.c (cplus_expand_constant): Updated function description.
461 2007-09-27 Jason Merrill <jason@redhat.com>
464 * decl2.c (is_late_template_attribute): Don't crash on unknown
467 2007-09-27 Paolo Carlini <pcarlini@suse.de>
470 * error.c (dump_expr): Deal with DELETE_EXPR and VEC_DELETE_EXPR.
471 * cxx-pretty-print.c (pp_cxx_delete_expression): Add missing
472 spaces in the formatting.
473 * cxx-pretty-print.h (pp_cxx_delete_expression): Declare.
475 2007-09-27 Jakub Jelinek <jakub@redhat.com>
477 * error.c (cxx_print_error_function): Add third argument, pass
478 it over to lhd_print_error_function.
479 (cp_print_error_function): If diagnostic->abstract_origin, print
481 * cp-tree.h (struct diagnostic_info): New forward decl.
482 (cxx_print_error_function): Add third argument.
484 2007-09-25 Simon Martin <simartin@users.sourceforge.net>
487 * name-lookup.c (pushtag): Do not create an implicit typedef before
488 the associated type declaration is known to be valid.
490 2007-09-25 Jakub Jelinek <jakub@redhat.com>
492 * tree.c (cxx_printable_name): Compare FUNCTION_DECL uids
493 rather than pointers.
495 2007-09-24 Danny Smith <dannysmith@user.sourceforge.net>
498 * search.c (check_final_overrider): Fail if
499 targetm.comp_type_attributes returns 0.
501 2007-09-24 Jason Merrill <jason@redhat.com>
504 * pt.c (resolve_typename_type): Don't look things up in the original
505 template if it would mean losing template arguments.
507 2007-09-24 Jakub Jelinek <jakub@redhat.com>
510 * cp-tree.h (cxx_type_hash_eq): New prototype.
511 * cp-objcp-common.h (LANG_HOOKS_TYPE_HASH_EQ): Redefine.
512 * tree.c (cxx_type_hash_eq): New function.
514 2007-09-24 Douglas Gregor <doug.gregor@gmail.com>
517 * tree.c (cp_build_qualified_type_real): Build a canonical
518 ARRAY_TYPE if the original ARRAY_TYPE was not a canonical type.
520 2007-09-24 Douglas Gregor <doug.gregor@gmail.com>
524 * tree.c (cplus_array_compare): Compare pointers, not types.
525 (build_cplus_array_type_1): Store new array type into the hash
526 table before building the canonical type; build the canonical type
528 (cp_build_qualified_type_real): Put all of the array types with
529 cv-qualified element types into the C++ array hash table, built as
530 variants of the unqualified versions.
532 2007-09-23 Jason Merrill <jason@redhat.com>
535 * decl.c (grokdeclarator): Look through implicit TYPE_DECLs
536 for deprecation warnings.
538 2007-09-22 Jason Merrill <jason@redhat.com>
541 * call.c (build_over_call): Warn about deprecated virtuals.
544 * cp-tree.h (ATTR_IS_DEPENDENT): New macro.
545 (MAYBE_TAGGED_TYPE_P): Remove.
546 * pt.c (apply_late_template_attributes): Check ATTR_IS_DEPENDENT
547 instead of calling is_late_template_attribute again.
548 (tsubst_decl) [TYPE_DECL]: Just check if the name is the tag.
549 (tsubst): A typedef is a TYPE_NAME != TYPE_MAIN_DECL.
550 Don't crash on typedefs from non-template classes.
551 * decl2.c (grokfield): Don't sorry about attrs on template parms.
552 (is_late_template_attribute): All attributes applied to template
553 parms or typename types are dependent. Static.
554 (splice_template_attributes): Pass decl through.
555 (save_template_attributes): Likewise.
557 2007-09-20 Jakub Jelinek <jakub@redhat.com>
560 * pt.c (tsubst_copy) <case SIZEOF_EXPR>: Handle error_mark_node
561 returned from tsubst_pack_expansion.
562 (tsubst_copy_and_build) <case SIZEOF_EXPR>: Likewise.
563 (tsubst_copy_and_build) <case CONSTRUCTOR>: Likewise.
565 2007-09-20 Paolo Carlini <pcarlini@suse.de>
568 * semantics.c (finish_id_expression): Use consistently
569 context_for_name_lookup.
570 * decl.c (fixup_anonymous_aggr): Fix error message for
571 anonymous struct (vs union).
573 2007-09-19 Jason Merrill <jason@redhat.com>
576 * pt.c (tsubst): Handle typedefs by looking for the specialization.
577 (retrieve_specialization): Only tagged types use
578 DECL_TEMPLATE_INSTANTIATIONS.
579 (instantiate_class_template): Push nested classes too.
580 (tsubst_decl) [TYPE_DECL]: Only check for canonical decl for
582 * cp-tree.h (MAYBE_TAGGED_TYPE_P): New macro.
583 * init.c (is_aggr_type): Remove redundant tests.
584 * class.c (push_nested_class): Use CLASS_TYPE_P.
586 2007-09-20 Paolo Carlini <pcarlini@suse.de>
589 * init.c (build_zero_init): If, recursively, build_zero_init
590 returns a NULL_TREE, do not append it to the VEC of constructors.
592 2007-09-18 Jason Merrill <jason@redhat.com>
595 * pt.c (apply_late_template_attributes): Set processing_template_decl.
596 (tsubst_decl) [TYPE_DECL]: Preserve naming typedef, pass
597 ATTR_FLAG_TYPE_IN_PLACE.
598 (tsubst): Do unqualified lookup to find typedefs from current class.
599 [ARRAY_TYPE]: Propagate alignment info.
600 * decl2.c (is_late_template_attribute): Only defer handling of
601 attribute aligned if the expression is dependent.
602 (save_template_attributes): If we're deferring any attributes,
603 make this a naming typedef.
605 2007-09-18 Paolo Carlini <pcarlini@suse.de>
608 * cxx-pretty-print.c (pp_cxx_va_arg_expression): Print
609 va_arg instead of __builtin_va_arg.
611 2007-09-18 Paolo Carlini <pcarlini@suse.de>
614 * cxx-pretty-print.c (pp_cxx_va_arg_expression): Add.
615 (pp_cxx_primary_expression): Use it.
616 * cxx-pretty-print.h (pp_cxx_va_arg_expression): Declare.
617 * error.c (dump_expr): Use it.
619 2007-09-18 Paolo Carlini <pcarlini@suse.de>
622 * cxx-pretty-print.c (pp_cxx_postfix_expression): Split
623 out case TYPEID_EXPR to...
624 (pp_cxx_typeid_expression): ... here; use pp_cxx_left_paren
625 and pp_cxx_right_paren.
626 * cxx-pretty-print.h (pp_cxx_typeid_expression): Declare.
627 * error.c (dump_expr): Use it.
629 2007-09-18 Paolo Carlini <pcarlini@suse.de>
632 * cxx-pretty-print.c (pp_cxx_trait_expression): Add.
633 (pp_cxx_primary_expression): Use it.
634 * cxx-pretty-print.h (pp_cxx_trait_expression): Declare.
635 * error.c (dump_expr): Use it.
637 2007-09-16 Paolo Carlini <pcarlini@suse.de>
640 * init.c (build_new): Remove warning for zero-element
643 2007-09-16 Nathan Sidwell <nathan@codesourcery.com>
646 * call.c (maybe_handle_implicit_object): Set this_p, clear
647 rvaluedness_matches_p.
648 (compare_ics): Do not compare rvaluedness matching when one of the
649 operands is an implicit object.
651 2007-09-14 Jason Merrill <jason@redhat.com>
653 PR c++/17743, c++/19163
654 * decl2.c (is_late_template_attribute): New fn.
655 (splice_template_attributes, save_template_attributes): New fns.
656 (cplus_decl_attributes): Call save_template_attributes.
657 * pt.c (apply_late_template_attributes): New fn.
658 (instantiate_class_template, tsubst_decl): Use it.
659 * cp-tree.h: Declare is_late_template_attribute.
661 2007-09-13 Tom Tromey <tromey@redhat.com>
663 * parser.c (cp_lexer_new_main): Don't use
664 c_lex_return_raw_strings.
665 (cp_lexer_get_preprocessor_token): Update. Add special case when
668 2007-09-11 Jan Hubicka <jh@suse.cz>
670 * method.c (use_thunk): Use tree_rest_of_compilation
671 * cp-objecp-common.h (LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Kill.
672 (LANG_HOOKS_CALLGRAPH_EMIT_ASSOCIATED_THUNKS): Define.
673 * cp-tree.h (expand_body): Kill.
674 (emit_associated_thunks): Declare.
675 * semantics.c (emit_associated_thunks): Export.
678 2007-09-09 David Daney <ddaney@avtrex.com>
681 * init.c (build_new_1): Use POINTER_PLUS_EXPR instead of MINUS_EXPR
682 to calculate cookie_ptr.
684 2007-09-08 Jason Merrill <jason@redhat.com>
687 * pt.c (most_specialized_class): Set processing_template_decl
688 while tsubsting partial spec args.
690 2007-09-06 Jason Merrill <jason@redhat.com>
692 * decl2.c (get_guard): Copy visibility from the guarded variable.
694 2007-09-06 Jan Hubicka <jh@suse.cz>
696 * semantics.c (expand_body): Do not mark arguments of clones used.
698 2007-09-06 Paolo Carlini <pcarlini@suse.de>
701 * decl.c (cp_finish_decl): When processing_template_decl,
702 deal correctly with init as TREE_LIST.
704 2007-09-06 Tom Tromey <tromey@redhat.com>
706 * decl.c (finish_function): Put return's location on line zero of
709 2007-09-05 Jason Merrill <jason@redhat.com>
712 * except.c (prepare_eh_type): Use type_decays_to.
715 * init.c (build_delete): Use build_headof to get the address of the
716 complete object if we aren't using the deleting destructor.
717 * rtti.c (build_headof): No longer static.
718 * cp-tree.h: Declare it.
720 2007-09-06 Jakub Jelinek <jakub@redhat.com>
722 * decl.c (duplicate_decls): Set TREE_NOTHROW on __builtin_XX
723 decl if a prototype for XX is provided with throw().
726 * decl.c (builtin_function_1): Set DECL_ANTICIPATED also
727 on __*_chk non-__builtin_* decls.
729 2007-09-05 Paolo Carlini <pcarlini@suse.de>
732 * semantics.c (finish_id_expression): Use context_for_name_lookup
733 insted of DECL_CONTEXT, to see through anonymous structs and unions.
734 * class.c (finish_struct_anon): Deal correctly with anonymous
735 structs (vs unions, as GNU extension) in error messages.
737 2007-09-05 Jan Hubicka <jh@suse.cz>
739 * cp/sematics.c (expand_body): Remove unnecesary import_export_decl
740 call, DECL_EXTERNAL checks and current_function_decl saving.
742 2007-09-05 Paolo Carlini <pcarlini@suse.de>
745 * parser.c (cp_parser_primary_expression): Return error_mark_node
746 when a statement-expression is found in a template-argument list.
748 2007-09-04 Jason Merrill <jason@redhat.com>
750 * except.c (initialize_handler_parm): Use
751 fold_build_cleanup_point_expr.
754 * call.c (reference_binding): Don't look for user-defined conversions
758 * except.c (initialize_handler_parm): Put a CLEANUP_POINT_EXPR inside
759 the MUST_NOT_THROW_EXPR.
761 2007-09-04 Richard Sandiford <richard@codesourcery.com>
763 * decl.c (cp_finish_decl): Call determine_visibility before
764 make_rtl_for_nonlocal_decl.
766 2007-09-04 Jason Merrill <jason@redhat.com>
769 * pt.c (most_specialized_class): Substitute outer template
770 arguments into the arguments of a member template partial
772 (strip_innermost_template_args): New fn.
774 2007-09-03 Daniel Jacobowitz <dan@codesourcery.com>
776 * Make-lang.in (g++spec.o): Remove SHLIB_MULTILIB.
778 2007-09-03 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
780 * call.c (name_as_c_string): Supply a TYPE for CONST_CAST.
781 * decl.c (cp_make_fname_decl): Likewise,
782 * parser.c (cp_parser_string_literal): Likewise,
783 * tree.c (pod_type_p, zero_init_p): Use CONST_CAST_TREE.
784 * typeck.c (cp_type_quals, cp_type_readonly, cp_has_mutable_p):
787 2007-09-02 Paolo Carlini <pcarlini@suse.de>
790 * typeck.c (build_unary_op): Fix error message for
791 Boolean expression as operand to operator--.
793 2007-09-01 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
795 * tree.c (pod_type_p, zero_init_p): Use strip_array_types.
796 * typeck.c (cp_type_quals, cp_type_readonly, cp_has_mutable_p):
799 2007-08-31 Douglas Gregor <doug.gregor@gmail.com>
802 * init.c (build_default_init): Make extern.
803 * cp-tree.h (build_default_init): Declare here.
804 * pt.c (tsubst_expr): When the instantiation of the initializer of
805 a variable results in an empty list, default-initialize the
807 (tsubst_copy_and_build): When the instantiation of the initializer
808 in a new expression results in an empty initializer list,
809 default-initialize it.
811 2007-08-31 Douglas Gregor <doug.gregor@gmail.com>
813 * mangle.c (write_type): Change mangling of rvalue reference from
816 2007-08-31 Jakub Jelinek <jakub@redhat.com>
818 * decl.c (duplicate_decls): Remove duplicated line.
820 2007-08-31 Paolo Carlini <pcarlini@suse.de>
823 * cxx-pretty-print.c (pp_cxx_unqualified_id): Deal with
824 BOUND_TEMPLATE_TEMPLATE_PARM.
826 2007-08-31 Paolo Carlini <pcarlini@suse.de>
829 * search.c (lookup_member): Check the name argument for
832 2007-08-31 Paolo Carlini <pcarlini@suse.de>
835 * parser.c (cp_parser_trait_expr): Check rerurn value of
838 2007-08-30 Ollie Wild <aaw@google.com>
840 * cvt.c (cp_convert_to_pointer): Remove force parameter. Call
841 convert_ptrmem for pointer to member conversions.
842 (convert_to_pointer_force): Update cp_convert_to_pointer call.
843 (ocp_convert): Update cp_convert_to_pointer call.
844 * typeck.c (convert_ptrmem): Add conditional for null pointers to
846 (build_static_cast_1): Check can_convert for conversions in either
848 (get_delta_difference_1): New function.
849 (get_delta_difference): Refactor to call get_delta_difference_1.
851 2007-08-30 Jakub Jelinek <jakub@redhat.com>
853 * decl.c (start_preparsed_function): Set
854 DECL_DISREGARD_INLINE_LIMITS for GNU_INLINE_P functions.
856 2007-08-28 Paolo Carlini <pcarlini@suse.de>
859 * error.c (dump_expr): Deal with TEMPLATE_TYPE_PARM and
860 BOUND_TEMPLATE_TEMPLATE_PARM.
862 2007-08-28 Jakub Jelinek <jakub@redhat.com>
866 * pt.c (check_explicit_specialization): Set DECL_INTERFACE_KNOWN
867 and DECL_NOT_REALLY_EXTERN if tmpl_func is not public.
869 2007-08-27 Jason Merrill <jason@redhat.com>
872 * pt.c (build_non_dependent_expr, type_dependent_expression_p):
873 Look inside STMT_EXPR.
874 * semantics.c (stmt_expr_value_expr): New fn.
875 * cp-tree.h: Declare it.
878 * decl.c (groktypename): Ignore attributes applied to class type.
880 2007-08-28 Richard Guenther <rguenther@suse.de>
882 * decl.c (duplicate_decls): Merge DECL_DISREGARD_INLINE_LIMITS.
884 2007-08-28 Gabriel Dos Reis <gdr@integrable-solutions.net>
886 * error.c (dump_expr): Handle COMPLEX_CST.
887 * cxx-pretty-print.c (pp_cxx_primary_expression): Likewise.
888 (pp_cxx_expression): Likewise.
890 2007-08-27 Alexandre Oliva <aoliva@redhat.com>
892 * decl.c (GNU_INLINE_P): New.
893 (duplicate_decls): Handle gnu_inline. Merge attributes and
894 some flags in overriding definitions.
895 (redeclaration_error_message): Handle gnu_inline.
896 (start_preparsed_function): Likewise.
898 2007-08-25 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
900 * call.c (sufficient_parms_p): Constify.
901 * class.c (same_signature_p): Likewise.
902 * cp-gimplify.c (is_invisiref_parm,
903 cxx_omp_privatize_by_reference): Likewise.
904 * cp-objcp-common.c (has_c_linkage): Likewise.
905 * cp-tree.h (NON_THUNK_FUNCTION_CHECK, THUNK_FUNCTION_CHECK,
906 sufficient_parms_p, same_signature_p, copy_fn_p, move_fn_p,
907 grok_ctor_properties, nothrow_libfn_p, skip_artificial_parms_for,
908 num_artificial_parms_for, comp_template_parms,
909 template_parameter_pack_p, any_dependent_template_arguments_p,
910 any_type_dependent_arguments_p, any_value_dependent_elements_p,
911 repo_export_class_p, cxx_omp_privatize_by_reference, pod_type_p,
912 zero_init_p, member_p, cp_lvalue_kind,
913 builtin_valid_in_constant_expr_p, decl_anon_ns_mem_p,
914 varargs_function_p, is_dummy_object, special_function_kind,
915 string_conv_p, type_unknown_p, comp_except_specs, compparms,
916 comp_cv_qualification, is_bitfield_expr_with_lowered_type,
917 unlowered_expr_type, ptr_reasonably_similar, cp_type_readonly,
918 cp_has_mutable_p, at_least_as_qualified_p,
919 invalid_nonstatic_memfn_p, lvalue_or_else, lvalue_p): Likewise.
920 * decl.c (copy_fn_p, move_fn_p, grok_ctor_properties): Likewise.
921 * except.c (nothrow_libfn_p): Likewise.
922 * method.c (skip_artificial_parms_for, num_artificial_parms_for):
924 * pt.c (comp_template_parms, template_parameter_pack_p,
925 any_type_dependent_arguments_p, any_value_dependent_elements_p,
926 any_dependent_template_arguments_p): Likewise.
927 * repo.c (repo_export_class_p): Likewise.
928 * semantics.c (anon_aggr_type_p): Likewise.
929 * tree.c (lvalue_p_1, real_lvalue_p, lvalue_p,
930 builtin_valid_in_constant_expr_p, decl_anon_ns_mem_p,
931 varargs_function_p, member_p, is_dummy_object, pod_type_p,
932 zero_init_p, special_function_p): Likewise.
933 * typeck.c (comp_array_types, type_unknown_p, comp_except_specs,
934 comp_array_types, at_least_as_qualified_p, comp_cv_qualification,
935 compparms, invalid_nonstatic_memfn_p,
936 is_bitfield_expr_with_lowered_type, unlowered_expr_type,
937 string_conv_p, ptr_reasonably_similar, cp_type_readonly,
938 cp_has_mutable_p, lvalue_or_else): Likewise.
940 2007-08-25 Paolo Bonzini <bonzini@gnu.org>
942 * decl.c (cp_tree_node_structure): Kill TINST_LEVEL case.
943 * cp-objcp-common.c (cp_tree_size): Ditto.
944 * tree.c (cp_walk_subtrees): Ditto
945 * cp-tree.def (TINST_LEVEL): Go away.
946 * cp-tree.h (struct tinst_level_s): Rename to struct tinst_level,
947 move together with other non-tree structs.
948 (enum cp_tree_node_structure_enum): Nuke TS_CP_TINST_LEVEL.
949 (union lang_tree_node): Eliminate tinst_level field.
950 (TINST_DECL, TINST_LOCATION, TINST_IN_SYSTEM_HEADER_P): Annihilate.
951 (current_instantiation, outermost_tinst_level): Return
952 a "struct tinst_level *".
954 * error.c (print_instantiation_partial_context): Change second
955 parameter to a "struct tinst_level *". Replace accessor macros
957 (print_instantiation_full_context): Likewise.
958 * lex.c (in_main_input_context): Likewise.
960 * pt.c (struct pending_templates): New.
961 (pending_templates, last_pending_template): Use it as a type.
962 (current_tinst_level): Change typo to "struct tinst_level *"
963 (reopen_tinst_level): Accept "struct tinst_level *", return decl.
964 (add_pending_template): Construct a "struct pending_template".
965 Replace TINST_LEVEL accessor macros with field access.
966 (push_tinst_level): Likewise, using GGC_NEW instead of make_node.
967 (pop_tinst_level): Likewise.
968 (instantiate_pending_templates): Likewise. Factor common code used
969 when an instantiation has been done.
970 (outermost_tinst_level): Replace tree_last with loop.
971 (current_instantiation): Return a "struct tinst_level *".
973 2007-08-24 Ollie Wild <aaw@google.com>
975 * name-lookup.c (add_decl_to_level): Remove addition to vtables chain.
976 * name-lookup.h (cp_binding_level): Remove vtables member.
978 2007-08-24 Richard Guenther <rguenther@suse.de>
980 * tree.c (cp_cannot_inline_tree_fn): Remove.
981 * cp-tree.h (cp_cannot_inline_tree_fn): Likewise.
982 * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN):
985 2007-08-24 Jakub Jelinek <jakub@redhat.com>
988 * typeck.c (build_unary_op) <case PREINCREMENT_EXPR>: Return
989 error_mark_node right away if build_expr_type_conversion
993 * name-lookup.c (set_decl_namespace): lookup_qualified_name failure
994 is error_mark_node rather than NULL_TREE.
995 * pt.c (check_explicit_specialization): Likewise.
998 * error.c (resolve_virtual_fun_from_obj_type_ref): Handle
999 TARGET_VTABLE_USES_DESCRIPTORS targets properly.
1001 2007-08-22 Jason Merrill <jason@redhat.com>
1004 * pt.c (outermost_tinst_level): New function.
1005 * lex.c (in_main_input_context): New function.
1006 * cp-tree.h: Declare it.
1007 * decl2.c (constrain_class_visibility): Use it to avoid warning
1008 about uses of the anonymous namespace in the main input file.
1010 2007-08-21 Jakub Jelinek <jakub@redhat.com>
1012 * init.c (build_new_1): Use get_target_expr instead of save_expr.
1014 2007-08-20 Pawel Sikora <pluto@pld-linux.org>
1017 * class.c (finish_struct_1): Warn when a class has virtual
1018 functions and accessible non-virtual destructor.
1020 2007-08-20 Richard Guenther <rguenther@suse.de>
1024 * call.c (build_new_method_call): Convert initializer to
1026 * init.c (build_aggr_init): Do not fiddle with types.
1027 (build_vec_delete_1): Use correct type for POINTER_PLUS_EXPR.
1028 * except.c (build_throw): Do not drop qualifiers for the
1030 * typeck.c (get_member_function_from_ptrfunc): Do not
1031 fiddle with types, instead convert.
1032 (build_ptrmemfunc1): Convert to the target type for
1034 (gfc_trans_allocate): Convert result to target type.
1035 * cp-objcp-common.c (cxx_get_alias_set): Pointers to
1036 pointer-to-member structures shall have alias set zero as well.
1038 2007-08-20 Richard Guenther <rguenther@suse.de>
1040 * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P):
1042 * cp-tree.h (cp_auto_var_in_fn_p): Remove.
1043 (nonstatic_local_decl_p): Likewise.
1044 * tree.c (cp_auto_var_in_fn_p): Remove.
1045 * decl.c (nonstatic_local_decl_p): Remove.
1047 2007-08-20 Richard Guenther <rguenther@suse.de>
1049 * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_WALK_SUBTREES):
1051 * tree.h (cp_walk_tree): New define to walk_tree_1 with
1052 cp_walk_subtrees lh parameter.
1053 (cp_walk_tree_without_duplicates): New define to
1054 walk_tree_without_duplicates_1 with cp_walk_subtrees lh parameter.
1055 * tree.c (count_trees): Call
1056 cp_walk_tree_without_duplicates.
1057 (verify_stmt_tree): Call cp_walk_tree.
1058 (break_out_target_exprs): Likewise.
1059 (WALK_SUBTREE): Likewise.
1060 * cp-gimplify.c (cp_genericize): Likewise.
1061 * cp-pt.c (find_parameter_packs_r): Likewise.
1062 (uses_parameter_packs): Likewise.
1063 (make_pack_expansion): Likewise.
1064 (check_for_bare_parameter_packs): Likewise.
1065 (for_each_template_parm): Likewise.
1066 * decl.c (check_default_argument): Call
1067 cp_walk_tree_without_duplicates.
1068 * except.c (build_throw): Likewise.
1069 * decl2.c (type_visibility): Likewise.
1070 * semantics.c (expand_or_defer_fn): Likewise.
1071 (finalize_nrv): Call cp_walk_tree.
1073 2007-08-20 Jakub Jelinek <jakub@redhat.com>
1076 * init.c (build_new_1): Rename placement_var variable to placement_expr.
1077 Initialize it with save_expr rather than get_temp_regvar.
1079 2007-08-17 Andrew Pinski <andrew_pinski@playstation.sony.com>
1082 * tree.c (lvalue_p_1 <case SAVE_EXPR>): SAVE_EXPRs are never
1085 2007-08-17 Ollie Wild <aaw@google.com>
1088 * name-lookup.c (do_nonmember_using_decl): Shift implicit type
1089 declarations into appropriate slots for comparison. Fix type
1092 2007-08-17 Paolo Carlini <pcarlini@suse.de>
1095 * error.c (dump_decl): Deal with UNBOUND_CLASS_TEMPLATE.
1096 * cxx-pretty-print.c (pp_cxx_unqualified_id): Likewise.
1098 2007-08-17 Paolo Carlini <pcarlini@suse.de>
1101 * parser.c (cp_parser_class_head): Improve error message.
1103 2007-08-16 Seongbae Park <seongbae.park@gmail.com>
1105 * pt.c (instantiate_decl): Set input_location
1106 for the function end.
1108 2007-08-16 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1110 * cp-objcp-common.c (cxx_warn_unused_global_decl, cp_expr_size):
1112 * cp-tree.h (local_variable_p, nonstatic_local_decl_p,
1113 class_tmpl_impl_spec_p, cp_auto_var_in_fn_p, cp_type_quals,
1114 cxx_incomplete_type_diagnostic, cxx_incomplete_type_error,
1115 cxx_warn_unused_global_decl, cp_expr_size): Likewise.
1116 * decl.c (local_variable_p, nonstatic_local_decl_p): Likewise.
1117 * tree.c (class_tmpl_impl_spec_p, cp_auto_var_in_fn_p): Likewise.
1118 * typeck.c (cp_type_quals): Likewise.
1119 * typeck2.c (cxx_incomplete_type_diagnostic,
1120 cxx_incomplete_type_error): Likewise.
1122 2007-08-16 Paolo Carlini <pcarlini@suse.de>
1125 * pt.c (tsubst_friend_function): When check_classfn
1126 returns error_mark_node likewise return it.
1128 2007-08-15 Jakub Jelinek <jakub@redhat.com>
1131 * typeck.c (check_return_expr): Don't NRV optimize vars in
1133 * decl.c (finish_function): Comment fix.
1135 2007-08-15 Paolo Carlini <pcarlini@suse.de>
1138 * pt.c (push_template_decl_real): Depending on TYPE_P
1139 use either TYPE_CONTEXT or DECL_CONTEXT.
1141 2007-08-14 Mark Mitchell <mark@codesourcery.com>
1143 * semantics.c (finish_omp_clauses): Strip a NOP_EXPR if
1144 constructors and destructors return this.
1146 2007-08-14 Paolo Carlini <pcarlini@suse.de>
1149 * decl2.c (check_classfn): Return error_mark_node in case of error;
1150 in that case, do not call add_method.
1151 * decl.c (start_decl): Deal with check_classfn returning
1153 (grokfndecl): Likewise.
1154 * pt.c (tsubst_friend_function): Likewise.
1156 2007-08-14 Andrew Pinski <pinskia@gmail.com>
1159 * typeck.c (build_binary_op): Disallow vector float types with
1160 BIT_IOR_EXPR, BIT_AND_EXPR, and BIT_XOR_EXPR.
1162 2007-08-11 Ian Lance Taylor <iant@google.com>
1164 * cp-objcp-common.c (cxx_get_alias_set): Change return type to
1166 * cp/cp-tree.h (cxx_get_alias_set): Update declaration.
1168 2007-08-10 Ollie Wild <aaw@google.com>
1170 * name-lookup.c (do_nonmember_using_decl): Print an error for ambiguous
1172 (ambiguous_decl): Construct tree of ambiguous types. Remove extaneous
1174 (unqualified_namespace_lookup): Fix ambiguous_decl call.
1175 (lookup_using_namespace): Fix ambiguous_decl call.
1176 (qualified_lookup_using_namespace): Fix ambiguous_decl call.
1178 2007-08-10 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1180 * call.c (name_as_c_string): Use CONST_CAST.
1181 * decl.c (build_decl): Likewise.
1182 * parser.c (cp_parser_string_literal): Likewise.
1184 2007-08-10 Paolo Carlini <pcarlini@suse.de>
1187 * error.c (dump_expr): Consistently use the *_cxx_*
1188 variants of the pretty-print functions.
1190 2007-08-10 Paolo Carlini <pcarlini@suse.de>
1193 * decl.c (check_special_function_return_type): Just error
1194 on return type specified for conversion operator.
1196 2007-08-09 Daniel Berlin <dberlin@dberlin.org>
1198 * typeck2.c (readonly_error): Handle general expressions.
1199 * error.c (dump_expr): Handle POINTER_PLUS_EXPR
1201 2007-08-06 Dan Hipschman <dsh@google.com>
1203 * method.c (use_thunk): Use DECL_NAME instead of DECL_RTL to
1204 access function name.
1206 2007-08-04 Alfred Minarik <a.minarik@aon.at>
1209 * lang-specs.h: Add .hp, .hxx, .hpp, .h, .HPP, .tcc as c++ header.
1210 * g++spec.c (lang_specific_driver): Check them.
1212 2007-08-06 Paolo Carlini <pcarlini@suse.de>
1215 * pt.c (inline_needs_template_parms): Fix comment; change return type
1218 2007-08-05 Volker Reichelt <v.reichelt@netcologne.de>
1221 2007-03-26 Dirk Mueller <dmueller@suse.de>
1223 * parser.c (cp_parser_member_declaration): Pedwarn
1224 about stray semicolons after member declarations.
1226 2007-08-02 Lee Millward <lee.millward@gmail.com>
1231 * parser.c (cp_parser_asm_definition): Detect and discard asm
1232 statements with invalid inputs or outputs.
1233 (cp_parser_asm_operand_list): Return error mark node if any
1234 of the operands are invalid. Adjust documentation.
1236 2007-08-02 Nick Clifton <nickc@redhat.com>
1238 * typeck.c: Change copyright header to refer to version 3 of the
1239 GNU General Public License and to point readers at the COPYING3
1240 file and the FSF's license web page.
1241 * optimize.c, lang-specs.h, init.c, class.c, repo.c, decl.c,
1242 config-lang.in, cp-tree.def, call.c, decl.h, ptree.c,
1243 Make-lang.in, method.c, rtti.c, cp-objcp-common.c, g++spec.c,
1244 cp-objcp-common.h, except.c, error.c, operators.def, cvt.c,
1245 tree.c, mangle.c, cp-tree.h, dump.c, search.c, friend.c, expr.c,
1246 cp-gimplify.c, cxx-pretty-print.c, cp-lang.c, typeck2.c, pt.c,
1247 cxx-pretty-print.h, semantics.c, name-lookup.c, lex.c, decl2.c,
1248 name-lookup.h, parser.c: Likewise.
1250 2007-08-01 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1253 * call.c (magic_varargs_p): Honor the "type generic" attribute.
1255 2007-07-30 Paolo Carlini <pcarlini@suse.de>
1258 * semantics.c (finish_label_stmt): Reject the __label__
1259 extension outside function scopes.
1261 2007-07-29 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1263 * parser.c (eof_token): Un-constify.
1264 (cp_lexer_new_main, cp_lexer_new_from_tokens, VEC_alloc,
1265 cp_lexer_consume_token, cp_lexer_purge_token): Remove spurious
1268 2007-07-28 Kazu Hirata <kazu@codesourcery.com>
1270 * pt.c, tree.c, typeck2.c: Fix comment typos.
1272 2007-07-28 Simon Martin <simartin@users.sourceforge.net>
1273 Mark Mitchell <mark@codesourcery.com>
1276 * name-lookup.c (lookup_name_real): Non namespace-scope bindings can be
1277 hidden due to friend declarations in local classes.
1279 2007-07-27 Douglas Gregor <doug.gregor@gmail.com>
1281 * typeck.c (structural_comptypes): Compare DECLTYPE_TYPE nodes.
1282 * cp-tree.def (DECLTYPE_TYPE): New.
1283 * error.c (dump_type): Dump DECLTYPE_TYPE nodes.
1284 (dump_type_prefix): Ditto.
1285 (dump_type_suffix): Ditto.
1286 * tree.c (DECLTYPE_TYPE): Walk DECLTYPE_TYPE nodes.
1287 * mangle.c (write_type): Handle DECLTYPE_TYPE.
1288 * cp-tree.h (IS_AGGR_TYPE): DECLTYPE_TYPE nodes can be aggregate
1290 (DECLTYPE_TYPE_EXPR): New.
1291 (DECLTYPE_TYPE_ID_EXPR_OR_MEMBER_ACCESS_P): New.
1292 (finish_declared_type): Declare.
1293 * cxx-pretty-print.c (pp_cxx_type_specifier_seq): Print
1294 DECLTYPE_TYPE nodes.
1295 (pp_cxx_type_id): Ditto.
1296 * pt.c (for_each_template_parm_r): Walk DECLTYPE_TYPE children.
1297 (tsubst): Substitute into a DECLTYPE_TYPE node.
1298 (tsubst_copy): Ditto.
1299 (unify): Cannot deduce anything from TYPEOF_TYPE or DECLTYPE_TYPE
1301 (dependent_type_p_r): DECLTYPE_TYPE types are always dependent.
1302 * semantics.c (finish_typeof): TYPEOF_TYPE types need to use
1303 structural equality (because we can't hash the expressions).
1304 (finish_declared_type): New.
1305 * lex.c (reswords): Add "decltype" keyword.
1306 * parser.c cp_lexer_next_token_is_decl_specifier_keyword
1307 (cp_parser_postfix_expression): Add member_access_only_p to
1308 restrict postfix expression to member access expressions.
1309 (cp_parser_unary_expression): Update call to
1310 cp_parser_postfix_expression to reflect new parameter.
1311 (cp_parser_declared_type): New.
1312 (cp_parser_simple_type_specifier): Parse decltype types.
1314 2007-07-27 Mark Mitchell <mark@codesourcery.com>
1317 * call.c (convert_for_arg_passing): Only widen bitfields to their
1318 declared types if necessary.
1320 2007-07-25 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1322 * parser.c (cp_parser_string_literal, cp_parser_sizeof_operand):
1325 2007-07-25 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1327 * decl.c (typename_hash, typename_compare): Constify.
1328 * mangle.c (hash_type, compare_type): Likewise.
1329 * pt.c (eq_local_specializations, hash_local_specialization):
1331 * tree.c (cplus_array_hash, cplus_array_compare, list_hash_eq,
1332 list_hash): Likewise.
1333 * typeck2.c (pat_compare): Likewise.
1335 2007-07-24 Nathan Sidwell <nathan@codesourcery.com>
1337 * method.c (implicitly_declare_fn): Increase alignment if member
1338 function pointer format requires it.
1340 2007-07-24 Paolo Carlini <pcarlini@suse.de>
1343 * typeck.c (check_return_expr): Do not pass a null argument
1346 2007-07-24 Paolo Carlini <pcarlini@suse.de>
1349 * decl.c (redeclaration_error_message): Call DECL_ANON_UNION_VAR_P
1352 2007-07-22 Nathan Sidwell <nathan@codesourcery.com>
1355 * typeck.c (convert_arguments): Only use default args if we have
1359 * typeck.c (structural_comptypes): No need to check
1360 resolve_typename_type return value here.
1361 * cp-tree.h (TYPENAME_IS_RESOLVING_P): New.
1362 * pt.c (resolve_typename_type): Follow typename typedefs. Return
1363 original type rather than error_mark_node in case of failure.
1364 * parser.c (cp_parser_nested_name_specifier_opt): Adjust
1365 resolve_typename_type result check.
1366 (cp_parser_direct_declarator, cp_parser_head,
1367 cp_parser_constructor_declarator_p): Likewise.
1369 2007-07-12 Kazu Hirata <kazu@codesourcery.com>
1371 * pt.c (template_parms_variadic_p): Remove.
1372 * cp-tree.h: Remove the prototype for template_parms_variadic_p.
1374 2007-07-12 Jakub Jelinek <jakub@redhat.com>
1377 * error.c (dump_expr) <case AGGR_INIT_EXPR>: Pass true as last
1378 argument to dump_aggr_init_expr_args instead of false.
1380 2007-07-11 Douglas Gregor <doug.gregor@gmail.com>
1382 * typeck.c (comptypes): When USE_CANONICAL_TYPES, use the
1383 canonical types; otherwise, fall back to structural type
1384 comparisons. If ENABLE_CHECKING and USE_CANONICAL_TYPES, give an
1385 internal compiler error if the canonical types are wrong.
1387 2007-07-11 Paolo Carlini <pcarlini@suse.de>
1390 * parser.c (cp_parser_make_indirect_declarator): When the
1391 the code argument is ERROR_MARK return cp_error_declarator.
1393 2007-07-09 Geoffrey Keating <geoffk@apple.com>
1396 * decl.c (cxx_init_decl_processing): Don't set
1397 force_align_functions_log.
1398 (grokfndecl): Honour ptrmemfunc_vbit_in_pfn.
1399 * typeck.c (cxx_alignof_expr): When alignof is used on a plain
1400 FUNCTION_DECL, return its alignment.
1402 2007-07-09 Richard Guenther <rguenther@suse.de>
1404 * decl.c (start_preparsed_function): Do not promote return type.
1406 2007-07-08 Paolo Carlini <pcarlini@suse.de>
1409 * pt.c (unify): Never pass error_mark_node to template_decl_level.
1411 2007-07-07 Mark Mitchell <mark@codesourcery.com>
1414 * pt.c (resolve_overloaded_unification): Robustify. Return a
1416 (type_unification_real): Adjust accordingly.
1418 2007-07-06 Richard Guenther <rguenther@suse.de>
1420 * init.c (build_new_1): Use the correct pointer type.
1421 * typeck2.c (build_m_component_ref): Likewise.
1423 2007-07-05 Mark Mitchell <mark@codesourcery.com>
1426 * init.c (build_zero_init): Always build an initializer for
1428 * typeck2.c (build_functional_cast): Use build_zero_init.
1431 * init.c (build_new_1): Always pass the allocation function to
1432 build_op_delete_call.
1433 * call.c (build_op_delete_call): Handle operator delete with a
1434 variable-argument list. Do not issue an error when no matching
1435 deallocation function is available for a new operator.
1438 * cp-tree.h (any_value_dependent_elements_p): Declare it.
1439 * decl.c (value_dependent_init_p): New function.
1440 (cp_finish_decl): Use it.
1441 * pt.c (value_dependent_expression_p): Use
1442 any_value_dependent_elements_p.
1443 * parser.c (cp_parser_primary_expression): Add comment about
1444 treating dependent qualified names as integral
1445 constant-expressions.
1447 2007-07-04 Douglas Gregor <doug.gregor@gmail.com>
1449 * decl.c (build_ptrmemfunc_type): Always use structural equality
1450 tests when comparing pointer-to-member-function types, because the
1451 handling of TYPE_GET_PTRMEMFUNC_TYPE currently defeats canonical
1454 2007-07-03 Mark Mitchell <mark@codesourcery.com>
1456 * init.c (build_new): Tweak comment.
1458 2007-06-29 Dave Brolley <brolley@redhat.com>
1461 * parser.c (cp_parser_new_type_id): Don't reduce a named array
1462 type to its base type and number of elements here.
1463 * init.c (build_new): Call complete_type_or_else to ensure that the
1464 type is complete and to issue a diagnostic if it is not.
1465 (build_new_1): Don't call complete_type_or_else here.
1467 2007-07-03 Richard Guenther <rguenther@suse.de>
1470 * class.c (fixed_type_or_null): Re-lookup the hashtable slot
1473 2007-07-02 Simon Baldwin <simonb@google.com>
1475 * parser.c (cp_parser_elaborated_type_specifier): Added a warning
1476 for inner-style nested forward declarations that don't declare
1479 2007-07-02 Jakub Jelinek <jakub@redhat.com>
1482 * semantics.c (finish_omp_clauses): Use %qD instead of %qE for
1483 DECL_P in not a variable and appears more than once error messages.
1485 2007-07-01 Ollie Wild <aaw@google.com>
1487 * name-lookup.c (ambiguous_decl): Fix case when new->value is hidden.
1488 (select_decl): Remove function.
1489 (unqualified_namespace_lookup): Populate binding by calling
1490 ambiguous_decl. Remove select_decl call.
1491 (lookup_qualified_name): Remove select_decl call.
1492 * decl.c (lookup_and_check_tag): Check for ambiguous references.
1493 * parser.c (cp_parser_elaborated_type_specifier): Skip redundant error
1494 generation when name lookup is ambiguous.
1496 2007-06-29 Douglas Gregor <doug.gregor@gmail.com>
1499 * init.c (build_new_1): Use structural equality on the copy of the
1502 2007-06-28 Geoffrey Keating <geoffk@apple.com>
1504 * decl2.c (determine_visibility): Implement
1505 flag_visibility_ms_compat effect on type info.
1506 * decl.c (cxx_init_decl_processing): Implement
1507 global effect of flag_visibility_ms_compat.
1509 2007-06-28 Geoffrey Keating <geoffk@apple.com>
1511 * decl2.c (start_objects): Mark constructor-running function
1514 2007-06-26 Simon Martin <simartin@users.sourceforge.net>
1517 * decl.c (grokdeclarator): Reset friendp for member functions declared
1518 friend of their own class.
1520 2007-06-23 Mark Mitchell <mark@codesourcery.com>
1522 * decl2.c (determine_visibility): Don't look for dllexport here.
1523 (determine_visibility_from_class): Tidy.
1525 2007-06-18 Simon Baldwin <simonb@google.com>
1528 * parser.c (cp_parser_single_declaration): Added check for storage
1529 class other than sc_none in parsed declaration, and a flag to indicate
1530 if the call is part of an explicit template specialization parse.
1531 * (cp_parser_explicit_specialization): Specialization check flag added
1532 to call to cp_parser_single_declaration(), set true.
1533 * (cp_parser_template_declaration_after_export): Specialization check
1534 flag added to call to cp_parser_single_declaration(), set false.
1535 * pt.c (check_explicit_specialization): Added code to copy visiblity
1536 and linkage from the templated function to the explicit specialization.
1538 2007-06-15 Andrew Pinski <andrew_pinski@playstation.sony.com>
1540 * typeck.c (build_binary_op): For templates build the
1541 expression in pieces to avoid the assert in build2_stat.
1542 (get_member_function_from_ptrfunc):
1543 Change over to using POINTER_PLUS_EXPR and convert
1544 the second operand to sizetype.
1545 * typeck2.c (build_m_component_ref): Likewise.
1546 * init.c (expand_virtual_init): Create a POINTER_PLUS_EXPR
1547 instead of PLUS_EXPR for pointers.
1548 (build_new_1): Likewise.
1549 (build_vec_delete_1): Likewise.
1550 (build_vec_delete): Likewise.
1551 * class.c (build_base_path): Likewise.
1552 (build_base_path): Likewise.
1553 (convert_to_base_statically): Likewise.
1554 (fixed_type_or_null): Handle POINTER_PLUS_EXPR.
1555 (get_vtbl_decl_for_binfo): Handle POINTER_PLUS_EXPR
1556 instead of PLUS_EXPR.
1557 (dfs_accumulate_vtbl_inits): Create a POINTER_PLUS_EXPR
1558 instead of PLUS_EXPR for pointers.
1559 * call.c (build_special_member_call): Likewise.
1560 * rtti.c (build_headof): Likewise.
1561 Use sizetype instead of ptrdiff_type_node.
1562 (tinfo_base_init): Create a POINTER_PLUS_EXPR
1563 instead of PLUS_EXPR for pointers.
1564 * except.c (expand_start_catch_block): Do a
1565 NEGATIVE and then a POINTER_PLUS_EXPR instead
1567 * cp-gimplify.c (cxx_omp_clause_apply_fn): Convert
1568 PLUS_EXPR on pointer types over to use
1569 POINTER_PLUS_EXPR and remove the conversion
1570 to the pointer types.
1571 * method.c (thunk_adjust): Use POINTER_PLUS_EXPR for
1572 adding to a pointer type. Use size_int instead of
1573 ssize_int. Convert the index to sizetype before
1574 adding it to the pointer.
1576 2007-06-15 Mark Mitchell <mark@codesourcery.com>
1578 * cp-tree.h (DECL_VAR_MARKED_P): Remove.
1579 (DECL_ANON_UNION_VAR_P): New macro.
1580 * class.c (fixed_type_or_null): Tidy. Use a hash table, rather
1581 than DECL_VAR_MARKED_P, to keep track of which variables we have
1583 * decl.c (redeclaration_error_message): Complain about redeclaring
1584 anonymous union members at namespace scope.
1585 * decl2.c (build_anon_union_vars): Set DECL_ANON_UNION_VAR_P.
1587 2007-06-14 Geoff Keating <geoffk@apple.com>
1589 * decl2.c (determine_visibility): Ensure that functions with
1590 hidden types as parameters are hidden.
1593 * decl2.c (determine_visibility): Remove duplicate code for
1596 2007-06-12 Ian Lance Taylor <iant@google.com>
1599 * init.c (avoid_placement_new_aliasing): New static function.
1600 (build_new_1): Call it.
1602 2007-06-11 Rafael Avila de Espindola <espindola@google.com>
1604 * cp-objcp-common.h (LANG_HOOKS_SIGNED_TYPE): Remove.
1605 (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
1607 2007-06-08 Jakub Jelinek <jakub@redhat.com>
1610 * semantics.c (finish_omp_for): Call fold_build_cleanup_point_expr
1611 on init, the non-decl cond operand and increment value.
1613 2007-06-07 Simon Martin <simartin@users.sourceforge.net>
1616 * decl.c (check_initializer): Report an error when a brace enclosed
1617 initializer is used for a non-aggregate type in C++98.
1618 (redeclaration_error_message): Rewrote flag_cpp0x in terms of
1620 (grokdeclarator): Likewise.
1621 (move_fn_p): Likewise.
1622 * typeck.c (check_return_expr): Likewise.
1623 * call.c (reference_binding): Likewise.
1624 * error.c (cp_cpp_error): Likewise.
1625 * pt.c (check_default_tmpl_args): Likewise.
1627 * lex.c (init_reswords): Likewise.
1628 * parser.c (p_parser_primary_expression): Likewise.
1629 (TOKEN_PRECEDENCE): Likewise.
1630 (cp_parser_init_declarator): Likewise.
1631 (cp_parser_ptr_operator): Likewise.
1632 (cp_parser_parameter_declaration): Likewise.
1633 (cp_parser_enclosed_template_argument_list): Likewise.
1634 (cp_parser_skip_to_end_of_template_parameter_list): Likewise.
1635 (cp_parser_next_token_ends_template_argument_p): Likewise.
1637 2007-06-04 Simon Baldwin <simonb@google.com>
1639 * decl.c (grokdeclarator): Readability change. Moved case labels
1640 into direct switch statement scope.
1642 2007-06-04 Paolo Carlini <pcarlini@suse.de>
1644 * call.c (convert_like_real): Remove pointless code.
1646 2007-05-31 Mark Mitchell <mark@codesourcery.com>
1648 * decl.c (get_atexit_fn_ptr_type): New function.
1649 (get_atexit_node): Use it.
1650 (start_cleanup_fn): Likewise.
1651 (register_dtor_fn): Use the object's destructor, instead of a
1652 separate cleanup function, where possible.
1653 * cp-tree.h (CPTI_ATEXIT_FN_PTR_TYPE): New enumerator.
1654 (atexit_fn_ptr_type_node): New macro.
1655 * decl2.c (build_cleanup): Use build_address.
1657 2007-05-31 Daniel Berlin <dberlin@dberlin.org>
1659 * typeck.c (build_binary_op): Include types in error.
1661 2007-05-31 Jakub Jelinek <jakub@redhat.com>
1664 * decl.c (cp_finish_decl): Also clear was_readonly if a static var
1665 needs runtime initialization.
1667 2007-05-31 Paolo Carlini <pcarlini@suse.de>
1670 * semantics.c (finish_trait_expr): Complete the types.
1672 2007-05-30 Russell Yanofsky <russ@yanofsky.org>
1673 Douglas Gregor <doug.gregor@gmail.com>
1674 Pedro Lamarao <pedro.lamarao@mndfck.org>
1675 Howard Hinnant <howard.hinnant@gmail.com>
1679 * typeck.c (comptypes): Don't consider rvalue and lvalue
1680 reference types to be equivalent.
1681 (check_return_expr): Move from certain lvalues when returning
1683 * decl.c (grokdeclarator): Implement reference collapsing.
1684 (copy_fn_p): Don't consider constructors taking rvalue references
1685 to be copy constructors.
1687 * call.c (conversion): New "rvaluedness_matches_p" member.
1688 (convert_class_to_reference): Require reference type as first
1689 parameter instead of base type.
1690 (reference_binding): Add logic to handle rvalue references.
1691 (implicit_conversion): Update inaccurate comment.
1692 (convert_like_real): Disable creation of temporaries that are
1693 impossible to initialize for types with move constructors.
1694 (build_over_call): Elide move constructors when possible.
1695 (maybe_handle_implicit_object): Set "rvaluedness_matches_p".
1696 (maybe_handle_ref_bind): Return conversion instead of type node.
1697 (compare_ics): Add logic to use "rvaluedness_matches_p" values to
1698 determine preferred conversion sequences.
1699 * cp-tree.h (TYPE_REF_IS_RVALUE): New.
1700 (LOOKUP_PREFER_RVALUE): New.
1701 (DECL_MOVE_CONSTRUCTOR_P): New.
1702 (struct cp_declarator): Add "reference" member for reference
1703 types, with new "rvalue_ref" flag.
1704 (cp_build_reference_type): Declare.
1705 (move_fn_p): Declare.
1706 * error.c (dump_type_prefix): Format rvalue reference types
1707 correctly in error messages.
1708 * except.c (build_throw): Move from certain lvalues when
1710 * mangle.c (write_type): Mangle rvalue references differently
1711 than regular references.
1712 * parser.c (make_reference_declarator): Add boolean parameter for
1714 (cp_parser_make_indirect_declarator): New.
1715 (cp_parser_new_declarator_opt): Call
1716 cp_parser_make_indirect_declarator.
1717 (cp_parser_conversion_declarator_opt): Ditto.
1718 (cp_parser_declarator): Ditto.
1719 (cp_parser_ptr_operator): Parse "&&" tokens into rvalue reference
1721 * pt.c (tsubst): Implement reference collapsing.
1722 (maybe_adjust_types_for_deduction): Implement special template
1723 parameter deduction rule for rvalue references.
1724 (type_unification_real): Update calls to
1725 maybe_adjust_types_for_deduction.
1726 (try_one_overload): Ditto.
1727 (unify_pack_expansion): Ditto.
1728 * tree.c (lvalue_p_1): Handle rvalue reference types.
1729 (cp_build_reference_type): New.
1731 2007-05-30 Jakub Jelinek <jakub@redhat.com>
1734 * decl.c (cp_finish_decl): Clear TREE_READONLY flag on TREE_STATIC
1735 variables that need runtime initialization.
1737 2007-05-28 Andrew Pinski <Andrew_pinski@playstation.sony.com>
1740 * typeck.c (build_unary_op <case PREINCREMENT_EXPR,
1741 case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,
1742 case POSTDECREMENT_EXPR>): Return the error_mark_node
1743 if either the real or imaginary parts would an
1746 2007-05-25 Simon Martin <simartin@users.sourceforge.net>
1747 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
1750 * parser.c (cp_parser_skip_to_closing_brace): Return true if the next
1751 token is a closing brace, false if there are no tokens left.
1752 (cp_parser_namespace_alias_definition): Only consume the next token if
1753 it is a closing brace.
1755 * parser.c (cp_parser_class_specifier): Likewise.
1757 2007-05-25 H.J. Lu <hongjiu.lu@intel.com>
1759 * semantics.c (finish_member_declaration): Fix a typo in the
1762 2007-05-25 Douglas Gregor <doug.gregor@gmail.com>
1774 * error.c (dump_type): Dump TYPE_ARGUMENT_PACK nodes.
1775 * cp-tree.h (check_for_bare_parameter_packs): Returns bool.
1776 * pt.c (check_for_bare_parameter_packs): Return bool indicated
1777 whether everything was okay. Fix indentation.
1778 (push_template_decl_real): Check for bare parameter packs in
1779 function parameters; where errors occur, mark the parameter types
1780 with ERROR_MARK_NODEs to avert ICEs.
1781 (coerce_template_parameter_pack): New.
1782 (coerce_template_parms): Moved parameter pack coercion into
1783 coerce_template_parameter_pack, and permit it anywhere in the
1784 template parameter list (not just at the end). Parameter and
1785 argument indices can vary (somewhat) separately now, so add
1786 PARM_IDX and ARG_IDX.
1787 (fn_type_unification): Don't set an argument pack as incomplete if
1788 no argument pack was deduced.
1789 (type_unification_real): If a type parameter is a parameter pack
1790 and has not otherwise been deduced, it will be deduced to an empty
1792 (more_specialized_fn): Use the actual lengths of the argument
1793 lists when comparing against expansions.
1794 * semantics.c (finish_member_declaration): If a field's type has
1795 bare parameter packs, error and set its type to ERROR_MARK_NODE.
1797 2007-05-24 Danny Smith <dannysmith@users.sourceforge.net>
1800 * mangle.c (mangle_decl): Call targetm.mangle_decl_assembler_name.
1802 2007-05-22 Ollie Wild <aaw@google.com>
1804 * name-lookup.c (ambiguous_decl): Adds check for hidden types.
1805 (unqualified_namespace_lookup): Adds check for hidden types.
1807 2007-05-22 Ollie Wild <aaw@google.com>
1809 * decl.c (duplicate_decls): Verify namespace names are unique.
1811 2007-05-21 Mark Mitchell <mark@codesourcery.com>
1813 * decl.c (cxx_maybe_build_cleanup): Handle
1814 __attribute__((cleanup)).
1816 2007-05-19 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
1818 * cvt.c (cp_convert_and_check): Don't check warnings if the
1821 2007-05-18 Geoffrey Keating <geoffk@apple.com>
1823 * mangle.c (write_real_cst): Use 'unsigned long' for %lx.
1825 2007-05-14 Paolo Carlini <pcarlini@suse.de>
1828 * rtti.c (get_tinfo_decl_dynamic, get_typeid): Try to complete the
1829 type only if is a class type (5.2.8/4).
1831 2007-05-14 Rafael Avila de Espindola <espindola@google.com>
1833 * cp-objcp-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
1834 * decl.c (grokdeclarator): Use unsigned_type_for instead of
1835 c_common_unsigned_type.
1837 2007-05-11 Silvius Rus <rus@google.com>
1839 * cp/typeck.c (build_indirect_ref): Add call to
1840 strict_aliasing_warning.
1841 (build_reinterpret_cast_1): Condition call to
1842 strict_aliasing_warning.
1844 2007-05-11 Jan Hubicka <jh@suse.cz>
1846 * semantics.c (expand_or_defer_fn): Do not call c_record_cdtor_fn.
1847 * decl2.c (start_objects): ctors and dtors are no longer public.
1848 (cp_write_global_declarations): Do not call c_build_cdtor_fns.
1850 2007-05-07 Andrew Pinski <andrew_pinski@playstation.sony.com>
1852 * typeck.c (build_unary_op): Remove code that used to
1853 handle non lvalue increments/decrements.
1855 2007-05-07 Mike Stump <mrs@apple.com>
1857 * parser.c (check_empty_body): Add.
1858 (cp_parser_iteration_statement): Add call to check_empty_body.
1860 2007-05-05 Geoffrey Keating <geoffk@apple.com>
1863 * mangle.c (write_mangled_name): Mangle static variable names.
1864 (write_unqualified_name): Use local-source-name for
1865 namespace-scope static variables.
1867 2007-05-04 Dirk Mueller <dmueller@suse.de>
1869 * cp-tree.h (DECL_MAIN_P): only if -ffreestanding is
1872 2007-05-02 Seongbae Park <seongbae.park@gmail.com>
1875 * decl2.c (constrain_class_visibility):
1876 Use strip_pointer_or_array_types instead of strip_array_types.
1878 2007-04-28 Andrew Pinski <andrew_pinski@playstation.sony.com>
1881 * decl.c (reshape_init_r): Don't reshape the first element if it
1882 is a pointer to member function.
1884 2007-04-27 Simon Baldwin <simonb@google.com>
1886 * decl.c (grokparms): Changed message format from %qD to %qE.
1888 2007-04-27 Douglas Gregor <doug.gregor@gmail.com>
1890 * error.c (maybe_warn_variadic_templates): Variadic templates are
1891 now in C++0x, so only warn about them in C++98 mode.
1893 2007-04-26 Andrew Pinski <andrew_pinski@playstation.sony.com>
1896 * typeck.c (build_reinterpret_cast_1): Only allow conversion to
1897 integeral types from vectors types.
1899 2007-04-26 Jakub Jelinek <jakub@redhat.com>
1902 * semantics.c (finish_omp_clauses): Don't create CP_OMP_CLAUSE_INFO
1903 for type dependent OMP_CLAUSE_DECLs.
1905 2007-04-24 Mark Mitchell <mark@codesourcery.com>
1908 * cp-tree.h (ARITHMETIC_TYPE): Include COMPLEX_TYPE.
1909 * typeck.c (type_after_usual_arithmetic_conversions): Adjust, as
1910 COMPLEX_TYPE is now an ARITHMETIC_TYPE.
1911 * init.c (build_zero_init): Adjust, as
1912 COMPLEX_TYPE is now a SCALAR_TYPE.
1913 * typeck2.c (digest_init): Allow brace-enclosed initializers for
1914 COMPLEX_TYPE, even though that is now a SCALAR_TYPE.
1916 2007-04-25 Paolo Carlini <pcarlini@suse.de>
1918 * semantics.c (classtype_has_nothrow_copy_or_assign_p): Adjust
1919 per N2255; rename as classtype_has_nothrow_assign_or_copy_p.
1920 (trait_expr_value): Adjust.
1922 2007-04-23 Simon Baldwin <simonb@google.com>
1924 * decl.c (grokparms): Added new error for duplicate function
1925 parameters names in function prototypes, to match gcc behavior.
1927 2007-04-23 Jan Hubicka <jh@suse.cz>
1929 * cp/decl2.c (finish_objects): Do not call target constructor/destructor
1932 2007-04-21 Andrew Pinski <andrew_pinski@playstation.sony.com>
1934 * cp-tree.h (lang_tree_node): Use GENERIC_NEXT
1935 instead of checking GIMPLE_STMT_P in chain_next.
1937 2007-04-17 Mark Mitchell <mark@codesourcery.com>
1940 * call.c (convert_for_arg_passing): Convert bitfields to their
1943 2007-04-17 Simon Martin <simartin@users.sourceforge.net>
1946 * pt.c (value_dependent_expression_p): Handle MODOP_EXPRs.
1948 2007-04-16 Seongbae Park <seongbae.park@gmail.com>
1951 * cp/decl2.c (constrain_class_visibility):
1952 Do not warn about the use of anonymous namespace in the main input file.
1954 2007-04-15 Mark Mitchell <mark@codesourcery.com>
1956 * cp-tree.h (current_template_parms): Fix typo in comment.
1958 2007-04-15 Kazu Hirata <kazu@codesourcery.com>
1960 * cp-tree.h, error.c: Fix comment typos.
1962 2007-04-13 Jason Merrill <jason@redhat.com>
1965 * call.c (reference_binding): Add c_cast_p parm. If true,
1966 add quals to TO as needed to make it reference-compatible.
1968 2007-04-11 Jan Hubicka <jh@suse.cz>
1970 * cp/class.c (convert_to_base_statically): Fold produced tree; verify
1971 that we are not processing template_decl.
1973 2007-04-09 Mark Mitchell <mark@codesourcery.com>
1976 * class.c (build_base_path): Ensure that the converted pointer has
1977 the same cv-qualification as the input.
1979 2007-04-09 Paolo Carlini <pcarlini@suse.de>
1981 * tree.c (cp_tree_equal): Deal with TRAIT_EXPR.
1983 2007-04-08 Steven Bosscher <steven@gcc.gnu.org>
1985 * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS):
1987 (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do not set it.
1988 * tree.c (cp_add_pending_fn_decls): Remove.
1989 * cp-tree.h (cp_add_pending_fn_decls): Remove prototype.
1991 2007-04-07 Daniel Berlin <dberlin@dberlin.org>
1993 Revert change removing staticp.
1995 2007-04-06 Daniel Berlin <dberlin@dberlin.org>
1997 * cp-objcp-common.c (cxx_staticp): Remove.
1998 * cp-objcp-common.h (LANG_HOOKS_STATICP): Remove.
1999 * cp-tree.h (cxx_staticp):
2001 2007-04-04 Danny Smith <dannysmith.users.sourceforge.net>
2003 * class.c (check_for_override): Don't remove dllmport attribute
2006 2007-04-03 Jakub Jelinek <jakub@redhat.com>
2009 * typeck.c (build_modify_expr): For COND_EXPR on LHS, if RHS has void
2010 type issue error and return early.
2012 2007-03-30 Jason Merrill <jason@redhat.com>
2015 * typeck.c (cp_type_readonly): New fn.
2016 * cp-tree.h: Declare it.
2017 * decl.c (start_decl): Set implicit DECL_THIS_STATIC here.
2018 (cp_finish_decl): Not here.
2020 2007-03-31 Richard Guenther <rguenther@suse.de>
2022 * optimize.c (maybe_clone_body): Replace splay-tree usage by
2025 2007-03-31 Douglas Gregor <doug.gregor@gmail.com>
2030 * parser.c (declarator_can_be_parameter_pack): New.
2031 (cp_parser_template_parameter): Only parse the `...' if the
2032 declarator can be a parameter pack.
2033 (cp_parser_parameter_declaration): Ditto. Also, handle when TYPE
2035 * pt.c (find_parameter_packs_r): Look into the bounds on integer
2036 types (they could be used as array bounds).
2037 (check_for_bare_parameter_packs): Deal with TEMPLATE_PARM_INDEX.
2038 (tsubst_pack_expansion): Handle failure to expand parameter
2041 2007-03-30 Paolo Carlini <pcarlini@suse.de>
2044 * cp-tree.h (enum cp_trait_kind, struct tree_trait_expr,
2045 TRAIT_EXPR_TYPE1, TRAIT_EXPR_TYPE2, TRAIT_EXPR_KIND): Add.
2046 (enum cp_tree_node_structure_enum, union lang_tree_node): Update.
2047 (CLASS_TYPE_NON_UNION_P): Add.
2048 (struct lang_type_class): Add has_complex_dflt.
2049 (TYPE_HAS_COMPLEX_DFLT, TYPE_HAS_TRIVIAL_DFLT): Add.
2050 (locate_copy, locate_ctor, locate_dtor, finish_trait_expr): Declare.
2051 * cp-tree.def: Add TRAIT_EXPR.
2052 * cp-objcp-common.c (cp_tree_size): Add TRAIT_EXPR case.
2053 * lex.c (struct resword): Add __has_nothrow_assign,
2054 __has_nothrow_constructor, __has_nothrow_copy, __has_trivial_assign,
2055 __has_trivial_constructor, __has_trivial_copy,
2056 __has_trivial_destructor, __has_virtual_destructor, __is_abstract,
2057 __is_base_of, __is_class, __is_convertible_to, __is_empty, __is_enum,
2058 __is_pod, __is_polymorphic, __is_union.
2059 * parser.c (cp_parser_primary_expression): Deal with the new RIDs.
2060 (cp_parser_trait_expr): New.
2061 * semantics.c (finish_trait_expr, trait_expr_value
2062 classtype_has_nothrow_copy_or_assign_p): New.
2063 * method.c (locate_copy, locate_ctor, locate_dtor): Do not define
2065 * decl.c (cp_tree_node_structure): Add TRAIT_EXPR.
2066 * class.c (check_bases, check_field_decl, check_bases_and_members):
2067 Deal with TYPE_HAS_COMPLEX_DFLT (t) too.
2068 * pt.c (uses_template_parms, tsubst_copy_and_build,
2069 value_dependent_expression_p, type_dependent_expression_p): Deal with
2071 * tree.c (cp_walk_subtrees): Deal with TRAIT_EXPR.
2073 2007-03-29 Richard Guenther <rguenther@suse.de>
2075 * tree.c (cp_walk_subtrees): Do not set input_location.
2077 2007-03-28 Simon Martin <simartin@users.sourceforge.net>
2080 * decl.c (grokfndecl): Properly setup decl if it is a constructor or a
2083 2007-03-28 Douglas Gregor <doug.gregor@gmail.com>
2085 * parser.c (struct cp_parser): Update comment for
2086 greater_than_is_operator_p.
2087 (cp_parser_primary_expression): In C++0x mode, a cast operator can
2088 be terminated with a `>>' token when !GREATER_THAN_IS_OPERATOR_P.
2089 (TOKEN_PRECEDENCE): In C++0x mode, `>>' is treated like `>' when
2090 !GREATER_THAN_IS_OPERATOR_P.
2091 (cp_parser_binary_expression): When -Wc++0x-compat, warn about
2092 `>>' operators that will become two `>' tokens in C++0x.
2093 (cp_parser_parameter_declaration): Treat `>>' like `>' in C++0x
2094 mode, allowing it to terminate default arguments.
2095 (cp_parser_enclosed_template_argument_list): In C++0x mode, treat
2096 `>>' like two consecutive `>' tokens.
2097 (cp_parser_skip_to_end_of_template_parameter_list): Ditto.
2098 (cp_parser_next_token_ends_template_argument_p): In C++0x, `>>'
2099 ends a template argument.
2101 2007-03-28 Douglas Gregor <doug.gregor@gmail.com>
2103 * decl.c (redeclaration_error_message): Complain when redeclaring
2104 a friend function with default template arguments (C++0x mode only).
2105 * cp-tree.h (check_default_tmpl_args): Declare.
2106 * pt.c (check_default_tmpl_args): In C++0x mode, permit default
2107 template arguments in function templates. Add support for checking
2108 the default template arguments of friend templates.
2109 (push_template_decl_real): Fix call to check_default_tmpl_args.
2110 (type_unification_real): If a template parameter has not been
2111 deduced but provides a default template argument, substitute into
2112 that default template argument.
2113 * parser.c (cp_parser_init_declarator): When declaring (but not
2114 defining!) a function template in C++0x mode, check for default
2117 2007-03-28 Douglas Gregor <doug.gregor@gmail.com>
2120 * decl.c (grokdeclarator): Deal with cv-qualified function type
2121 typedefs in the same way for member and non-member functions.
2123 2007-03-26 Dirk Mueller <dmueller@suse.de>
2125 * parser.c (cp_parser_member_declaration): Pedwarn
2126 about stray semicolons after member declarations.
2128 2007-03-26 Paolo Carlini <pcarlini@suse.de>
2131 * pt.c (instantiate_decl): Set in_system_header.
2133 2007-03-22 Mark Mitchell <mark@codesourcery.com>
2135 * cp-tree.h (current_tempalte_parms): Improve documentation.
2136 * pt.c (current_template_args): Likewise.
2139 * parser.c (cp_parser_parse_and_diagnose_invalid_type_name): Do
2140 not consume tokens when failing.
2142 2007-03-22 Jim Wilson <wilson@specifix.com>
2143 Mark Mitchell <mark@codesourcery.com>
2146 * call.c (standard_conversion): Use type_decays_to. Keep FCODE
2147 consistent with FROM.
2149 2007-03-22 Gabriel Dos Reis <gdr@integrable-solutions.net>
2151 * error.c (dump_expr): Handle dependent names that designate types.
2152 * cxx-pretty-print.c (pp_cxx_unqualified_id): Handle TYPENAME_TYPE.
2154 2007-03-17 Kazu Hirata <kazu@codesourcery.com>
2156 * cp-tree.def, parser.c, pt.c: Fix comment typos.
2158 2007-03-16 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
2160 * cvt.c (cp_convert_and_check) : Define.
2161 * cp-tree.h (cp_convert_and_check): Declare.
2162 * call.c (convert_conversion_warnings): Rename to
2163 conversion_null_warnings. The warning for floating-point to
2164 integer is handled by convert_and_check in convert_like_real.
2165 (convert_like_real): convert_conversion_warnings was renamed as
2166 conversion_null_warnings.
2167 * typeck.c (build_binary_op): Use cp_convert_and_check to warn for
2168 overflow and changes of value during conversion.
2170 2007-03-15 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
2173 * parser.c (cp_parser_statement): If 'namespace' is found, this
2174 only can be a namespace alias definition, so parse it now.
2175 (cp_parser_namespace_alias_definition): if we find an open brace
2176 instead of '=', then this is actually a misplaced namespace
2179 2007-03-15 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
2182 * decl.c (cxx_init_decl_processing): Move command-line options
2183 processing to c-opts.c.
2185 2007-03-15 Douglas Gregor <doug.gregor@gmail.com>
2187 * ptree.c (cxx_print_type): Use formatting markup for integers
2188 when printing template parameter index/level/orig level.
2189 (cxx_print_xnode): Ditto.
2190 * cp-tree.h (TEMPLATE_PARM_PARAMETER_PACK): Use TREE_LANG_FLAG_0.
2191 (struct template_parm_index_s): Remove the PARAMETER_PACK member.
2192 Make INDEX, LEVEL, and ORIG_LEVEL integers instead of
2194 (struct saved_scope): Make X_PROCESSING_TEMPLATE_DECL an int,
2195 rather than a HOST_WIDE_INT.
2196 Turn X_PROCESSING_EXPLICIT_INSTANTIATION, SKIP_EVALUATION, and
2197 NEED_POP_FUNCTION_CONTEXT into bool bitfields; reorder fields for
2199 (struct language_function): Make RETURNS_VALUE, RETURNS_NULL,
2200 RETURNS_ABNORMALLY, IN_FUNCTION_TRY_HANDLER, and
2201 IN_BASE_INITIALIZER bool bitfields.
2202 (struct cp_declarator): Make KIND a 4-bit field. Make
2203 PARAMETER_PACK_P a bool bitfield just after KIND.
2204 * pt.c (uses_parameter_packs): Destroy the pointer set.
2205 (make_pack_expansion): Ditto.
2206 (check_for_bare_parameter_packs): Ditto.
2207 * name-lookup.c (push_to_top_level): Make need_pop a bool value.
2209 2007-03-14 Andrew Pinski <andrew_pinski@playstation.sony.com>
2212 * call.c (convert_default_arg): Instead of copying the node,
2215 2007-03-15 Dirk Mueller <dmueller@suse.de>
2218 * call.c (convert_conversion_warnings): New..
2219 (convert_like_real): .. factored out from here.
2220 (convert_conversion_warnings): Add warning about
2221 false being converted to NULL in argument passing.
2223 2007-03-14 Dirk Mueller <dmueller@suse.de>
2225 * cp/semantics.c (c_finish_if_stmt): Call empty_if_body_warning.
2226 (finish_do_body): Warn about empty body in do/while statement.
2228 2007-03-14 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
2230 * class.c (warn_hidden): Add OPT_Woverloaded_virtual to warning.
2232 2007-03-14 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
2235 * typeck.c (build_binary_op): Call warn_for_div_zero instead of
2238 2007-03-13 Alexandre Oliva <aoliva@redhat.com>
2240 * cp/repo.c (init_repo): Initialize random_seed saved options.
2241 (finish_repo): Adjust.
2243 2007-03-13 Mark Mitchell <mark@codesourcery.com>
2246 * Make-lang.in (doc/g++.1): Use $< to specify the location from
2249 2007-03-12 Seongbae Park <seongbae.park@gmail.com>
2251 * decl.c (compute_array_index_type): New warning flag warn_vla.
2253 2007-03-12 Mark Mitchell <mark@codesourcery.com>
2256 * call.c (convert_default_arg): Copy non-constant arguments.
2258 2007-03-11 Mark Mitchell <mark@codesourcery.com>
2261 * parser.c (cp_parser_postfix_expression): Disallow compound
2262 literals in constant expressions.
2265 * semantics.c (finish_typeof): Use unlowered_expr_type.
2267 2007-03-10 Mark Mitchell <mark@codesourcery.com>
2270 * cp-tree.h (unlowered_expr_type): New function.
2271 * typeck.c (is_bitfield_expr_with_lowered_type): Handle
2272 COMPOUND_EXPR, MODIFY_EXPR, and SAVE_EXPR.
2273 (unlowered_expr_type): New function.
2274 (build_unary_op): Disallow predecrements of bool bitfields.
2275 * call.c (build_conditional_expr): Use unlowered_expr_type.
2276 * pt.c (type_unification_real): Likewise.
2278 2007-03-09 Douglas Gregor <doug.gregor@gmail.com>
2281 * typeck.c (check_return_expr): Check for bare parameter packs.
2282 (comptypes): Compare template parameter packs and
2283 type pack expansions.
2284 * decl.c (grokdeclarator): Deal with the declaration of function
2286 (grokparms): Verify that the (optional) function parameter pack is
2287 at the end of the parameter list.
2288 (xref_basetypes): Handle pack expansions in the base class.
2289 (cp_tree_node_structure): Handle ARGUMENT_PACK_SELECT.
2290 * cp-tree.def (TYPE_ARGUMENT_PACK): New.
2291 (NONTYPE_ARGUMENT_PACK): New.
2292 (TYPE_PACK_EXPANSION): New.
2293 (EXPR_PACK_EXPANSION): New.
2294 (ARGUMENT_PACK_SELECT): New.
2295 * cp-objcp-common.c (cp_tree_size): Compute size of
2296 (NON)TYPE_ARGUMENT_PACK, (TYPE|EXPR)_PACK_EXPANSION, and
2297 ARGUMENT_PACK_SELECT.
2298 * error.c (dump_template_argument): Print template argument packs.
2299 (dump_template_argument_list): Ditto.
2300 (dump_template_parameter): Dump `...' for template type parameter
2302 (dump_type): Dump TYPE_PACK_EXPANSION nodes.
2303 (dump_parameters): Print function parameter packs.
2304 (dump_template_parms): Print template argument packs.
2305 (dump_expr): Dump EXPR_PACK_EXPANSION nodes.
2306 (maybe_warn_variadic_templates): New.
2307 * operators.def: Add ellipsis operator for EXPR_PACK_EXPANSION.
2308 * tree.c (cp_walk_subtrees): Walk BASELINK, TYPE_ARGUMENT_PACK,
2309 NONTYPE_ARGUMENT_PACK, TYPE_PACK_EXPANSION, EXPR_PACK_EXPANSION,
2311 * mangle.c (write_type): Mangle TYPE_PACK_EXPANSION.
2312 (write_template_arg): Write argument packs as separate arguments.
2313 * cp-tree.h (struct template_parm_index_s): Add flag that
2314 indicates that the template parameter is actually a parameter
2316 (struct tree_argument_pack_select): New.
2317 (enum cp_tree_node_structure_enum): Add TS_CP_ARGUMENT_PACK_SELECT.
2318 (union lang_tree_node): Add argument_pack_select.
2319 (FUNCTION_PARAMETER_PACK_P): New.
2320 (PACK_EXPANSION_P): New.
2321 (PACK_EXPANSION_PATTERN): New.
2322 (SET_PACK_EXPANSION_PATTERN): New.
2323 (PACK_EXPANSION_PARAMETER_PACKS): New.
2324 (ARGUMENT_PACK_P): New.
2325 (ARGUMENT_PACK_ARGS): New.
2326 (SET_ARGUMENT_PACK_ARGS): New.
2327 (ARGUMENT_PACK_INCOMPLETE_P): New.
2328 (ARGUMENT_PACK_EXPLICIT_ARGS): New.
2329 (TEMPLATE_PARM_PARAMETER_PACK): New.
2330 (TEMPLATE_TYPE_PARAMETER_PACK): New.
2331 (ARGUMENT_PACK_SELECT_FROM_PACK): New.
2332 (ARGUMENT_PACK_SELECT_INDEX): New.
2333 (ARGUMENT_PACK_SELECT_ARG): New.
2334 (struct cp_declarator): Add parameter_pack_p flag.
2335 (maybe_warn_variadic_templates): Declare.
2336 (process_template_parm): Add bool parameter IS_PARAMETER_PACK, to
2337 indicate a template parameter pack.
2338 (uses_parameter_packs): Declare.
2339 (template_parameter_pack_p): Declare.
2340 (template_parms_variadic_p): Declare.
2341 (make_pack_expansion): Declare.
2342 (check_for_bare_parameter_packs): Declare.
2343 * cxx-pretty-print.c (pp_cxx_unary_expression): Print
2344 sizeof... expressions.
2345 (pp_cxx_expression): Print pack expansions and non-type argument
2347 (pp_cxx_exception_specification): Print pack expansions.
2348 (pp_cxx_direct_declarator): Print ellipsis for parameter packs.
2349 (pp_cxx_ctor_initializer): Print pack expansions.
2350 (pp_cxx_type_id): Print pack expansions.
2351 (pp_cxx_template_argument_list): Print argument packs.
2352 (pp_cxx_template_parameter): Print ellipsis for template parameter
2354 * pt.c (comp_template_parms): Compare template parameter packs.
2355 (template_parameter_pack_p): New.
2356 (template_parms_variadic_p): New.
2357 (template_args_variadic_p): New.
2358 (make_ith_pack_parameter_name): New.
2359 (struct find_parameter_pack_data): New.
2360 (find_parameter_packs_r): New.
2361 (uses_parameter_packs): New.
2362 (make_pack_expansion): New.
2363 (check_for_bare_parameter_packs): New.
2364 (expand_template_argument_pack): New.
2365 (reduce_template_parm_level): Propagate parameter pack flag.
2366 (process_template_parm): Add is_parameter_pack parameter to state
2367 when the parameter is actually a parameter pack. Create template
2368 parameter packs when is_parameter_pack is true.
2369 (current_template_args): The argument for a template parameter
2370 pack is an argument pack containing a single pack expansion.
2371 (process_partial_specialization): When checking that non-type
2372 argument expressions do not involve template parameters, loop over
2373 the arguments in argument packs separately.
2374 (push_template_decl_real): Check that the type of the declaration
2375 does not have any bare parameter packs. Check that primary
2376 templates have no more than one parameter pack, and that it comes
2377 at the end of the template parameter list.
2378 (convert_template_argument): Handle coercions for pack expansion
2379 expressions by coercing the pattern then rebuilding the expansion.
2380 (coerce_template_parms): When coercing the arguments for a
2381 variadic template, pack "extra" arguments into an argument pack.
2382 (coerce_template_template_parms): Cannot coerce between parameter
2383 packs and non-pack parameters.
2384 (template_args_equal): Compare PACK_EXPANSION_P expressions.
2385 (comp_template_args): Expand all template arguments packs before
2386 comparing template argument lists.
2387 (mangle_class_name_for_template): Make argument packs as separate
2389 (for_each_template_parm_r): No need to handle BASELINK.
2390 (instantiate_class_template): Handle pack expansions in the base
2392 (tsubst_pack_expansion): New.
2393 (tsubst_template_args): Handle substitutions of argument packs and
2394 pack expansion into template argument lists.
2395 (tsubst_decl): Expand function parameter packs into separate
2396 function parameters.
2397 (tsubst_arg_types): Expand a type pack expansion into separate
2399 (tsubst_exception_specification): Handle pack expansions in
2400 exception specifiers.
2401 (tsubst): See through ARGUMENT_PACK_SELECT arguments when
2402 replacing a template parameter with its argument. If we encounter
2403 a substitution for an argument pack, just return the parameter
2405 (tsubst_copy): sizeof(X...) returns the number of elements in
2406 parameter pack X. See through ARGUMENT_PACK_SELECT when the
2407 PARM_DECL is a parameter pack.
2408 (tsubst_expr): Expression pack expansions and argument packs
2409 cannot show up here; they will all be handled through function
2410 calls, sizeof, and template argument lists.
2411 (tsubst_copy_and_build): sizeof(X...) returns the number of
2412 elements in parameter pack X. Handle pack expansions in TREE_LIST
2413 and CONSTRUCTOR nodes.
2414 (fn_type_unification): Handle "incomplete" explicit template
2415 argument lists that specify some of the arguments for a template
2417 (type_unification_real): Unify arguments against pack expansions.
2418 (template_parm_level_and_index): New, helper function.
2419 (unify_pack_expansion): New.
2420 (unify): Unify argument packs on an argument-by-argument basis,
2421 handling variadic argument packs as well.
2422 (more_specialized_fn): Handle unification of function parameter
2423 packs. All things being equal, prefer non-variadic function
2424 templates to variadic function templates.
2425 (more_specialized_class): Prefer the variadic class template
2426 partial specialization that binds fewer arguments to a parameter
2428 (regenerate_decl_from_template): Expand function parameter packs
2429 into separate parameters.
2430 (instantiate_decl): Ditto.
2431 (tsubst_initializer_list): Handle pack expansions for base-class
2433 (dependent_type_p_r): Determine dependent types in argument packs
2434 and pack expansions.
2435 (value_dependent_expression_p): Determine value-dependence of
2436 non-type argument packs.
2437 (dependent_template_arg_p): Handle argument packs.
2438 * semantics.c (finish_cond): Check for bare parameter packs.
2439 (finish_expr_stmt): Ditto.
2440 (finish_for_expr): Ditto.
2441 (finish_switch_cond): Ditto.
2442 (finish_mem_initializers): Ditto.
2443 * name-lookup.c (arg_assoc_type): Handle pack expansions and
2445 * decl2.c (cp_build_parm_decl): Mark function parameter packs.
2446 * parser.c (make_declarator): Declarator is not an expansion.
2447 (make_pointer_declarator): Transfer parameter pack flag to outer
2449 (make_reference_declarator): Ditto.
2450 (make_ptrmem_declarator): Ditto.
2451 (make_call_declarator): Ditto.
2452 (make_array_declarator): Ditto.
2453 (cp_parser_postfix_expression): Allow pack expansion expressions
2454 in the argument list for a call expression.
2455 (cp_parser_parenthesized_expression_list): Add new parameter
2456 ALLOW_EXPANSION_P. When true, parse the ellipsis to mean "expand
2457 into separate arguments."
2458 (cp_parser_new_placement): Allow pack expansion expressions.
2459 (cp_parser_new_initializer): Ditto.
2460 (cp_parser_mem_initializer_list): Allow ellipsis to create a
2461 base-class initializer expansion.
2462 (cp_parser_mem_initializer): Ditto.
2463 (cp_parser_template_parameter_list): Keep track of whether the
2464 template parameter is a template parameter pack.
2465 (cp_parser_template_parameter): Parse the ellipsis to indicate a
2466 template parameter pack.
2467 (cp_parser_type_parameter): Ditto.
2468 (cp_parser_template_argument_list): Parse the ellipsis to indicate
2470 (cp_parser_direct_declarator): Parse the ellipsis to indicate that
2471 this declarator is a parameter pack.
2472 (cp_parser_parameter_declaration): The ellipsis does not end the
2473 parameter declaration, because it might be a parameter pack. Parse
2474 the ellipsis to indicate a parameter pack.
2475 (cp_parser_initializer): Allow pack expansions.
2476 (cp_parser_initializer_list): Allow ellipsis to create an
2477 initializer expansion.
2478 (cp_parser_base_clause): Allow ellipsis to create a base specifier
2480 (cp_parser_type_id_list): Allow ellipsis to create an exception
2481 specifier expansion.
2482 (cp_parser_attribute_list): Don't allow pack expansions.
2483 (cp_parser_functional_cast): Allow pack expansions.
2484 (cp_parser_sizeof_operand): Allow ellipsis following "sizeof" to
2485 compute the length of a parameter pack.
2486 (cp_parser_next_token_ends_template_argument_p): An ellipsis can
2487 end a template argument.
2488 * tree.c (cp_walk_subtrees): Walk BASELINK, TYPE_ARGUMENT_PACK,
2489 NONTYPE_ARGUMENT_PACK, TYPE_PACK_EXPANSION, EXPR_PACK_EXPANSION,
2492 2007-03-09 Dirk Mueller <dmueller@suse.de>
2494 * cp/call.c (build_new_op): Call warn_logical_operator.
2496 2007-03-08 Volker Reichelt <reichelt@netcologne.de>
2499 * semantics.c (finish_offsetof): Handle COMPOUND_EXPR.
2502 * pt.c (any_template_arguments_need_structural_equality_p):
2505 2007-03-08 Alexandre Oliva <aoliva@redhat.com>
2507 * decl.c (grokdeclarator): Disable warnings for anonymous
2510 2007-03-05 Volker Reichelt <reichelt@netcologne.de>
2512 * typeck2.c (readonly_error): Always emit a hard error.
2513 Remove last argument.
2514 * cp-tree.h (readonly_error): Adjust prototype.
2515 * semantics.c (finish_asm_stmt): Adjust call to readonly_error.
2516 * typeck.c (build_unary_op): Likewise.
2517 (build_modify_expr): Likewise.
2519 2007-03-04 Simon Martin <simartin@users.sourceforge.net>
2522 * tree.c (cp_tree_equal): Properly handle COMPLEX_CST trees.
2524 2007-03-03 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
2527 * parser.c (struct cp_parser): New IN_IF_STMT.
2528 (cp_parser_statement_seq_opt): Handle an unexpected 'else',
2529 returning if parsing the body of an 'if' statement or issuing an
2530 error and continuing.
2531 (cp_parser_selection_statement): Set IN_IF_STMT bit when parsing
2533 (cp_parser_jump_statement): Mask new IN_IF_STMT bit.
2535 2007-03-02 Simon Martin <simartin@users.sourceforge.net>
2538 * class.c (update_vtable_entry_for_fn): Properly handle invalid overriders
2541 2007-03-02 Geoffrey Keating <geoffk@apple.com>
2543 * g++spec.c (lang_specific_driver): Add -lstdc++ when compiling
2544 Objective-C++. Don't exit early if -shared-libgcc needs to be
2547 2007-03-02 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
2549 * typeck.c (common_base_type): Delete unused function.
2551 2007-03-01 Brooks Moses <brooks.moses@codesourcery.com>
2553 * Make-lang.in: Add dummy lang.install-pdf target.
2555 2007-03-01 Simon Baldwin <simonb@google.com>
2558 * decl.c (check_tag_decl): Added new warning for typedef ignored
2559 when it precedes an otherwise valid non-typedef declaration.
2561 2007-02-28 Sandra Loosemore <sandra@codesourcery.com>
2563 * typeck.c (build_function_call): Store converted arguments
2564 in a stack-allocated array instead of building a list.
2565 (convert_arguments): Store arguments in the array passed in as an
2566 argument, and return the actual number of arguments.
2567 * call.c (build_call): Delete, and replace with...
2568 (build_call_n, build_call_a): New.
2569 (build_op_delete_call): Rewrite to avoid constructing argument lists.
2570 (build_over_call): Store converted arguments in a stack-allocated
2571 array instead of building a list.
2572 (build_cxx_call): Pass arguments in an array instead of as a list.
2573 (build_java_interface_fn_ref): Rewrite to avoid constructing
2575 * tree.h: Update declarations to reflect above changes.
2576 * method.c (use_thunk): Use a stack-allocated array to hold
2577 the arguments instead of a list.
2578 * rtti.c (throw_bad_cast): Update call to cxx_call.
2579 (throw_bad_typeid): Likewise.
2580 (build_dynamic_cast_1): Likewise.
2581 * init.c (build_builtin_delete_call): Use build_call_n.
2582 * decl.c (expand_static_init): Likewise.
2583 * except.c (cp_protect_cleanup_actions): Likewise.
2584 * cp-gimplify.c (genericize_eh_spec_block): Likewise.
2585 (gimplify_must_not_throw_expr): Likewise.
2586 (cxx_omp_apply_fn): Use build_call_a.
2588 2007-02-26 Mark Mitchell <mark@codesourcery.com>
2590 * semantics.c (expand_or_defer_fn): Call c_record_cdtor_fn.
2591 * decl2.c (cp_write_gloabl_declarations): Call c_build_cdtor_fns.
2593 2007-02-25 Mark Mitchell <mark@codesourcery.com>
2595 * cp-tree.h (static_ctors): Remove.
2596 * cp-tree.h (static_dtors): Likewise.
2597 * cp-objcp-common.c (decl_shadowed_for_var_lookup): Adjust for
2598 refactoring of tree_map hierarchy.
2599 (decl_shadowed_for_var_insert): Likewise.
2600 * semantics.c (expand_body): Use c_expand_body.
2601 (expand_or_defer_fn): Don't update static_ctors or static_dtors.
2602 * decl2.c (static_ctors): Remove.
2603 (static_dtors): Likewise.
2604 (generate_ctor_or_dtor_function): Pass NULL_TREE to
2605 objc_generate_static_init_call. Do not call static_[cd]tors.
2606 (generate_ctor_and_dtor_functions_for_priority): Do not check for
2608 (cp_write_global_declarations): Likewise.
2610 2007-02-23 Richard Guenther <rguenther@suse.de>
2612 * class.c (note_name_declared_in_class): Make declaration
2613 changes meaning a pedwarn.
2615 2007-02-22 Michael Matz <matz@suse.de>
2618 * cp-tree.h (TFF_UNQUALIFIED_NAME): New formatting flag.
2619 * error.c (dump_aggr_type, dump_simple_decl, dump_decl,
2620 dump_function_decl): Guard emitting outer scopes by new flag.
2621 * cp-lang.c (cxx_dwarf_name): New function.
2622 (LANG_HOOKS_DWARF_NAME): Define to cxx_dwarf_name.
2623 * pt.c (classtype_mangled_name, mangle_class_name_for_template):
2625 (push_template_decl_real, lookup_template_class): Remove calls
2628 2007-02-19 Mark Mitchell <mark@codesourcery.com>
2630 * call.c (build_new_method_call): Ensure that explicit calls of
2631 destructors have type "void".
2633 2007-02-19 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
2635 * typeck.c (build_binary_op): Replace -Wstring-literal-comparison
2636 and -Walways-true with -Waddress.
2637 * cvt.c (convert_to_void): Replace unconditional warning with
2640 2007-02-18 Kazu Hirata <kazu@codesourcery.com>
2642 * decl.c, tree.c: Fix comment typos.
2644 2007-02-15 Andrew Pinski <andrew_pinski@playstation.sony.com>
2647 * semantics.c (finish_stmt_expr_expr): Set TREE_TYPE of the
2648 statement expression if we had an error mark node.
2650 2007-02-15 Sandra Loosemore <sandra@codesourcery.com>
2651 Brooks Moses <brooks.moses@codesourcery.com>
2652 Lee Millward <lee.millward@codesourcery.com>
2654 * cp-tree.def (AGGR_INIT_EXPR): Adjust documentation.
2655 Change class to tcc_vl_exp.
2657 * call.c (build_call): Use build_call_list instead
2659 (build_over_call): Likewise.
2660 (build_new_method_call): Use build_min_non_dep_call_list
2661 instead of build_min_non_dep.
2663 * error.c (dump_call_expr_args): New function.
2664 (dump_aggr_init_expr_args): New function.
2665 (dump_expr) <AGGR_INIT_EXPR, CALL_EXPR, INDIRECT_REF>: Use them.
2666 Update to use new CALL_EXPR and AGGR_INIT_EXPR accessor macros.
2668 * cvt.c (convert_to_void): Use build_call_array instead
2669 of build3; use new AGGR_INIT_EXPR accessor macros.
2671 * mangle.c (write_expression): Use TREE_OPERAND_LENGTH
2672 instead of TREE_CODE_LENGTH.
2674 * dump.c (cp_dump_tree) <AGGR_INIT_EXPR>: Update to use new
2675 AGGR_INIT_EXPR accessor macros.
2677 * cp-gimplify.c (cp_gimplify_init_expr): Use
2678 AGGR_INIT_EXPR_SLOT to set the slot operand.
2680 * cp-tree.h (AGGR_INIT_EXPR_FN): New macro.
2681 (AGGR_INIT_EXPR_SLOT): New macro.
2682 (AGGR_INIT_EXPR_ARG): New macro.
2683 (aggr_init_expr_nargs): New macro.
2684 (AGGR_INIT_EXPR_ARGP): New macro.
2685 (aggr_init_expr_arg_iterator): New.
2686 (init_aggr_init_expr_arg_iterator): New.
2687 (next_aggr_init_expr_arg): New.
2688 (first_aggr_init_expr_arg): New.
2689 (more_aggr_init_expr_args_p): New.
2690 (FOR_EACH_AGGR_INIT_EXPR_ARG): New.
2691 (stabilize_aggr_init): New declaration.
2692 (build_min_non_dep_call_list): Likewise.
2694 * tree.c (process_aggr_init_operands): New function.
2695 (build_aggr_init_array) New function.
2696 (build_cplus_new): Update to use new CALL_EXPR and
2697 AGGR_INIT_EXPR accessor macros. Replace use of build3 with
2698 build_aggr_init_array.
2699 (build_min_non_dep_call_list) New function.
2700 (build_min_nt): Assert input code parameter is not a variable
2701 length expression class.
2702 (build_min, build_min_non_dep): Likewise.
2703 (cp_tree_equal) <CALL_EXPR>: Iterate through the arguments
2704 to check for equality instead of recursing. Handle tcc_vl_exp
2706 (stabilize_call): Update to only handle CALL_EXPRs, not
2707 AGGR_INIT_EXPRs; use new CALL_EXPR accessor macros.
2708 (stabilize_aggr_init): New function.
2709 (stabilize_init): Use it.
2711 * cxx-pretty-print.c (pp_cxx_postfix_expression)
2712 <AGGR_INIT_EXPR, CALL_EXPR>: Update to use new CALL_EXPR and
2713 AGGR_INIT_EXPR accessor macros and argument iterators.
2715 * pt.c (tsubst_copy) <CALL_EXPR>: Replace build_nt with
2716 build_vl_exp. Iterate through the operands, recursively
2717 processing each one.
2718 (tsubst_copy_and_build) <CALL_EXPR>: Update to use new
2719 CALL_EXPR accessor macros.
2720 (value_dependent_expression_p) <default>: Handle tcc_vl_exp
2721 tree code classes. Use TREE_OPERAND_LENGTH instead of
2724 * semantics.c (finish_call_expr): Use build_nt_call_list
2725 instead of build_nt.
2726 (simplify_aggr_init_expr): Update to use new AGGR_INIT_EXPR
2727 accessor macros. Use build_call_array to construct the
2728 CALL_EXPR node instead of build3
2730 * decl2.c (build_offset_ref_call_from_tree): Use
2731 build_nt_call_list and build_min_non_dep_call_list instead
2732 of build_min_nt and build_min_non_dep.
2734 * parser.c (cp_parser_postfix_expression) <CPP_OPEN_PAREN>:
2735 Use build_nt_call_list instead of build_min_nt.
2737 2007-02-15 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
2740 * call.c (build_conditional_expr): Improve error message.
2742 2007-02-13 Dirk Mueller <dmueller@suse.de>
2744 * friend.c (do_friend): Annotate warning about friend
2745 declarations in templates with OPT_Wnon_template_friend.
2746 Convert informal message from warning() to inform().
2748 2007-02-12 Simon Martin <simartin@users.sourceforge.net>
2749 Mark Mitchell <mark@codesourcery.com>
2752 * pt.c (do_decl_instantiation): Detect type mismatches in explicit
2753 instantiations for variables.
2755 2007-02-12 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
2758 * cp-gimplify.c (gimplify_expr_stmt): Don't check extra_warnings.
2759 Check warn_unused_value just once.
2761 2007-02-11 Mark Mitchell <mark@codesourcery.com>
2764 * pt.c (determine_specialization): Use skip_artificial_parms_for.
2765 (fn_type_unificiation): Likewise.
2766 (get_bindings): Likewise.
2768 o2007-02-06 Mark Mitchell <mark@codesourcery.com>
2771 * decl.c (finish_function): Use DECL_REPLACEABLE.
2772 * tree.c (cp_cannot_inline_tree_fn): Likewise.
2774 2007-02-10 Gabriel Dos Reis <gdr@integrable-solutions.net>
2776 * parser.c (cp_parser_primary_expression): Reformat overly long lines.
2778 2007-02-10 Richard Henderson <rth@redhat.com>, Jakub Jelinek <jakub@redhat.com>
2780 * decl.c (grokvardecl): Don't error if !have_tls.
2781 (grokdeclarator): Likewise.
2782 * parser.c (cp_parser_omp_threadprivate): Likewise.
2784 2007-02-07 Jakub Jelinek <jakub@redhat.com>
2787 * cp-gimplify.c (cp_genericize_r): Don't dereference invisiref
2788 parameters and result decls in omp clauses.
2789 (cxx_omp_privatize_by_reference): Pass also invisiref PARM_DECLs
2792 2007-02-05 Dirk Mueller <dmueller@suse.de>
2795 * parser.c (cp_parser_class_specifier): Always initialize bases.
2797 2007-02-05 Paolo Bonzini <bonzini@gnu.org>
2799 * cp-tree.h (OMP_ATOMIC_CODE): Delete.
2800 (OMP_ATOMIC_DEPENDENT_P): Rewrite.
2801 * pt.c (tsubst_expr): Adjust for new format of dependent OMP_ATOMIC
2803 * semantics.c (finish_omp_atomic): Store a whole expression node
2804 in operand 1, and integer_zero_node in operand 0, for dependent
2805 OMP_ATOMIC. Rewrite to make flow easier to understand.
2807 2007-02-03 Gabriel Dos Reis <gdr@integrable-solutions.net>
2809 * decl.c (grokdeclarator): Use OPT_Wreturn_type instead of 0.
2811 2007-02-04 Kazu Hirata <kazu@codesourcery.com>
2813 * class.c, cp-tree.h, decl.c, decl2.c, g++spec.c, init.c,
2814 parser.c, pt.c, tree.c, typeck.c: Follow spelling conventions.
2816 2007-02-03 Douglas Gregor <doug.gregor@gmail.com>
2818 * parser.c (cp_lexer_get_preprocessor_token): Attach the C++0x
2819 keyword warning to -Wc++0x-compat.
2821 2007-02-03 Gabriel Dos Reis <gdr@integrable-solutions.net>
2823 * decl.c (grokdeclarator): Update documentation.
2825 2007-02-02 Jakub Jelinek <jakub@redhat.com>
2828 * decl.c (grokdeclarator): If __thread is used together with
2829 a storage class other than extern and static, clear thread_p
2830 after issuing diagnostics and fall through to checking the
2833 2007-01-30 Roger Sayle <roger@eyesopen.com>
2835 * error.c (dump_type_suffix): Avoid use of cp_build_binary_op when
2836 calculating the size of an array (to avoid recursive errors).
2838 2007-01-30 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
2841 * typeck.c (build_binary_op): Fix logic for warning. Move warning
2843 * call.c (convert_like_real): Don't warn when converting to
2846 2007-01-29 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
2848 * decl.c (pop_label): Replace warning with call to
2849 warn_for_unused_label.
2851 2007-01-28 Andrew Pinski <pinskia@gmail.com>
2854 * semantics.c (finish_pseudo_destructor_expr): Check the
2855 destrutor name by calling check_dtor_name.
2857 2007-01-24 Douglas Gregor <dgregor@osl.iu.edu>
2859 * lex.c (D_CPP0X): Rename.
2861 (reswords): D_CPP0X -> D_CXX0X.
2862 (init_reswords): Ditto.
2863 * parser.c (cp_lexer_get_preprocessor_token): Warn about the use
2864 of C++0x keywords as identifiers.
2866 2007-01-23 Simon Martin <simartin@users.sourceforge.net>
2869 * decl.c (duplicate_decls): Don't reset DECL_INVALID_OVERRIDER_P for
2872 2007-01-23 Ian Lance Taylor <iant@google.com>
2874 * typeck.c (convert_for_assignment): Only warn about a = b = c
2875 when converting to bool.
2877 2007-01-23 Roger Sayle <roger@eyesopen.com>
2879 * call.c (null_ptr_cst_p): Replace use of TREE_CONSTANT_OVERFLOW with
2881 * typeck.c (ignore_overflows): Remove the remaining uses of
2882 TREE_CONSTANT_OVERFLOW.
2884 2007-01-20 Jan Hubicka <jh@suse.cz>
2886 * decl2.c (start_objects, start_static_storage_duration_function):
2887 Do not make the functions uninlinable.
2889 2007-01-17 Ian Lance Taylor <iant@google.com>
2891 * class.c (add_method): Call VEC_reserve_exact rather than passing
2892 a negative size to VEC_reserve.
2894 2007-01-11 Simon Martin <simartin@users.sourceforge.net>
2897 * tree.c (cp_tree_equal): Properly handle MODOP_EXPR trees.
2899 2007-01-10 Mark Mitchell <mark@codesourcery.com>
2902 * decl.c (make_typename_type): If the qualified name is not a
2903 type, issue an error.
2904 * parser.c (cp_parser_elaborated_type_specifier): Fix comment
2907 2007-01-08 Geoffrey Keating <geoffk@apple.com>
2909 * rtti.c: Include target.h.
2910 (emit_support_tinfos): If ! targetm.cxx.library_rtti_comdat (),
2911 don't emit typeinfo for fundamental types as weak.
2912 * Make-lang.in (cp/rtti.o): Update and correct dependencies.
2914 2007-01-08 Richard Guenther <rguenther@suse.de>
2916 * cvt.c (cp_convert_to_pointer): Use build_int_cst_type.
2918 2007-01-08 Mark Shinwell <shinwell@codesourcery.com>
2920 * call.c (standard_conversion): Pass flag to
2921 vector_types_convertible_p to disallow emission of note.
2922 * typeck.c (convert_for_assignment): Pass flag to
2923 vector_types_convertible_p to allow emission of note.
2924 (ptr_reasonably_similar): Pass flag to vector_types_convertible_p
2925 to disallow emission of note.
2927 2007-01-07 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
2930 * typeck.c (build_binary_op): Call overflow_warning if
2931 TREE_OVERFLOW_P is true for the result and not for any of the
2934 2007-01-06 Lee Millward <lee.millward@codesourcery.com>
2937 * class.c (add_method): Don't wait until template
2938 instantiation time to complain about duplicate methods.
2940 2007-01-05 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
2943 * semantics.c (finish_unary_op_expr): Warn only if result
2944 overflowed and operands did not.
2946 2007-01-05 Ian Lance Taylor <iant@google.com>
2948 * typeck.c (build_binary_op): Warn about comparing a non-weak
2951 2007-01-05 Douglas Gregor <doug.gregor@gmail.com>
2953 * pt.c (tsubst): Propagate the need for structural equality checks
2954 when reducing the level of template parameters.
2956 2007-01-03 Kazu Hirata <kazu@codesourcery.com>
2958 * pt.c: Fix a comment typo.
2960 2007-01-02 Ian Lance Taylor <iant@google.com>
2962 * semantics.c (maybe_convert_cond): Optionally warn when using an
2963 assignment as a condition.
2964 * typeck.c (convert_for_assignment): Optionally warn about
2965 assigning the result of an assignment to a bool.
2967 2007-01-02 Douglas Gregor <doug.gregor@gmail.com>
2969 * pt.c (canonical_template_parms): Correct typo in comment.
2971 2007-01-02 Douglas Gregor <doug.gregor@gmail.com>
2973 * typeck.c (structural_comptypes): Renamed from "comptypes".
2974 (comptypes): Use canonical type information to perform fast type
2975 comparison. When VERIFY_CANONICAL_TYPES, verify that the
2976 canonical type comparison returns the same results as we would see
2977 from the current, structural check. Support COMPARE_STRUCTURAL
2978 when we need structural checks.
2979 * decl.c (typename_compare): Fix comment.
2980 (build_typename_type): TYPENAME_TYPE nodes require structural
2981 equality checks, because they resolve different based on the
2983 (make_unbound_class_template): UNBOUND_CLASS_TEMPLATE nodes
2984 require structural equality checks (for now).
2985 (build_ptrmemfunc_type): Build the canonical pointer to member
2987 (compute_array_index_type): Whenever we build a new index type
2988 to represent the size of an array in a template, we need to mark
2989 this index type as requiring structural equality. This goes for
2990 arrays with value-dependent sizes with the current ABI, or all
2992 * tree.c (cplus_array_hash): New.
2993 (struct cplus_array_info): New.
2994 (cplus_array_compare): New.
2995 (cplus_array_htab): New.
2996 (build_cplus_array_type_1): Use a hash table to cache the array
2997 types we build. Build the canonical array type for each array
2999 (cp_build_qualified_type_real): When building a cv-qualified array
3000 type, use the hash table of array types and build canonical array
3002 (bind_template_template_parm): BOUND_TEMPLATE_TEMPLATE_PARM nodes
3003 use structural equality (for now).
3004 * cp-tree.h (COMPARE_STRUCTURAL): New.
3005 * pt.c (canonical_template_parms): New.
3006 (canonical_type_parameter): New.
3007 (process_template_parm): Find the canonical type parameter.
3008 (lookup_template_class): When we have named the primary template
3009 type, set the canonical type for our template class to the primary
3010 template type. If any of the template arguments need structural
3011 equality checks, the template class needs structural equality
3013 (tsubst): When reducing the level of a template template
3014 parameter, we require structural equality tests for the resulting
3015 parameter because its template parameters have not had their types
3016 canonicalized. When reducing a template type parameter, find the
3017 canonical reduced type parameter.
3018 (any_template_arguments_need_structural_equality_p): New.