OSDN Git Service

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