OSDN Git Service

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