OSDN Git Service

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