OSDN Git Service

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