OSDN Git Service

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