OSDN Git Service

2007-12-04 Douglas Gregor <doug.gregor@gmail.com>
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
1 2007-12-04  Douglas Gregor  <doug.gregor@gmail.com>
2
3        PR c++/34101
4        * name-lookup.c (arg_assoc_template_arg): Recurse on argument
5        packs.
6        (arg_assoc_type): We don't need to handle TYPE_ARGUMENT_PACK here,
7        since arg_assoc_template_arg will deal with them (better).
8
9 2007-12-04  Douglas Gregor  <doug.gregor@gmail.com>
10
11        PR c++/33509
12        * pt.c (tsubst_exception_specification): Handle substitutions into
13        member templates, where tsubst_pack_expansion returns a
14        TYPE_PACK_EXPANSION.
15
16 2007-12-04  Douglas Gregor  <doug.gregor@gmail.com>
17
18        PR c++/33091
19        * pt.c (unify_pack_expansion): If we didn't deduce any actual
20        bindings for the template parameter pack, don't try to keep the
21        empty deduced arguments.
22        (unify): If a parameter is a template-id whose template argument
23        list contains a pack expansion that is not at the end, then we
24        cannot unify against that template-id.
25
26 2007-12-02  Paolo Carlini  <pcarlini@suse.de>
27
28         PR c++/34061
29         * pt.c (current_template_args): Use error_operand_p.
30
31 2007-12-02  Paolo Carlini  <pcarlini@suse.de>
32
33         PR c++/34273
34         * error.c (dump_decl): Handle TREE_BINFO.
35
36 2007-12-01  Ollie Wild  <aaw@google.com>
37
38         PR c++/8171
39         * typeck.c (build_binary_op): Add conversion of pointers to function
40         members appearing as operands to the equality operators.
41
42 2007-11-30  Jakub Jelinek  <jakub@redhat.com>
43
44         PR c++/34275
45         * error.c (dump_expr): Handle OBJ_TYPE_REF.
46
47 2007-11-29  Jakub Jelinek  <jakub@redhat.com>
48
49         PR c++/34270
50         * tree.c (lvalue_p_1) <case COND_EXPR>: Handle x ?: y
51         in templates.
52         * typeck.c (is_bitfield_expr_with_lowered_type) <case COND_EXPR>:
53         Likewise.
54
55         PR c++/34267
56         PR c++/34268
57         * parser.c (cp_parser_decltype): Don't call finish_id_expression
58         on ~type.
59         * semantics.c (finish_decltype_type): Issue error on types, TYPE_DECLs
60         and ~type early.
61
62 2007-11-27  Jakub Jelinek  <jakub@redhat.com>
63
64         PR tree-optimization/34181
65         * method.c (use_thunk): Don't inline the call in the thunk.
66
67         PR c++/34213
68         * tree.c (decl_linkage): Static data members and static member
69         functions in anonymous ns classes are lk_external.
70
71 2007-11-26  Andreas Krebbel  <krebbel1@de.ibm.com>
72
73         PR c++/34081
74         * decl.c (start_preparsed_function): Pass 
75         processing_template_decl for the new allocate_struct_function
76         parameter.
77
78 2007-11-25  Richard Guenther  <rguenther@suse.de>
79
80         * decl.c (poplevel): Use BLOCK_CHAIN.
81
82 2007-11-24  Ollie Wild  <aaw@google.com>
83
84         * typeck.c (delta_from_ptrmemfunc): New function.
85         (get_member_function_from_ptrfunc): Call delta_from_ptrmemfunc.
86         (build_binary_op): Call delta_from_ptrmemfunc.
87
88 2007-11-23  Jakub Jelinek  <jakub@redhat.com>
89
90         PR c++/30293
91         PR c++/30294
92         * decl.c (cp_finish_decl): Disallow variable or field
93         definitions if extern "Java" aggregates.
94         (grokparms): Disallow parameters with extern "Java"
95         aggregates.
96         (check_function_type): Disallow function return values
97         with extern "Java" aggregates.
98         * init.c (build_new_1): Disallow placement new with
99         extern "Java" aggregates.
100
101 2007-11-23  Mark Mitchell  <mark@codesourcery.com>
102             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
103         
104         PR c++/5310
105         * call.c (convert_like_real): Build a zero constant when __null is
106         converted to an integer type.
107         
108 2007-11-22  Jakub Jelinek  <jakub@redhat.com>
109
110         PR c++/34094
111         * decl2.c (cp_write_global_declarations): Issue error about static
112         data members in anonymous namespace which are declared and used,
113         but not defined.
114
115 2007-11-20  Jakub Jelinek  <jakub@redhat.com>
116
117         PR c++/34089
118         * parser.c (cp_parser_class_head): Reject function template ids.
119
120         PR c++/28879
121         * tree.c (build_cplus_array_type_1): Don't pass any VLA types
122         when processing_template_decl to build_array_type.
123
124         PR c++/33962
125         * pt.c (more_specialized_fn): Don't segfault if one or
126         both argument list end with ellipsis.
127
128 2007-11-18  Jakub Jelinek  <jakub@redhat.com>
129
130         PR c++/30988
131         * semantics.c (finish_call_expr): Set
132         current_function_returns_abnormally if fn is noreturn FUNCTION_DECL
133         or OVERLOAD with all noreturn functions.
134
135 2007-11-16  Jakub Jelinek  <jakub@redhat.com>
136
137         PR c++/34100
138         * pt.c (apply_late_template_attributes): Do nothing if decl's type is
139         error_mark_node.
140
141 2007-11-13  Jakub Jelinek  <jakub@redhat.com>
142
143         PR c++/34054
144         PR c++/34056
145         PR c++/34057
146         PR c++/34058
147         PR c++/34060
148         * pt.c (find_parameter_packs_r): If ppd->set_packs_to_error,
149         set to error_mark_node the outermost POINTER_TYPE to the pack if
150         it is seen in a POINTER_TYPE.
151         (push_template_decl_real): If check_for_bare_parameter_packs
152         fails for function return type, set the return type to
153         integer_type_node.  If check_for_bare_parameter_packs failed
154         for non-function, return error_mark_node.
155
156         PR c++/29225
157         * call.c (build_new_op): Call resolve_args before calling
158         build_over_call.
159
160 2007-11-11  Tom Tromey  <tromey@redhat.com>
161
162         PR c++/17577:
163         * lex.c (handle_pragma_implementation): Use cpp_included_before.
164
165 2007-11-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
166
167         PR c++/8570
168         * pt.c (redeclare_class_template): Update error message. Use a
169         note to show the previous declaration.
170         (tsubst_friend_class): Use the location of the friend template as
171         the input location before calling redeclare_class_template.
172
173 2007-11-11  Jakub Jelinek  <jakub@redhat.com>
174
175         PR c++/34068
176         * semantics.c (finish_pseudo_destructor_expr): Handle
177         object == error_mark_node.
178
179 2007-11-10  Jakub Jelinek  <jakub@redhat.com>
180
181         PR c++/32241
182         * pt.c (tsubst_copy_and_build) <case COMPONENT_REF>: If object_type
183         is not scalar type, let finish_class_member_access_expr handle
184         diagnostics.  Pass BIT_NOT_EXPR argument to
185         finish_pseudo_destructor_expr.  Handle SCOPE_REF properly.
186
187 2007-11-09  Douglas Gregor  <doug.gregor@gmail.com>
188
189         PR c++/33510
190         * decl.c (cp_complete_array_type): If any of the initializer
191         elements are pack expansions, don't compute the array size yet.
192
193 2007-11-08  Andrew Pinski  <pinskia@gmail.com>
194
195         PR c++/30297:
196         * tree.c (decl_linkage): Fields have no linkage.
197
198 2007-11-08  Daniel Jacobowitz  <dan@codesourcery.com>
199
200         * class.c (build_ctor_vtbl_group): Lay out the new type and decl.
201
202 2007-11-07  Douglas Gregor  <doug.gregor@gmail.com>
203
204         PR c++/33045
205         PR c++/33837
206         PR c++/33838
207         * semantics.c (finish_decltype_type): See through INDIRECT_REFs.
208         Be careful with ERROR_MARK_NODEs.
209         * parser.c (cp_parser_check_access_in_redeclaration): Handle NULL
210         argument.
211
212 2007-11-07  Jakub Jelinek  <jakub@redhat.com>
213
214         PR c++/33501
215         * call.c (build_over_call): Don't check TREE_ADDRESSABLE
216         on incomplete type.
217
218 2007-11-06  Douglas Gregor  <doug.gregor@gmail.com>
219
220         PR c++/33977
221         PR c++/33886
222         * tree.c (c_build_qualified_type): Define bridge to
223         cp_build_qualified_type.
224
225 2007-11-06  Douglas Gregor  <doug.gregor@gmail.com>
226
227         PR c++/31439
228         PR c++/32114
229         PR c++/32115
230         PR c++/32125
231         PR c++/32126
232         PR c++/32127
233         PR c++/32128
234         PR c++/32253
235         PR c++/32566
236         * typeck.c (check_return_expr): Pass address of retval to
237         check_for_bare_parameter_packs.
238         * class.c (build_base_field): Tolerate bases that have no layout
239         due to errors.
240         (end_of_base): Ditto.
241         * tree.c (canonical_type_variant): Be careful with
242         ERROR_MARK_NODE.
243         * cp-tree.h (check_for_bare_parameter_packs): Now accepts a
244         tree*.
245         * pt.c (find_parameter_pack_data): Add set_packs_to_error field,
246         which states whether parameter packs should be replaced with
247         ERROR_MARK_NODE.
248         (find_parameter_packs_r): Pass addresses to cp_walk_tree wherever
249         possible. If set_packs_to_error is set true, replace the parameter
250         pack with ERROR_MARK_NODE. Manage our own pointer sets.
251         (uses_parameter_packs): Don't set parameter packs to
252         ERROR_MARK_NODE.
253         (check_for_bare_parameter_packs): Now takes a pointer to a tree,
254         which may be modified (if it is a parameter pack). Instructs
255         find_parameter_packs_r to replace parameter packs with
256         ERROR_MARK_NODE (so that they won't cause errors later on).
257         (process_template_parm): Pass pointer to
258         check_for_bare_parameter_packs.
259         (process_partial_specialization): Replace pack expansions before
260         the end of the template argument list with ERROR_MARK_NODE.
261         (push_template_decl_real): Pass pointer to
262         check_for_bare_parameter_packs. Replace parameter packs not at the
263         end of the template parameter list with ERROR_MARK_NODE.
264         (convert_template_argument): Be more careful about using DECL_NAME
265         on only declarations.
266         (unify): Can't unify against ERROR_MARK_NODE.
267         * semantics.c (finish_cond): Pass pointer to
268         check_for_bare_parameter_packs.
269         (finish_expr_stmt): Ditto.
270         (finish_for_expr): Ditto.
271         (finish_switch_cond): Pass pointer to
272         check_for_bare_parameter_packs, and call it before we put the
273         condition into the statement.
274         (finish_mem_initializers): Pass pointer to
275         check_for_bare_parameter_packs.
276         (finish_member_declaration): Ditto.
277         * parser.c (cp_parser_base_clause): Ditto.
278         
279 2007-11-06  Jakub Jelinek  <jakub@redhat.com>
280
281         PR target/33168
282         * decl.c (cp_finish_decl): Call make_rtl_for_nonlocal_decl already
283         with the final TREE_READONLY flag in place.  processing_template_decl
284         is known to be 0 in this part of function.
285
286         PR c++/33894
287         * cp-tree.h: Update comment - TYPE_LANG_FLAG_0 is not
288         OMP_ATOMIC_DEPENDENT_P in OMP_ATOMIC.
289         * pt.c (tsubst_expr): Assert OMP_ATOMIC_DEPENDENT_P.
290         * semantics.c (finish_omp_atomic): Revert most of the
291         2007-02-05 changes, just keep the new representation of
292         OMP_ATOMIC_DEPENDENT_P OMP_ATOMIC.
293
294 2007-11-05  H.J. Lu  <hongjiu.lu@intel.com>
295
296         PR c++/33871
297         * decl2.c (constrain_visibility): Clear DECL_ONE_ONLY if marked
298         local.
299
300 2007-11-05  Douglas Gregor  <doug.gregor@gmail.com>
301
302         PR c++/33996
303         PR c++/33235
304         PR c++/33930
305         * typeck.c (merge_types): Don't lose rvalue references when
306         merging types.
307         * call.c (build_over_call): Don't elide move constructors just
308         because the copy constructor is trivial (!).
309         (compare_ics): If comparing cv-qualifiers fails, we can still order
310         based on binding lvalues vs. rvalues.
311
312 2007-11-05  Douglas Gregor  <doug.gregor@gmail.com>
313
314         PR c++/33939
315         * pt.c (unify_pack_expansion): bring handling of function call
316         arguments into line with type_unification_real. 
317
318 2007-11-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
319
320         * typeck.c (build_binary_op): Use pedwarn instead of error for
321         consistency.
322
323 2007-11-05  Jakub Jelinek  <jakub@redhat.com>
324
325         PR c++/33836
326         * parser.c (cp_parser_unary_expression): For &&label call
327         cp_parser_non_integral_constant_expression and return error_mark_node
328         if it returned true.
329
330         PR c++/33969
331         * decl.c (grokdeclarator): Don't call build_memfn_type if type
332         is neither FUNCTION_TYPE nor METHOD_TYPE.
333
334 2007-11-02  Jakub Jelinek  <jakub@redhat.com>
335
336         PR c++/33516
337         * parser.c (cp_parser_nested_name_specifier_opt): Use
338         TYPE_MAIN_VARIANT (new_scope) as scope if new_scope is an incomplete
339         typedef of currently open class.
340
341 2007-11-02  Paolo Carlini  <pcarlini@suse.de>
342
343         PR c++/33495
344         * error.c (dump_expr): Deal specially with statements.
345
346 2007-11-01  Jason Merrill  <jason@redhat.com>
347
348         PR c++/30897
349         * pt.c (push_template_decl_real): Set DECL_CONTEXT on template
350         template parms.
351         (lookup_template_class): Use it to get the outer template args
352         for instantiating one.
353
354         PR c++/29236
355         * pt.c (reduce_template_parm_level): tsubst the parameters
356         of a template template parm.
357
358 2007-11-01  Douglas Gregor  <doug.gregor@gmail.com>
359
360         PR c++/33955
361         * pt.c (find_parameter_packs_r): Handle TYPENAME_TYPE.
362
363 2007-11-01  Jakub Jelinek  <jakub@redhat.com>
364
365         PR c++/32384
366         * parser.c (cp_parser_postfix_dot_deref_expression): If
367         POSTFIX_EXPRESSION is type dependent, try to parse it as pseudo dtor
368         first and if that succeeds and type is SCALAR_TYPE_P, create
369         PSEUDO_DTOR_EXPR.
370
371         PR c++/32260
372         * rtti.c (enum_tinfo_kind): Fix TK_TYPE_INFO_TYPE comment.
373         (typeid_ok_p): Use the same alias set for abi::__type_info_pseudo
374         as for std::type_info.
375
376 2007-10-31  Paolo Carlini  <pcarlini@suse.de>
377
378         PR c++/33494
379         * cxx-pretty-print.c (pp_cxx_typeid_expression,
380         pp_cxx_delete_expression): Change to static linkage.
381         * cxx-pretty-print.h: Adjust declarations.
382         * error.c (dump_expr, case EXPR_PACK_EXPANSION, TYPEID_EXPR,
383         MEMBER_REF, DOTSTAR_EXPR, DELETE_EXPR, VEC_DELETE_EXPR,
384         MODOP_EXPR): Forward to pp_expression.
385
386         * cxx-pretty-print.c (pp_cxx_expression, case NON_DEPENDENT_EXPR):
387         Fix typo.
388
389 2007-10-31 Christian Bruel  <christian.bruel@st.com>
390            Mark Mitchell  <mark@codesourcery.com>
391
392         PR c++/19531
393         * typeck.c (check_return_expr): Don't set named_return_value_okay_p
394         if retval is volatile. 
395         
396 2007-10-30  Jakub Jelinek  <jakub@redhat.com>
397
398         PR c++/33616
399         * decl2.c (build_offset_ref_call_from_tree): Call
400         build_non_dependent_expr on object prior to building ADDR_EXPR from it
401         if FN is DOTSTAR_EXPR.
402
403 2007-10-30  Douglas Gregor  <doug.gregor@gmail.com>
404
405         PR c++/31993
406         PR c++/32252
407         * pt.c (find_parameter_packs_r): Fix typo in comment.
408         (convert_template_argument): Look at the pattern of a pack
409         expansion to determine what kind of entity we're converting.
410         (coerce_template_parameter_pack): When we have coerced a non-type
411         template parameter pack, substitute into the type of that pack.
412         (tsubst_pack_expansion): When our substitution of a parameter pack
413         is a "trivial" substitution of itself, just substitute into the
414         pack expansion rather than actually expanding.
415
416 2007-10-29  Jakub Jelinek  <jakub@redhat.com>
417
418         PR c++/33841
419         * class.c (check_bitfield_decl): Don't set field's type to error_mark_node
420         for non-integral type bitfields.  Return true if bitfield is correct, false
421         error has been diagnosed.
422         (check_field_decls): If check_bitfield_decl returned false, call also
423         check_field_decl.
424
425 2007-10-28  Paolo Carlini  <pcarlini@suse.de>
426             Mark Mitchell  <mark@codesourcery.com>
427
428         PR c++/30659
429         * pt.c (do_decl_instantiation): If the VAR_DECL is not a
430         class member error out and return.
431
432 2007-10-27  Jakub Jelinek  <jakub@redhat.com>
433
434         * error.c (reinit_cxx_pp): Initialize cxx_pp->enclosing_scope
435         to current_function_decl rather than 0.
436
437         PR c++/33844
438         * cxx-pretty-print.c (pp_cxx_pm_expression) <case MEMBER_REF>: Print
439         ->* rather than .*.
440         * error.c (dump_expr): Handle MEMBER_REF and DOTSTAR_EXPR.
441
442 2007-10-27  Jason Merrill  <jason@redhat.com>
443
444         PR c++/5247
445         * call.c (convert_default_arg): Detect recursion.
446
447 2007-10-27  Jakub Jelinek  <jakub@redhat.com>
448
449         PR c++/33842
450         * cxx-pretty-print.h (pp_cxx_offsetof_expression): New prototype.
451         * cxx-pretty-print.c (pp_cxx_primary_expression): Handle
452         OFFSETOF_EXPR.
453         (pp_cxx_offsetof_expression_1, pp_cxx_offsetof_expression): New
454         functions.
455         * error.c (dump_expr): Handle OFFSETOF_EXPR.
456
457 2007-10-26  Jason Merrill  <jason@redhat.com>
458
459         PR c++/24791
460         * pt.c (get_template_info): New fn.
461         (template_class_depth): Use it.
462         (push_template_decl_real): Check that the template args of the 
463         definition match the args of the previous declaration.
464
465 2007-10-26  Paolo Carlini  <pcarlini@suse.de>
466
467         PR c++/31988
468         * decl2.c (coerce_new_type): Do not allow a default argument for
469         the first parameter.
470
471 2007-10-26  Douglas Gregor  <doug.gregor@gmail.com>
472
473         PR c++/33839
474         * parser.c (cp_parser_decltype): Return ERROR_MARK_NODE if we
475         don't see the leading '('. Only lookup names if we get an
476         IDENTIFIER_NODE.
477
478 2007-10-26  Jakub Jelinek  <jakub@redhat.com>
479
480         PR c++/33744
481         * parser.c (cp_parser_parenthesized_expression_list): Set
482         greater_than_is_operator_p to true in between the parens.
483
484 2007-10-26  Paolo Carlini  <pcarlini@suse.de>
485
486         PR c++/31747
487         * decl.c (grokdeclarator): In case of conflicting specifiers
488         just return error_mark_node.
489
490 2007-10-26  Ollie Wild  <aaw@google.com>
491
492         * expr.c (cxx_expand_expr): Removed.
493         * cp-tree.h (exx_expand_expr): Removed.
494         * cp-objcp-common.h (LANK_HOOKS_EXPAND_EXPR): Replace cxx_expand_expr
495         with c_expand_expr.
496
497 2007-10-25  Paolo Carlini  <pcarlini@suse.de>
498
499         PR c++/33843
500         * cxx-pretty-print.c (pp_cxx_unqualified_id): Deal with BIT_NOT_EXPR.
501
502 2007-10-23  Jason Merrill  <jason@redhat.com>
503
504         PR c++/25950 (DR 391)
505         * call.c (struct conversion): Remove check_copy_constructor_p.
506         (reference_binding): Always bind a reference directly to a 
507         compatible class rvalue.  Pass down LOOKUP_NO_TEMP_BIND during 
508         temporary creation.
509         (check_constructor_callable): Remove.
510         (convert_like_real): Don't call it.
511         (initialize_reference): Don't call check_constructor_callable.
512         (standard_conversion): Check LOOKUP_NO_CONVERSION instead of
513         LOOKUP_CONSTRUCTOR_CALLABLE.  Don't require a temporary for base
514         conversions if LOOKUP_NO_TEMP_BIND.
515         (implicit_conversion): Pass through LOOKUP_NO_TEMP_BIND.
516         (build_user_type_conversion_1): Pass through LOOKUP_NO_TEMP_BIND for
517         second conversion.
518         * cp-tree.h (LOOKUP_CONSTRUCTOR_CALLABLE): Remove.
519
520 2007-10-22  Jakub Jelinek  <jakub@redhat.com>
521
522         PR c++/33372
523         * semantics.c (finish_omp_clauses): Check !type_dependent_expression_p
524         before checking if its type is integral.
525
526 2007-10-22  Jason Merrill  <jason@redhat.com>
527
528         PR c++/33620
529         * class.c (finish_struct_bits): Copy TYPE_ATTRIBUTES.
530         * pt.c (apply_late_template_attributes): Splice out dependent
531         attributes from DECL_ATTRIBUTES.
532
533         * decl.c (cxx_maybe_build_cleanup): Use build_address.
534
535 2007-10-17  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
536
537         * typeck.c (build_binary_op) : Use appropriate warning option
538         instead of unnamed warning.
539
540 2007-10-16  Paolo Carlini  <pcarlini@suse.de>
541
542         PR c++/31446
543         * pt.c (current_template_args): Do not change TREE_LIST elements
544         with a TREE_VALUE of error_mark_node.
545
546 2007-10-16  Mark Mitchell  <mark@codesourcery.com>
547
548         * typeck.c (cp_apply_type_quals_to_decl): Expand documentation.
549         * decl.c (start_decl): Tidy.
550         (start_decl_1): Call cp_apply_type_quals_to_decl after completing
551         the type.
552         (grokdeclarator): Clarify comment.
553
554 2007-10-14  Andrew Pinski  <pinskia@gmail.com>
555
556         PR c++/30303
557         * decl.c (grokfndecl): Return NULL after the "definition of
558         implicitly-declared" error happened.
559
560 2007-10-12  Simon Martin  <simartin@users.sourceforge.net>
561
562         PR c++/26698
563         * call.c (build_user_type_conversion_1): Do not consider conversion
564         functions to convert a (possibly cv-qualified) object to the (possibly
565         cv-qualified) same object type (or a reference to it), to a (possibly
566         cv-qualified) base class of that type (or a reference to it).
567
568 2007-10-12  Paolo Carlini  <pcarlini@suse.de>
569
570         * pt.c (tsubst): Use template_parm_level_and_index.
571
572 2007-10-12  Jakub Jelinek  <jakub@redhat.com>
573
574         PR c++/32121
575         * parser.c (cp_parser_compound_statement): Handle label-declarations
576         at the beginning of the compound statement.
577         (cp_parser_block_declaration): Issue diagnostics about __label__
578         not at the beginning of a block.
579
580 2007-10-11  Paolo Carlini  <pcarlini@suse.de>
581
582         PR c++/33461
583         * pt.c (coerce_template_parameter_pack): Do not pass error_mark_node
584         to convert_template_argument.
585         (coerce_template_parms): Return error_mark_node after fixed-length
586         error.
587         (tsubst_decl): Check for error_mark_node the return value of the
588         first tsubst in 'case VAR_DECL'.
589
590 2007-10-08  Ollie Wild  <aaw@google.com>
591
592         * typeck2.c (digest_init): Call cplus_expand_constant after
593         convert_for_initialization.
594         * cp-objcp-common.h (LANG_HOOKS_EXPAND_CONSTANT): Removed.
595         * expr.c (cplus_expand_constant): Updated function description.
596
597 2007-10-04  Jason Merrill  <jason@redhat.com>
598
599         PR c++/20416
600         * call.c (initialize_reference): Handle local static reference
601         temps properly.
602
603 2007-10-03  Jason Merrill  <jason@redhat.com>
604
605         PR c++/32470
606         * name-lookup.c (push_namespace_with_attrs): Fold back into...
607         (push_namespace): Here.
608         (handle_namespace_attrs): New fn for the attr code.
609         (leave_scope): Don't pop_visibility.
610         * name-lookup.h (struct cp_binding_level): Remove has_visibility.
611         * parser.c (cp_parser_namespace_definition): Call
612         handle_namespace_attrs and pop_visibility as appropriate. 
613
614         PR c++/11756
615         * mangle.c (write_type) [TYPEOF_TYPE]: Just sorry.
616
617 2007-10-03  Alexandre Oliva  <aoliva@redhat.com>
618
619         * decl.c (duplicate_decls): Preserve linkage flags for mere
620         redeclarations of gnu_inline definitions.
621
622 2007-10-03  Jason Merrill  <jason@redhat.com>
623
624         PR c++/15764
625         * decl.c (wrap_cleanups_r): New fn.
626         (wrap_temporary_cleanups): New fn.
627         (initialize_local_var): Call it.
628
629 2007-09-29  Jason Merrill  <jason@redhat.com>
630
631         PR c++/33094
632         * decl.c (make_rtl_for_nonlocal_decl): It's ok for a member 
633         constant to not have DECL_EXTERNAL if it's file-local.
634
635 2007-09-28  Ollie Wild  <aaw@google.com>
636
637         Revert
638         2007-09-27  Ollie Wild  <aaw@google.com>
639
640         * typeck2.c (digest_init): Call cplus_expand_constant after
641         convert_for_initialization.
642         * cp-objcp-common.h (LANG_HOOKS_EXPAND_CONSTANT): Removed.
643         * expr.c (cplus_expand_constant): Updated function description.
644
645 2007-09-28  Jason Merrill  <jason@redhat.com>
646
647         PR c++/10179
648         * class.c (layout_empty_base): Take rli parameter, update
649         rli->record_align if empty base has user-specified alignment.
650         (build_base_field): Pass rli to it.
651
652 2007-09-28  Paolo Carlini  <pcarlini@suse.de>
653
654         PR c++/33213
655         * error.c (dump_decl): Deal with TYPE_PACK_EXPANSION.
656
657 2007-09-28  Paolo Carlini  <pcarlini@suse.de>
658
659         PR c++/33118
660         * error.c (dump_expr): Deal with ARGUMENT_PACK_SELECT.
661         (dump_type): Use dump_template_argument for TYPE_ARGUMENT_PACK.
662         (dump_parameters): Just call dump_type for argument packs too.
663
664 2007-09-28  Jakub Jelinek  <jakub@redhat.com>
665
666         PR c++/31434
667         * tree.c (cp_build_qualified_type_real): Handle TYPE_PACK_EXPANSION
668         qualification by creating qualified PACK_EXPANSION_PATTERN and
669         then calling make_pack_expansion on it.
670
671 2007-09-27  Ollie Wild  <aaw@google.com>
672
673         * typeck2.c (digest_init): Call cplus_expand_constant after
674         convert_for_initialization.
675         * cp-objcp-common.h (LANG_HOOKS_EXPAND_CONSTANT): Removed.
676         * expr.c (cplus_expand_constant): Updated function description.
677
678 2007-09-27  Jason Merrill  <jason@redhat.com>
679
680         PR c++/33571
681         * decl2.c (is_late_template_attribute): Don't crash on unknown
682         attribute.
683
684 2007-09-27  Paolo Carlini  <pcarlini@suse.de>
685
686         PR c++/33493
687         * error.c (dump_expr): Deal with DELETE_EXPR and VEC_DELETE_EXPR.
688         * cxx-pretty-print.c (pp_cxx_delete_expression): Add missing
689         spaces in the formatting.
690         * cxx-pretty-print.h (pp_cxx_delete_expression): Declare.
691
692 2007-09-27  Jakub Jelinek  <jakub@redhat.com>
693
694         * error.c (cxx_print_error_function): Add third argument, pass
695         it over to lhd_print_error_function.
696         (cp_print_error_function): If diagnostic->abstract_origin, print
697         virtual backtrace.
698         * cp-tree.h (struct diagnostic_info): New forward decl.
699         (cxx_print_error_function): Add third argument.
700
701 2007-09-25  Simon Martin  <simartin@users.sourceforge.net>
702
703         PR c++/33207
704         * name-lookup.c (pushtag): Do not create an implicit typedef before
705         the associated type declaration is known to be valid.
706
707 2007-09-25  Jakub Jelinek  <jakub@redhat.com>
708
709         * tree.c (cxx_printable_name): Compare FUNCTION_DECL uids
710         rather than pointers.
711
712 2007-09-24  Danny Smith  <dannysmith@user.sourceforge.net>
713
714         PR c++/14688
715         * search.c (check_final_overrider): Fail if
716         targetm.comp_type_attributes returns 0.
717
718 2007-09-24  Jason Merrill  <jason@redhat.com>
719
720         PR c++/33239
721         * pt.c (resolve_typename_type): Don't look things up in the original
722         template if it would mean losing template arguments.    
723
724 2007-09-24  Jakub Jelinek  <jakub@redhat.com>
725
726         PR c++/33506
727         * cp-tree.h (cxx_type_hash_eq): New prototype.
728         * cp-objcp-common.h (LANG_HOOKS_TYPE_HASH_EQ): Redefine.
729         * tree.c (cxx_type_hash_eq): New function.
730
731 2007-09-24  Douglas Gregor  <doug.gregor@gmail.com>
732
733         PR c++/33185    
734         * tree.c (cp_build_qualified_type_real): Build a canonical
735         ARRAY_TYPE if the original ARRAY_TYPE was not a canonical type.
736         
737 2007-09-24  Douglas Gregor  <doug.gregor@gmail.com>
738
739         PR c++/33112
740         PR c++/33185    
741         * tree.c (cplus_array_compare): Compare pointers, not types.
742         (build_cplus_array_type_1): Store new array type into the hash
743         table before building the canonical type; build the canonical type
744         correctly.
745         (cp_build_qualified_type_real): Put all of the array types with
746         cv-qualified element types into the C++ array hash table, built as 
747         variants of the unqualified versions.
748         
749 2007-09-23  Jason Merrill  <jason@redhat.com>
750
751         PR c++/16370
752         * decl.c (grokdeclarator): Look through implicit TYPE_DECLs
753         for deprecation warnings.
754
755 2007-09-22  Jason Merrill  <jason@redhat.com>
756
757         PR c++/15269
758         * call.c (build_over_call): Warn about deprecated virtuals.
759
760         PR c++/19407
761         * cp-tree.h (ATTR_IS_DEPENDENT): New macro.
762         (MAYBE_TAGGED_TYPE_P): Remove.
763         * pt.c (apply_late_template_attributes): Check ATTR_IS_DEPENDENT
764         instead of calling is_late_template_attribute again.
765         (tsubst_decl) [TYPE_DECL]: Just check if the name is the tag.
766         (tsubst): A typedef is a TYPE_NAME != TYPE_MAIN_DECL.
767         Don't crash on typedefs from non-template classes.
768         * decl2.c (grokfield): Don't sorry about attrs on template parms.
769         (is_late_template_attribute): All attributes applied to template
770         parms or typename types are dependent.  Static.
771         (splice_template_attributes): Pass decl through.
772         (save_template_attributes): Likewise.
773
774 2007-09-20  Jakub Jelinek  <jakub@redhat.com>
775
776         PR c++/33496
777         * pt.c (tsubst_copy) <case SIZEOF_EXPR>: Handle error_mark_node
778         returned from tsubst_pack_expansion.
779         (tsubst_copy_and_build) <case SIZEOF_EXPR>: Likewise.
780         (tsubst_copy_and_build) <case CONSTRUCTOR>: Likewise.
781
782 2007-09-20  Paolo Carlini  <pcarlini@suse.de>
783
784         PR c++/33460
785         * semantics.c (finish_id_expression): Use consistently
786         context_for_name_lookup.
787         * decl.c (fixup_anonymous_aggr): Fix error message for
788         anonymous struct (vs union).
789
790 2007-09-19  Jason Merrill  <jason@redhat.com>
791
792         PR c++/7586
793         * pt.c (tsubst): Handle typedefs by looking for the specialization.
794         (retrieve_specialization): Only tagged types use 
795         DECL_TEMPLATE_INSTANTIATIONS.
796         (instantiate_class_template): Push nested classes too.
797         (tsubst_decl) [TYPE_DECL]: Only check for canonical decl for
798         tagged types.
799         * cp-tree.h (MAYBE_TAGGED_TYPE_P): New macro.
800         * init.c (is_aggr_type): Remove redundant tests.
801         * class.c (push_nested_class): Use CLASS_TYPE_P.
802
803 2007-09-20  Paolo Carlini  <pcarlini@suse.de>
804
805         PR c++/33459
806         * init.c (build_zero_init): If, recursively, build_zero_init
807         returns a NULL_TREE, do not append it to the VEC of constructors.
808
809 2007-09-18  Jason Merrill  <jason@redhat.com>
810
811         PR c++/17743
812         * pt.c (apply_late_template_attributes): Set processing_template_decl.
813         (tsubst_decl) [TYPE_DECL]: Preserve naming typedef, pass
814         ATTR_FLAG_TYPE_IN_PLACE.
815         (tsubst): Do unqualified lookup to find typedefs from current class.
816         [ARRAY_TYPE]: Propagate alignment info.
817         * decl2.c (is_late_template_attribute): Only defer handling of
818         attribute aligned if the expression is dependent.
819         (save_template_attributes): If we're deferring any attributes,
820         make this a naming typedef.
821
822 2007-09-18  Paolo Carlini  <pcarlini@suse.de>
823
824         PR c++/33462 (again)
825         * cxx-pretty-print.c (pp_cxx_va_arg_expression): Print
826         va_arg instead of __builtin_va_arg.
827
828 2007-09-18  Paolo Carlini  <pcarlini@suse.de>
829
830         PR c++/33462
831         * cxx-pretty-print.c (pp_cxx_va_arg_expression): Add.
832         (pp_cxx_primary_expression): Use it.
833         * cxx-pretty-print.h (pp_cxx_va_arg_expression): Declare.
834         * error.c (dump_expr): Use it.
835
836 2007-09-18  Paolo Carlini  <pcarlini@suse.de>
837
838         PR c++/33463
839         * cxx-pretty-print.c (pp_cxx_postfix_expression): Split
840         out case TYPEID_EXPR to...
841         (pp_cxx_typeid_expression): ... here; use pp_cxx_left_paren
842         and pp_cxx_right_paren.
843         * cxx-pretty-print.h (pp_cxx_typeid_expression): Declare.
844         * error.c (dump_expr): Use it.
845
846 2007-09-18  Paolo Carlini  <pcarlini@suse.de>
847
848         PR c++/33464
849         * cxx-pretty-print.c (pp_cxx_trait_expression): Add.
850         (pp_cxx_primary_expression): Use it.
851         * cxx-pretty-print.h (pp_cxx_trait_expression): Declare.
852         * error.c (dump_expr): Use it.
853
854 2007-09-16  Paolo Carlini  <pcarlini@suse.de>
855
856         PR c++/33124
857         * init.c (build_new): Remove warning for zero-element
858         allocations.
859
860 2007-09-16  Nathan Sidwell  <nathan@codesourcery.com>
861
862         PR c++/32756
863         * call.c (maybe_handle_implicit_object): Set this_p, clear
864         rvaluedness_matches_p.
865         (compare_ics): Do not compare rvaluedness matching when one of the
866         operands is an implicit object.
867
868 2007-09-14  Jason Merrill  <jason@redhat.com>
869
870         PR c++/17743, c++/19163
871         * decl2.c (is_late_template_attribute): New fn.
872         (splice_template_attributes, save_template_attributes): New fns.
873         (cplus_decl_attributes): Call save_template_attributes.
874         * pt.c (apply_late_template_attributes): New fn.
875         (instantiate_class_template, tsubst_decl): Use it.
876         * cp-tree.h: Declare is_late_template_attribute.
877
878 2007-09-13  Tom Tromey  <tromey@redhat.com>
879
880         * parser.c (cp_lexer_new_main): Don't use
881         c_lex_return_raw_strings.
882         (cp_lexer_get_preprocessor_token): Update.  Add special case when
883         lexer is NULL.
884
885 2007-09-11  Jan Hubicka <jh@suse.cz>
886
887         * method.c (use_thunk): Use tree_rest_of_compilation
888         * cp-objecp-common.h (LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Kill.
889         (LANG_HOOKS_CALLGRAPH_EMIT_ASSOCIATED_THUNKS): Define.
890         * cp-tree.h (expand_body): Kill.
891         (emit_associated_thunks): Declare.
892         * semantics.c (emit_associated_thunks): Export.
893         (expand_body): Kill.
894
895 2007-09-09  David Daney  <ddaney@avtrex.com>
896
897         PR c++/33324
898         * init.c (build_new_1):  Use POINTER_PLUS_EXPR instead of MINUS_EXPR
899         to calculate cookie_ptr.
900
901 2007-09-08  Jason Merrill  <jason@redhat.com>
902
903         PR c++/33342
904         * pt.c (most_specialized_class): Set processing_template_decl
905         while tsubsting partial spec args.
906
907 2007-09-06  Jason Merrill  <jason@redhat.com>
908
909         * decl2.c (get_guard): Copy visibility from the guarded variable.
910
911 2007-09-06  Jan Hubicka  <jh@suse.cz>
912
913         * semantics.c (expand_body): Do not mark arguments of clones used.
914
915 2007-09-06  Paolo Carlini  <pcarlini@suse.de>
916
917         PR c++/32674
918         * decl.c (cp_finish_decl): When processing_template_decl,
919         deal correctly with init as TREE_LIST.
920
921 2007-09-06  Tom Tromey  <tromey@redhat.com>
922
923         * decl.c (finish_function): Put return's location on line zero of
924         file.
925
926 2007-09-05  Jason Merrill  <jason@redhat.com>
927
928         PR c++/15745
929         * except.c (prepare_eh_type): Use type_decays_to.
930
931         PR c++/15097
932         * init.c (build_delete): Use build_headof to get the address of the
933         complete object if we aren't using the deleting destructor.
934         * rtti.c (build_headof): No longer static.
935         * cp-tree.h: Declare it.
936
937 2007-09-06  Jakub Jelinek  <jakub@redhat.com>
938
939         * decl.c (duplicate_decls): Set TREE_NOTHROW on __builtin_XX
940         decl if a prototype for XX is provided with throw().
941
942         PR c++/33289
943         * decl.c (builtin_function_1): Set DECL_ANTICIPATED also
944         on __*_chk non-__builtin_* decls.
945
946 2007-09-05  Paolo Carlini  <pcarlini@suse.de>
947
948         PR c++/30302
949         * semantics.c (finish_id_expression): Use context_for_name_lookup
950         insted of DECL_CONTEXT, to see through anonymous structs and unions.
951         * class.c (finish_struct_anon): Deal correctly with anonymous
952         structs (vs unions, as GNU extension) in error messages.
953
954 2007-09-05  Jan Hubicka  <jh@suse.cz>
955
956         * cp/sematics.c (expand_body): Remove unnecesary import_export_decl
957         call, DECL_EXTERNAL checks and current_function_decl saving.
958
959 2007-09-05  Paolo Carlini  <pcarlini@suse.de>
960
961         PR c++/29731 (again)
962         * parser.c (cp_parser_primary_expression): Return error_mark_node
963         when a statement-expression is found in a template-argument list.
964
965 2007-09-04  Jason Merrill  <jason@redhat.com>
966
967         * except.c (initialize_handler_parm): Use
968         fold_build_cleanup_point_expr.
969
970         PR c++/31419
971         * call.c (reference_binding): Don't look for user-defined conversions
972         to the same type.
973
974         PR c++/31411
975         * except.c (initialize_handler_parm): Put a CLEANUP_POINT_EXPR inside
976         the MUST_NOT_THROW_EXPR.
977
978 2007-09-04  Richard Sandiford  <richard@codesourcery.com>
979
980         * decl.c (cp_finish_decl): Call determine_visibility before
981         make_rtl_for_nonlocal_decl.
982
983 2007-09-04  Jason Merrill  <jason@redhat.com>
984
985         PR c++/14032
986         * pt.c (most_specialized_class): Substitute outer template
987         arguments into the arguments of a member template partial
988         specialization.
989         (strip_innermost_template_args): New fn.
990
991 2007-09-03  Daniel Jacobowitz  <dan@codesourcery.com>
992
993         * Make-lang.in (g++spec.o): Remove SHLIB_MULTILIB.
994
995 2007-09-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
996
997         * call.c (name_as_c_string): Supply a TYPE for CONST_CAST.
998         * decl.c (cp_make_fname_decl): Likewise,
999         * parser.c (cp_parser_string_literal): Likewise,
1000         * tree.c (pod_type_p, zero_init_p): Use CONST_CAST_TREE.
1001         * typeck.c (cp_type_quals, cp_type_readonly, cp_has_mutable_p):
1002         Likewise,
1003
1004 2007-09-02  Paolo Carlini  <pcarlini@suse.de>
1005
1006         PR c++/33208
1007         * typeck.c (build_unary_op): Fix error message for
1008         Boolean expression as operand to operator--.
1009
1010 2007-09-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1011
1012         * tree.c (pod_type_p, zero_init_p): Use strip_array_types.
1013         * typeck.c (cp_type_quals, cp_type_readonly, cp_has_mutable_p):
1014         Likewise.
1015
1016 2007-08-31 Douglas Gregor <doug.gregor@gmail.com>
1017
1018         PR c++/32597
1019         * init.c (build_default_init): Make extern.
1020         * cp-tree.h (build_default_init): Declare here.
1021         * pt.c (tsubst_expr): When the instantiation of the initializer of
1022         a variable results in an empty list, default-initialize the
1023         variable.
1024         (tsubst_copy_and_build): When the instantiation of the initializer
1025         in a new expression results in an empty initializer list,
1026         default-initialize it.
1027
1028 2007-08-31  Douglas Gregor  <doug.gregor@gmail.com>
1029
1030         * mangle.c (write_type): Change mangling of rvalue reference from
1031         `RR' to `O'. 
1032
1033 2007-08-31  Jakub Jelinek  <jakub@redhat.com>
1034
1035         * decl.c (duplicate_decls): Remove duplicated line.
1036
1037 2007-08-31  Paolo Carlini  <pcarlini@suse.de>
1038
1039         PR c++/33210
1040         * cxx-pretty-print.c (pp_cxx_unqualified_id): Deal with
1041         BOUND_TEMPLATE_TEMPLATE_PARM.
1042
1043 2007-08-31  Paolo Carlini  <pcarlini@suse.de>
1044
1045         PR c++/32113
1046         * search.c (lookup_member): Check the name argument for
1047         error_mark_node.
1048
1049 2007-08-31  Paolo Carlini  <pcarlini@suse.de>
1050
1051         PR c++/33212
1052         * parser.c (cp_parser_trait_expr): Check rerurn value of
1053         cp_parser_type_id.
1054
1055 2007-08-30  Ollie Wild  <aaw@google.com>
1056
1057         * cvt.c (cp_convert_to_pointer): Remove force parameter. Call
1058         convert_ptrmem for pointer to member conversions.
1059         (convert_to_pointer_force): Update cp_convert_to_pointer call.
1060         (ocp_convert): Update cp_convert_to_pointer call.
1061         * typeck.c (convert_ptrmem): Add conditional for null pointers to
1062         members.
1063         (build_static_cast_1): Check can_convert for conversions in either
1064         direction.
1065         (get_delta_difference_1): New function.
1066         (get_delta_difference): Refactor to call get_delta_difference_1.
1067
1068 2007-08-30  Jakub Jelinek  <jakub@redhat.com>
1069
1070         * decl.c (start_preparsed_function): Set
1071         DECL_DISREGARD_INLINE_LIMITS for GNU_INLINE_P functions.
1072
1073 2007-08-28  Paolo Carlini  <pcarlini@suse.de>
1074
1075         PR c++/33209
1076         * error.c (dump_expr): Deal with TEMPLATE_TYPE_PARM and
1077         BOUND_TEMPLATE_TEMPLATE_PARM.
1078
1079 2007-08-28  Jakub Jelinek  <jakub@redhat.com>
1080
1081         PR c++/32596
1082         PR c++/32400
1083         * pt.c (check_explicit_specialization): Set DECL_INTERFACE_KNOWN
1084         and DECL_NOT_REALLY_EXTERN if tmpl_func is not public.
1085
1086 2007-08-27  Jason Merrill  <jason@redhat.com>
1087
1088         PR c++/29000
1089         * pt.c (build_non_dependent_expr, type_dependent_expression_p): 
1090         Look inside STMT_EXPR.
1091         * semantics.c (stmt_expr_value_expr): New fn.
1092         * cp-tree.h: Declare it.
1093
1094         PR c++/28558
1095         * decl.c (groktypename): Ignore attributes applied to class type.
1096
1097 2007-08-28  Richard Guenther  <rguenther@suse.de>
1098
1099         * decl.c (duplicate_decls): Merge DECL_DISREGARD_INLINE_LIMITS.
1100
1101 2007-08-28  Gabriel Dos Reis  <gdr@integrable-solutions.net>
1102         
1103         * error.c (dump_expr): Handle COMPLEX_CST.
1104         * cxx-pretty-print.c (pp_cxx_primary_expression): Likewise.
1105         (pp_cxx_expression): Likewise.
1106
1107 2007-08-27  Alexandre Oliva  <aoliva@redhat.com>
1108
1109         * decl.c (GNU_INLINE_P): New.
1110         (duplicate_decls): Handle gnu_inline.  Merge attributes and
1111         some flags in overriding definitions.
1112         (redeclaration_error_message): Handle gnu_inline.
1113         (start_preparsed_function): Likewise.
1114
1115 2007-08-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1116
1117         * call.c (sufficient_parms_p): Constify.
1118         * class.c (same_signature_p): Likewise.
1119         * cp-gimplify.c (is_invisiref_parm,
1120         cxx_omp_privatize_by_reference): Likewise.
1121         * cp-objcp-common.c (has_c_linkage): Likewise.
1122         * cp-tree.h (NON_THUNK_FUNCTION_CHECK, THUNK_FUNCTION_CHECK,
1123         sufficient_parms_p, same_signature_p, copy_fn_p, move_fn_p,
1124         grok_ctor_properties, nothrow_libfn_p, skip_artificial_parms_for,
1125         num_artificial_parms_for, comp_template_parms,
1126         template_parameter_pack_p, any_dependent_template_arguments_p,
1127         any_type_dependent_arguments_p, any_value_dependent_elements_p,
1128         repo_export_class_p, cxx_omp_privatize_by_reference, pod_type_p,
1129         zero_init_p, member_p, cp_lvalue_kind,
1130         builtin_valid_in_constant_expr_p, decl_anon_ns_mem_p,
1131         varargs_function_p, is_dummy_object, special_function_kind,
1132         string_conv_p, type_unknown_p, comp_except_specs, compparms,
1133         comp_cv_qualification, is_bitfield_expr_with_lowered_type,
1134         unlowered_expr_type, ptr_reasonably_similar, cp_type_readonly,
1135         cp_has_mutable_p, at_least_as_qualified_p,
1136         invalid_nonstatic_memfn_p, lvalue_or_else, lvalue_p): Likewise.
1137         * decl.c (copy_fn_p, move_fn_p, grok_ctor_properties): Likewise.
1138         * except.c (nothrow_libfn_p): Likewise.
1139         * method.c (skip_artificial_parms_for, num_artificial_parms_for):
1140         Likewise.
1141         * pt.c (comp_template_parms, template_parameter_pack_p,
1142         any_type_dependent_arguments_p, any_value_dependent_elements_p,
1143         any_dependent_template_arguments_p): Likewise.
1144         * repo.c (repo_export_class_p): Likewise.
1145         * semantics.c (anon_aggr_type_p): Likewise.
1146         * tree.c (lvalue_p_1, real_lvalue_p, lvalue_p,
1147         builtin_valid_in_constant_expr_p, decl_anon_ns_mem_p,
1148         varargs_function_p, member_p, is_dummy_object, pod_type_p,
1149         zero_init_p, special_function_p): Likewise.
1150         * typeck.c (comp_array_types, type_unknown_p, comp_except_specs,
1151         comp_array_types, at_least_as_qualified_p, comp_cv_qualification,
1152         compparms, invalid_nonstatic_memfn_p,
1153         is_bitfield_expr_with_lowered_type, unlowered_expr_type,
1154         string_conv_p, ptr_reasonably_similar, cp_type_readonly,
1155         cp_has_mutable_p, lvalue_or_else): Likewise.
1156
1157 2007-08-25  Paolo Bonzini  <bonzini@gnu.org>
1158
1159         * decl.c (cp_tree_node_structure): Kill TINST_LEVEL case.
1160         * cp-objcp-common.c (cp_tree_size): Ditto.
1161         * tree.c (cp_walk_subtrees): Ditto
1162         * cp-tree.def (TINST_LEVEL): Go away.
1163         * cp-tree.h (struct tinst_level_s): Rename to struct tinst_level,
1164         move together with other non-tree structs.
1165         (enum cp_tree_node_structure_enum): Nuke TS_CP_TINST_LEVEL.
1166         (union lang_tree_node): Eliminate tinst_level field.
1167         (TINST_DECL, TINST_LOCATION, TINST_IN_SYSTEM_HEADER_P): Annihilate.
1168         (current_instantiation, outermost_tinst_level): Return
1169         a "struct tinst_level *".
1170
1171         * error.c (print_instantiation_partial_context): Change second
1172         parameter to a "struct tinst_level *".  Replace accessor macros
1173         with field access.
1174         (print_instantiation_full_context): Likewise.
1175         * lex.c (in_main_input_context): Likewise.
1176
1177         * pt.c (struct pending_templates): New.
1178         (pending_templates, last_pending_template): Use it as a type.
1179         (current_tinst_level): Change typo to "struct tinst_level *"
1180         (reopen_tinst_level): Accept "struct tinst_level *", return decl.
1181         (add_pending_template): Construct a "struct pending_template".
1182         Replace TINST_LEVEL accessor macros with field access.
1183         (push_tinst_level): Likewise, using GGC_NEW instead of make_node.
1184         (pop_tinst_level): Likewise.
1185         (instantiate_pending_templates): Likewise.  Factor common code used
1186         when an instantiation has been done.
1187         (outermost_tinst_level): Replace tree_last with loop.
1188         (current_instantiation): Return a "struct tinst_level *".
1189
1190 2007-08-24  Ollie Wild  <aaw@google.com>
1191
1192         * name-lookup.c (add_decl_to_level): Remove addition to vtables chain.
1193         * name-lookup.h (cp_binding_level): Remove vtables member.
1194
1195 2007-08-24  Richard Guenther  <rguenther@suse.de>
1196
1197         * tree.c (cp_cannot_inline_tree_fn): Remove.
1198         * cp-tree.h (cp_cannot_inline_tree_fn): Likewise.
1199         * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN):
1200         Remove define.
1201
1202 2007-08-24  Jakub Jelinek  <jakub@redhat.com>
1203
1204         PR c++/32567
1205         * typeck.c (build_unary_op) <case PREINCREMENT_EXPR>: Return
1206         error_mark_node right away if build_expr_type_conversion
1207         returned it.
1208
1209         PR c++/32898
1210         * name-lookup.c (set_decl_namespace): lookup_qualified_name failure
1211         is error_mark_node rather than NULL_TREE.
1212         * pt.c (check_explicit_specialization): Likewise.
1213
1214         PR c++/31941
1215         * error.c (resolve_virtual_fun_from_obj_type_ref): Handle
1216         TARGET_VTABLE_USES_DESCRIPTORS targets properly.
1217
1218 2007-08-22  Jason Merrill  <jason@redhat.com>
1219
1220         PR c++/29365
1221         * pt.c (outermost_tinst_level): New function.
1222         * lex.c (in_main_input_context): New function.
1223         * cp-tree.h: Declare it.
1224         * decl2.c (constrain_class_visibility): Use it to avoid warning
1225         about uses of the anonymous namespace in the main input file.
1226
1227 2007-08-21  Jakub Jelinek  <jakub@redhat.com>
1228
1229         * init.c (build_new_1): Use get_target_expr instead of save_expr.
1230
1231 2007-08-20  Pawel Sikora  <pluto@pld-linux.org>
1232
1233         PR c++/7302
1234         * class.c (finish_struct_1): Warn when a class has virtual
1235         functions and accessible non-virtual destructor.
1236
1237 2007-08-20  Richard Guenther  <rguenther@suse.de>
1238
1239         PR c++/22369
1240         PR c++/22451
1241         * call.c (build_new_method_call): Convert initializer to
1242         the basetype.
1243         * init.c (build_aggr_init): Do not fiddle with types.
1244         (build_vec_delete_1): Use correct type for POINTER_PLUS_EXPR.
1245         * except.c (build_throw): Do not drop qualifiers for the
1246         pointer type.
1247         * typeck.c (get_member_function_from_ptrfunc): Do not
1248         fiddle with types, instead convert.
1249         (build_ptrmemfunc1): Convert to the target type for
1250         initialization.
1251         (gfc_trans_allocate): Convert result to target type.
1252         * cp-objcp-common.c (cxx_get_alias_set): Pointers to
1253         pointer-to-member structures shall have alias set zero as well.
1254
1255 2007-08-20  Richard Guenther  <rguenther@suse.de>
1256
1257         * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P):
1258         Remove.
1259         * cp-tree.h (cp_auto_var_in_fn_p): Remove.
1260         (nonstatic_local_decl_p): Likewise.
1261         * tree.c (cp_auto_var_in_fn_p): Remove.
1262         * decl.c (nonstatic_local_decl_p): Remove.
1263
1264 2007-08-20  Richard Guenther  <rguenther@suse.de>
1265
1266         * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_WALK_SUBTREES):
1267         Remove define.
1268         * tree.h (cp_walk_tree): New define to walk_tree_1 with
1269         cp_walk_subtrees lh parameter.
1270         (cp_walk_tree_without_duplicates): New define to
1271         walk_tree_without_duplicates_1 with cp_walk_subtrees lh parameter.
1272         * tree.c (count_trees): Call
1273         cp_walk_tree_without_duplicates.
1274         (verify_stmt_tree): Call cp_walk_tree.
1275         (break_out_target_exprs): Likewise.
1276         (WALK_SUBTREE): Likewise.
1277         * cp-gimplify.c (cp_genericize): Likewise.
1278         * cp-pt.c (find_parameter_packs_r): Likewise.
1279         (uses_parameter_packs): Likewise.
1280         (make_pack_expansion): Likewise.
1281         (check_for_bare_parameter_packs): Likewise.
1282         (for_each_template_parm): Likewise.
1283         * decl.c (check_default_argument): Call
1284         cp_walk_tree_without_duplicates.
1285         * except.c (build_throw): Likewise.
1286         * decl2.c (type_visibility): Likewise.
1287         * semantics.c (expand_or_defer_fn): Likewise.
1288         (finalize_nrv): Call cp_walk_tree.
1289
1290 2007-08-20  Jakub Jelinek  <jakub@redhat.com>
1291
1292         PR c++/33025
1293         * init.c (build_new_1): Rename placement_var variable to placement_expr.
1294         Initialize it with save_expr rather than get_temp_regvar.
1295
1296 2007-08-17  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1297
1298         PR c++/28989
1299         * tree.c (lvalue_p_1 <case SAVE_EXPR>): SAVE_EXPRs are never
1300         lvalues.
1301
1302 2007-08-17  Ollie Wild  <aaw@google.com>
1303
1304         PR c++/31749
1305         * name-lookup.c (do_nonmember_using_decl): Shift implicit type
1306         declarations into appropriate slots for comparison.  Fix type
1307         comparison.
1308
1309 2007-08-17  Paolo Carlini  <pcarlini@suse.de>
1310
1311         PR c++/32112
1312         * error.c (dump_decl): Deal with UNBOUND_CLASS_TEMPLATE.
1313         * cxx-pretty-print.c (pp_cxx_unqualified_id): Likewise.
1314
1315 2007-08-17  Paolo Carlini  <pcarlini@suse.de>
1316
1317         PR c++/32870
1318         * parser.c (cp_parser_class_head): Improve error message.
1319
1320 2007-08-16  Seongbae Park  <seongbae.park@gmail.com>
1321
1322         * pt.c (instantiate_decl): Set input_location
1323         for the function end.
1324
1325 2007-08-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1326
1327         * cp-objcp-common.c (cxx_warn_unused_global_decl, cp_expr_size):
1328         Constify.
1329         * cp-tree.h (local_variable_p, nonstatic_local_decl_p,
1330         class_tmpl_impl_spec_p, cp_auto_var_in_fn_p, cp_type_quals,
1331         cxx_incomplete_type_diagnostic, cxx_incomplete_type_error,
1332         cxx_warn_unused_global_decl, cp_expr_size): Likewise.
1333         * decl.c (local_variable_p, nonstatic_local_decl_p): Likewise.
1334         * tree.c (class_tmpl_impl_spec_p, cp_auto_var_in_fn_p): Likewise.
1335         * typeck.c (cp_type_quals): Likewise.
1336         * typeck2.c (cxx_incomplete_type_diagnostic,
1337         cxx_incomplete_type_error): Likewise.
1338
1339 2007-08-16  Paolo Carlini  <pcarlini@suse.de>
1340
1341         PR c++/31132
1342         * pt.c (tsubst_friend_function): When check_classfn
1343         returns error_mark_node likewise return it.
1344
1345 2007-08-15  Jakub Jelinek  <jakub@redhat.com>
1346
1347         PR c++/32992
1348         * typeck.c (check_return_expr): Don't NRV optimize vars in
1349         anonymous unions.
1350         * decl.c (finish_function): Comment fix.
1351
1352 2007-08-15  Paolo Carlini  <pcarlini@suse.de>
1353
1354         PR c++/33035
1355         * pt.c (push_template_decl_real): Depending on TYPE_P
1356         use either TYPE_CONTEXT or DECL_CONTEXT.
1357
1358 2007-08-14  Mark Mitchell  <mark@codesourcery.com>
1359
1360         * semantics.c (finish_omp_clauses): Strip a NOP_EXPR if
1361         constructors and destructors return this.
1362
1363 2007-08-14  Paolo Carlini  <pcarlini@suse.de>
1364
1365         PR c++/27211
1366         * decl2.c (check_classfn): Return error_mark_node in case of error;
1367         in that case, do not call add_method.
1368         * decl.c (start_decl): Deal with check_classfn returning
1369         error_mark_node.
1370         (grokfndecl): Likewise.
1371         * pt.c (tsubst_friend_function): Likewise.
1372
1373 2007-08-14  Andrew Pinski  <pinskia@gmail.com>
1374
1375         PR c++/30428
1376         * typeck.c (build_binary_op): Disallow vector float types with
1377         BIT_IOR_EXPR, BIT_AND_EXPR, and BIT_XOR_EXPR.
1378
1379 2007-08-11  Ian Lance Taylor  <iant@google.com>
1380
1381         * cp-objcp-common.c (cxx_get_alias_set): Change return type to
1382         alias_set_type.
1383         * cp/cp-tree.h (cxx_get_alias_set): Update declaration.
1384
1385 2007-08-10  Ollie Wild  <aaw@google.com>
1386
1387         * name-lookup.c (do_nonmember_using_decl): Print an error for ambiguous
1388         type lookups.
1389         (ambiguous_decl): Construct tree of ambiguous types.  Remove extaneous
1390         function parameter.
1391         (unqualified_namespace_lookup): Fix ambiguous_decl call.
1392         (lookup_using_namespace): Fix ambiguous_decl call.
1393         (qualified_lookup_using_namespace): Fix ambiguous_decl call.
1394
1395 2007-08-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1396
1397         * call.c (name_as_c_string): Use CONST_CAST.
1398         * decl.c (build_decl): Likewise.
1399         * parser.c (cp_parser_string_literal): Likewise.
1400
1401 2007-08-10  Paolo Carlini  <pcarlini@suse.de>
1402
1403         PR c++/17763
1404         * error.c (dump_expr): Consistently use the *_cxx_*
1405         variants of the pretty-print functions.
1406
1407 2007-08-10  Paolo Carlini  <pcarlini@suse.de>
1408
1409         PR c++/22256
1410         * decl.c (check_special_function_return_type): Just error
1411         on return type specified for conversion operator.
1412
1413 2007-08-09  Daniel Berlin  <dberlin@dberlin.org>
1414
1415         * typeck2.c (readonly_error): Handle general expressions.
1416         * error.c (dump_expr): Handle POINTER_PLUS_EXPR
1417
1418 2007-08-06  Dan Hipschman  <dsh@google.com>
1419
1420         * method.c (use_thunk): Use DECL_NAME instead of DECL_RTL to
1421         access function name.
1422
1423 2007-08-04  Alfred Minarik  <a.minarik@aon.at>
1424
1425         PR pch/13676
1426         * lang-specs.h: Add .hp, .hxx, .hpp, .h, .HPP, .tcc as c++ header.
1427         * g++spec.c (lang_specific_driver): Check them.
1428
1429 2007-08-06  Paolo Carlini  <pcarlini@suse.de>
1430
1431         PR c++/19532
1432         * pt.c (inline_needs_template_parms): Fix comment; change return type
1433         to bool.
1434
1435 2007-08-05  Volker Reichelt  <v.reichelt@netcologne.de>
1436
1437         Revert:
1438         2007-03-26  Dirk Mueller  <dmueller@suse.de>
1439
1440         * parser.c (cp_parser_member_declaration): Pedwarn
1441         about stray semicolons after member declarations.
1442
1443 2007-08-02  Lee Millward  <lee.millward@gmail.com>
1444
1445         PR c++/30849
1446         PR c++/30850
1447         PR c++/30851
1448         * parser.c (cp_parser_asm_definition): Detect and discard asm
1449         statements with invalid inputs or outputs.
1450         (cp_parser_asm_operand_list): Return error mark node if any
1451         of the operands are invalid. Adjust documentation.
1452         
1453 2007-08-02  Nick Clifton  <nickc@redhat.com>
1454
1455         * typeck.c: Change copyright header to refer to version 3 of the
1456         GNU General Public License and to point readers at the COPYING3
1457         file and the FSF's license web page.
1458         * optimize.c, lang-specs.h, init.c, class.c, repo.c, decl.c,
1459         config-lang.in, cp-tree.def, call.c, decl.h, ptree.c,
1460         Make-lang.in, method.c, rtti.c, cp-objcp-common.c, g++spec.c,
1461         cp-objcp-common.h, except.c, error.c, operators.def, cvt.c,
1462         tree.c, mangle.c, cp-tree.h, dump.c, search.c, friend.c, expr.c,
1463         cp-gimplify.c, cxx-pretty-print.c, cp-lang.c, typeck2.c, pt.c,
1464         cxx-pretty-print.h, semantics.c, name-lookup.c, lex.c, decl2.c,
1465         name-lookup.h, parser.c: Likewise.
1466
1467 2007-08-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1468
1469         PR middle-end/32668
1470         * call.c (magic_varargs_p): Honor the "type generic" attribute.
1471
1472 2007-07-30  Paolo Carlini  <pcarlini@suse.de>
1473
1474         PR c++/32108
1475         * semantics.c (finish_label_stmt): Reject the __label__
1476         extension outside function scopes.
1477
1478 2007-07-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1479
1480         * parser.c (eof_token): Un-constify.
1481         (cp_lexer_new_main, cp_lexer_new_from_tokens, VEC_alloc,
1482         cp_lexer_consume_token, cp_lexer_purge_token): Remove spurious
1483         casts.
1484
1485 2007-07-28  Kazu Hirata  <kazu@codesourcery.com>
1486
1487         * pt.c, tree.c, typeck2.c: Fix comment typos.
1488
1489 2007-07-28  Simon Martin  <simartin@users.sourceforge.net>
1490             Mark Mitchell  <mark@codesourcery.com>
1491
1492         PR c++/30917
1493         * name-lookup.c (lookup_name_real): Non namespace-scope bindings can be
1494         hidden due to friend declarations in local classes.
1495
1496 2007-07-27  Douglas Gregor  <doug.gregor@gmail.com>
1497
1498         * typeck.c (structural_comptypes): Compare DECLTYPE_TYPE nodes.
1499         * cp-tree.def (DECLTYPE_TYPE): New.
1500         * error.c (dump_type): Dump DECLTYPE_TYPE nodes.
1501         (dump_type_prefix): Ditto.
1502         (dump_type_suffix): Ditto.
1503         * tree.c (DECLTYPE_TYPE): Walk DECLTYPE_TYPE nodes.
1504         * mangle.c (write_type): Handle DECLTYPE_TYPE.
1505         * cp-tree.h (IS_AGGR_TYPE): DECLTYPE_TYPE nodes can be aggregate
1506         types.
1507         (DECLTYPE_TYPE_EXPR): New.
1508         (DECLTYPE_TYPE_ID_EXPR_OR_MEMBER_ACCESS_P): New.
1509         (finish_declared_type): Declare.
1510         * cxx-pretty-print.c (pp_cxx_type_specifier_seq): Print
1511         DECLTYPE_TYPE nodes.
1512         (pp_cxx_type_id): Ditto.
1513         * pt.c (for_each_template_parm_r): Walk DECLTYPE_TYPE children.
1514         (tsubst): Substitute into a DECLTYPE_TYPE node.
1515         (tsubst_copy): Ditto.
1516         (unify): Cannot deduce anything from TYPEOF_TYPE or DECLTYPE_TYPE
1517         nodes.
1518         (dependent_type_p_r): DECLTYPE_TYPE types are always dependent.
1519         * semantics.c (finish_typeof): TYPEOF_TYPE types need to use
1520         structural equality (because we can't hash the expressions).
1521         (finish_declared_type): New.
1522         * lex.c (reswords): Add "decltype" keyword.
1523         * parser.c cp_lexer_next_token_is_decl_specifier_keyword
1524         (cp_parser_postfix_expression): Add member_access_only_p to
1525         restrict postfix expression to member access expressions.
1526         (cp_parser_unary_expression): Update call to
1527         cp_parser_postfix_expression to reflect new parameter.
1528         (cp_parser_declared_type): New.
1529         (cp_parser_simple_type_specifier): Parse decltype types.
1530
1531 2007-07-27  Mark Mitchell  <mark@codesourcery.com>
1532
1533         PR c++/32346
1534         * call.c (convert_for_arg_passing): Only widen bitfields to their
1535         declared types if necessary.
1536
1537 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1538
1539         * parser.c (cp_parser_string_literal, cp_parser_sizeof_operand):
1540         Constify.
1541
1542 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1543
1544         * decl.c (typename_hash, typename_compare): Constify.
1545         * mangle.c (hash_type, compare_type): Likewise.
1546         * pt.c (eq_local_specializations, hash_local_specialization):
1547         Likewise.
1548         * tree.c (cplus_array_hash, cplus_array_compare, list_hash_eq,
1549         list_hash): Likewise.
1550         * typeck2.c (pat_compare): Likewise.
1551
1552 2007-07-24  Nathan Sidwell  <nathan@codesourcery.com>
1553
1554         * method.c (implicitly_declare_fn): Increase alignment if member
1555         function pointer format requires it.
1556
1557 2007-07-24  Paolo Carlini  <pcarlini@suse.de>
1558
1559         PR c++/29001
1560         * typeck.c (check_return_expr): Do not pass a null argument
1561         to null_ptr_cst_p.
1562
1563 2007-07-24  Paolo Carlini  <pcarlini@suse.de>
1564
1565         PR c++/32561
1566         * decl.c (redeclaration_error_message): Call DECL_ANON_UNION_VAR_P
1567         only on VAR_DECL.
1568
1569 2007-07-22  Nathan Sidwell  <nathan@codesourcery.com>
1570
1571         PR c++/32839
1572         * typeck.c (convert_arguments): Only use default args if we have
1573         a function decl.
1574
1575         PR c++/30818
1576         * typeck.c (structural_comptypes): No need to check
1577         resolve_typename_type return value here.
1578         * cp-tree.h (TYPENAME_IS_RESOLVING_P): New.
1579         * pt.c (resolve_typename_type): Follow typename typedefs.  Return
1580         original type rather than error_mark_node in case of failure.
1581         * parser.c (cp_parser_nested_name_specifier_opt): Adjust
1582         resolve_typename_type result check.
1583         (cp_parser_direct_declarator, cp_parser_head,
1584         cp_parser_constructor_declarator_p): Likewise.
1585
1586 2007-07-12  Kazu Hirata  <kazu@codesourcery.com>
1587
1588         * pt.c (template_parms_variadic_p): Remove.
1589         * cp-tree.h: Remove the prototype for template_parms_variadic_p.
1590
1591 2007-07-12  Jakub Jelinek  <jakub@redhat.com>
1592
1593         PR c++/30854
1594         * error.c (dump_expr) <case AGGR_INIT_EXPR>: Pass true as last
1595         argument to dump_aggr_init_expr_args instead of false.
1596
1597 2007-07-11  Douglas Gregor  <doug.gregor@gmail.com>
1598
1599         * typeck.c (comptypes): When USE_CANONICAL_TYPES, use the
1600         canonical types; otherwise, fall back to structural type
1601         comparisons. If ENABLE_CHECKING and USE_CANONICAL_TYPES, give an
1602         internal compiler error if the canonical types are wrong.
1603         
1604 2007-07-11  Paolo Carlini  <pcarlini@suse.de>
1605
1606         PR c++/32560
1607         * parser.c (cp_parser_make_indirect_declarator): When the
1608         the code argument is ERROR_MARK return cp_error_declarator.
1609
1610 2007-07-09  Geoffrey Keating  <geoffk@apple.com>
1611
1612         PR 32617
1613         * decl.c (cxx_init_decl_processing): Don't set
1614         force_align_functions_log.
1615         (grokfndecl): Honour ptrmemfunc_vbit_in_pfn.
1616         * typeck.c (cxx_alignof_expr): When alignof is used on a plain
1617         FUNCTION_DECL, return its alignment.
1618
1619 2007-07-09  Richard Guenther  <rguenther@suse.de>
1620
1621         * decl.c (start_preparsed_function): Do not promote return type.
1622
1623 2007-07-08  Paolo Carlini  <pcarlini@suse.de>
1624
1625         PR c++/30535
1626         * pt.c (unify): Never pass error_mark_node to template_decl_level.
1627
1628 2007-07-07  Mark Mitchell  <mark@codesourcery.com>
1629
1630         PR c++/32232
1631         * pt.c (resolve_overloaded_unification): Robustify.  Return a
1632         bool, not an int.
1633         (type_unification_real): Adjust accordingly.
1634
1635 2007-07-06  Richard Guenther  <rguenther@suse.de>
1636
1637         * init.c (build_new_1): Use the correct pointer type.
1638         * typeck2.c (build_m_component_ref): Likewise.
1639
1640 2007-07-05  Mark Mitchell  <mark@codesourcery.com>
1641
1642         PR c++/32245
1643         * init.c (build_zero_init): Always build an initializer for
1644         non-static storage.
1645         * typeck2.c (build_functional_cast): Use build_zero_init.
1646
1647         PR c++/32251
1648         * init.c (build_new_1): Always pass the allocation function to
1649         build_op_delete_call.
1650         * call.c (build_op_delete_call): Handle operator delete with a
1651         variable-argument list.  Do not issue an error when no matching
1652         deallocation function is available for a new operator.
1653
1654         PR c++/31992
1655         * cp-tree.h (any_value_dependent_elements_p): Declare it.
1656         * decl.c (value_dependent_init_p): New function.
1657         (cp_finish_decl): Use it.
1658         * pt.c (value_dependent_expression_p): Use
1659         any_value_dependent_elements_p.
1660         * parser.c (cp_parser_primary_expression): Add comment about
1661         treating dependent qualified names as integral
1662         constant-expressions.
1663
1664 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
1665
1666         * decl.c (build_ptrmemfunc_type): Always use structural equality
1667         tests when comparing pointer-to-member-function types, because the
1668         handling of TYPE_GET_PTRMEMFUNC_TYPE currently defeats canonical
1669         types.
1670         
1671 2007-07-03  Mark Mitchell  <mark@codesourcery.com>
1672
1673         * init.c (build_new): Tweak comment.
1674
1675 2007-06-29  Dave Brolley  <brolley@redhat.com>
1676
1677         PR c++/31743
1678         * parser.c (cp_parser_new_type_id): Don't reduce a named array
1679         type to its base type and number of elements here.
1680         * init.c (build_new): Call complete_type_or_else to ensure that the
1681         type is complete and to issue a diagnostic if it is not.
1682         (build_new_1): Don't call complete_type_or_else here.
1683
1684 2007-07-03  Richard Guenther  <rguenther@suse.de>
1685
1686         PR c++/32609
1687         * class.c (fixed_type_or_null): Re-lookup the hashtable slot
1688         after recursing.
1689
1690 2007-07-02  Simon Baldwin  <simonb@google.com>
1691
1692         * parser.c (cp_parser_elaborated_type_specifier): Added a warning
1693         for inner-style nested forward declarations that don't declare
1694         anything useful.
1695
1696 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
1697
1698         PR c++/31748
1699         * semantics.c (finish_omp_clauses): Use %qD instead of %qE for
1700         DECL_P in not a variable and appears more than once error messages.
1701
1702 2007-07-01  Ollie Wild  <aaw@google.com>
1703
1704         * name-lookup.c (ambiguous_decl): Fix case when new->value is hidden.
1705         (select_decl): Remove function.
1706         (unqualified_namespace_lookup): Populate binding by calling
1707         ambiguous_decl.  Remove select_decl call.
1708         (lookup_qualified_name): Remove select_decl call.
1709         * decl.c (lookup_and_check_tag): Check for ambiguous references.
1710         * parser.c (cp_parser_elaborated_type_specifier): Skip redundant error
1711         generation when name lookup is ambiguous.
1712
1713 2007-06-29  Douglas Gregor  <doug.gregor@gmail.com>
1714
1715         PR c++/31724
1716         * init.c (build_new_1): Use structural equality on the copy of the
1717         array type.
1718
1719 2007-06-28  Geoffrey Keating  <geoffk@apple.com>
1720
1721         * decl2.c (determine_visibility): Implement
1722         flag_visibility_ms_compat effect on type info.
1723         * decl.c (cxx_init_decl_processing): Implement
1724         global effect of flag_visibility_ms_compat.
1725
1726 2007-06-28  Geoffrey Keating  <geoffk@apple.com>
1727
1728         * decl2.c (start_objects): Mark constructor-running function
1729         as artificial.
1730
1731 2007-06-26  Simon Martin  <simartin@users.sourceforge.net>
1732
1733         PR c++/32111
1734         * decl.c (grokdeclarator): Reset friendp for member functions declared
1735         friend of their own class.
1736
1737 2007-06-23  Mark Mitchell  <mark@codesourcery.com>
1738
1739         * decl2.c (determine_visibility): Don't look for dllexport here.
1740         (determine_visibility_from_class): Tidy.
1741
1742 2007-06-18  Simon Baldwin <simonb@google.com>
1743
1744         PR c++/31923
1745         * parser.c (cp_parser_single_declaration): Added check for storage
1746         class other than sc_none in parsed declaration, and a flag to indicate
1747         if the call is part of an explicit template specialization parse.
1748         * (cp_parser_explicit_specialization): Specialization check flag added
1749         to call to cp_parser_single_declaration(), set true.
1750         * (cp_parser_template_declaration_after_export): Specialization check
1751         flag added to call to cp_parser_single_declaration(), set false.
1752         * pt.c (check_explicit_specialization): Added code to copy visiblity
1753         and linkage from the templated function to the explicit specialization.
1754
1755 2007-06-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1756
1757         * typeck.c (build_binary_op): For templates build the
1758         expression in pieces to avoid the assert in build2_stat.
1759         (get_member_function_from_ptrfunc):
1760         Change over to using POINTER_PLUS_EXPR and convert
1761         the second operand to sizetype.
1762         * typeck2.c (build_m_component_ref):  Likewise.
1763         * init.c (expand_virtual_init): Create a POINTER_PLUS_EXPR
1764         instead of PLUS_EXPR for pointers.
1765         (build_new_1): Likewise.
1766         (build_vec_delete_1): Likewise.
1767         (build_vec_delete): Likewise.
1768         * class.c (build_base_path): Likewise.
1769         (build_base_path): Likewise.
1770         (convert_to_base_statically): Likewise.
1771         (fixed_type_or_null): Handle POINTER_PLUS_EXPR.
1772         (get_vtbl_decl_for_binfo): Handle POINTER_PLUS_EXPR
1773         instead of PLUS_EXPR.
1774         (dfs_accumulate_vtbl_inits): Create a POINTER_PLUS_EXPR
1775         instead of PLUS_EXPR for pointers.
1776         * call.c (build_special_member_call): Likewise.
1777         * rtti.c (build_headof): Likewise.
1778         Use sizetype instead of ptrdiff_type_node.
1779         (tinfo_base_init): Create a POINTER_PLUS_EXPR
1780         instead of PLUS_EXPR for pointers.
1781         * except.c (expand_start_catch_block):  Do a
1782         NEGATIVE and then a POINTER_PLUS_EXPR instead
1783         of a MINUS_EXPR.
1784         * cp-gimplify.c (cxx_omp_clause_apply_fn): Convert
1785         PLUS_EXPR on pointer types over to use
1786         POINTER_PLUS_EXPR and remove the conversion
1787         to the pointer types.
1788         * method.c (thunk_adjust): Use POINTER_PLUS_EXPR for
1789         adding to a pointer type. Use size_int instead of
1790         ssize_int. Convert the index to sizetype before
1791         adding it to the pointer.
1792
1793 2007-06-15  Mark Mitchell  <mark@codesourcery.com>
1794
1795         * cp-tree.h (DECL_VAR_MARKED_P): Remove.
1796         (DECL_ANON_UNION_VAR_P): New macro.
1797         * class.c (fixed_type_or_null): Tidy.  Use a hash table, rather
1798         than DECL_VAR_MARKED_P, to keep track of which variables we have
1799         seen.
1800         * decl.c (redeclaration_error_message): Complain about redeclaring
1801         anonymous union members at namespace scope.
1802         * decl2.c (build_anon_union_vars): Set DECL_ANON_UNION_VAR_P.
1803
1804 2007-06-14  Geoff Keating  <geoffk@apple.com>
1805
1806         * decl2.c (determine_visibility): Ensure that functions with
1807         hidden types as parameters are hidden.
1808
1809         PR 31093
1810         * decl2.c (determine_visibility): Remove duplicate code for
1811         handling type info.
1812
1813 2007-06-12  Ian Lance Taylor  <iant@google.com>
1814
1815         PR libstdc++/29286
1816         * init.c (avoid_placement_new_aliasing): New static function.
1817         (build_new_1): Call it.
1818
1819 2007-06-11  Rafael Avila de Espindola  <espindola@google.com>
1820
1821         * cp-objcp-common.h (LANG_HOOKS_SIGNED_TYPE): Remove.
1822         (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
1823
1824 2007-06-08  Jakub Jelinek  <jakub@redhat.com>
1825
1826         PR c++/32177
1827         * semantics.c (finish_omp_for): Call fold_build_cleanup_point_expr
1828         on init, the non-decl cond operand and increment value.
1829
1830 2007-06-07  Simon Martin  <simartin@users.sourceforge.net>
1831
1832         PR c++/30759
1833         * decl.c (check_initializer): Report an error when a brace enclosed
1834         initializer is used for a non-aggregate type in C++98.
1835         (redeclaration_error_message): Rewrote flag_cpp0x in terms of
1836         cxx_dialect.
1837         (grokdeclarator): Likewise.
1838         (move_fn_p): Likewise.
1839         * typeck.c (check_return_expr): Likewise.
1840         * call.c (reference_binding): Likewise.
1841         * error.c (cp_cpp_error): Likewise.
1842         * pt.c (check_default_tmpl_args): Likewise.
1843         (tsubst): Likewise.
1844         * lex.c (init_reswords): Likewise.
1845         * parser.c (p_parser_primary_expression): Likewise.
1846         (TOKEN_PRECEDENCE): Likewise.
1847         (cp_parser_init_declarator): Likewise.
1848         (cp_parser_ptr_operator): Likewise.
1849         (cp_parser_parameter_declaration): Likewise.
1850         (cp_parser_enclosed_template_argument_list): Likewise.
1851         (cp_parser_skip_to_end_of_template_parameter_list): Likewise.
1852         (cp_parser_next_token_ends_template_argument_p): Likewise.
1853
1854 2007-06-04  Simon Baldwin  <simonb@google.com>
1855
1856         * decl.c (grokdeclarator): Readability change.  Moved case labels
1857         into direct switch statement scope.
1858
1859 2007-06-04  Paolo Carlini  <pcarlini@suse.de>
1860
1861         * call.c (convert_like_real): Remove pointless code.
1862
1863 2007-05-31  Mark Mitchell  <mark@codesourcery.com>
1864
1865         * decl.c (get_atexit_fn_ptr_type): New function.
1866         (get_atexit_node): Use it.
1867         (start_cleanup_fn): Likewise.
1868         (register_dtor_fn): Use the object's destructor, instead of a
1869         separate cleanup function, where possible.
1870         * cp-tree.h (CPTI_ATEXIT_FN_PTR_TYPE): New enumerator.
1871         (atexit_fn_ptr_type_node): New macro.
1872         * decl2.c (build_cleanup): Use build_address.
1873
1874 2007-05-31  Daniel Berlin  <dberlin@dberlin.org>
1875
1876         * typeck.c (build_binary_op): Include types in error.
1877
1878 2007-05-31  Jakub Jelinek  <jakub@redhat.com>
1879
1880         PR c++/31806
1881         * decl.c (cp_finish_decl): Also clear was_readonly if a static var
1882         needs runtime initialization.
1883
1884 2007-05-31  Paolo Carlini  <pcarlini@suse.de>
1885
1886         PR c++/32158
1887         * semantics.c (finish_trait_expr): Complete the types.
1888
1889 2007-05-30  Russell Yanofsky <russ@yanofsky.org>
1890             Douglas Gregor <doug.gregor@gmail.com>
1891             Pedro Lamarao <pedro.lamarao@mndfck.org>
1892             Howard Hinnant <howard.hinnant@gmail.com>
1893
1894         PR c++/7412
1895         PR c++/29939
1896         * typeck.c (comptypes): Don't consider rvalue and lvalue
1897         reference types to be equivalent.
1898         (check_return_expr): Move from certain lvalues when returning
1899         them.
1900         * decl.c (grokdeclarator): Implement reference collapsing.
1901         (copy_fn_p): Don't consider constructors taking rvalue references
1902         to be copy constructors.
1903         (move_fn_p): New.
1904         * call.c (conversion): New "rvaluedness_matches_p" member.
1905         (convert_class_to_reference): Require reference type as first
1906         parameter instead of base type.
1907         (reference_binding): Add logic to handle rvalue references.
1908         (implicit_conversion): Update inaccurate comment.
1909         (convert_like_real): Disable creation of temporaries that are
1910         impossible to initialize for types with move constructors.
1911         (build_over_call): Elide move constructors when possible.
1912         (maybe_handle_implicit_object): Set "rvaluedness_matches_p".
1913         (maybe_handle_ref_bind): Return conversion instead of type node.
1914         (compare_ics): Add logic to use "rvaluedness_matches_p" values to
1915         determine preferred conversion sequences.
1916         * cp-tree.h (TYPE_REF_IS_RVALUE): New.
1917         (LOOKUP_PREFER_RVALUE): New.
1918         (DECL_MOVE_CONSTRUCTOR_P): New.
1919         (struct cp_declarator): Add "reference" member for reference
1920         types, with new "rvalue_ref" flag.
1921         (cp_build_reference_type): Declare.
1922         (move_fn_p): Declare.
1923         * error.c (dump_type_prefix): Format rvalue reference types
1924         correctly in error messages.
1925         * except.c (build_throw): Move from certain lvalues when
1926         throwing.
1927         * mangle.c (write_type): Mangle rvalue references differently
1928         than regular references.
1929         * parser.c (make_reference_declarator): Add boolean parameter for
1930         rvalue references.
1931         (cp_parser_make_indirect_declarator): New.
1932         (cp_parser_new_declarator_opt): Call
1933         cp_parser_make_indirect_declarator. 
1934         (cp_parser_conversion_declarator_opt): Ditto.
1935         (cp_parser_declarator): Ditto.
1936         (cp_parser_ptr_operator): Parse "&&" tokens into rvalue reference
1937         declarators.
1938         * pt.c (tsubst): Implement reference collapsing.
1939         (maybe_adjust_types_for_deduction): Implement special template
1940         parameter deduction rule for rvalue references.
1941         (type_unification_real): Update calls to
1942         maybe_adjust_types_for_deduction.
1943         (try_one_overload): Ditto.
1944         (unify_pack_expansion): Ditto.
1945         * tree.c (lvalue_p_1): Handle rvalue reference types.
1946         (cp_build_reference_type): New.
1947
1948 2007-05-30  Jakub Jelinek  <jakub@redhat.com>
1949
1950         PR c++/31809
1951         * decl.c (cp_finish_decl): Clear TREE_READONLY flag on TREE_STATIC
1952         variables that need runtime initialization.
1953
1954 2007-05-28  Andrew Pinski  <Andrew_pinski@playstation.sony.com>
1955
1956         PR c++/31339
1957         * typeck.c (build_unary_op <case PREINCREMENT_EXPR,
1958         case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,
1959         case POSTDECREMENT_EXPR>): Return the error_mark_node
1960         if either the real or imaginary parts would an
1961         error_mark_node.
1962         
1963 2007-05-25  Simon Martin  <simartin@users.sourceforge.net>
1964             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1965
1966         PR c++/31745
1967         * parser.c (cp_parser_skip_to_closing_brace): Return true if the next
1968         token is a closing brace, false if there are no tokens left.
1969         (cp_parser_namespace_alias_definition): Only consume the next token if
1970         it is a closing brace.
1971
1972         * parser.c (cp_parser_class_specifier): Likewise.
1973
1974 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
1975
1976         * semantics.c (finish_member_declaration): Fix a typo in the
1977         last checkin.
1978
1979 2007-05-25  Douglas Gregor <doug.gregor@gmail.com>
1980
1981         PR c++/31431
1982         PR c++/31432
1983         PR c++/31434
1984         PR c++/31435
1985         PR c++/31437
1986         PR c++/31438
1987         PR c++/31442
1988         PR c++/31443
1989         PR c++/31444
1990         PR c++/31445
1991         * error.c (dump_type): Dump TYPE_ARGUMENT_PACK nodes.
1992         * cp-tree.h (check_for_bare_parameter_packs): Returns bool.
1993         * pt.c (check_for_bare_parameter_packs): Return bool indicated
1994         whether everything was okay. Fix indentation.
1995         (push_template_decl_real): Check for bare parameter packs in
1996         function parameters; where errors occur, mark the parameter types
1997         with ERROR_MARK_NODEs to avert ICEs.
1998         (coerce_template_parameter_pack): New.
1999         (coerce_template_parms): Moved parameter pack coercion into
2000         coerce_template_parameter_pack, and permit it anywhere in the
2001         template parameter list (not just at the end). Parameter and
2002         argument indices can vary (somewhat) separately now, so add
2003         PARM_IDX and ARG_IDX.
2004         (fn_type_unification): Don't set an argument pack as incomplete if
2005         no argument pack was deduced.
2006         (type_unification_real): If a type parameter is a parameter pack
2007         and has not otherwise been deduced, it will be deduced to an empty
2008         parameter pack.
2009         (more_specialized_fn): Use the actual lengths of the argument
2010         lists when comparing against expansions.
2011         * semantics.c (finish_member_declaration): If a field's type has
2012         bare parameter packs, error and set its type to ERROR_MARK_NODE.
2013
2014 2007-05-24  Danny Smith  <dannysmith@users.sourceforge.net>
2015
2016         PR target/27067
2017         * mangle.c (mangle_decl): Call targetm.mangle_decl_assembler_name.
2018
2019 2007-05-22  Ollie Wild  <aaw@google.com>
2020
2021         * name-lookup.c (ambiguous_decl): Adds check for hidden types.
2022         (unqualified_namespace_lookup): Adds check for hidden types.
2023
2024 2007-05-22  Ollie Wild  <aaw@google.com>
2025
2026         * decl.c (duplicate_decls): Verify namespace names are unique.
2027
2028 2007-05-21  Mark Mitchell  <mark@codesourcery.com>
2029
2030         * decl.c (cxx_maybe_build_cleanup): Handle
2031         __attribute__((cleanup)).
2032
2033 2007-05-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2034
2035         * cvt.c (cp_convert_and_check): Don't check warnings if the
2036         conversion failed.
2037
2038 2007-05-18  Geoffrey Keating  <geoffk@apple.com>
2039
2040         * mangle.c (write_real_cst): Use 'unsigned long' for %lx.
2041
2042 2007-05-14  Paolo Carlini  <pcarlini@suse.de>
2043
2044         PR c++/29928
2045         * rtti.c (get_tinfo_decl_dynamic, get_typeid): Try to complete the
2046         type only if is a class type (5.2.8/4).
2047
2048 2007-05-14  Rafael Avila de Espindola  <espindola@google.com>
2049
2050         * cp-objcp-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
2051         * decl.c (grokdeclarator): Use unsigned_type_for instead of
2052         c_common_unsigned_type.
2053
2054 2007-05-11  Silvius Rus  <rus@google.com>
2055
2056         * cp/typeck.c (build_indirect_ref): Add call to
2057         strict_aliasing_warning.
2058         (build_reinterpret_cast_1): Condition call to
2059         strict_aliasing_warning. 
2060
2061 2007-05-11  Jan Hubicka  <jh@suse.cz>
2062
2063         * semantics.c (expand_or_defer_fn): Do not call c_record_cdtor_fn.
2064         * decl2.c (start_objects): ctors and dtors are no longer public.
2065         (cp_write_global_declarations): Do not call c_build_cdtor_fns.
2066         
2067 2007-05-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2068
2069         * typeck.c (build_unary_op): Remove code that used to
2070         handle non lvalue increments/decrements.
2071
2072 2007-05-07  Mike Stump  <mrs@apple.com>
2073
2074         * parser.c (check_empty_body): Add.
2075         (cp_parser_iteration_statement): Add call to check_empty_body.
2076
2077 2007-05-05  Geoffrey Keating  <geoffk@apple.com>
2078
2079         PR 31775
2080         * mangle.c (write_mangled_name): Mangle static variable names.
2081         (write_unqualified_name): Use local-source-name for
2082         namespace-scope static variables.
2083
2084 2007-05-04  Dirk Mueller  <dmueller@suse.de>
2085
2086         * cp-tree.h (DECL_MAIN_P): only if -ffreestanding is
2087         not in effect.
2088
2089 2007-05-02  Seongbae Park  <seongbae.park@gmail.com>
2090
2091         PR c++/31663
2092         * decl2.c (constrain_class_visibility): 
2093         Use strip_pointer_or_array_types instead of strip_array_types.
2094
2095 2007-04-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2096
2097         PR C++/30221
2098         * decl.c (reshape_init_r): Don't reshape the first element if it
2099         is a pointer to member function.
2100
2101 2007-04-27  Simon Baldwin  <simonb@google.com>
2102
2103         * decl.c (grokparms): Changed message format from %qD to %qE.
2104
2105 2007-04-27  Douglas Gregor  <doug.gregor@gmail.com>
2106
2107         * error.c (maybe_warn_variadic_templates): Variadic templates are
2108        now in C++0x, so only warn about them in C++98 mode.
2109         
2110 2007-04-26  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2111
2112         PR C++/30016
2113         * typeck.c (build_reinterpret_cast_1): Only allow conversion to
2114         integeral types from vectors types.
2115
2116 2007-04-26  Jakub Jelinek  <jakub@redhat.com>
2117
2118         PR c++/31598
2119         * semantics.c (finish_omp_clauses): Don't create CP_OMP_CLAUSE_INFO
2120         for type dependent OMP_CLAUSE_DECLs.
2121
2122 2007-04-24  Mark Mitchell  <mark@codesourcery.com>
2123
2124         PR c++/31338
2125         * cp-tree.h (ARITHMETIC_TYPE): Include COMPLEX_TYPE.
2126         * typeck.c (type_after_usual_arithmetic_conversions): Adjust, as
2127         COMPLEX_TYPE is now an ARITHMETIC_TYPE.
2128         * init.c (build_zero_init): Adjust, as
2129         COMPLEX_TYPE is now a SCALAR_TYPE.
2130         * typeck2.c (digest_init): Allow brace-enclosed initializers for
2131         COMPLEX_TYPE, even though that is now a SCALAR_TYPE.
2132
2133 2007-04-25  Paolo Carlini  <pcarlini@suse.de>
2134
2135         * semantics.c (classtype_has_nothrow_copy_or_assign_p): Adjust
2136         per N2255; rename as classtype_has_nothrow_assign_or_copy_p.
2137         (trait_expr_value): Adjust.
2138
2139 2007-04-23  Simon Baldwin  <simonb@google.com>
2140
2141         * decl.c (grokparms): Added new error for duplicate function
2142         parameters names in function prototypes, to match gcc behavior.
2143
2144 2007-04-23  Jan Hubicka  <jh@suse.cz>
2145
2146         * cp/decl2.c (finish_objects): Do not call target constructor/destructor
2147         bits dirrectly.
2148
2149 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2150
2151         * cp-tree.h (lang_tree_node): Use GENERIC_NEXT
2152         instead of checking GIMPLE_STMT_P in chain_next.
2153
2154 2007-04-17  Mark Mitchell  <mark@codesourcery.com>
2155
2156         PR c++/31513
2157         * call.c (convert_for_arg_passing): Convert bitfields to their
2158         declared types.
2159
2160 2007-04-17  Simon Martin  <simartin@users.sourceforge.net>
2161
2162         PR c++/31517
2163         * pt.c (value_dependent_expression_p): Handle MODOP_EXPRs.
2164
2165 2007-04-16  Seongbae Park <seongbae.park@gmail.com>
2166
2167         PR c++/29365
2168         * cp/decl2.c (constrain_class_visibility):
2169         Do not warn about the use of anonymous namespace in the main input file.
2170
2171 2007-04-15  Mark Mitchell  <mark@codesourcery.com>
2172
2173         * cp-tree.h (current_template_parms): Fix typo in comment.
2174
2175 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
2176
2177         * cp-tree.h, error.c: Fix comment typos.
2178
2179 2007-04-13  Jason Merrill  <jason@redhat.com>
2180
2181         PR c++/31074
2182         * call.c (reference_binding): Add c_cast_p parm.  If true,
2183         add quals to TO as needed to make it reference-compatible.
2184
2185 2007-04-11  Jan Hubicka  <jh@suse.cz>
2186
2187         * cp/class.c (convert_to_base_statically): Fold produced tree; verify
2188         that we are not processing template_decl.
2189
2190 2007-04-09  Mark Mitchell  <mark@codesourcery.com>
2191
2192         PR c++/31449
2193         * class.c (build_base_path): Ensure that the converted pointer has
2194         the same cv-qualification as the input.
2195
2196 2007-04-09  Paolo Carlini  <pcarlini@suse.de>
2197
2198         * tree.c (cp_tree_equal): Deal with TRAIT_EXPR.
2199
2200 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
2201
2202         * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS):
2203         Do not set it.
2204         (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do not set it.
2205         * tree.c (cp_add_pending_fn_decls): Remove.
2206         * cp-tree.h (cp_add_pending_fn_decls): Remove prototype.
2207
2208 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
2209
2210         Revert change removing staticp.
2211
2212 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
2213
2214         * cp-objcp-common.c (cxx_staticp): Remove.
2215         * cp-objcp-common.h (LANG_HOOKS_STATICP): Remove.
2216         * cp-tree.h (cxx_staticp):      
2217
2218 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
2219
2220         * class.c (check_for_override): Don't remove dllmport attribute
2221         of virtual methods.
2222
2223 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
2224
2225         PR c++/30847
2226         * typeck.c (build_modify_expr): For COND_EXPR on LHS, if RHS has void
2227         type issue error and return early.
2228
2229 2007-03-30  Jason Merrill  <jason@redhat.com>
2230
2231         PR c++/31187
2232         * typeck.c (cp_type_readonly): New fn.
2233         * cp-tree.h: Declare it.
2234         * decl.c (start_decl): Set implicit DECL_THIS_STATIC here.
2235         (cp_finish_decl): Not here.
2236
2237 2007-03-31  Richard Guenther  <rguenther@suse.de>
2238
2239         * optimize.c (maybe_clone_body): Replace splay-tree usage by
2240         pointer-map.
2241
2242 2007-03-31  Douglas Gregor  <doug.gregor@gmail.com>
2243
2244         PR c++/31138
2245         PR c++/31140
2246         PR c++/31141
2247         * parser.c (declarator_can_be_parameter_pack): New.
2248         (cp_parser_template_parameter): Only parse the `...' if the
2249         declarator can be a parameter pack.
2250         (cp_parser_parameter_declaration): Ditto. Also, handle when TYPE
2251         is NULL.
2252         * pt.c (find_parameter_packs_r): Look into the bounds on integer
2253         types (they could be used as array bounds). 
2254         (check_for_bare_parameter_packs): Deal with TEMPLATE_PARM_INDEX.
2255         (tsubst_pack_expansion): Handle failure to expand parameter
2256         packs.
2257         
2258 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
2259
2260         PR c++/26099
2261         * cp-tree.h (enum cp_trait_kind, struct tree_trait_expr,
2262         TRAIT_EXPR_TYPE1, TRAIT_EXPR_TYPE2, TRAIT_EXPR_KIND): Add.
2263         (enum cp_tree_node_structure_enum, union lang_tree_node): Update.
2264         (CLASS_TYPE_NON_UNION_P): Add.
2265         (struct lang_type_class): Add has_complex_dflt.
2266         (TYPE_HAS_COMPLEX_DFLT, TYPE_HAS_TRIVIAL_DFLT): Add.
2267         (locate_copy, locate_ctor, locate_dtor, finish_trait_expr): Declare.
2268         * cp-tree.def: Add TRAIT_EXPR.
2269         * cp-objcp-common.c (cp_tree_size): Add TRAIT_EXPR case.
2270         * lex.c (struct resword): Add __has_nothrow_assign,
2271         __has_nothrow_constructor, __has_nothrow_copy, __has_trivial_assign,
2272         __has_trivial_constructor, __has_trivial_copy,
2273         __has_trivial_destructor, __has_virtual_destructor, __is_abstract,
2274         __is_base_of, __is_class, __is_convertible_to, __is_empty, __is_enum,
2275         __is_pod, __is_polymorphic, __is_union.
2276         * parser.c (cp_parser_primary_expression): Deal with the new RIDs.
2277         (cp_parser_trait_expr): New.
2278         * semantics.c (finish_trait_expr, trait_expr_value
2279         classtype_has_nothrow_copy_or_assign_p): New.
2280         * method.c (locate_copy, locate_ctor, locate_dtor): Do not define
2281         as static.
2282         * decl.c (cp_tree_node_structure): Add TRAIT_EXPR.
2283         * class.c (check_bases, check_field_decl, check_bases_and_members):
2284         Deal with TYPE_HAS_COMPLEX_DFLT (t) too.
2285         * pt.c (uses_template_parms, tsubst_copy_and_build,
2286         value_dependent_expression_p, type_dependent_expression_p): Deal with
2287         TRAIT_EXPR.
2288         * tree.c (cp_walk_subtrees): Deal with TRAIT_EXPR.
2289
2290 2007-03-29  Richard Guenther  <rguenther@suse.de>
2291
2292         * tree.c (cp_walk_subtrees): Do not set input_location.
2293
2294 2007-03-28  Simon Martin  <simartin@users.sourceforge.net>
2295
2296         PR c++/29077
2297         * decl.c (grokfndecl): Properly setup decl if it is a constructor or a
2298         destructor.
2299
2300 2007-03-28 Douglas Gregor <doug.gregor@gmail.com>
2301
2302         * parser.c (struct cp_parser): Update comment for
2303         greater_than_is_operator_p.
2304         (cp_parser_primary_expression): In C++0x mode, a cast operator can
2305         be terminated with a `>>' token when !GREATER_THAN_IS_OPERATOR_P.
2306         (TOKEN_PRECEDENCE): In C++0x mode, `>>' is treated like `>' when
2307         !GREATER_THAN_IS_OPERATOR_P.
2308         (cp_parser_binary_expression): When -Wc++0x-compat, warn about
2309         `>>' operators that will become two `>' tokens in C++0x.
2310         (cp_parser_parameter_declaration): Treat `>>' like `>' in C++0x
2311         mode, allowing it to terminate default arguments.
2312         (cp_parser_enclosed_template_argument_list): In C++0x mode, treat
2313         `>>' like two consecutive `>' tokens.
2314         (cp_parser_skip_to_end_of_template_parameter_list): Ditto.
2315         (cp_parser_next_token_ends_template_argument_p): In C++0x, `>>'
2316         ends a template argument.
2317
2318 2007-03-28  Douglas Gregor  <doug.gregor@gmail.com>
2319
2320         * decl.c (redeclaration_error_message): Complain when redeclaring
2321         a friend function with default template arguments (C++0x mode only).
2322         * cp-tree.h (check_default_tmpl_args): Declare.
2323         * pt.c (check_default_tmpl_args): In C++0x mode, permit default
2324         template arguments in function templates. Add support for checking
2325         the default template arguments of friend templates.
2326         (push_template_decl_real): Fix call to check_default_tmpl_args.
2327         (type_unification_real): If a template parameter has not been
2328         deduced but provides a default template argument, substitute into
2329         that default template argument.
2330         * parser.c (cp_parser_init_declarator): When declaring (but not
2331         defining!) a function template in C++0x mode, check for default
2332         template arguments.
2333
2334 2007-03-28 Douglas Gregor <doug.gregor@gmail.com>
2335
2336         PR c++/29993
2337         * decl.c (grokdeclarator): Deal with cv-qualified function type
2338         typedefs in the same way for member and non-member functions.
2339
2340 2007-03-26  Dirk Mueller  <dmueller@suse.de>
2341
2342         * parser.c (cp_parser_member_declaration): Pedwarn
2343         about stray semicolons after member declarations.
2344
2345 2007-03-26  Paolo Carlini  <pcarlini@suse.de>
2346
2347         PR c++/30500
2348         * pt.c (instantiate_decl): Set in_system_header.
2349
2350 2007-03-22  Mark Mitchell  <mark@codesourcery.com>
2351
2352         * cp-tree.h (current_tempalte_parms): Improve documentation.
2353         * pt.c (current_template_args): Likewise.
2354
2355         PR c++/30863
2356         * parser.c (cp_parser_parse_and_diagnose_invalid_type_name): Do
2357         not consume tokens when failing.
2358
2359 2007-03-22  Jim Wilson  <wilson@specifix.com>
2360             Mark Mitchell  <mark@codesourcery.com>
2361
2362         PR c++/31273
2363         * call.c (standard_conversion): Use type_decays_to.  Keep FCODE
2364         consistent with FROM.
2365
2366 2007-03-22  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2367
2368         * error.c (dump_expr): Handle dependent names that designate types.
2369         * cxx-pretty-print.c (pp_cxx_unqualified_id): Handle TYPENAME_TYPE.
2370
2371 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
2372
2373         * cp-tree.def, parser.c, pt.c: Fix comment typos.
2374
2375 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2376
2377         * cvt.c (cp_convert_and_check) : Define.
2378         * cp-tree.h (cp_convert_and_check): Declare.
2379         * call.c (convert_conversion_warnings): Rename to
2380         conversion_null_warnings.  The warning for floating-point to
2381         integer is handled by convert_and_check in convert_like_real.
2382         (convert_like_real): convert_conversion_warnings was renamed as
2383         conversion_null_warnings.
2384         * typeck.c (build_binary_op): Use cp_convert_and_check to warn for
2385         overflow and changes of value during conversion.
2386
2387 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2388
2389         PR c++/30891
2390         * parser.c (cp_parser_statement): If 'namespace' is found, this
2391         only can be a namespace alias definition, so parse it now.
2392         (cp_parser_namespace_alias_definition): if we find an open brace
2393         instead of '=', then this is actually a misplaced namespace
2394         definition.
2395         
2396 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2397
2398         PR c++/24924
2399         * decl.c (cxx_init_decl_processing): Move command-line options
2400         processing to c-opts.c.
2401         
2402 2007-03-15  Douglas Gregor  <doug.gregor@gmail.com>
2403
2404         * ptree.c (cxx_print_type): Use formatting markup for integers
2405         when printing template parameter index/level/orig level.
2406         (cxx_print_xnode): Ditto.
2407         * cp-tree.h (TEMPLATE_PARM_PARAMETER_PACK): Use TREE_LANG_FLAG_0.
2408         (struct template_parm_index_s): Remove the PARAMETER_PACK member.
2409         Make INDEX, LEVEL, and ORIG_LEVEL integers instead of
2410         HOST_WIDE_INTs.
2411         (struct saved_scope): Make X_PROCESSING_TEMPLATE_DECL an int,
2412         rather than a HOST_WIDE_INT.
2413         Turn X_PROCESSING_EXPLICIT_INSTANTIATION, SKIP_EVALUATION, and
2414         NEED_POP_FUNCTION_CONTEXT into bool bitfields; reorder fields for
2415         better bit-packing.
2416         (struct language_function): Make RETURNS_VALUE, RETURNS_NULL,
2417         RETURNS_ABNORMALLY, IN_FUNCTION_TRY_HANDLER, and
2418         IN_BASE_INITIALIZER bool bitfields.
2419         (struct cp_declarator): Make KIND a 4-bit field. Make
2420         PARAMETER_PACK_P a bool bitfield just after KIND.
2421         * pt.c (uses_parameter_packs): Destroy the pointer set.
2422         (make_pack_expansion): Ditto.
2423         (check_for_bare_parameter_packs): Ditto.
2424         * name-lookup.c (push_to_top_level): Make need_pop a bool value.
2425         
2426 2007-03-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2427
2428         PR c++/31165
2429         * call.c  (convert_default_arg): Instead of copying the node,
2430         unshare it.
2431
2432 2007-03-15  Dirk Mueller  <dmueller@suse.de>
2433
2434         PR c++/30860
2435         * call.c (convert_conversion_warnings): New..
2436         (convert_like_real): .. factored out from here.
2437         (convert_conversion_warnings): Add warning about
2438         false being converted to NULL in argument passing.
2439
2440 2007-03-14  Dirk Mueller  <dmueller@suse.de>
2441
2442         * cp/semantics.c (c_finish_if_stmt): Call empty_if_body_warning.
2443         (finish_do_body): Warn about empty body in do/while statement.
2444
2445 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2446
2447         * class.c (warn_hidden): Add OPT_Woverloaded_virtual to warning.
2448         
2449 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2450
2451         PR c/21438
2452         * typeck.c (build_binary_op): Call warn_for_div_zero instead of
2453         warning.
2454         
2455 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
2456
2457         * cp/repo.c (init_repo): Initialize random_seed saved options.
2458         (finish_repo): Adjust.
2459
2460 2007-03-13  Mark Mitchell  <mark@codesourcery.com>
2461
2462         PR bootstrap/30899
2463         * Make-lang.in (doc/g++.1): Use $< to specify the location from
2464         which to copy.
2465
2466 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
2467
2468         * decl.c (compute_array_index_type): New warning flag warn_vla.
2469
2470 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
2471
2472         PR c++/30108
2473         * call.c (convert_default_arg): Copy non-constant arguments.
2474
2475 2007-03-11  Mark Mitchell  <mark@codesourcery.com>
2476
2477         PR c++/31038
2478         * parser.c (cp_parser_postfix_expression): Disallow compound
2479         literals in constant expressions.
2480
2481         PR c++/30328
2482         * semantics.c (finish_typeof): Use unlowered_expr_type.
2483         
2484 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
2485
2486         PR c++/30274
2487         * cp-tree.h (unlowered_expr_type): New function.
2488         * typeck.c (is_bitfield_expr_with_lowered_type): Handle
2489         COMPOUND_EXPR, MODIFY_EXPR, and SAVE_EXPR.
2490         (unlowered_expr_type): New function.
2491         (build_unary_op): Disallow predecrements of bool bitfields.
2492         * call.c (build_conditional_expr): Use unlowered_expr_type.
2493         * pt.c (type_unification_real): Likewise.
2494
2495 2007-03-09  Douglas Gregor  <doug.gregor@gmail.com>
2496
2497         PR c++/20599
2498         * typeck.c (check_return_expr): Check for bare parameter packs.
2499         (comptypes): Compare template parameter packs and
2500         type pack expansions.
2501         * decl.c (grokdeclarator): Deal with the declaration of function
2502         parameter packs.
2503         (grokparms): Verify that the (optional) function parameter pack is
2504         at the end of the parameter list.
2505         (xref_basetypes): Handle pack expansions in the base class.
2506         (cp_tree_node_structure): Handle ARGUMENT_PACK_SELECT.
2507         * cp-tree.def (TYPE_ARGUMENT_PACK): New.
2508         (NONTYPE_ARGUMENT_PACK): New.
2509         (TYPE_PACK_EXPANSION): New.
2510         (EXPR_PACK_EXPANSION): New.
2511         (ARGUMENT_PACK_SELECT): New.
2512         * cp-objcp-common.c (cp_tree_size): Compute size of
2513         (NON)TYPE_ARGUMENT_PACK, (TYPE|EXPR)_PACK_EXPANSION, and
2514         ARGUMENT_PACK_SELECT.
2515         * error.c (dump_template_argument): Print template argument packs.
2516         (dump_template_argument_list): Ditto.
2517         (dump_template_parameter): Dump `...' for template type parameter
2518         packs.
2519         (dump_type): Dump TYPE_PACK_EXPANSION nodes.
2520         (dump_parameters): Print function parameter packs.
2521         (dump_template_parms): Print template argument packs.
2522         (dump_expr): Dump EXPR_PACK_EXPANSION nodes.
2523         (maybe_warn_variadic_templates): New.
2524         * operators.def: Add ellipsis operator for EXPR_PACK_EXPANSION.
2525         * tree.c (cp_walk_subtrees): Walk BASELINK, TYPE_ARGUMENT_PACK,
2526         NONTYPE_ARGUMENT_PACK, TYPE_PACK_EXPANSION, EXPR_PACK_EXPANSION,
2527         CAST_EXPR. 
2528         * mangle.c (write_type): Mangle TYPE_PACK_EXPANSION.
2529         (write_template_arg): Write argument packs as separate arguments.
2530         * cp-tree.h (struct template_parm_index_s): Add flag that
2531         indicates that the template parameter is actually a parameter
2532         pack.
2533         (struct tree_argument_pack_select): New.
2534         (enum cp_tree_node_structure_enum): Add TS_CP_ARGUMENT_PACK_SELECT.
2535         (union lang_tree_node): Add argument_pack_select.
2536         (FUNCTION_PARAMETER_PACK_P): New.
2537         (PACK_EXPANSION_P): New.
2538         (PACK_EXPANSION_PATTERN): New.
2539         (SET_PACK_EXPANSION_PATTERN): New.
2540         (PACK_EXPANSION_PARAMETER_PACKS): New.
2541         (ARGUMENT_PACK_P): New.
2542         (ARGUMENT_PACK_ARGS): New.
2543         (SET_ARGUMENT_PACK_ARGS): New.
2544         (ARGUMENT_PACK_INCOMPLETE_P): New.
2545         (ARGUMENT_PACK_EXPLICIT_ARGS): New.
2546         (TEMPLATE_PARM_PARAMETER_PACK): New.
2547         (TEMPLATE_TYPE_PARAMETER_PACK): New.
2548         (ARGUMENT_PACK_SELECT_FROM_PACK): New.
2549         (ARGUMENT_PACK_SELECT_INDEX): New.
2550         (ARGUMENT_PACK_SELECT_ARG): New.
2551         (struct cp_declarator): Add parameter_pack_p flag.
2552         (maybe_warn_variadic_templates): Declare.
2553         (process_template_parm): Add bool parameter IS_PARAMETER_PACK, to
2554         indicate a template parameter pack. 
2555         (uses_parameter_packs): Declare.
2556         (template_parameter_pack_p): Declare.
2557         (template_parms_variadic_p): Declare.
2558         (make_pack_expansion): Declare.
2559         (check_for_bare_parameter_packs): Declare.
2560         * cxx-pretty-print.c (pp_cxx_unary_expression): Print
2561         sizeof... expressions. 
2562         (pp_cxx_expression): Print pack expansions and non-type argument
2563         packs.
2564         (pp_cxx_exception_specification): Print pack expansions. 
2565         (pp_cxx_direct_declarator): Print ellipsis for parameter packs.
2566         (pp_cxx_ctor_initializer): Print pack expansions.
2567         (pp_cxx_type_id): Print pack expansions.
2568         (pp_cxx_template_argument_list): Print argument packs.
2569         (pp_cxx_template_parameter): Print ellipsis for template parameter
2570         packs.
2571         * pt.c (comp_template_parms): Compare template parameter packs.
2572         (template_parameter_pack_p): New.
2573         (template_parms_variadic_p): New.
2574         (template_args_variadic_p): New.
2575         (make_ith_pack_parameter_name): New.
2576         (struct find_parameter_pack_data): New.
2577         (find_parameter_packs_r): New.
2578         (uses_parameter_packs): New.
2579         (make_pack_expansion): New.
2580         (check_for_bare_parameter_packs): New.
2581         (expand_template_argument_pack): New.
2582         (reduce_template_parm_level): Propagate parameter pack flag.
2583         (process_template_parm): Add is_parameter_pack parameter to state
2584         when the parameter is actually a parameter pack. Create template
2585         parameter packs when is_parameter_pack is true.
2586         (current_template_args): The argument for a template parameter
2587         pack is an argument pack containing a single pack expansion.
2588         (process_partial_specialization): When checking that non-type
2589         argument expressions do not involve template parameters, loop over
2590         the arguments in argument packs separately.
2591         (push_template_decl_real): Check that the type of the declaration
2592         does not have any bare parameter packs. Check that primary
2593         templates have no more than one parameter pack, and that it comes
2594         at the end of the template parameter list.
2595         (convert_template_argument): Handle coercions for pack expansion
2596         expressions by coercing the pattern then rebuilding the expansion.
2597         (coerce_template_parms): When coercing the arguments for a
2598         variadic template, pack "extra" arguments into an argument pack.
2599         (coerce_template_template_parms): Cannot coerce between parameter
2600         packs and non-pack parameters.
2601         (template_args_equal): Compare PACK_EXPANSION_P expressions.
2602         (comp_template_args): Expand all template arguments packs before
2603         comparing template argument lists.
2604         (mangle_class_name_for_template): Make argument packs as separate
2605         template arguments.
2606         (for_each_template_parm_r): No need to handle BASELINK. 
2607         (instantiate_class_template): Handle pack expansions in the base
2608         class list.
2609         (tsubst_pack_expansion): New.
2610         (tsubst_template_args): Handle substitutions of argument packs and
2611         pack expansion into template argument lists.
2612         (tsubst_decl): Expand function parameter packs into separate
2613         function parameters.
2614         (tsubst_arg_types): Expand a type pack expansion into separate
2615         argument types.
2616         (tsubst_exception_specification): Handle pack expansions in
2617         exception specifiers.
2618         (tsubst): See through ARGUMENT_PACK_SELECT arguments when 
2619         replacing a template parameter with its argument. If we encounter
2620         a substitution for an argument pack, just return the parameter
2621         itself. 
2622         (tsubst_copy): sizeof(X...) returns the number of elements in
2623         parameter pack X.  See through ARGUMENT_PACK_SELECT when the
2624         PARM_DECL is a parameter pack.
2625         (tsubst_expr): Expression pack expansions and argument packs
2626         cannot show up here; they will all be handled through function
2627         calls, sizeof, and template argument lists.
2628         (tsubst_copy_and_build): sizeof(X...) returns the number of
2629         elements in parameter pack X.  Handle pack expansions in TREE_LIST
2630         and CONSTRUCTOR nodes.
2631         (fn_type_unification): Handle "incomplete" explicit template
2632         argument lists that specify some of the arguments for a template
2633         parameter pack.
2634         (type_unification_real): Unify arguments against pack expansions.
2635         (template_parm_level_and_index): New, helper function.
2636         (unify_pack_expansion): New.
2637         (unify): Unify argument packs on an argument-by-argument basis,
2638         handling variadic argument packs as well.
2639         (more_specialized_fn): Handle unification of function parameter
2640         packs. All things being equal, prefer non-variadic function
2641         templates to variadic function templates.
2642         (more_specialized_class): Prefer the variadic class template
2643         partial specialization that binds fewer arguments to a parameter
2644         pack.
2645         (regenerate_decl_from_template): Expand function parameter packs
2646         into separate parameters.
2647         (instantiate_decl): Ditto.
2648         (tsubst_initializer_list): Handle pack expansions for base-class
2649         initializers.
2650         (dependent_type_p_r): Determine dependent types in argument packs
2651         and pack expansions.
2652         (value_dependent_expression_p): Determine value-dependence of
2653         non-type argument packs.
2654         (dependent_template_arg_p): Handle argument packs.
2655         * semantics.c (finish_cond): Check for bare parameter packs.
2656         (finish_expr_stmt): Ditto.
2657         (finish_for_expr): Ditto.
2658         (finish_switch_cond): Ditto.
2659         (finish_mem_initializers): Ditto.
2660         * name-lookup.c (arg_assoc_type): Handle pack expansions and
2661         argument packs.
2662         * decl2.c (cp_build_parm_decl): Mark function parameter packs.
2663         * parser.c (make_declarator): Declarator is not an expansion.
2664         (make_pointer_declarator): Transfer parameter pack flag to outer
2665         declarator.
2666         (make_reference_declarator): Ditto.
2667         (make_ptrmem_declarator): Ditto.
2668         (make_call_declarator): Ditto.
2669         (make_array_declarator): Ditto.
2670         (cp_parser_postfix_expression): Allow pack expansion expressions
2671         in the argument list for a call expression.
2672         (cp_parser_parenthesized_expression_list): Add new parameter
2673         ALLOW_EXPANSION_P. When true, parse the ellipsis to mean "expand
2674         into separate arguments."
2675         (cp_parser_new_placement): Allow pack expansion expressions.
2676         (cp_parser_new_initializer): Ditto.
2677         (cp_parser_mem_initializer_list): Allow ellipsis to create a
2678         base-class initializer expansion.
2679         (cp_parser_mem_initializer): Ditto.
2680         (cp_parser_template_parameter_list): Keep track of whether the
2681         template parameter is a template parameter pack.
2682         (cp_parser_template_parameter): Parse the ellipsis to indicate a
2683         template parameter pack.
2684         (cp_parser_type_parameter): Ditto.
2685         (cp_parser_template_argument_list): Parse the ellipsis to indicate
2686         a pack expansion.
2687         (cp_parser_direct_declarator): Parse the ellipsis to indicate that
2688         this declarator is a parameter pack.
2689         (cp_parser_parameter_declaration): The ellipsis does not end the
2690         parameter declaration, because it might be a parameter pack. Parse
2691         the ellipsis to indicate a parameter pack.
2692         (cp_parser_initializer): Allow pack expansions.
2693         (cp_parser_initializer_list): Allow ellipsis to create an
2694         initializer expansion.
2695         (cp_parser_base_clause): Allow ellipsis to create a base specifier
2696         expansion.
2697         (cp_parser_type_id_list): Allow ellipsis to create an exception
2698         specifier expansion.
2699         (cp_parser_attribute_list): Don't allow pack expansions.
2700         (cp_parser_functional_cast): Allow pack expansions.
2701         (cp_parser_sizeof_operand): Allow ellipsis following "sizeof" to
2702         compute the length of a parameter pack.
2703         (cp_parser_next_token_ends_template_argument_p): An ellipsis can
2704         end a template argument.
2705         * tree.c (cp_walk_subtrees): Walk BASELINK, TYPE_ARGUMENT_PACK,
2706         NONTYPE_ARGUMENT_PACK, TYPE_PACK_EXPANSION, EXPR_PACK_EXPANSION,
2707         CAST_EXPR. 
2708
2709 2007-03-09  Dirk Mueller  <dmueller@suse.de>
2710
2711         * cp/call.c (build_new_op): Call warn_logical_operator.
2712
2713 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
2714
2715         PR c++/30852
2716         * semantics.c (finish_offsetof): Handle COMPOUND_EXPR.
2717
2718         PR c++/30534
2719         * pt.c (any_template_arguments_need_structural_equality_p):
2720         Robustify.
2721
2722 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
2723
2724         * decl.c (grokdeclarator): Disable warnings for anonymous
2725         bitfields.
2726
2727 2007-03-05  Volker Reichelt  <reichelt@netcologne.de>
2728
2729         * typeck2.c (readonly_error): Always emit a hard error.
2730         Remove last argument.
2731         * cp-tree.h (readonly_error): Adjust prototype.
2732         * semantics.c (finish_asm_stmt): Adjust call to readonly_error.
2733         * typeck.c (build_unary_op): Likewise.
2734         (build_modify_expr): Likewise.
2735
2736 2007-03-04  Simon Martin  <simartin@users.sourceforge.net>
2737
2738         PR c++/30895
2739         * tree.c (cp_tree_equal): Properly handle COMPLEX_CST trees.
2740
2741 2007-03-03  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2742
2743         PR c++/15787
2744         * parser.c (struct cp_parser): New IN_IF_STMT.
2745         (cp_parser_statement_seq_opt): Handle an unexpected 'else',
2746         returning if parsing the body of an 'if' statement or issuing an
2747         error and continuing.
2748         (cp_parser_selection_statement): Set IN_IF_STMT bit when parsing
2749         body of 'if'.
2750         (cp_parser_jump_statement): Mask new IN_IF_STMT bit.
2751         
2752 2007-03-02  Simon Martin  <simartin@users.sourceforge.net>
2753
2754         PR c++/28253
2755         * class.c (update_vtable_entry_for_fn): Properly handle invalid overriders
2756         for thunks.
2757
2758 2007-03-02  Geoffrey Keating  <geoffk@apple.com>
2759
2760         * g++spec.c (lang_specific_driver): Add -lstdc++ when compiling
2761         Objective-C++.  Don't exit early if -shared-libgcc needs to be
2762         added.
2763
2764 2007-03-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2765
2766         * typeck.c (common_base_type): Delete unused function.
2767         
2768 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
2769
2770         * Make-lang.in: Add dummy lang.install-pdf target.
2771
2772 2007-03-01  Simon Baldwin <simonb@google.com>
2773
2774         PR c++/23689
2775         * decl.c (check_tag_decl): Added new warning for typedef ignored
2776         when it precedes an otherwise valid non-typedef declaration.
2777
2778 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
2779
2780         * typeck.c (build_function_call): Store converted arguments
2781         in a stack-allocated array instead of building a list.
2782         (convert_arguments): Store arguments in the array passed in as an
2783         argument, and return the actual number of arguments.
2784         * call.c (build_call): Delete, and replace with...
2785         (build_call_n, build_call_a): New.
2786         (build_op_delete_call): Rewrite to avoid constructing argument lists.
2787         (build_over_call): Store converted arguments in a stack-allocated
2788         array instead of building a list.
2789         (build_cxx_call): Pass arguments in an array instead of as a list.
2790         (build_java_interface_fn_ref): Rewrite to avoid constructing
2791         argument lists.
2792         * tree.h: Update declarations to reflect above changes.
2793         * method.c (use_thunk): Use a stack-allocated array to hold
2794         the arguments instead of a list.
2795         * rtti.c (throw_bad_cast): Update call to cxx_call.
2796         (throw_bad_typeid): Likewise.
2797         (build_dynamic_cast_1): Likewise.
2798         * init.c (build_builtin_delete_call): Use build_call_n.
2799         * decl.c (expand_static_init): Likewise.
2800         * except.c (cp_protect_cleanup_actions): Likewise.
2801         * cp-gimplify.c (genericize_eh_spec_block): Likewise.
2802         (gimplify_must_not_throw_expr): Likewise.
2803         (cxx_omp_apply_fn): Use build_call_a.
2804
2805 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
2806
2807         * semantics.c (expand_or_defer_fn): Call c_record_cdtor_fn.
2808         * decl2.c (cp_write_gloabl_declarations): Call c_build_cdtor_fns.
2809
2810 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
2811
2812         * cp-tree.h (static_ctors): Remove.
2813         * cp-tree.h (static_dtors): Likewise.
2814         * cp-objcp-common.c (decl_shadowed_for_var_lookup): Adjust for
2815         refactoring of tree_map hierarchy.
2816         (decl_shadowed_for_var_insert): Likewise.
2817         * semantics.c (expand_body): Use c_expand_body.
2818         (expand_or_defer_fn): Don't update static_ctors or static_dtors.
2819         * decl2.c (static_ctors): Remove.
2820         (static_dtors): Likewise.
2821         (generate_ctor_or_dtor_function): Pass NULL_TREE to
2822         objc_generate_static_init_call.  Do not call static_[cd]tors.
2823         (generate_ctor_and_dtor_functions_for_priority): Do not check for
2824         static_[cd]tors.
2825         (cp_write_global_declarations): Likewise.
2826
2827 2007-02-23  Richard Guenther  <rguenther@suse.de>
2828
2829         * class.c (note_name_declared_in_class): Make declaration
2830         changes meaning a pedwarn.
2831
2832 2007-02-22  Michael Matz  <matz@suse.de>
2833
2834         PR c++/29433
2835         * cp-tree.h (TFF_UNQUALIFIED_NAME): New formatting flag.
2836         * error.c (dump_aggr_type, dump_simple_decl, dump_decl,
2837         dump_function_decl): Guard emitting outer scopes by new flag.
2838         * cp-lang.c (cxx_dwarf_name): New function.
2839         (LANG_HOOKS_DWARF_NAME): Define to cxx_dwarf_name.
2840         * pt.c (classtype_mangled_name, mangle_class_name_for_template):
2841         Remove functions.
2842         (push_template_decl_real, lookup_template_class): Remove calls
2843         to above functions.
2844
2845 2007-02-19  Mark Mitchell  <mark@codesourcery.com>
2846
2847         * call.c (build_new_method_call): Ensure that explicit calls of
2848         destructors have type "void".
2849
2850 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2851
2852         * typeck.c (build_binary_op): Replace -Wstring-literal-comparison
2853         and -Walways-true with -Waddress.
2854         * cvt.c (convert_to_void): Replace unconditional warning with
2855         -Waddress.
2856
2857 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
2858
2859         * decl.c, tree.c: Fix comment typos.
2860
2861 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2862
2863         PR C++/30158
2864         * semantics.c (finish_stmt_expr_expr): Set TREE_TYPE of the 
2865         statement expression if we had an error mark node.
2866
2867 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
2868             Brooks Moses  <brooks.moses@codesourcery.com>
2869             Lee Millward  <lee.millward@codesourcery.com>
2870
2871         * cp-tree.def (AGGR_INIT_EXPR): Adjust documentation.
2872         Change class to tcc_vl_exp.
2873
2874         * call.c (build_call): Use build_call_list instead 
2875         of build3. 
2876         (build_over_call): Likewise.
2877         (build_new_method_call): Use build_min_non_dep_call_list 
2878         instead of build_min_non_dep.
2879
2880         * error.c (dump_call_expr_args): New function.
2881         (dump_aggr_init_expr_args): New function.
2882         (dump_expr) <AGGR_INIT_EXPR, CALL_EXPR, INDIRECT_REF>: Use them. 
2883         Update to use new CALL_EXPR and AGGR_INIT_EXPR accessor macros.
2884
2885         * cvt.c (convert_to_void): Use build_call_array instead
2886         of build3; use new AGGR_INIT_EXPR accessor macros.
2887
2888         * mangle.c (write_expression): Use TREE_OPERAND_LENGTH
2889         instead of TREE_CODE_LENGTH.
2890
2891         * dump.c (cp_dump_tree) <AGGR_INIT_EXPR>: Update to use new
2892         AGGR_INIT_EXPR accessor macros.
2893
2894         * cp-gimplify.c (cp_gimplify_init_expr): Use 
2895         AGGR_INIT_EXPR_SLOT to set the slot operand.
2896
2897         * cp-tree.h (AGGR_INIT_EXPR_FN): New macro.
2898         (AGGR_INIT_EXPR_SLOT): New macro.
2899         (AGGR_INIT_EXPR_ARG): New macro.
2900         (aggr_init_expr_nargs): New macro.
2901         (AGGR_INIT_EXPR_ARGP): New macro.
2902         (aggr_init_expr_arg_iterator): New.
2903         (init_aggr_init_expr_arg_iterator): New.
2904         (next_aggr_init_expr_arg): New.
2905         (first_aggr_init_expr_arg): New.
2906         (more_aggr_init_expr_args_p): New.
2907         (FOR_EACH_AGGR_INIT_EXPR_ARG): New.
2908         (stabilize_aggr_init): New declaration.
2909         (build_min_non_dep_call_list): Likewise.
2910
2911         * tree.c (process_aggr_init_operands): New function.
2912         (build_aggr_init_array) New function.
2913         (build_cplus_new): Update to use new CALL_EXPR and
2914         AGGR_INIT_EXPR accessor macros. Replace use of build3 with
2915         build_aggr_init_array.
2916         (build_min_non_dep_call_list) New function.
2917         (build_min_nt): Assert input code parameter is not a variable
2918         length expression class.
2919         (build_min, build_min_non_dep): Likewise.
2920         (cp_tree_equal) <CALL_EXPR>: Iterate through the arguments
2921         to check for equality instead of recursing. Handle tcc_vl_exp
2922         tree code classes.
2923         (stabilize_call): Update to only handle CALL_EXPRs, not 
2924         AGGR_INIT_EXPRs; use new CALL_EXPR accessor macros.
2925         (stabilize_aggr_init): New function.
2926         (stabilize_init): Use it.
2927
2928         * cxx-pretty-print.c (pp_cxx_postfix_expression)
2929         <AGGR_INIT_EXPR, CALL_EXPR>: Update to use new CALL_EXPR and
2930         AGGR_INIT_EXPR accessor macros and argument iterators.
2931         
2932         * pt.c (tsubst_copy) <CALL_EXPR>: Replace build_nt with
2933         build_vl_exp. Iterate through the operands, recursively 
2934         processing each one.
2935         (tsubst_copy_and_build) <CALL_EXPR>: Update to use new
2936         CALL_EXPR accessor macros.
2937         (value_dependent_expression_p) <default>: Handle tcc_vl_exp
2938         tree code classes. Use TREE_OPERAND_LENGTH instead of 
2939         TREE_CODE_LENGTH.
2940
2941         * semantics.c (finish_call_expr): Use build_nt_call_list
2942         instead of build_nt.
2943         (simplify_aggr_init_expr): Update to use new AGGR_INIT_EXPR 
2944         accessor macros. Use build_call_array to construct the 
2945         CALL_EXPR node instead of build3
2946         
2947         * decl2.c (build_offset_ref_call_from_tree): Use 
2948         build_nt_call_list and build_min_non_dep_call_list instead
2949         of build_min_nt and build_min_non_dep.
2950
2951         * parser.c (cp_parser_postfix_expression) <CPP_OPEN_PAREN>:
2952         Use build_nt_call_list instead of build_min_nt.
2953
2954 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2955
2956         PR c++/28943
2957         * call.c (build_conditional_expr): Improve error message.
2958         
2959 2007-02-13  Dirk Mueller  <dmueller@suse.de>
2960
2961         * friend.c (do_friend): Annotate warning about friend
2962         declarations in templates with OPT_Wnon_template_friend.
2963         Convert informal message from warning() to inform().
2964
2965 2007-02-12  Simon Martin  <simartin@users.sourceforge.net>
2966             Mark Mitchell  <mark@codesourcery.com>
2967
2968         PR c++/14622
2969         * pt.c (do_decl_instantiation): Detect type mismatches in explicit
2970         instantiations for variables.
2971
2972 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2973
2974         PR middle-end/7651
2975         * cp-gimplify.c (gimplify_expr_stmt): Don't check extra_warnings.
2976         Check warn_unused_value just once.
2977
2978 2007-02-11  Mark Mitchell  <mark@codesourcery.com>
2979
2980         PR c++/26988
2981         * pt.c (determine_specialization): Use skip_artificial_parms_for.
2982         (fn_type_unificiation): Likewise.
2983         (get_bindings): Likewise.
2984
2985 o2007-02-06  Mark Mitchell  <mark@codesourcery.com>
2986
2987         PR target/29487
2988         * decl.c (finish_function): Use DECL_REPLACEABLE.
2989         * tree.c (cp_cannot_inline_tree_fn): Likewise.
2990
2991 2007-02-10  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2992
2993         * parser.c (cp_parser_primary_expression): Reformat overly long lines.
2994
2995 2007-02-10  Richard Henderson  <rth@redhat.com>, Jakub Jelinek  <jakub@redhat.com>
2996
2997         * decl.c (grokvardecl): Don't error if !have_tls.
2998         (grokdeclarator): Likewise.
2999         * parser.c (cp_parser_omp_threadprivate): Likewise.
3000
3001 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
3002
3003         PR c++/30703
3004         * cp-gimplify.c (cp_genericize_r): Don't dereference invisiref
3005         parameters and result decls in omp clauses.
3006         (cxx_omp_privatize_by_reference): Pass also invisiref PARM_DECLs
3007         by reference.
3008
3009 2007-02-05  Dirk Mueller  <dmueller@suse.de>
3010
3011         PR bootstrap/30510
3012         * parser.c (cp_parser_class_specifier): Always initialize bases.
3013
3014 2007-02-05  Paolo Bonzini  <bonzini@gnu.org>
3015
3016         * cp-tree.h (OMP_ATOMIC_CODE): Delete.
3017         (OMP_ATOMIC_DEPENDENT_P): Rewrite.
3018         * pt.c (tsubst_expr): Adjust for new format of dependent OMP_ATOMIC
3019         expressions.
3020         * semantics.c (finish_omp_atomic): Store a whole expression node
3021         in operand 1, and integer_zero_node in operand 0, for dependent
3022         OMP_ATOMIC.  Rewrite to make flow easier to understand.
3023
3024 2007-02-03  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3025
3026         * decl.c (grokdeclarator): Use OPT_Wreturn_type instead of 0.
3027
3028 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
3029
3030         * class.c, cp-tree.h, decl.c, decl2.c, g++spec.c, init.c,
3031         parser.c, pt.c, tree.c, typeck.c: Follow spelling conventions.
3032
3033 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
3034
3035        * parser.c (cp_lexer_get_preprocessor_token): Attach the C++0x
3036        keyword warning to -Wc++0x-compat.
3037         
3038 2007-02-03  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3039
3040         * decl.c (grokdeclarator): Update documentation.
3041
3042 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
3043
3044         PR c++/30536
3045         * decl.c (grokdeclarator): If __thread is used together with
3046         a storage class other than extern and static, clear thread_p
3047         after issuing diagnostics and fall through to checking the
3048         storage class.
3049
3050 2007-01-30  Roger Sayle  <roger@eyesopen.com>
3051
3052         * error.c (dump_type_suffix): Avoid use of cp_build_binary_op when
3053         calculating the size of an array (to avoid recursive errors).
3054
3055 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3056
3057         PR c++/24745
3058         * typeck.c (build_binary_op): Fix logic for warning. Move warning
3059         to -Wpointer-arith.
3060         * call.c (convert_like_real): Don't warn when converting to
3061         boolean type.
3062         
3063 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3064
3065         * decl.c (pop_label): Replace warning with call to
3066         warn_for_unused_label.
3067
3068 2007-01-28  Andrew Pinski  <pinskia@gmail.com>
3069
3070         PR C++/28988
3071         * semantics.c (finish_pseudo_destructor_expr): Check the
3072         destrutor name by calling check_dtor_name.
3073
3074 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
3075
3076         * lex.c (D_CPP0X): Rename.
3077         (D_CXX0X): To this.
3078         (reswords): D_CPP0X -> D_CXX0X.
3079         (init_reswords): Ditto.
3080         * parser.c (cp_lexer_get_preprocessor_token): Warn about the use
3081         of C++0x keywords as identifiers.
3082
3083 2007-01-23  Simon Martin  <simartin@users.sourceforge.net>
3084
3085         PR c++/27492
3086         * decl.c (duplicate_decls): Don't reset DECL_INVALID_OVERRIDER_P for
3087         function decls.
3088
3089 2007-01-23  Ian Lance Taylor  <iant@google.com>
3090
3091         * typeck.c (convert_for_assignment): Only warn about a = b = c
3092         when converting to bool.
3093
3094 2007-01-23  Roger Sayle  <roger@eyesopen.com>
3095
3096         * call.c (null_ptr_cst_p): Replace use of TREE_CONSTANT_OVERFLOW with
3097         TREE_OVERFLOW.
3098         * typeck.c (ignore_overflows): Remove the remaining uses of
3099         TREE_CONSTANT_OVERFLOW.
3100
3101 2007-01-20  Jan Hubicka  <jh@suse.cz>
3102
3103         * decl2.c (start_objects, start_static_storage_duration_function):
3104         Do not make the functions uninlinable.
3105
3106 2007-01-17  Ian Lance Taylor  <iant@google.com>
3107
3108         * class.c (add_method): Call VEC_reserve_exact rather than passing
3109         a negative size to VEC_reserve.
3110
3111 2007-01-11  Simon Martin  <simartin@users.sourceforge.net>
3112
3113         PR c++/29573
3114         * tree.c (cp_tree_equal): Properly handle MODOP_EXPR trees.
3115
3116 2007-01-10  Mark Mitchell  <mark@codesourcery.com>
3117
3118         PR c++/28999
3119         * decl.c (make_typename_type): If the qualified name is not a
3120         type, issue an error.
3121         * parser.c (cp_parser_elaborated_type_specifier): Fix comment
3122         formatting.
3123
3124 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
3125
3126         * rtti.c: Include target.h.
3127         (emit_support_tinfos): If ! targetm.cxx.library_rtti_comdat (),
3128         don't emit typeinfo for fundamental types as weak.
3129         * Make-lang.in (cp/rtti.o): Update and correct dependencies.
3130
3131 2007-01-08  Richard Guenther  <rguenther@suse.de>
3132
3133         * cvt.c (cp_convert_to_pointer): Use build_int_cst_type.
3134
3135 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
3136
3137         * call.c (standard_conversion): Pass flag to
3138         vector_types_convertible_p to disallow emission of note.
3139         * typeck.c (convert_for_assignment): Pass flag to
3140         vector_types_convertible_p to allow emission of note.
3141         (ptr_reasonably_similar): Pass flag to vector_types_convertible_p
3142         to disallow emission of note.
3143
3144 2007-01-07  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3145
3146         PR c++/28986
3147         * typeck.c (build_binary_op): Call overflow_warning if
3148         TREE_OVERFLOW_P is true for the result and not for any of the
3149         operands.
3150         
3151 2007-01-06  Lee Millward  <lee.millward@codesourcery.com>
3152
3153        PR c++/19439
3154        * class.c (add_method): Don't wait until template
3155        instantiation time to complain about duplicate methods.
3156         
3157 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3158
3159         PR c/19978
3160         * semantics.c (finish_unary_op_expr): Warn only if result
3161         overflowed and operands did not.
3162
3163 2007-01-05  Ian Lance Taylor  <iant@google.com>
3164
3165         * typeck.c (build_binary_op): Warn about comparing a non-weak
3166         address to NULL.
3167
3168 2007-01-05  Douglas Gregor  <doug.gregor@gmail.com>
3169
3170         * pt.c (tsubst): Propagate the need for structural equality checks
3171         when reducing the level of template parameters.
3172
3173 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
3174
3175         * pt.c: Fix a comment typo.
3176
3177 2007-01-02  Ian Lance Taylor  <iant@google.com>
3178
3179         * semantics.c (maybe_convert_cond): Optionally warn when using an
3180         assignment as a condition.
3181         * typeck.c (convert_for_assignment): Optionally warn about
3182         assigning the result of an assignment to a bool.
3183
3184 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
3185
3186         * pt.c (canonical_template_parms): Correct typo in comment.
3187         
3188 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
3189
3190         * typeck.c (structural_comptypes): Renamed from "comptypes".
3191         (comptypes): Use canonical type information to perform fast type
3192         comparison. When VERIFY_CANONICAL_TYPES, verify that the
3193         canonical type comparison returns the same results as we would see
3194         from the current, structural check. Support COMPARE_STRUCTURAL
3195         when we need structural checks.
3196         * decl.c (typename_compare): Fix comment.
3197         (build_typename_type): TYPENAME_TYPE nodes require structural
3198         equality checks, because they resolve different based on the
3199         current class type.
3200         (make_unbound_class_template): UNBOUND_CLASS_TEMPLATE nodes
3201         require structural equality checks (for now).
3202         (build_ptrmemfunc_type): Build the canonical pointer to member
3203         function type.
3204         (compute_array_index_type): Whenever we build a new index type
3205         to represent the size of an array in a template, we need to mark
3206         this index type as requiring structural equality. This goes for
3207         arrays with value-dependent sizes with the current ABI, or all
3208         arrays with ABI-1.
3209         * tree.c (cplus_array_hash): New.
3210         (struct cplus_array_info): New.
3211         (cplus_array_compare): New.
3212         (cplus_array_htab): New.
3213         (build_cplus_array_type_1): Use a hash table to cache the array
3214         types we build. Build the canonical array type for each array
3215         type.
3216         (cp_build_qualified_type_real): When building a cv-qualified array
3217         type, use the hash table of array types and build canonical array
3218         types as necessary.
3219         (bind_template_template_parm): BOUND_TEMPLATE_TEMPLATE_PARM nodes
3220         use structural equality (for now).
3221         * cp-tree.h (COMPARE_STRUCTURAL): New.
3222         * pt.c (canonical_template_parms): New.
3223         (canonical_type_parameter): New.
3224         (process_template_parm): Find the canonical type parameter.
3225         (lookup_template_class): When we have named the primary template
3226         type, set the canonical type for our template class to the primary
3227         template type. If any of the template arguments need structural
3228         equality checks, the template class needs structural equality
3229         checks.
3230         (tsubst): When reducing the level of a template template
3231         parameter, we require structural equality tests for the resulting
3232         parameter because its template parameters have not had their types
3233         canonicalized. When reducing a template type parameter, find the
3234         canonical reduced type parameter.
3235         (any_template_arguments_need_structural_equality_p): New.
3236