OSDN Git Service

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