re PR c++/37554 (ICE with invalid cast)
[platform/upstream/gcc.git] / gcc / cp / ChangeLog
1 2009-01-27  Paolo Carlini  <paolo.carlini@oracle.com>
2
3         PR c++/37554
4         * call.c (build_over_call): If convert_for_arg_passing returns
5         error_mark_node unconditionally return it.
6
7 2009-01-22  Adam Nemet  <anemet@caviumnetworks.com>
8
9         * class.c (check_field_decls): Also inherit packed for bitfields
10         regardless of their type.
11
12 2009-01-22  Dodji Seketeli  <dodji@redhat.com>
13
14         PR c++/38930
15         * decl2.c (grokfield): Reverting changes of PR c++/26693
16         (save_template_attributes): Likewise.
17         * decl.c (grokdeclarator): Likewise.
18         * name-lookup.c (pushdecl_maybe_friend): Likewise.
19         * cp-tree.h (MEMBER_TYPES_NEEDING_ACCESS_CHECK): Likewise.
20         (append_type_to_template_for_access_check): Likewise.
21         * semantics.c (check_accessibility_of_qualified_id): Likewise.
22         * pt.c (instantiate_class_template, instantiate_template ): Likewise.
23         (tsubst): Likewise.
24         (resolve_type_name_type): Likewise.
25         (append_type_to_template_for_access_check): Likewise.
26
27 2009-01-21  Dodji Seketeli  <dodji@redhat.com>
28
29         PR c++/26693
30         * decl2.c (grokfield): when a typedef appears in a
31         class, create the typedef variant type node for it.
32         (save_template_attributes): Creating typedef variant type node
33          here is now useless.
34         * decl.c (grokdeclarator): If the typedef'ed struct/class was
35         anonymous, set the proper type name to all its type variants.
36         * name-lookup.c (pushdecl_maybe_friend): Reuse the
37         set_underlying_type function to install typedef variant types.
38         * cp-tree.h (MEMBER_TYPES_NEEDING_ACCESS_CHECK): New template accessor
39         macro.
40         (append_type_to_template_for_access_check): New entry points.
41         * semantics.c (check_accessibility_of_qualified_id):
42         When a typedef that is a member of a class appears in a template,
43         add it to the template. It will be ...
44         * pt.c (instantiate_class_template, instantiate_template ): ... access
45         checked at template instantiation time.
46         (tsubst): Handle the case of being called with NULL args.
47         (resolve_type_name_type): The type name should be the name of the
48         main type variant.
49         (append_type_to_template_for_access_check): New entry point.
50
51 2009-01-19  Jason Merrill  <jason@redhat.com>
52
53         PR c++/23287
54         * parser.c (cp_parser_unqualified_id): In a template,
55         accept ~identifier.
56         * typeck.c (lookup_destructor): Handle IDENTIFIER_NODE.
57
58 2009-01-16  Jason Merrill  <jason@redhat.com>
59
60         PR c++/38877
61         * tree.c (lvalue_p_1): Allow non-fields in COMPONENT_REF.
62         * init.c (build_new): Don't call describable_type unless we
63         have an auto.
64
65         PR c++/29470
66         * pt.c (tsubst_decl) [USING_DECL]: Propagate access flags.
67
68         PR c++/38579
69         * search.c (protected_accessible_p): N doesn't vary.
70
71 2009-01-15  Jason Merrill  <jason@redhat.com>
72
73         PR c++/38850
74         * pt.c (tsubst_copy_and_build): Tell finish_call_expr to
75         accept hidden friends.
76
77 2009-01-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
78
79         PR C++/29388
80         * decl.c (grokdeclarator): Check for a non namespace/class context.
81
82 2009-01-15  Jason Merrill  <jason@redhat.com>
83
84         PR c++/36334
85         PR c++/37646
86         * tree.c (lvalue_p_1): Handle BASELINK.  A COMPONENT_REF to
87         a function isn't necessarily an lvalue. Take tree, not const_tree.
88         (lvalue_p, real_lvalue_p): Take tree, not const_tree.
89         * typeck.c (lvalue_or_else): Likewise.
90         * cp-tree.h: Adjust prototypes.
91
92 2009-01-15  Steve Ellcey  <sje@cup.hp.com>
93
94         PR c++/38357
95         * pt.c (tsubst): Check for NULL args.
96
97 2009-01-15  Dodji Seketeli  <dodji@redhat.com>
98
99         PR c++/38636
100         * name-lookup.c (pushtag): Don't create members to types that are not
101         being created.
102
103 2009-01-14  Nick Clifton  <nickc@redhat.com>
104
105         PR c++/37862
106         * parser.c: Pass cp_id_kind computed in
107         cp_parser_postfix_dot_deref_expression to
108         cp_parser_primary_expression.
109
110 2009-01-13  Jakub Jelinek  <jakub@redhat.com>
111
112         PR c++/38795
113         * tree.c (cp_walk_subtrees): Handle REINTERPRET_CAST_EXPR,
114         STATIC_CAST_EXPR, CONST_CAST_EXPR and DYNAMIC_CAST_EXPR the same
115         as CAST_EXPR.
116
117 2009-01-12  Jason Merrill  <jason@redhat.com>
118             Steve Ellcey  <sje@cup.hp.com>
119
120         PR c++/35109
121         * name-lookup.c (lookup_name_real): Keep looking past a hidden 
122         binding.
123
124 2009-01-12  Dodji Seketeli  <dodji@redhat.com>
125
126         PR c++/36019
127         * pt.c (parameter_of_template_p): New function.
128         * cp-tree.h: Declare it.
129         * name-lookup.c (binding_to_template_parms_of_scope_p): New
130         function.
131         (outer_binding): Take template parameters in account when looking for
132         a name binding.
133
134 2009-01-12  Jason Merrill  <jason@redhat.com>
135
136         PR c++/31488
137         * tree.c (pod_type_p): Return 1 for structs created by the back end.
138
139 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
140
141         PR c/32041
142         * parser.c (cp_parser_builtin_offsetof): Allow `->' in
143         offsetof member-designator, handle it as `[0].'.
144
145         PR c++/38794
146         * decl.c (start_function): If grokdeclarator hasn't returned
147         FUNCTION_DECL nor error_mark_node, issue diagnostics.
148
149 2009-01-11  Jakub Jelinek  <jakub@redhat.com>
150
151         PR c++/36254
152         * cp-gimplify.c (genericize_if_stmt): Renamed from ...
153         (gimplify_if_stmt): ... this.
154         (cp_gimplify_expr): Don't handle IF_STMT here.
155         (cp_genericize_r): Call genericize_if_stmt for IF_STMT.
156
157 2009-01-10  Andrew Pinski  <pinskia@gmail.com>
158
159         PR c++/38648
160         * typeck.c (cp_build_modify_expr): Check for NULL current_function_decl.
161
162         PR c++/36695
163         * typeck2.c (build_functional_cast): Check for reference type and NULL
164         PARMS.
165
166 2009-01-09  Steve Ellcey  <sje@cup.hp.com>
167
168         * typeck.c (cp_build_unary_op): Check for ERROR_MARK.
169
170 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
171
172         PR c++/35335
173         * error.c (dump_expr): Handle EXPR_STMT like BIND_EXPR.
174
175 2009-01-09  John F. Carr  <jfc@mit.edu>
176
177         PR c++/37877
178         * parser.c (cp_parser_class_specifier): Clear
179         parser->in_unbraced_linkage_specification_p while parsing class
180         specifiers.
181
182 2009-01-07  Jakub Jelinek  <jakub@redhat.com>
183
184         PR c++/38725
185         * semantics.c (finish_goto_stmt): Convert destination to
186         void *.
187
188 2009-01-06  Jason Merrill  <jason@redhat.com>
189
190         PR c++/35297
191         PR c++/35477
192         PR c++/35784
193         PR c++/36846
194         PR c++/38276
195         * pt.c (check_default_tmpl_args): Don't complain about
196         out-of-order parameter packs in the enclosing class
197         or parameter packs after default args.
198         (coerce_template_parms): If we have more than one
199         parameter pack, don't flatten argument packs.
200         (template_args_equal): Handle argument packs.
201         (comp_template_args): Don't flatten argument packs.
202         (check_instantiated_arg): Split out from...
203         (check_instantiated_args): Here.  Handle arg packs.
204         (convert_template_argument): Just check that nontype argument
205         packs have the right type.
206
207 2009-01-05  Dodji Seketeli  <dodji@redhat.com>
208
209         PR c++/38472
210         * typeck.c (type_after_usual_arithmetic_conversions): Fix a typo.
211
212 2009-01-05  Jason Merrill  <jason@redhat.com>
213
214         PR c++/38698
215         * typeck2.c (process_init_constructor_union): Handle union with
216         no fields.
217
218         * mangle.c (write_expression): Remove mangling for zero-operand
219         casts.
220
221         PR c++/38701
222         * decl.c (cp_finish_decl): Clear DECL_INITIAL for invalid
223         defaulting.
224
225         PR c++/38702
226         * class.c (defaultable_fn_p): Only operator== can be a copy
227         assignment operator.
228
229 2009-01-02  Jason Merrill  <jason@redhat.com>
230
231         PR c++/38698
232         * typeck2.c (process_init_constructor_union): Handle excess
233         initializers.
234         (process_init_constructor_record): Likewise.
235
236         PR c++/38684
237         * typeck2.c (digest_init_r): Don't use process_init_constructor
238         for non-aggregate classes.
239
240 2008-12-31  Jakub Jelinek  <jakub@redhat.com>
241
242         PR c++/38647
243         * parser.c (cp_parser_primary_expression) <case RID_FUNCTION_NAME>:
244         Return error_mark_node if cp_parser_non_integral_constant_expression
245         returns true.
246
247         PR c++/38640
248         * semantics.c (finish_decltype_type): Handle TEMPLATE_PARM_INDEX.
249
250 2008-12-29  Jakub Jelinek  <jakub@redhat.com>
251
252         PR c++/38635
253         * parser.c (cp_parser_condition): Use cp_parser_require
254         instead of cp_lexer_consume_token to consume =.
255
256         PR c++/38637
257         * decl.c (start_enum): If enumtype is error_mark_node, exit early.
258
259 2008-12-28  Jakub Jelinek  <jakub@redhat.com>
260
261         PR c++/38650
262         * semantics.c (finish_omp_for): Don't add CLEANUP_POINT_EXPR
263         around volatile iteration var in condition and/or increment
264         expression.
265
266 2008-12-27  Jakub Jelinek  <jakub@redhat.com>
267
268         PR c++/38639
269         * pt.c (tsubst_omp_for_iterator): RECUR on whole init_expr instead of
270         just its type.
271
272 2008-12-21  Jason Merrill  <jason@redhat.com>
273
274         PR c++/38597
275         * name-lookup.c (arg_assoc_type): Handle DECLTYPE_TYPE.
276
277 2008-12-20  Jakub Jelinek  <jakub@redhat.com>
278             Manuel López-Ibáñez  <manu@gcc.gnu.org>
279
280         PR c++/36921
281         * c-common.c (warn_about_parentheses): Remove ARG_UNUSED from
282         arg_left.  Don't warn about X<=Y<=Z if comparison's type isn't
283         integral.
284
285 2008-12-19  Jakub Jelinek  <jakub@redhat.com>
286
287         PR c++/38577
288         * call.c (build_new_method_call): Handle call being COMPOUND_EXPR
289         or NOP_EXPR.
290
291 2008-12-18  Jakub Jelinek  <jakub@redhat.com>
292
293         PR c++/38427
294         * init.c (perform_member_init): For value-initialized
295         references call permerror instead of warning and don't emit any
296         INIT_EXPR.
297
298 2008-12-18  Jason Merrill  <jason@redhat.com>
299
300         PR c++/38485
301         * parser.c (cp_parser_token_starts_cast_expression): An EOF
302         can't start a cast-expression.
303
304 2008-12-17  Jason Merrill  <jason@redhat.com>
305
306         * semantics.c (describable_type): New function.
307         (finish_decltype_type): Use it for dependent exprs.
308         * cp-tree.h: Declare it.
309         * mangle.c (write_type) [DECLTYPE_TYPE]: Set skip_evaluation.
310         (write_expression): If skip_evaluation, use type stubs.
311         * tree.c (cp_tree_equal): Handle PARM_DECLs from different
312         declarations of a function.
313         * init.c (build_new): Do auto deduction if type is describable.
314         * decl.c (cp_finish_decl): Likewise.
315         * parser.c (cp_parser_omp_for_loop): Likewise.
316
317 2008-12-10  Jason Merrill  <jason@redhat.com>
318
319         PR c++/35319
320         * mangle.c (write_builtin_type): Add mangling for decimal floating 
321         point and fixed point types.
322         (write_type): Pass FIXED_POINT_TYPE along.
323
324 2008-12-09  Mark Mitchell  <mark@codesourcery.com>
325
326         PR c++/37971
327         * class.c (resolve_address_of_overloaded_function): Check
328         accessibility of member functions unless FLAGS indicates
329         otherwise.
330         * call.c (standard_conversion): Adjust flags passed to
331         instantiate_type.
332         (convert_default_arg): Do not perform access checks.
333         * cp-tree.h (tsubst_flags_t): Add tf_no_access_control.
334
335 2008-12-08  Steve Ellcey  <sje@cup.hp.com>
336
337         * decl2.c (mark_used): Remove assemble_external call.
338
339 2008-12-08  Dodji Seketeli  <dodji@redhat.com>
340
341         PR debug/38390
342         * name-lookup.c (kept_level_p): Don't forget the case of levels
343           having using directives.
344
345 2008-12-08  Richard Henderson  <rth@redhat.com>
346
347         PR 38240
348         * class.c (finish_struct_bits): Use SET_TYPE_MODE.
349         * decl.c (record_unknown_type): Likewise.
350         (start_enum, finish_enum): Likewise.
351
352 2008-12-05  Jakub Jelinek  <jakub@redhat.com>
353
354         PR c++/35336
355         * error.c (dump_expr): Handle BIT_FIELD_REF.
356
357 2008-12-05  Sebastian Pop  <sebastian.pop@amd.com>
358
359         PR bootstrap/38262
360         * Make-lang.in (cc1plus-dummy, cc1plus): Add BACKENDLIBS,
361         remove GMPLIBS.
362
363 2008-12-04  Jason Merrill  <jason@redhat.com>
364
365         PR c++/37906
366         * decl.c (grok_special_member_properties): Set TYPE_HAS_COMPLEX_DFLT
367         here.
368         * class.c (check_bases_and_members): Rather than assuming any
369         user-declared default constructor is complex here.
370
371 2008-12-04  Richard Guenther  <rguenther@suse.de>
372
373         PR c++/38334
374         * typeck.c (get_member_function_from_ptrfunc): Mark the vtbl
375         pointer access with TREE_NO_WARNING.
376
377 2008-12-03  Jason Merrill  <jason@redhat.com>
378
379         PR c++/38232
380         * init.c (build_value_init): Do initial zero-initialization
381         of a class with an implicitly-defined constructor using
382         build_zero_init rather than in build_value_init.
383         (build_value_init_1): Fold into build_value_init.
384
385         PR c++/38256
386         * parser.c (cp_parser_conversion_type_id): Diagnose
387         'operator auto' here.
388         * decl.c (grokdeclarator): Not here.
389
390         PR c++/38380
391         * decl.c (grokdeclarator): Only set DECL_NONCONVERTING_P
392         on explicit constructors.
393         * pt.c (tsubst_copy_and_build) [CONSTRUCTOR]: Propagate
394         CONSTRUCTOR_IS_DIRECT_INIT.
395
396 2008-12-02  Jason Merrill  <jason@redhat.com>
397
398         PR c++/35782, c++/37860
399         * call.c (build_user_type_conversion_1): Remember
400         list-initialization.
401         (convert_like_real): Likewise.
402         (build_over_call): Don't require the copy constructor
403         for copy-list-initialization.
404         * cp-tree.h (TARGET_EXPR_LIST_INIT_P): New macro.
405
406         PR c++/37234
407         * decl.c (cp_finish_decl): Handle =default and =delete for
408         templates, too.
409
410 2008-12-01  Jakub Jelinek  <jakub@redhat.com>
411
412         PR c++/38257
413         * parser.c (cp_parser_omp_for_loop): Handle auto.
414         * pt.c (tsubst_omp_for_iterator): Likewise.
415
416 2008-11-28  Jason Merrill  <jason@redhat.com>
417
418         PR c++/38233
419         * init.c (perform_member_init): Fix value-initialization.
420         (build_value_init_1): Add assert to catch cases that will break
421         in the gimplifier.
422         (build_default_init): Remove.
423         * cp-tree.h: Remove its prototype.
424         * pt.c (tsubst_expr) [DECL_EXPR]: Use build_value_init for
425         value-initialization.
426
427         PR c++/38278
428         * parser.c (cp_parser_class_name): Only call 
429         maybe_note_name_used_in_class if we actually found a class name.
430
431 2008-11-25  Jason Merrill  <jason@redhat.com>
432
433         PR c++/28743
434         * decl2.c (check_classfn): Error rather than abort on parameter
435         list mismatch.
436
437 2008-11-20  Jason Merrill  <jason@redhat.com>
438
439         PR c++/28513
440         * parser.c (cp_parser_class_name): Call maybe_note_name_used_in_class.
441
442         PR c++/37540
443         * call.c (build_over_call): Take the address of the function even
444         in a template.
445         (build_new_method_call): Remember the type of the called function
446         in a template.
447
448 2008-11-19  Dodji Seketeli  <dodji@redhat.com>
449
450         PR c++/37142
451         * pt.c (coerce_template_template_parm): Use the more robust
452         uses_template_parms instead of dependent_type_p.
453
454 2008-11-19  Dodji Seketeli  <dodji@redhat.com>
455
456         PR c++/35405
457         * pt.c (lookup_template_class): Check pointers before dereferencing
458         them.
459         * error.c (dump_template_decl): Likewise.
460
461 2008-11-19  Jason Merrill  <jason@redhat.com>
462
463         PR c++/36410
464         * decl2.c (grokfield): Pass ATTR_FLAG_TYPE_IN_PLACE for a typedef
465         that names a class for linkage purposes.
466
467         PR c++/37563
468         * parser.c (cp_parser_pseudo_destructor_name): A pseudo-destructor
469         name is not a declaration.
470
471         PR c++/37256
472         * pt.c (instantiate_decl): Don't require a definition of
473         a template that is explicitly instantiated 'extern'.
474
475 2008-11-18  Jason Merrill  <jason@redhat.com>
476             Jakub Jelinek  <jakub@redhat.com>
477         
478         PR c++/37962
479         * parser.c (cp_parser_type_id): Complain about auto.
480         * decl.c (grokdeclarator): Complain about parameters and
481         conversion functions declared with auto.
482
483         * call.c (standard_conversion): Use CLASS_TYPE_P instead of
484         MAYBE_CLASS_TYPE_P.
485         * cp-tree.h (TYPE_NON_AGGREGATE_CLASS): Likewise.
486
487 2008-11-17  Jakub Jelinek  <jakub@redhat.com>
488
489         PR c++/36089
490         * init.c (constant_value_1): Handle TREE_LIST init.
491
492 2008-11-15  Jakub Jelinek  <jakub@redhat.com>
493
494         PR c++/37561
495         * typeck.c (cp_build_unary_op): Don't call get_unwidened.  Use
496         argtype instead of result_type.
497
498 2008-11-14  Jason Merrill  <jason@redhat.com>
499
500         PR c++/38030
501         * semantics.c (finish_call_expr): Don't repeat arg-dep lookup
502         for a non-dependent call.
503
504         PR c++/37740
505         * call.c (build_aggr_conv): Increment i.
506
507 2008-11-13  Jason Merrill  <jason@redhat.com>
508
509         PR c++/37932
510         * typeck2.c (process_init_constructor_record): Update bitfield
511         handling.
512         (check_narrowing): Update bitfield handling, print source type.
513         
514 2008-11-12  Jakub Jelinek  <jakub@redhat.com>
515
516         PR c++/36478
517         Revert:
518         2007-05-07  Mike Stump  <mrs@apple.com>
519         * parser.c (check_empty_body): Add.
520         (cp_parser_iteration_statement): Add call to check_empty_body.
521
522 2008-11-12  Jason Merrill  <jason@redhat.com>
523
524         PR c++/38007
525         * typeck.c (cp_build_modify_expr): Update bitfield handling.
526
527 2008-11-12  Jakub Jelinek  <jakub@redhat.com>
528
529         PR c++/34269
530         * parser.c (cp_parser_simple_declaration): Don't commit
531         to tentative parse if parse errors were seen.
532
533         PR c++/35334
534         * error.c (dump_expr): Handle COMPLEX_EXPR.
535
536 2008-11-10  Jakub Jelinek  <jakub@redhat.com>
537
538         PR c++/38021
539         * parser.c (cp_parser_enum_specifier): After parsing :,
540         parse definitely.  Don't return early if type specifier
541         is erroneous.
542
543 2008-11-06  David Edelsohn  <edelsohn@gnu.org>
544
545         PR target/26397
546         * g++spec.c (LIBSTDCXX_STATIC): New.
547         (lang_spec_driver): Use LIBSTDCXX_STATIC when not
548         shared_libgcc.
549         
550 2008-11-05  Fabien Chene <fabien.chene@gmail.com>
551
552         PR c++/32519
553         * cp-tree.h: Fix DECL_NONSTATIC_MEMBER_P to handle member template
554         functions.
555
556 2008-11-05  Richard Guenther  <rguenther@suse.de>
557
558         PR middle-end/37742
559         * decl.c (start_preparsed_function): Use the correct type for
560         building the RESULT_DECL.
561
562 2008-10-31  Jakub Jelinek  <jakub@redhat.com>
563
564         PR c++/37967
565         * decl.c (grokdeclarator): Diagnose auto function decl without
566         late return type and late return type function decl where type
567         is not auto.
568
569         PR c++/37965
570         * decl.c (cp_finish_decl): Diagnose type_uses_auto type with
571         no initializer.
572
573 2008-10-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
574
575         PR 11492
576         * class.c (check_bitfield_decl): Rename min_precision to
577         tree_int_cst_min_precision.
578         * decl.c (finish_enum): Likewise.
579
580 2008-10-29  Manuel López-Ibáñez  <manu@gcc.gnu.org>
581
582         PR c++/26997
583         * parser.c (cp_parser_token_starts_cast_expression): New.
584         (cp_parser_cast_expression): Peek the next token to decide whether
585         this could be a parenthesized constructor or is definitely an
586         actual cast.
587
588 2008-10-24  Manuel López-Ibáñez  <manu@gcc.gnu.org>
589
590         PR c/7543
591         * typeck.c (build_x_binary_op): Update call to
592         warn_about_parentheses.
593         * parser.c (cp_parser_binary_expression): Add note about passing
594         the correct code for unary expressions.
595
596 2008-10-24  Jakub Jelinek  <jakub@redhat.com>
597
598         * Make-lang.in (check-c++-subtargets): New alias for
599         check-g++-subtargets.
600         (lang_checks_parallelized): Add check-g++.
601         (check_g++_parallelize): New variable.
602
603 2008-10-21  Richard Guenther  <rguenther@suse.de>
604
605         * semantics.c (simplify_aggr_init_exprs_r): Remove.
606         (expand_or_defer_fn): Do not walk the function body to
607         simplify aggr_init_exprs.
608
609 2008-10-20  Manuel López-Ibáñez  <manu@gcc.gnu.org>
610
611         PR c++/37004
612         * typeck.c (cp_common_type): New. The same as
613         type_after_usual_arithmetic_conversions but without promotions.
614         (type_after_usual_arithmetic_conversions): Do the promotions and
615         call cp_common_type.
616         (common_type): Make it behave like the C version of this
617         function. Do not handle pointer types.
618         (common_pointer_type): Move handling of pointer types from
619         common_type to here.
620         (cp_build_binary_op): Use common_pointer_type instead of
621         common_type in call to pointer_diff.
622         Use cp_common_type instead of common_type.
623         * cp-tree.h (common_pointer_type): Declare.
624
625 2008-10-14  Jakub Jelinek  <jakub@redhat.com>
626
627         PR c++/37819
628         * cp-gimplify.c (cp_genericize_r): Only fold_convert COND_EXPR
629         arguments if they don't already have COND_EXPR's type.
630
631 2008-10-14  Paolo Carlini  <paolo.carlini@oracle.com>
632
633         PR c++/37650
634         * pt.c (push_template_decl_real): Check that current_template_parms
635         is not null.
636         (process_partial_specialization): Assert current_template_parms not
637         null.
638
639 2008-10-13  Doug Evans  <dje@google.com>
640
641         * cp-tree.h (DECL_MAIN_P): Fix parentheses around expression.
642
643 2008-10-10  Jakub Jelinek  <jakub@redhat.com>
644
645         PR c++/37146
646         * cp-gimplify.c (cp_genericize_r): Fix up bitfield operands of
647         COND_EXPR.
648
649 2008-10-09  Jakub Jelinek  <jakub@redhat.com>
650
651         PR c++/37568
652         * semantics.c (finalize_nrv_r): Clear DECL_INITIAL instead of
653         setting it to error_mark_node.
654
655 2008-10-07  Steve Ellcey  <sje@cup.hp.com>
656
657         * decl.c (start_cleanup_fn): Declare as inline.
658
659 2008-10-06  Jason Merrill  <jason@redhat.com>
660
661         PR c++/37376, other mangling issues
662         * mangle.c (write_type): Update TYPE_PACK_EXPANSION mangling.
663         (write_member_name): Break out from...
664         (write_expression): ...here.  Handle dependent COMPONENT_REF.
665         (write_template_arg): Wrap an argument pack in 'I'/'E'.
666         (write_builtin_type): Update char16/32_t mangling.
667         (write_nested_name, write_prefix): Don't forget template args
668         for typename types.
669         * operators.def: Add ARROW_EXPR, update COMPONENT_REF and 
670         EXPR_PACK_EXPANSION.
671
672 2008-10-06  Aldy Hernandez  <aldyh@redhat.com>
673
674         * typeck.c (build_x_indirect_ref): Add location argument.
675         (cp_build_binary_op): Pass location to warn_for_div_by_zero.
676         (cp_build_unary_op): Add location argument.
677         (cp_build_modify_expr): Same.
678         * class.c (build_base_path): Pass location to build_indirect_ref.
679         * semantics.c (handle_omp_for_class_iterator): Pass elocus to
680         build_modify_expr.
681
682 2008-10-05  Dodji Seketeli  <dodji@redhat.com>
683
684         PR c++/37410
685         * cp-gimplify.c (cp_gimplify_expr): For each USING_STMT
686         make sure an IMPORTED_DECL node is added to the BLOCK_VARS list
687         of the innermost containing BLOCK.
688
689 2008-10-03  Paolo Carlini  <paolo.carlini@oracle.com>
690
691         PR c++/37719
692         * error.c (dump_function_decl): Save the exceptions in case of
693         error about incompatible specifications in a specialization.
694
695 2008-10-01  Andrew Pinski  <andrew_pinski@playstation.sony.com>
696
697         * tree.c (lvalue_p_1): COMPOUND_LITERAL_EXPR is also an lvalue.
698
699 2008-09-30  H.J. Lu  <hongjiu.lu@intel.com>
700
701         PR c++/37683
702         * parser.c (cp_parser_selection_statement): Fix uninitialized
703         variable.
704
705 2008-09-30  Simon Martin  <simartin@users.sourceforge.net>
706
707         PR c++/37555
708         PR c++/37556
709         * decl.c (grokdeclarator): Set the type for typedefs to a
710         nested-name-specifier to error_mark_node.
711
712 2008-09-30  Paolo Bonzini  <bonzini@gnu.org>
713
714         * parser.c (cp_parser_selection_statement): Implement here the
715         -Wempty-body warning for `if' and `else' statements.
716         * semantics.c (finish_if_stmt): Do not call empty_body_warning.
717
718 2008-09-25  Paolo Carlini  <paolo.carlini@oracle.com>
719
720         PR c++/37649
721         * name-lookup.c (maybe_process_template_type_declaration): Check
722         return value of push_template_decl_real for error_mark_node.
723
724 2008-09-24  Aldy Hernandez  <aldyh@redhat.com>
725
726         * semantics.c (finish_fname): Pass location to fname_decl.
727
728 2008-09-23  Jakub Jelinek  <jakub@redhat.com>
729
730         PR c++/37533
731         * semantics.c (finish_omp_for): If processing_template_decl, just build
732         MODIFY_EXPR for init instead of calling cp_build_modify_expr.
733
734 2008-09-23  Aldy Hernandez  <aldyh@redhat.com>
735
736         * typeck.c (build_array_ref): Pass location to cp_build_binary_op.
737         (get_member_function_from_ptrfunc): Same.
738         (build_x_binary_op): Same.
739         (build_binary_op): Same.
740         (cp_build_binary_op): New location argument.
741         (pointer_diff): Pass location to cp_build_binary_op.
742         (cp_truthvalue_conversion): Pass location to build_binary_op.
743         (convert_ptrmem): Pass location to cp_build_binary_op.
744         (cp_build_modify_expr): Same.
745         (build_ptrmemfunc): Same.
746         * init.c (expand_cleanup_for_base): Pass location to
747         c_common_truthvalue_conversion.
748         (build_new_1): Pass location to cp_build_binary_op.
749         (build_vec_delete_1): Pass location to *build_binary_op,
750         c_common_truthvalue_conversion.
751         (build_vec_init): Same.
752         (build_delete): Same.
753         * decl.c (compute_array_index_type): Same.
754         * call.c (build_new_op): Same.
755         * rtti.c (build_dynamic_cast_1): Same.
756         * cp-tree.h: Add argument to cp_build_binary_op.
757         * semantics.c (handle_omp_for_class_iterator): Pass location to
758         *build_binary_op, c_common_truthvalue_conversion.
759         * decl2.c (get_guard_cond): Same.
760
761 2008-09-17  Richard Guenther  <rguenther@suse.de>
762
763         PR c++/22374
764         * rtti.c (build_dynamic_cast_1): Convert the COND_EXPR
765         result to the correct type.
766
767 2008-09-17  H.J. Lu  <hongjiu.lu@intel.com>
768
769         PR c++/37450
770         * name-lookup.c (pushdecl_maybe_friend): Don't return the old
771         parameter for duplicate.
772
773 2008-09-17  Jason Merrill  <jason@redhat.com>
774
775         PR c++/37588
776         * name-lookup.c (lookup_type_scope): Look through sk_function_parms.
777
778 2008-09-17  Jakub Jelinek  <jakub@redhat.com>
779
780         PR c++/37552
781         * typeck.c (build_array_ref): Use protected_set_expr_location instead
782         of SET_EXPR_LOCATION when ret might not be an expression.
783
784 2008-09-17  Jan Hubicka  <jh@suse.cz>
785
786         PR c++/18071
787         * cp/decl.c (start_method): Set DECL_NO_INLINE_WARNING_P.
788
789 2008-09-16  Jakub Jelinek  <jakub@redhat.com>
790
791         PR c++/37531
792         * semantics.c (finish_compound_literal): Return error_mark_node if
793         type is errorneous.
794
795         PR c++/37532
796         * lex.c (init_reswords): Don't populate ridpointers for D_CONLY
797         reserved words.
798
799 2008-09-15  Aldy Hernandez  <aldyh@redhat.com>
800
801         * decl.c (duplicate_decls): Call error_at.
802         (grokfndecl): New location argument.  Use location if available.
803         (grokdeclarator): Pass declarator location to grokfndecl.
804         * cp-tree.h (struct cp_declarator): Update comment for id_loc.
805         * decl2.c (check_classfn): Use error_at.
806         * parser.c (cp_parser_init_declarator): Set function_start_locus
807         to brace location.
808         (cp_parser_member_declaration): Set id_loc for function declarators.
809
810 2008-09-09  Jan Hubicka  <jh@suse.cz>
811
812         PR middle-end/37500
813         * pt.c (tsubst_decl): Do not copy DECL_STRUCT_FUNCTION pointer.
814
815 2008-09-09  Jakub Jelinek  <jakub@redhat.com>
816
817         PR c++/37417
818         * tree.c (array_type_nelts_top): Add size_one_node instead of
819         integer_one_node.
820
821 2008-09-09  Jason Merrill  <jason@redhat.com>
822
823         PR c++/37439
824         * pt.c (tsubst_copy) [PARM_DECL]: Don't abort if the parm has
825         DECL_CONTEXT set.
826
827 2008-09-09  Jakub Jelinek  <jakub@redhat.com>
828
829         PR c++/37389
830         * decl.c (build_enumerator): Handle previous value's DECL_INITIAL
831         being error_operand_p.  Don't clear value if it was error_mark_node.
832
833 2008-09-09  Paolo Bonzini  <bonzini@gnu.org>
834
835         * cp-objcp-common.h (LANG_HOOKS_EXPAND_DECL): Remove.
836         * cp-tree.h: Don't mention DECL_ANON_UNION_ELEMS.
837         * semantics.c (anon_aggr_type_p): Remove.
838
839 2008-09-06  Jason Merrill  <jason@redhat.com>
840
841         PR c++/37302
842         * parser.c (cp_parser_parameter_declaration_list): Process the
843         PARM_DECLs as we go and push them.  Return a TREE_LIST.
844         (cp_parser_parameter_declaration_clause): Return a TREE_LIST.
845         (cp_parser_direct_declarator): Create a binding level and
846         suppress deprecated warnings in the parameter list.
847         (make_call_declarator): PARMS is now a tree.
848         * cp-tree.h (struct cp_declarator): Function parms are now a tree.
849         * decl.h (enum deprecated_states, deprecated_state): Move here.
850         * decl.c: From here.
851         (type_is_deprecated): New fn.
852         (grokparms): PARMLIST is a tree now.  Warn about parms that
853         use deprecated types.
854         * mangle.c (write_expression): Handle PARM_DECL, CALL_EXPR and
855         0-operand cast.
856         * pt.c (tsubst) [DECLTYPE_TYPE]: Set skip_evaluation.
857         (tsubst_copy) [PARM_DECL]: Handle a PARM_DECL used outside of a 
858         function.
859         * name-lookup.c (pushtag): Look through function parameter scopes.
860         (pushdecl_maybe_friend): Don't set DECL_CONTEXT on a PARM_DECL 
861         when we're parsing a function declarator.
862
863 2008-09-05  Douglas Gregor  <doug.gregor@gmail.com>
864
865        PR c++/37342
866        * tree.c (cp_build_qualified_type_real): Deal with sharing of
867        TYPE_LANG_SPECIFIC in the canonical types of pointer-to-method
868        types.
869         
870 2008-09-04  Ian Lance Taylor  <iant@google.com>
871
872         * parser.c (check_no_duplicate_clause): Change code parameter to
873         enum omp_clause_code.
874
875 2008-09-03  Jakub Jelinek  <jakub@redhat.com>
876
877         PR c++/37348
878         * decl.c (cp_finish_decl): Only set
879         DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P if decl is VAR_DECL.
880
881         PR c++/37189
882         * cp-tree.h (defer_mark_used_calls, deferred_mark_used_calls): New
883         extern decls.
884         * decl2.c (mark_used): If defer_mark_used_calls, push decl into
885         deferred_mark_used_calls vector and exit early.
886         * decl.c (defer_mark_used_calls, deferred_mark_used_calls): New
887         variables.
888         (finish_function): Set defer_mark_used_calls for the duration of the
889         function.  Call mark_used on any queued decls.
890
891 2008-09-02  Jason Merrill  <jason@redhat.com>
892
893         PR c++/37208
894         * call.c (build_over_call): Make =delete work with SFINAE.
895         * class.c (resolve_address_of_overloaded_function): Likewise.
896
897         * cp-tree.h (struct lang_decl_flags): Rename threadprivate_p to
898         threadprivate_or_deleted_p.
899         (CP_DECL_THREADPRIVATE_P): Adjust.
900         (DECL_DELETED_FN): Likewise.
901         (SD_UNINITIALIZED, SD_INITIALIZED, SD_DEFAULTED): New macros.
902         (SD_DELETED): New macro.
903         * parser.c (cp_parser_init_declarator): Use them.
904         * decl.c (start_decl): Use them.
905
906         * decl2.c (mark_used): Give =deleted error even in sizeof.
907
908         * typeck2.c (check_narrowing): Downgrade narrowing error to
909         permerror.
910
911 2008-09-02  Aldy Hernandez  <aldyh@redhat.com>
912
913         * typeck.c (build_array_ref): Use new location argument.
914         * class.c (build_vtbl_ref_1): Pass location to build_array_ref.
915         * call.c (build_new_op): Same.
916         * decl2.c (grok_array_decl): Same.
917         * cp-tree.h (build_array_ref): Add location argument to prototype.
918
919 2008-09-01  Aldy Hernandez  <aldyh@redhat.com>
920
921         * typeck.c (build_x_indirect_ref): Add location argument.
922         * class.c (build_base_path): Pass location to build_indirect_ref.
923         * pt.c (tsubst_copy_and_build): Pass location to
924         finish_label_address_expr.
925         * parser.c (cp_parser_unary_expression): Same.
926
927 2008-08-31  Jason Merrill  <jason@redhat.com>
928
929         Implement late-specified return type using 'auto'.
930         * cp-tree.h (struct cp_declarator): Add late_return_type field to
931         function declarator.
932         * parser.c (cp_parser_late_return_type_opt): New fn.
933         (cp_parser_direct_declarator): Use it.
934         (make_call_declarator): Put it in the declarator.
935         * decl.c (grokdeclarator): Splice in late-specified return type.
936         * pt.c (splice_late_return_type): New fn.
937
938 2008-08-29  Michael Meissner  <gnu@the-meissners.org>
939
940         * decl.c (builtin_function_1): Take a bool argument to decide
941         whether to use pushdecl or pushdecl_top_level.
942         (duplicate_decls): Copy function specific target and optimization
943         options on duplicate declarations.
944         (cxx_builtin_function): Update builtin_function_1 call.
945         (cxx_builtin_function_ext_scope): New function, guarantee that the
946         declaration is done at global scope.
947
948         * cp-objcp-common.h (LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE): New
949         macro, define builtin function hook for delayed machine specific
950         builtins.
951
952         * cp-tree.h (cxx_builtin_function_ext_scope): Add declaration.
953
954 2008-08-30  Jason Merrill  <jason@redhat.com>
955
956         PR c++/37288
957         * pt.c (dependent_type_p): Don't abort on auto outside of a template.
958
959 2008-08-29  Jason Merrill  <jason@redhat.com>
960
961         Implement C++0x 'auto' semantics.
962         * decl.c (start_decl_1): Don't complain about auto being incomplete.
963         (cp_finish_decl): Deduce auto.
964         * init.c (build_new): Handle 'new auto'.
965         * typeck2.c (cxx_incomplete_type_diagnostic): Give a different
966         message for auto than for normal template type parms.
967         * pt.c (type_dependent_expression_p): Handle { }.
968         (make_auto): New function.
969         (listify_autos): New function.
970         (do_auto_deduction): New function.
971         (is_auto): New function.
972         (type_uses_auto): New function.
973         * cp-tree.h: Declare them.
974         * parser.c (cp_parser_decl_specifier_seq): In C++0x mode, don't
975         treat auto as a declspec.
976         (cp_parser_simple_type_specifier): It's a type-specifier.
977
978 2008-08-29  Mark Mitchell  <mark@codesourcery.com>
979
980         * mangle.c (write_type): Add target-specific manglings for
981         non-fundamental types to the substitution table.
982         gcc/testsuite/
983
984 2008-08-29  Jakub Jelinek  <jakub@redhat.com>
985
986         PR fortran/29635
987         PR fortran/23057
988         * name-lookup.c (do_using_directive, cp_emit_debug_info_for_using):
989         Adjust debug_hooks->imported_module_or_decl callers.
990
991 2008-08-29  Jan Hubicka  <jh@suse.cz>
992
993         * cp-gimplify.c (cp_gimplify_expr): Add PRED_CONTINUE heuristic.
994
995 2008-08-28  Paolo Carlini  <paolo.carlini@oracle.com>
996
997         PR c++/37260
998         * decl.c (reshape_init_r): Check init for error_mark_node.
999
1000 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1001
1002         PR c++/17880
1003         * semantics.c (maybe_convert_cond): Call verify_sequence_points.
1004         (finish_return_stmt): Likewise.
1005         (finish_switch_condition): Likewise.
1006
1007 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1008
1009         * cp-tree.h: Fix #error directive.
1010
1011 2008-08-26  Douglas Gregor  <doug.gregor@gmail.com>
1012
1013         * typeck.c (type_after_usual_arithmetic_conversions): Don't do the
1014         usual arithmetic conversions on scoped enumeration types.
1015         (common_type): Ditto.
1016         (default_conversion): Don't perform integral promotions on scoped
1017         enumeration types. 
1018         (build_array_ref): Scoped enumeration types can't be used as
1019         subscripts.
1020         * decl.c (start_enum): If building a C++0x scoped enumeration,
1021         enter its scope. If provided with an underlying type, check that
1022         underlying type and set up the enumeration type accordingly.
1023         (finish_enum): Only compute an underlying type if the underlying
1024         type isn't already fixed, and only convert the enumerator values
1025         now if we've just computed the underlying type. Finish the scope
1026         of C++0x scoped enumerations.
1027         (build_enumerator): For enumerations with a fixed underlying type,
1028         check the enumerator values when the enumerator is defined.
1029         (lookup_enumerator): New.
1030         * call.c (standard_conversion): Don't allow assignment from
1031         integers to scoped enumeration types, even with -fpermissive.
1032         Don't convert from scoped enumerations to bool or any arithmetic
1033         types.
1034         (build_conditional_expr): Don't per the usual arithmetic
1035         conversions for scoped enumeration types.
1036         (convert_like_real): Check complain to see if we should
1037         produce warnings.
1038         * error.c (class_key_or_enum_as_string): Print scoped enums.
1039         * cp-tree.h (MAYBE_CLASS_TYPE_P): Check CLASS_TYPE_P, not
1040         TYPE_LANG_FLAG_5.
1041         (INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P): New.
1042         (SCOPED_ENUM_P): New.
1043         (UNSCOPED_ENUM_P): New.
1044         (SET_SCOPED_ENUM_P): New.
1045         (ENUM_UNDERLYING_TYPE): New.
1046         * pt.c (lookup_template_class): Update the instantiation of enum
1047         types to deal with C++0x scoped enumerations and underlying
1048         types.
1049         * name-lookup.c (begin_scope): Deal with scoped enumeration
1050         scopes.
1051         (lookup_qualified_name): Deal with lookup into enumeration types.
1052         * name-lookup.h (enum scope_kind): Add sk_scoped_enum.
1053         * parser.c (cp_parser_class_or_namespace_name): Rename to...
1054         (cp_parser_qualifying_entity): ... this. Also, in C++0x mode,
1055         parse a type-name that can be an enumeration type.
1056         (cp_parser_nested_name_specifier_opt): Update with C++0x grammar.
1057         (cp_parser_elaborated_type_specifier): Parse the
1058         optional `struct' or `class' following enum (in C++0x).
1059         (cp_parser_enum_specifier): Parse C++0x scoped enumerations and
1060         enum-base clauses.
1061
1062 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1063
1064         * typeck.c: Update all calls to pedwarn.
1065         * decl.c: Likewise.
1066         * call.c: Likewise.
1067         * error.c: Likewise.
1068         * pt.c: Likewise.
1069         * name-lookup.c: Likewise.
1070         * parser.c: Likewise.
1071
1072 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1073
1074         PR c++/35158
1075         * parser.c (cp_parser_omp_for_loop): Handle parenthesized
1076         initializers.
1077
1078 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1079
1080         * parser.c: Update all calls to inform.
1081         * typeck.c: Likewise.
1082         * init.c: Likewise.
1083         * class.c: Likewise.
1084         * call.c: Likewise.
1085         * method.c: Likewise.
1086         * friend.c: Likewise.
1087         * typeck2.c: Likewise.
1088         * pt.c: Likewise.
1089         * name-lookup.c: Likewise.
1090         * lex.c: Likewise.
1091
1092 2008-08-19  Jakub Jelinek  <jakub@redhat.com>
1093
1094         PR debug/37156
1095         * error.c (cp_print_error_function): Deal with recursive BLOCK trees.
1096
1097 2008-08-18  Tomas Bily  <tbily@suse.cz>
1098
1099         * tree.c (cp_tree_equal): Use CONVERT_EXPR_CODE_P.
1100
1101 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1102
1103         * typeck.c: Update all callers of permerror.
1104         * init.c: Likewise.
1105         * class.c: Likewise.
1106         * decl.c: Likewise.
1107         * call.c: Likewise.
1108         * except.c: Likewise.
1109         * cvt.c: Likewise.
1110         * typeck2.c: Likewise.
1111         * pt.c: Likewise.
1112         * semantics.c: Likewise.
1113         * name-lookup.c: Likewise.
1114         * lex.c: Likewise.
1115         * decl2.c: Likewise.
1116         * parser.c: Likewise.
1117
1118 2008-08-14  Paolo Carlini  <paolo.carlini@oracle.com>
1119
1120         PR c++/34485
1121         * pt.c (check_template_shadow): Change to return a bool.
1122         * name-lookup.c (push_class_level_binding): Early return if
1123         check_template_shadow returns false.
1124         * cp-tree.h (check_template_shadow): Adjust declaration.
1125
1126 2008-08-14  Paolo Carlini  <paolo.carlini@oracle.com>
1127
1128         PR c++/34600
1129         * decl.c (grokdeclarator): In case of extern and initializer, return
1130         error_mark_node after the error.
1131
1132 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1133
1134         PR 30551
1135         * decl.c (grokfndecl): Call check_main_parameters_type only if
1136         -Wmain.
1137
1138 2008-08-12  Paolo Carlini  <paolo.carlini@oracle.com>
1139
1140         PR c++/37087
1141         * parser.c (cp_parser_class_head): Early return error_mark_node in
1142         case of global qualification of class name or qualified name that
1143         does not name a class.
1144
1145 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1146
1147         PR c++/12242
1148         * cvt.c (ocp_convert): Warn for out-of-range conversions to enum.
1149
1150 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1151
1152         PR 36901
1153         * cp-tree.h (struct diagnostic_context, struct diagnostic_info):
1154         Delete forward declarations. Check that toplev.h has not been
1155         included before this file. Include toplev.h and diagnostic.h.
1156         * error.c (cp_cpp_error): Use DK_PEDWARN.
1157         (cxx_incomplete_type_diagnostic): Update declaration.
1158         (cxx_incomplete_type_error): Use DK_ERROR.
1159         * typeck2.c (cxx_incomplete_type_diagnostic): Take a diagnostic_t
1160         as argument. Use emit_diagnostic.
1161         (cxx_incomplete_type_error): Use DK_ERROR.
1162         (add_exception_specifier): Use diagnostic_t instead of custom
1163         codes.  
1164         * typeck.c (complete_type_or_else): Update call to
1165         cxx_incomplete_type_diagnostic.
1166         * init.c (build_delete): Likewise.  
1167         * call.c (diagnostic_fn_t): Remove unused typedef.
1168         (build_temp): Pass a pointer to diagnostic_t.
1169         (convert_like_real): Use emit_diagnostic.
1170         (joust): Check return value of warning before giving informative
1171         note.  
1172         * friend.c (do_friend): Check return value of warning
1173         before giving informative note.
1174         * parser.c (cp_parser_template_id): Likewise.
1175
1176 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1177
1178         PR 7651
1179         * class.c (check_bases_and_members): Warn with -Wuninitialized
1180         instead of -Wextra.
1181         
1182 2008-08-08  Volker Reichelt  <v.reichelt@netcologne.de>
1183
1184         PR c++/35985
1185         * decl.c (xref_basetypes): Check base for MAYBE_CLASS_TYPE_P,
1186         and make sure it is not a union.
1187
1188 2008-08-07  H.J. Lu  <hongjiu.lu@intel.com>
1189
1190         * semantics.c (finish_decltype_type): Initialize type.
1191
1192 2008-08-07  Douglas Gregor  <doug.gregor@gmail.com>
1193
1194         * semantics.c (finish_decltype_type): Handle calls to function
1195         pointers and references to functions properly.
1196
1197 2008-08-06  Douglas Gregor  <doug.gregor@gmail.com>
1198
1199         PR c++/36460
1200         * parser.c (cp_parser_template_argument): Don't assume that '>>'
1201         following a type-id is an error when in C++0x mode.
1202
1203 2008-08-06  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1204
1205         PR 26785
1206         * decl.c (grokdeclarator): Use explicit location with permerror_at.
1207
1208 2008-08-06  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1209
1210         PR 8715
1211         * typeck.c (cp_build_binary_op): Move code to c-common.c.
1212
1213 2008-08-05  Jason Merrill  <jason@redhat.com>
1214
1215         PR c++/37016
1216         * decl.c (build_ptrmemfunc_type): Don't require structural
1217         comparison of PMF types.
1218         * tree.c (cp_build_qualified_type_real): Don't clear
1219         a valid TYPE_PTRMEMFUNC_TYPE.
1220         * typeck.c (cp_build_unary_op): Still do build_ptrmemfunc in
1221         templates.
1222
1223 2008-08-04  Jason Merrill  <jason@redhat.com>
1224
1225         PR c++/36963
1226         * typeck2.c (check_narrowing): Allow narrowing conversion
1227         from an explicit floating-point constant.
1228
1229         PR c++/37006
1230         * pt.c (tsubst_decl): Leave DECL_INITIAL set on deleted
1231         instantiations.
1232
1233 2008-08-04  Simon Baldwin  <simonb@google.com>
1234
1235         PR c++/36999
1236         * parser.c (cp_parser_elaborated_type_specifier): Warn only when
1237         the declaration's id is followed by a semicolon.
1238
1239 2008-07-31  Jakub Jelinek  <jakub@redhat.com>
1240
1241         PR c++/36405
1242         * rtti.c (get_tinfo_decl_dynamic, get_typeid): Call
1243         complete_type_or_else even for UNKNOWN_TYPE to get diagnostics.
1244
1245 2008-07-31  Jason Merrill  <jason@redhat.com>
1246
1247         PR c++/36633
1248         * init.c (build_new_1): Don't convert pointer to the data type
1249         until we're actually going to treat it as that type.
1250
1251         PR c++/11309
1252         * tree.c (build_aggr_init_expr): Split out...
1253         (build_cplus_new): ...from here.
1254         (stabilize_init): Don't mess with AGGR_INIT_EXPR either.
1255         * init.c (build_new_1): new T() means value-initialization,
1256         not default-initialization.
1257         (build_vec_init): Likewise.
1258         (build_value_init_1): Use build_aggr_init_expr.
1259
1260 2008-07-30  Dodji Seketeli  <dseketel@redhat.com>
1261
1262         PR c++/36767
1263         * decl2.c (fix_temporary_vars_context_r): New function.
1264          (one_static_initialization_or_destruction): Make sure temporary
1265          variables part of the initialiser have their DECL_CONTEXT()
1266          properly set.
1267
1268 2008-07-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1269
1270         PR 34389
1271         * typeck.c (build_binary_op): Encapsulate code into
1272         shorten_binary_op.
1273
1274 2008-07-29  Jakub Jelinek  <jakub@redhat.com>
1275
1276         PR c++/36852
1277         * tree.c (cplus_array_hash, build_cplus_array_type_1): Hash on
1278         TYPE_UID instead of pointers.
1279
1280 2008-07-29  Jan Hubicka  <jh@suse.cz>
1281
1282         * optimize.c (maybe_clone_body): Remove DECL_INLINE.
1283         * decl.c (duplicate_decls): Likewise.
1284         (grokfndecl): Likewise.
1285         (start_method): Likewise.
1286         * method.c (make_thunk, make_alias_for, implicitly_declare_fn):
1287         Likewise.
1288         * pt.c (register_specialization, regenerate_decl_from_template):
1289         Likewise.
1290         * decl2.c (grokfield): Likewise.
1291
1292 2008-07-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1293
1294         PR 34985
1295         * decl.c (duplicate_decls): Merge USED flags.
1296
1297 2008-07-27  Jason Merrill  <jason@redhat.com>
1298
1299         PR c++/36943
1300         * decl.c (reshape_init_r): Allow C++0x initializer lists.
1301
1302 2008-07-28  Richard Guenther  <rguenther@suse.de>
1303
1304         Merge from gimple-tuples-branch.
1305
1306         2008-07-22  Aldy Hernandez  <aldyh@redhat.com>
1307
1308         * cp-gimplify.c (gimplify_if_stmt): Set location on newly created
1309         COND_EXPR.
1310
1311         2008-07-18  Jakub Jelinek  <jakub@redhat.com>
1312
1313         * decl.c (finish_function): Call gimple_body after cp_genericize.
1314
1315         2008-07-18  Aldy Hernandez  <aldyh@redhat.com>
1316
1317         * optimize.c: Include gimple.h instead of tree-gimple.h.
1318         * Make-lang.in (cp-gimplify.o): Depend on tree-iterator.h.
1319         * cp-gimplify.c: Rename tree-gimple.h to gimple.h.  Include
1320         tree-iterator.h.
1321
1322         2008-07-16  Jakub Jelinek  <jakub@redhat.com>
1323
1324         * optimize.c (maybe_clone_body): Clear DECL_SAVED_TREE for the clone.
1325
1326         2008-07-14  Jakub Jelinek  <jakub@redhat.com>
1327
1328         * cp-gimplify.c (cp_gimplify_expr): Update comment.
1329
1330         2008-07-14  Aldy Hernandez  <aldyh@redhat.com>
1331
1332         * cp-tree.h (union lang_tree_node): Rename GENERIC_NEXT to
1333         TREE_CHAIN.
1334         * cp-gimplify.c (cxx_omp_clause_apply_fn): Rename
1335         GIMPLE_MODIFY_STMT to MODIFY_EXPR.
1336         (cxx_omp_clause_copy_ctor): Same.
1337         (cxx_omp_clause_assign_op): Same.
1338
1339         2008-05-28  Jakub Jelinek  <jakub@redhat.com>
1340
1341         * cp-gimplify.c (cp_gimplify_omp_for): Add pre_p argument.  Tuplify.
1342         (cp_gimplify_expr): Adjust caller.
1343
1344         2008-05-11 Doug Kwan  <dougkwan@google.com>
1345
1346         * init.c (build_vec_delete): Add type conversion for argument
1347         0 of POINTER_PLUS_EXPR.
1348
1349         2008-04-29  Doug Kwan  <dougkwan@google.com>
1350
1351         * decl2 (File): Include "gimple.h"
1352         (cp_write_global_declarations): Use gimple_body instead of
1353         DECL_SAVED_TREE.
1354         * Make-lang.in (cp/decl2.o): Add $(GIMPLE_H)
1355
1356         2008-04-10  Diego Novillo  <dnovillo@google.com>
1357
1358         http://gcc.gnu.org/ml/gcc-patches/2008-04/msg00913.html
1359
1360         * optimize.c (maybe_clone_body): Re-enable call to
1361         clone_body.
1362         * cp-gimplify.c (cp_gimplify_omp_for): Mark disabled
1363         code with call to gimple_unreachable.
1364         (cp_genericize): Fix handling of clone bodies.
1365
1366         2008-04-04  Diego Novillo  <dnovillo@google.com>
1367
1368         http://gcc.gnu.org/ml/gcc-patches/2008-04/msg00413.html
1369
1370         * optimize.c (maybe_clone_body): Re-enable.
1371
1372         2008-02-19  Diego Novillo  <dnovillo@google.com>
1373                     Oleg Ryjkov  <olegr@google.com>
1374
1375         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00804.html
1376
1377         * cp-gimplify.c (gimplify_for_stmt): Change gimple_seq
1378         argument to gimple_seq *.  Update all users.
1379         (gimplify_must_not_throw_expr): Likewise.
1380
1381         2008-02-04  Oleg Ryjkov <olegr@google.com>
1382
1383         * except.c: Include gimple.h
1384         (cp_protect_cleanup_actions): Convert to tuples.
1385         * Make-lang.in (cp/except.o): Add dependency on gimple.h
1386
1387         2007-11-10  Aldy Hernandez  <aldyh@redhat.com>
1388
1389         * cp-gimplify.c (gimplify_cp_loop): Call tree_annotate_all_with_locus
1390         instead of annotating each block manually.
1391
1392         2007-10-30  Aldy Hernandez  <aldyh@redhat.com>
1393
1394         * cp-gimplify.c (gimplify_cp_loop): Tuplify.
1395         (gimplify_for_stmt): Same.
1396         (gimplify_switch_stmt): Same.
1397         (cp_gimplify_expr): [FOR_STMT]: Do not call gimplify_for_stmt.  Return
1398         GS_OK.
1399         [WHILE_STMT]: Return GS_OK.
1400         [SWITCH_STMT]: Same.
1401         [CONTINUE_STMT]: Same.
1402         [BREAK_STMT]: Same.
1403         (cp_genericize): Set gimple_body() of cloned functions when needed.
1404
1405         2007-10-29  Aldy Hernandez  <aldy@quesejoda.com>
1406
1407         * cp-gimplify.c: Move build_gimple_eh_filter_tree here.
1408         (cp_gimplify_init_expr): Convert to tuples.
1409         (gimplify_must_not_throw_expr): Make function return a
1410         gimplify_status and convert to tuples.
1411
1412         2007-10-18  Aldy Hernandez  <aldy@quesejoda.com>
1413
1414         * cp-gimplify.c (genericize_try_block): Enable and do not call
1415         gimplify_stmt.
1416         (genericize_catch_block): Same.
1417         (genericize_eh_spec_block): Same.
1418         Rename gimple_build_eh_filter_tree to build_gimple_eh_filter_tree.
1419         (cp_gimplify_expr): Enable TRY_BLOCK, HANDLER, and EH_SPEC_BLOCK.
1420
1421         2007-10-16  Aldy Hernandez  <aldy@quesejoda.com>
1422
1423         * optimize.c (maybe_clone_body): Comment out call to clone_body.
1424         * decl.c (finish_function): Use gimple_body instead of
1425         DECL_SAVED_TREE.
1426         * cp-tree.h (cp_gimplify_expr): Last 2 arguments are sequences.
1427         * cp-gimplify.c (genericize_try_block): Comment out.
1428         (genericize_catch_block): Same.
1429         (genericize_eh_spec_block): Same.
1430         (gimplify_cp_loop): Comment out calls to gimplify_stmt.
1431         (gimplify_for_stmt): Comment out.
1432         (gimplify_switch_stmt): Comment out call to gimplify_stmt.
1433         (cp_gimplify_omp_for): Same.
1434         (gimplify_must_not_throw_expr): Argument pre_p is a sequence.
1435         Comment out call to gimplify_stmt and append_to_statement_list.
1436         Rename gimple_build_eh_filter_tree to build_gimple_eh_filter_tree.
1437         (cp_gimplify_init_expr): Arguments pre_p and post_p are sequences.
1438         (cp_gimplify_expr): Same.
1439         Comment out calls to genericize_*_block.  Comment out call to
1440         gimplify_for_stmt.
1441
1442 2008-07-27  H.J. Lu  <hongjiu.lu@intel.com>
1443
1444         PR c++/36944
1445         * class.c (type_has_user_provided_default_constructor): Handle
1446         default parameters.
1447
1448 2008-07-27  Paolo Carlini  <paolo.carlini@oracle.com>
1449
1450         * decl.c (push_library_fn): Add a parameter for the exceptions that
1451         the function may throw.
1452         (push_void_library_fn, push_throw_library_fn, expand_static_init):
1453         Adjust.
1454         (build_library_fn): Change to static.
1455         * cp-tree.h: Adjust declarations.
1456         * except.c (declare_nothrow_library_fn): New.
1457         (do_get_exception_ptr, do_begin_catch, do_free_exception,
1458         do_allocate_exception):  Use the latter, adjust the declarations
1459         (ie, add empty exception-specification), consistently with the
1460         actual implementation in libsupc++.
1461
1462 2008-07-25  Jan Hubicka  <jh@suse.cz>
1463
1464         * typeck.c (inline_conversion): Remove.
1465         (cp_build_function_call): Do not use inline_conversion.
1466         * decl.c (duplicate_decls): Do not insist on inline being declared
1467         early.
1468         (start_cleanup_fn): Do not assume that INLINE flags prevent function
1469         from being output.  We now remove static functions always.
1470         (finish_function): Do return warning on all static functions.
1471         * call.c (build_over_call): Do not use inline_conversion.
1472         * cp-tree.h (possibly_inlined_p): Declare.
1473         (inline_conversion): Remove.
1474         * pt.c (instantiate_decl): Use possibly_inlined_p predicate.
1475         * decl2.c (cp_write_global_declarations): Likewise.
1476         (mark_used): Likewise.
1477         (possibly_inlined_p): New functions.
1478
1479 2008-07-25  Jason Merrill  <jason@redhat.com>
1480
1481         * class.c (type_has_user_provided_default_constructor): Handle
1482         templates.
1483
1484 2008-07-23  Jan Hubicka  <jh@suse.cz>
1485
1486         * decl.c (duplicate_decls): Update comment and unit-at-a-time.
1487         (grogfndecl): Drop flag_inline_trees code.
1488         * pt.c (instantiate_decl): Drop flag_iline_trees code.
1489         * lex.c (cxx_init): Do not set unit-at-a-time.
1490
1491 2008-07-23  Jason Merrill  <jason@redhat.com>
1492
1493         * mangle.c (write_unqualified_name): Avoid infinite recursion when
1494         trying to mangle a decl with no name.
1495
1496         Implement defaulted/deleted functions as per N2346
1497         * cp-tree.h (struct lang_decl_flags): Add defaulted_p bitfield.
1498         (DECL_DELETED_FN): New macro.
1499         (DECL_DEFAULTED_FN): New macro.
1500         * class.c (user_provided_p): New fn.
1501         (defaultable_fn_p): New fn.
1502         (type_has_user_provided_constructor): New fn.
1503         (type_has_user_provided_default_constructor): New fn.
1504         (check_methods): A defaulted fn is still trivial.
1505         (check_bases_and_members): Likewise.
1506         * decl.c (grok_special_member_properties): Likewise.
1507         (duplicate_decls): Complain about redeclaring a function as deleted.
1508         (start_decl): initialized==2 means deleted.
1509         (cp_finish_decl): Handle deleted/defaulted semantics.
1510         * decl2.c (grokfield): Likewise.
1511         (mark_used): Check DECL_DEFAULTED_FN instead of DECL_ARTIFICIAL.
1512         Complain about using a deleted fn.
1513         * init.c (build_value_init_1): Use type_has_user_provided_constructor.
1514         (perform_member_init): Check for a user-provided default constructor
1515         even if TYPE_NEEDS_CONSTRUCTING.
1516         (build_new_1): Likewise.
1517         * call.c (build_over_call): Don't call mark_used twice.
1518         * method.c (implicitly_declare_fn): Set DECL_DEFAULTED_FN.
1519         * search.c (check_final_overrider): Check for deleted mismatch.
1520         * parser.c (cp_parser_init_declarator): Tell start_decl about =delete.
1521         (cp_parser_pure_specifier): Handle =default and =delete.
1522
1523         * error.c (maybe_warn_cpp0x): Suggest -std=gnu++0x as well.
1524
1525 2008-07-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1526
1527         PR 35058
1528         * typeck.c: All calls to pedwarn changed.
1529         * decl.c: All calls to pedwarn changed.
1530         * call.c: All calls to pedwarn changed.
1531         * error.c: All calls to pedwarn changed.
1532         * typeck2.c: All calls to pedwarn changed.
1533         * pt.c: All calls to pedwarn changed.
1534         * name-lookup.c: All calls to pedwarn changed.
1535         * parser.c: All calls to pedwarn changed.
1536
1537 2008-07-21  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
1538
1539         * call.c: Fix comment typos.
1540         * class.c: Likewise.
1541         * cp-tree.h: Likewise.
1542         * cxx-pretty-print.c: Likewise.
1543         * decl.c: Likewise.
1544         * init.c: Likewise.
1545         * name-lookup.c: Likewise.
1546         * operators.def: Likewise.
1547         * parser.c: Likewise.
1548         * pt.c: Likewise.
1549         * tree.c: Likewise.
1550         * typeck.c: Likewise.
1551
1552 2008-07-21  Paolo Carlini  <paolo.carlini@oracle.com>
1553
1554         PR c++/36871
1555         PR c++/36872
1556         * semantics.c (classtype_has_nothrow_assign_or_copy_p): Only check
1557         copy constructors and copy assignment operators proper.
1558
1559 2008-07-21  Rafael Ávila de Espíndola  <espindola@google.com>
1560
1561         * parser.c (cp_token): Remove in_system_header.
1562         (eof_token): Remove in_system_header.
1563         (cp_lexer_get_preprocessor_token): Don't set in_system_header.
1564         (cp_lexer_set_source_position_from_token): Don't set in_system_header.
1565         (cp_parser_member_declaration):  Use in_system_header_at.
1566         * pt.c (lookup_template_class): Don't set DECL_IN_SYSTEM_HEADER.
1567         (pop_tinst_level): Don't set in_system_header.
1568         (instantiate_class_template): Don't set in_system_header.
1569         (instantiate_decl): Don't set in_system_header.
1570         (instantiate_pending_templates): Don't set in_system_header.
1571
1572 2008-07-21  Paolo Carlini  <paolo.carlini@oracle.com>
1573
1574         PR c++/36870
1575         * semantics.c (classtype_has_nothrow_assign_or_copy_p): Use
1576         TYPE_NOTHROW_P, not TREE_NOTHROW.
1577         (trait_expr_value): Likewise.
1578
1579 2008-07-18  Dodji Seketeli  <dseketel@redhat.com>
1580
1581         PR c++/36407
1582         * call.c (convert_like_real): Don't take the error code path
1583           when a rvalue or base conversion has the bad_p field set.
1584
1585 2008-07-18  Kris Van Hees  <kris.van.hees@oracle.com>
1586
1587         * rtti.c (emit_support_tinfos): Add char16_type_node and
1588         char32_type_node.
1589         * typeck2.c (digest_init): Support char16_t and char32_t.
1590
1591 2008-07-18  Kavih R. Ghazi  <ghazi@caip.rutgers.edu>
1592
1593         * cvt.c (convert_to_void): Avoid C++ keywords.
1594         * decl.c (walk_namespaces_r, wrapup_globals_for_namespace):
1595         Likewise.
1596         * friend.c (is_friend): Likewise.
1597         * init.c (perform_member_init): Likewise.
1598         * mangle.c (write_template_prefix, write_template_template_param):
1599         Likewise.
1600         * name-lookup.c (do_namespace_alias, do_using_directive,
1601         parse_using_directive, ambiguous_decl, arg_assoc): Likewise.
1602         * parser.c (cp_parser_template_id, cp_parser_namespace_definition,
1603         cp_parser_objc_typename, cp_parser_objc_method_keyword_params):
1604         Likewise.
1605         * pt.c (is_specialization_of_friend, lookup_template_class,
1606         push_tinst_level, instantiate_class_template,
1607         tsubst_copy_and_build): Likewise.
1608         * tree.c (add_stmt_to_compound): Likewise.
1609         * typeck.c (finish_class_member_access_expr): Likewise.
1610
1611 2008-07-17  Julian Brown  <julian@codesourcery.com>
1612             Mark Mitchell  <mark@codesourcery.com>
1613
1614         * decl2.c (determine_visibility): Allow target to override
1615         visibility of class data.
1616
1617 2008-07-17  Paolo Carlini  <paolo.carlini@oracle.com>
1618
1619         PR c++/36855
1620         * semantics.c (trait_expr_value): Update __has_trivial_destructor
1621         semantics to the current WP (N2691).
1622
1623 2008-07-16  Dodji Seketeli  <dseketel@redhat.com>
1624
1625         PR c++/13699
1626         * name-lookup.c (lookup_extern_c_fun_binding_in_all_ns): New function.
1627         (pushdecl_maybe_friend): Check if a redeclaration of extern C function
1628         complies with exception specification constraints.
1629
1630 2008-07-14  Jason Merrill  <jason@redhat.com>
1631
1632         * lex.c (init_reswords): Always set D_OBJC.
1633
1634 2008-07-11  Tom Tromey  <tromey@redhat.com>
1635             Ian Lance Taylor  <iant@google.com>
1636
1637         * lex.c (struct resword, reswords): Don't define.
1638         (D_EXT, D_ASM, D_OBJC, D_CXX0X): Don't define.
1639         (init_reswords): Clarify mask code.  Use c_common_reswords rather
1640         than reswords.
1641
1642 2008-07-11  Dodji Seketeli  <dseketel@redhat.com>
1643
1644         PR c++/13101
1645         * decl.c (grokdeclarator): Warn about initializing variables
1646         of storage class 'extern' only after the type of the declarator
1647         has been properly computed.
1648
1649 2008-07-11  Dodji Seketeli  <dseketel@redhat.com>
1650
1651         PR c++/31754
1652         * cp-tree.h (struct cp_decl_specifier_seq): Add a location field. It
1653         carries the location of the primary type.
1654         * parser.c (cp_parser_check_type_definition): Update documentation.
1655         (cp_parser_check_for_definition_in_return_type,
1656         cp_parser_check_for_invalid_template_id,
1657         cp_parser_set_decl_spec_type,
1658         cp_parser_check_for_definition_in_return_type,
1659         cp_parser_diagnose_invalid_type_name,
1660         cp_parser_new_expression, cp_parser_explicit_instantiation,
1661         cp_parser_type_specifier, cp_parser_simple_type_specifier,
1662         cp_parser_omp_for_loop, cp_parser_pragma): Use location in error
1663         messages.
1664
1665 2008-07-11 Dodji Seketeli <dseketel@redhat.com>
1666
1667         PR c++/31754
1668         * pt.c, semantic.c:
1669         * semantic.c (qualified_name_lookup_error, finish_id_expression):
1670         Add a location_t parameter so that
1671         error message can have a more accurate location.
1672         * cp-tree.h: Updated prototype
1673         * pt.c (tsubst_qualified_id): Use location in error messages.
1674         * parser.c (cp_parser_postfix_expression,
1675         cp_parser_objc_statement, cp_parser_trait_expr,
1676         cp_parser_token_is_class_key,
1677         cp_parser_uncommitted_to_tentative_parse_p,
1678         cp_parser_check_for_invalid_template_id, cp_parser_is_string_literal,
1679         cp_parser_error, cp_parser_name_lookup_error,
1680         cp_parser_simulate_error, cp_parser_check_decl_spec,
1681         cp_parser_check_decl_spec, cp_parser_non_integral_constant_expression,
1682         cp_parser_diagnose_invalid_type_name,
1683         cp_parser_parse_and_diagnose_invalid_type_name,
1684         cp_parser_require_pragma_eol, cp_parser_make_typename_type,
1685         cp_parser_string_literal, cp_parser_primary_expression,
1686         cp_parser_primary_expression, cp_parser_unqualified_id,
1687         cp_parser_nested_name_specifier_opt, cp_parser_postfix_expression,
1688         cp_parser_postfix_dot_deref_expression, cp_parser_new_expression,
1689         cp_parser_direct_new_declarator, cp_parser_builtin_offsetof,
1690         cp_parser_label_for_labeled_statement, cp_parser_statement_seq_opt,
1691         cp_parser_jump_statement, cp_parser_block_declaration,
1692         cp_parser_simple_declaration, cp_parser_decl_specifier_seq,
1693         cp_parser_function_specifier_opt, cp_parser_decltype,
1694         cp_parser_mem_initializer_list, cp_parser_mem_initializer,
1695         cp_parser_mem_initializer_id, cp_parser_template_parameter,
1696         cp_parser_type_parameter, cp_parser_template_id,
1697         cp_parser_template_name, cp_parser_template_argument): Likewise.
1698
1699 2008-07-09  Paolo Carlini  <paolo.carlini@oracle.com>
1700
1701         PR c++/36760
1702         * pt.c (tsubst_function_type): Remove warning for type qualifiers
1703         on function return type.
1704
1705 2008-07-09  Paolo Carlini  <paolo.carlini@oracle.com>
1706
1707         PR c++/36760
1708         * pt.c (tsubst_function_type): Don't warn for type qualifiers
1709         on function return type in case of system header.
1710
1711 2008-07-09  Raksit Ashok <raksit@google.com>
1712
1713         * parser.c (cp_parser_postfix_expression): New warning based on flag
1714         warn_disallowed_functions.
1715
1716 2008-07-08  Simon Martin  <simartin@users.sourceforge.net>
1717
1718         PR c++/34963
1719         * decl.c (grokdeclarator): Reset storage_class and staticp for friend
1720         functions declared with a storage class qualifier.
1721
1722 2008-07-03  Richard Guenther  <rguenther@suse.de>
1723
1724         PR c++/36128
1725         * typeck.c (cp_build_function_call): Move code to verify
1726         builtin function arguments ...
1727         * call.c (build_cxx_call): ... here.
1728
1729 2008-07-02  Jason Merrill  <jason@redhat.com>
1730
1731         * Make-lang.in (cp/typeck2.o): Add $(REAL_H) dependency.
1732
1733         Implement WG21 N2672, Initializer List proposed wording
1734         * cp-tree.h (enum cp_tree_index): Add CPTI_INIT_LIST_TYPE.
1735         (struct lang_type_class): Add has_list_ctor bitfield.
1736         (TYPE_HAS_LIST_CTOR): New macro.
1737         (BRACE_ENCLOSED_INITIALIZER_P): Expect init_list_type_node.
1738         (CONSTRUCTOR_IS_DIRECT_INIT): New macro.
1739         (LOOKUP_NO_NARROWING): New macro.
1740         (LOOKUP_NO_COPY_CTOR_CONVERSION): New macro.
1741         * parser.c (cp_parse_braced_list): Split out from...
1742         (cp_parser_initializer_clause): ...here.
1743         (cp_parser_postfix_expression): Build up CONSTRUCTOR for compound
1744         literal here.
1745         (cp_lexer_next_token_is_not_keyword): New fn.
1746         (cp_parser_parenthesized_expression_list): Handle { }.
1747         (cp_parser_new_expression, cp_parser_new_initializer): Likewise.
1748         (cp_parser_assignment_expression, cp_parser_condition): Likewise.
1749         (cp_parser_jump_statement, cp_parser_simple_declaration): Likewise.
1750         (cp_parser_mem_initializer, cp_parser_init_declarator): Likewise.
1751         (cp_parser_initializer, cp_parser_functional_cast): Likewise.
1752         (cp_parser_omp_for_loop, cp_parser_cache_group): Likewise.
1753         (cp_parser_save_member_function_body): Likewise.
1754         * call.c (conversion_kind): Add ck_list, ck_aggr.
1755         (struct conversion): Add check_narrowing bitfield, conversion list.
1756         (build_list_conv): New fn.
1757         (build_aggr_conv): New fn.
1758         (implicit_conversion): Call them.
1759         (standard_conversion): Set check_narrowing if appropriate.
1760         (add_function_candidate): Handle LOOKUP_NO_COPY_CTOR_CONVERSION.
1761         (build_user_type_conversion_1): When converting from an init list,
1762         we allow additional conversions except when calling a copy ctor.
1763         (convert_like_real): Calling an explicit ctor for an init list is
1764         ill-formed.  Handle ck_list and ck_addr.  Check narrowing.
1765         (build_new_method_call): If CONSTRUCTOR_IS_DIRECT_INIT is set and
1766         class doesn't have a list ctor, break the {} into a TREE_LIST.
1767         (compare_ics): ck_list is better than other UDCs.
1768         (set_up_extended_ref_temp): Split out from initialize_reference.
1769         (is_std_init_list): New fn.
1770         (is_list_ctor): New fn.
1771         * decl.c (cxx_init_decl_processing): Create init_list_type_node.
1772         (reshape_init_array_1): Pass it to build_constructor.
1773         (reshape_init_class): Ditto.
1774         (initialize_artificial_var): Pass the appropriate type.
1775         (build_aggr_init_full_exprs): Split out from...
1776         (check_initializer): ...here.  Handle new semantics.
1777         (build_init_list_var_init): New subroutine of check_initializer.
1778         (grokdeclarator): Converting constructors can have more than one parm.
1779         (grok_special_member_properties): Set TYPE_HAS_LIST_CTOR.
1780         * init.c (expand_default_init): Only do digest_init for aggregates.
1781         * rtti.c (tinfo_base_init): Pass init_list_type_node to
1782         build_constructor_from_list.
1783         (generic_initializer, ptr_initializer): Ditto.
1784         (ptm_initializer, class_initializer): Ditto.
1785         (get_pseudo_ti_init): Ditto.
1786         * error.c (dump_type): Handle init_list_type_node.
1787         (maybe_warn_cpp0x): New fn.
1788         (maybe_varn_variadic_templates): Call it.
1789         * cvt.c (ocp_convert): Handle conversion from { }.
1790         * tree.c (build_array_of_n_type): New fn.
1791         * typeck2.c (store_init_value): Use init_list_type_node.
1792         (digest_init): Likewise.
1793         (check_narrowing): New fn.
1794         * semantics.c: (finish_compound_literal): Take CONSTRUCTOR instead
1795         of vector of constructor elts.  Handle non-aggregate types.  Make
1796         constant literals static.
1797         * pt.c: (tsubst_copy_and_build): Adjust.
1798         (unify): Handle { }.
1799         * name-lookup.c (arg_assoc_type): Handle init_list_type_node.
1800
1801 2008-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
1802
1803         * typeck.c (comp_ptr_ttypes_real): Use vector_targets_convertible_p.
1804         (comp_ptr_ttypes_const): Likewise.
1805
1806 2008-07-01  Andrew Haley  <aph@redhat.com>
1807
1808         * decl.c (finish_constructor_body): Don't set the return value of
1809         the constructor if the constructor is that of a Java type.
1810
1811 2008-06-30  Jakub Jelinek  <jakub@redhat.com>
1812
1813         PR c++/36662
1814         * decl2.c (is_late_template_attribute): If the first attribute
1815         argument is IDENTIFIER_NODE, don't consider it when checking
1816         if arguments are value or type dependent.
1817
1818 2008-06-29  Paolo Carlini  <paolo.carlini@oracle.com>
1819
1820         PR c++/36655
1821         * pt.c (do_type_instantiation): In c++0x mode do not warn for
1822         extern template.
1823
1824 2008-06-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1825
1826         * Make-lang.in (cp-warn): Delete $(CXX_COMPAT_WARN).
1827
1828 2008-06-28  Jakub Jelinek  <jakub@redhat.com>
1829
1830         PR c++/36364
1831         * repo.c (repo_emit_p): Put const static data members initialized
1832         by const expr into *.rpo file, just return 2 if IDENTIFIER_REPO_CHOSEN
1833         for it is 0.
1834
1835 2008-06-27  Paolo Carlini  <paolo.carlini@oracle.com>
1836
1837         PR c++/36655
1838         * pt.c (do_decl_instantiation): In c++0x mode do not warn for
1839         extern template.
1840
1841 2008-06-24  Jonathan Wakely  <jwakely.gcc@gmail.com>
1842
1843         PR c++/23194
1844         * typeck.c (cp_build_function_call): Show example syntax in
1845         diagnostic.
1846
1847 2008-06-21  Jonathan Wakely  <jwakely.gcc@gmail.com>
1848
1849         * typeck.c (composite_pointer_type_r, cxx_sizeof_expr,
1850         cxx_alignof_expr, check_template_keyword, cp_build_binary_op,
1851         pointer_diff, cp_build_unary_op, build_x_compound_expr_from_list,
1852         build_reinterpret_cast_1, cp_build_c_cast, check_return_expr): Change
1853         pedwarn to permerror.
1854         * init.c (perform_member_init, build_new_1, build_new): Likewise.
1855         * decl.c (warn_extern_redeclared_static, duplicate_decls,
1856         * identify_goto, check_previous_goto_1, check_goto, define_label,
1857         check_tag_decl, start_decl, check_class_member_definition_namespace,
1858         grokfndecl, grokdeclarator): Likewise.
1859         * except.c (check_handlers): Likewise.
1860         * typeck2.c (digest_init): Likewise.
1861         * pt.c (check_specialization_namespace,
1862         check_explicit_instantiation_namespace,
1863         maybe_process_partial_specialization, check_explicit_specialization,
1864         convert_template_argument, do_decl_instantiation,
1865         do_type_instantiation, instantiate_decl): Likewise.
1866         * semantics.c (finish_template_type_parm): Likewise.
1867         * name-lookup.c (pushdecl_maybe_friend,
1868         check_for_out_of_scope_variable): Likewise.
1869         * decl2.c (finish_static_data_member_decl, build_anon_union_vars,
1870         coerce_new_type): Likewise.
1871         * parser.c (cp_parser_nested_name_specifier_opt,
1872         cp_parser_mem_initializer, cp_parser_elaborated_type_specifier,
1873         cp_parser_class_head, cp_parser_check_class_key): Likewise.
1874         (cp_parser_parameter_declaration): Check flag_permissive instead of
1875         flag_pedantic_errors.
1876         * call.c (joust): Change pedwarn to warning.
1877         * friend.c (make_friend_class): Likewise.
1878
1879 2008-06-16  Jan Hubicka  <jh@suse.cz>
1880
1881         * method.c: Include cgraph.h.
1882         (use_thunk): Use cgraph_add_new_function instead of calling backend
1883         directly.
1884
1885 2008-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
1886
1887         * parser.c: Fix comment typo.
1888
1889 2008-06-14  Simon Martin  <simartin@users.sourceforge.net>
1890
1891         PR c++/35320
1892         * decl2.c (grokbitfield): Receive the list of attributes, pass it to
1893         grokdeclarator and apply it to the created declaration.
1894         * cp-tree.h (grokbitfield): Update prototype.
1895         * parser.c (cp_parser_member_declaration): Don't apply the attributes
1896         since they are now applied in grokbitfield. Adjusted the call to
1897         grokbitfield.
1898         (cp_parser_objc_class_ivars): Likewise.
1899
1900 2008-06-14  Simon Martin  <simartin@users.sourceforge.net>
1901
1902         PR c++/35317
1903         * class.c (type_requires_array_cookie): Do not consider delete[]
1904         operators with an ellipsis as second argument.
1905
1906 2008-06-09  Jakub Jelinek  <jakub@redhat.com>
1907
1908         PR c++/36408
1909         * semantics.c (stmt_expr_value_expr): Don't crash on empty
1910         STATEMENT_LIST.
1911
1912 2008-06-08  Paolo Carlini  <paolo.carlini@oracle.com>
1913
1914          PR c++/35242
1915          * pt.c (maybe_process_partial_specialization): Check the tree
1916         returned by push_template_decl for error_mark_node.
1917         * parser.c (cp_parser_class_head): Likewise, check the tree
1918         returned by the latter.
1919
1920 2008-06-07  Paolo Carlini  <paolo.carlini@oracle.com>
1921
1922          PR c++/35327
1923          * decl.c (grokdeclarator): In case of wrong return type return
1924         immediately error_mark_node.
1925
1926 2008-06-06  Jakub Jelinek  <jakub@redhat.com>
1927
1928         * cp-tree.h (cxx_omp_finish_clause, cxx_omp_create_clause_info,
1929         dependent_omp_for_p, begin_omp_task, finish_omp_task,
1930         finish_omp_taskwait): New prototypes.
1931         (cxx_omp_clause_default_ctor): Add outer argument.
1932         (finish_omp_for): Add new clauses argument.
1933         * cp-gimplify.c (cxx_omp_finish_clause): New function.
1934         (cxx_omp_predetermined_sharing): Moved from semantics.c, rewritten.
1935         (cxx_omp_clause_default_ctor): Add outer argument.
1936         (cp_genericize_r): Walk OMP_CLAUSE_LASTPRIVATE_STMT.
1937         * cp-objcp-common.h (LANG_HOOKS_OMP_FINISH_CLAUSE): Define.
1938         * parser.c (cp_parser_omp_for_loop): Parse collapsed for loops.
1939         Add par_clauses argument.  If decl is present in parallel's
1940         lastprivate clause, change that clause to shared and add
1941         a lastprivate clause for decl to OMP_FOR_CLAUSES.
1942         Fix wording of error messages.  Adjust finish_omp_for caller.
1943         Add clauses argument.  Parse loops with random access iterators.
1944         (cp_parser_omp_clause_collapse, cp_parser_omp_clause_untied): New
1945         functions.
1946         (cp_parser_omp_for, cp_parser_omp_parallel): Adjust
1947         cp_parser_omp_for_loop callers.
1948         (cp_parser_omp_for_cond, cp_parser_omp_for_incr): New helper
1949         functions.
1950         (cp_parser_omp_clause_name): Handle collapse and untied
1951         clauses.
1952         (cp_parser_omp_clause_schedule): Handle auto schedule.
1953         (cp_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_COLLAPSE
1954         and PRAGMA_OMP_CLAUSE_UNTIED.
1955         (OMP_FOR_CLAUSE_MASK): Add PRAGMA_OMP_CLAUSE_COLLAPSE.
1956         (OMP_TASK_CLAUSE_MASK): Define.
1957         (cp_parser_omp_task, cp_parser_omp_taskwait): New functions.
1958         (cp_parser_omp_construct): Handle PRAGMA_OMP_TASK.
1959         (cp_parser_pragma): Handle PRAGMA_OMP_TASK and
1960         PRAGMA_OMP_TASKWAIT.
1961         * pt.c (tsubst_omp_clauses): Handle OMP_CLAUSE_COLLAPSE and
1962         OMP_CLAUSE_UNTIED.  Handle OMP_CLAUSE_LASTPRIVATE_STMT.
1963         (tsubst_omp_for_iterator): New function.
1964         (dependent_omp_for_p): New function.
1965         (tsubst_expr) <case OMP_FOR>: Use it.  Handle collapsed OMP_FOR
1966         loops.  Adjust finish_omp_for caller.  Handle loops with random
1967         access iterators.  Adjust for OMP_FOR_{INIT,COND,INCR} changes.
1968         (tsubst_expr): Handle OMP_TASK.
1969         * semantics.c (cxx_omp_create_clause_info): New function.
1970         (finish_omp_clauses): Call it.  Handle OMP_CLAUSE_UNTIED and
1971         OMP_CLAUSE_COLLAPSE.
1972         (cxx_omp_predetermined_sharing): Removed.
1973         * semantics.c (finish_omp_for): Allow pointer iterators.  Use
1974         handle_omp_for_class_iterator and dependent_omp_for_p.  Handle
1975         collapsed for loops.  Adjust c_finish_omp_for caller.  Add new
1976         clauses argument.  Fix check for type dependent cond or incr.
1977         Set OMP_FOR_CLAUSES to clauses.  Use cp_convert instead of
1978         fold_convert to convert incr amount to difference_type.  Only
1979         fold if not in template.  If decl is mentioned in lastprivate
1980         clause, set OMP_CLAUSE_LASTPRIVATE_STMT.  Handle loops with random
1981         access iterators.  Adjust for OMP_FOR_{INIT,COND,INCR}
1982         changes.
1983         (finish_omp_threadprivate): Allow static class members of the
1984         current class.
1985         (handle_omp_for_class_iterator, begin_omp_task, finish_omp_task,
1986         finish_omp_taskwait): New functions.
1987
1988         * parser.c (cp_parser_binary_expression): Add prec argument.
1989         (cp_parser_assignment_expression): Adjust caller.
1990         * cp-tree.h (outer_curly_brace_block): New prototype.
1991         * decl.c (outer_curly_brace_block): No longer static.
1992
1993 2008-06-02  Paolo Carlini  <paolo.carlini@oracle.com>
1994
1995          PR c++/36404
1996          * pt.c (push_template_decl_real): Consistently return error_mark_node
1997         on error.
1998
1999 2008-06-02  Tomas Bily  <tbily@suse.cz>
2000
2001          * typeck.c (is_bitfield_expr_with_lowered_type): Use CASE_CONVERT.
2002          (cp_build_unary_op): Likewise.
2003          (cp_build_indirect_ref): Use CONVERT_EXPR_P.
2004          (maybe_warn_about_returning_address_of_local): Likewise.
2005
2006 2008-05-29  Paolo Carlini  <paolo.carlini@oracle.com>
2007
2008          PR c++/35243
2009          * pt.c (tsubst_initializer_list): Consistently check the tree
2010          returned by tsubst_pack_expansion for error_mark_node.
2011
2012 2008-05-27  Michael Matz  <matz@suse.de>
2013
2014         PR c++/27975
2015         * call.c (build_new_op): Make warning conditional on
2016         OPT_Wenum_compare.
2017
2018 2008-05-27  Alexandre Oliva  <aoliva@redhat.com>
2019
2020         PR c++/35909
2021         * call.c (convert_like_real): Convert bitfield to desired type
2022         before creating temporary.
2023
2024 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
2025
2026         * Makefile.in: Adjusted dependencies on c-incpath.o.
2027
2028 2008-05-23  Jakub Jelinek  <jakub@redhat.com>
2029
2030         PR c++/36237
2031         * cp-gimplify.c (cxx_omp_clause_apply_fn): Call
2032         fold_build_cleanup_point_expr on build_call_a results.
2033
2034         PR c++/36308
2035         * semantics.c (omp_clause_info_fndecl): New function.
2036         (finish_omp_clauses): Use it.
2037
2038 2008-05-21  Jakub Jelinek  <jakub@redhat.com>
2039
2040         PR c++/36023
2041         * cp-tree.h (check_array_initializer): New prototype.
2042         * decl.c (check_array_initializer): New function.
2043         (check_initializer): Call it.
2044         * semantics.c (finish_compound_literal): Call it for ARRAY_TYPEs.
2045
2046 2008-05-21  Tom Tromey  <tromey@redhat.com>
2047
2048         * mangle.c (save_partially_mangled_name): Remove.
2049         (restore_partially_mangled_name): Likewise.
2050         (write_encoding): Update.
2051         (write_unqualified_name): Likewise.
2052         (start_mangling): Always use name_obstack.  Remove 'ident_p'
2053         argument.
2054         (get_identifier_nocopy): Remove.
2055         (finish_mangling_internal): Rename from finish_mangling.
2056         (finish_mangling): New function.
2057         (finish_mangling_get_identifier): Likewise.
2058         (partially_mangled_name, partially_mangled_name_len): Remove.
2059         (mangle_decl_string): Change return type.  Update.
2060         (mangle_decl, mangle_type_string, mangle_special_for_type,
2061         mangle_ctor_vtbl_for_type, mangle_thunk, mangle_guard_variable,
2062         mangle_ref_init_variable): Update.
2063
2064 2008-05-12  Paolo Carlini  <paolo.carlini@oracle.com>
2065
2066          PR c++/35331
2067          * semantics.c (begin_class_definition): Extend checks on the first
2068         argument.
2069
2070 2008-05-12  Tomas Bily  <tbily@suse.cz>
2071
2072          * typeck2.c (digest_init): Use CONVERT_EXPR_P.
2073          * call.c (build_over_call): Likewise.
2074          * error.c (dump_expr): Use CASE_CONVERT.
2075          * class.c (fixed_type_or_null): Likewise.
2076
2077 2008-05-11  Volker Reichelt  <v.reichelt@netcologne.de>
2078
2079         * parser.c (cp_parser_omp_clause_reduction): Add missing "expected"
2080         in error message.
2081         (cp_parser_omp_clause_schedule): Remove superfluous "expected"
2082         in error message.
2083
2084 2008-05-07  Kenneth Zadeck  <zadeck@naturalbridge.com>
2085
2086         * decl.c (duplicate_decls): Merge in DECL_PURE_P, TREE_READONLY,
2087         DECL_LOOPING_CONST_OR_PURE_P attributes.
2088         * rtti.c (build_dynamic_cast_1): Rename DECL_IS_PURE to
2089         DECL_PURE_P.
2090
2091 2008-05-02  Simon Baldwin  <simonb@google.com>
2092
2093         PR bootstrap/36108
2094         * typeck.c (build_array_ref): Remove warn_array_subscript_range.
2095
2096 2008-05-01  Simon Baldwin  <simonb@google.com>
2097
2098         * typeck.c (build_array_ref): Call warn_array_subscript_range.
2099
2100 2008-04-30  Jakub Jelinek  <jakub@redhat.com>
2101
2102         PR c++/35986
2103         * pt.c (more_specialized_fn): Stop the loop even if there are no
2104         arguments before ellipsis.
2105
2106 2008-04-29  Jakub Jelinek  <jakub@redhat.com>
2107
2108         PR c++/35650
2109         * parser.c (cp_parser_lookup_name): Look through single function
2110         OVERLOAD.
2111
2112         PR c++/35987
2113         * typeck.c (cp_build_modify_expr) <case PREINCREMENT_EXPR>: Don't build
2114         COMPOUND_EXPR if the second argument would be error_mark_node.
2115
2116 2008-04-28  Jason Merrill  <jason@redhat.com>
2117             Liu Guanwei <liu_gw@163.com>
2118
2119         PR c++/57
2120         * parser.c (cp_parser_parameter_declaration): Handle < ambiguity
2121         in default arguments.
2122
2123 2008-04-25  Jan Hubicka  <jh@suse.cz>
2124
2125         * typeck.c (check_return_expr): Update.
2126         * decl.c (start_preparsed_function): Update.
2127         * method.c (use_thunk): Update.
2128
2129 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
2130
2131         PR c++/35758
2132         * cp-tree.h (cp_reconstruct_complex_type): New prototype.
2133         * cp-objcp-common.h (LANG_HOOKS_RECONSTRUCT_COMPLEX_TYPE): Define.
2134         * decl2.c (is_late_template_attribute): Only make vector_size
2135         late tmpl attribute if argument is type or value dependent.
2136         (cp_reconstruct_complex_type): New function.
2137
2138 2008-04-24  Richard Guenther  <rguenther@suse.de>
2139
2140         * typeck.c (cp_build_function_call): Call
2141         check_builtin_function_arguments.
2142
2143 2008-04-23  Paolo Bonzini  <bonzini@gnu.org>
2144
2145         * typeck.c (get_member_function_from_ptrfunc): Don't set TREE_INVARIANT.
2146         (build_ptrmemfunc1): Don't set TREE_INVARIANT.
2147         * init.c (build_zero_init): Don't set TREE_INVARIANT.
2148         * class.c (build_base_path): Don't set TREE_INVARIANT.
2149         (build_vtbl_ref_1): Don't set TREE_INVARIANT.
2150         (build_vtbl_initializer): Don't set TREE_INVARIANT.
2151         * decl.c (build_enumerator): Don't set TREE_INVARIANT.
2152         * rtti.c (tinfo_base_init): Don't set TREE_INVARIANT.
2153         (generic_initializer): Don't set TREE_INVARIANT.
2154         (ptr_initializer): Don't set TREE_INVARIANT.
2155         (ptm_initializer): Don't set TREE_INVARIANT.
2156         (class_initializer): Don't set TREE_INVARIANT.
2157         * typeck2.c (process_init_constructor): Don't set TREE_INVARIANT.
2158         * pt.c (push_inline_template_parms_recursive): Don't set TREE_INVARIANT.
2159         (build_template_parm_index): Don't set TREE_INVARIANT.
2160         (reduce_template_parm_level): Don't set TREE_INVARIANT.
2161         (process_template_parm): Don't set TREE_INVARIANT.
2162
2163 2008-04-22  Jason Merrill  <jason@redhat.com>
2164
2165         PR c++/35316
2166         * semantics.c (finish_decltype_type): Check DECL_BIT_FIELD_TYPE
2167         to see if DECL_BIT_FIELD_TYPE should be used, not some other flag.
2168         * typeck.c (is_bitfield_expr_with_lowered_type): Likewise.
2169
2170 2008-04-22  Jakub Jelinek  <jakub@redhat.com>
2171
2172         PR c++/35747
2173         * semantics.c (finish_stmt_expr): Call pop_stmt_list even if the stmt
2174         expression is errorneous.
2175
2176 2008-04-21  Jason Merrill  <jason@redhat.com>
2177
2178         PR c++/35325
2179         * tree.c (cp_tree_equal): Handle FIXED_CST.
2180
2181         PR c++/35678
2182         * pt.c (template_template_parm_bindings_ok_p): Set
2183         processing_template_decl while in this function.
2184
2185 2008-04-18  Kris Van Hees <kris.van.hees@oracle.com>
2186
2187         * cvt.c (type_promotes_to): Support char16_t and char32_t.
2188         * decl.c (grokdeclarator): Disallow signed/unsigned/short/long on
2189         char16_t and char32_t.
2190         * lex.c (reswords): Add char16_t and char32_t (for c++0x).
2191         * mangle.c (write_builtin_type): Mangle char16_t/char32_t as vendor
2192         extended builtin type "u8char{16,32}_t".
2193         * parser.c (cp_lexer_next_token_is_decl_specifier_keyword): Support
2194         RID_CHAR{16,32}.
2195         (cp_lexer_print_token): Support CPP_STRING{16,32}.
2196         (cp_parser_is_string_literal): Idem.
2197         (cp_parser_string_literal): Idem.
2198         (cp_parser_primary_expression): Support CPP_CHAR{16,32} and
2199         CPP_STRING{16,32}.
2200         (cp_parser_simple_type_specifier): Support RID_CHAR{16,32}.
2201         * tree.c (char_type_p): Support char16_t and char32_t as char types.
2202         * typeck.c (string_conv_p): Support char16_t and char32_t.
2203
2204 2008-04-17  Jason Merrill  <jason@redhat.com>
2205
2206         PR c++/35773
2207         * call.c (build_user_type_conversion_1): Represent second step of
2208         copy-init with an rvalue conversion.
2209         (convert_like_real) [ck_user]: Don't implicitly add it here.
2210
2211 2008-04-15  Jakub Jelinek  <jakub@redhat.com>
2212
2213         PR c/35751
2214         * decl.c (layout_var_decl): If extern or static var has variable
2215         size, set TREE_TYPE (decl) to error_mark_node.
2216
2217 2008-04-16  Danny Smith  <dannysmith@users.sourceforge.net>
2218
2219         PR target/35921
2220         * optimize.c (maybe_clone_body): Copy DECL_DLLIMPORT_P flag
2221         to clone.
2222
2223 2008-04-09  Jason Merrill  <jason@redhat.com>
2224
2225         PR c++/35708
2226         * semantics.c (finish_compound_literal): Return a TARGET_EXPR,
2227         not a pushed variable.
2228
2229 2008-04-09  Volker Reichelt  <v.reichelt@netcologne.de>
2230
2231         * call.c (build_op_delete_call): Fix quotation in warning message.
2232         * decl.c (grokdeclarator): Quote keyword in error message.
2233         * pt.c (check_for_bare_parameter_packs): Fix quotation in error
2234         message.
2235
2236         * parser.c (cp_parser_check_type_definition): Print error string
2237         directly rather than using "%s".
2238         (cp_parser_postfix_expression): Fix quotation.
2239         (cp_parser_decltype): Likewise.
2240         (cp_parser_sizeof_operand): Fix quotation. Simplify.
2241
2242         * parser.c (cp_parser_non_integral_constant_expression): Build error
2243         message with CONCAT rather than using "%s".
2244         (cp_parser_primary_expression): Fix quotation.
2245         (cp_parser_postfix_expression): Likewise.
2246         (cp_parser_postfix_dot_deref_expression): Likewise.
2247         (cp_parser_unary_expression): Likewise.
2248         (cp_parser_new_expression): Likewise.
2249         (cp_parser_delete_expression): Likewise.
2250
2251         * parser.c (cp_parser_asm_specification_opt): Print CPP_CLOSE_PAREN
2252         as `)', not as `('.  Fix quotation.
2253         (cp_parser_consume_semicolon_at_end_of_statement): Fix quotation.
2254         (cp_parser_primary_expression): Likewise.
2255         (cp_parser_nested_name_specifier_opt): Likewise.
2256         (cp_parser_postfix_expression): Likewise.
2257         (cp_parser_postfix_open_square_expression): Likewise.
2258         (cp_parser_parenthesized_expression_list): Likewise.
2259         (cp_parser_pseudo_destructor_name): Likewise.
2260         (cp_parser_new_expression): Likewise.
2261         (cp_parser_direct_new_declarator): Likewise.
2262         (cp_parser_delete_expression): Likewise.
2263         (cp_parser_cast_expression): Likewise.
2264         (cp_parser_question_colon_clause): Likewise.
2265         (cp_parser_builtin_offsetof): Likewise.
2266         (cp_parser_trait_expr): Likewise.
2267         (cp_parser_label_for_labeled_statement): Likewise.
2268         (cp_parser_compound_statement): Likewise.
2269         (cp_parser_selection_statement): Likewise.
2270         (cp_parser_condition): Likewise.
2271         (cp_parser_iteration_statement): Likewise.
2272         (cp_parser_already_scoped_statement): Likewise.
2273         (cp_parser_simple_declaration): Likewise.
2274         (cp_parser_linkage_specification): Likewise.
2275         (cp_parser_static_assert): Likewise.
2276         (cp_parser_decltype): Likewise.
2277         (cp_parser_conversion_function_id): Likewise.
2278         (cp_parser_operator_function_id): Likewise.
2279         (cp_parser_operator): Likewise.
2280         (cp_parser_type_parameter): Likewise.
2281         (cp_parser_template_id): Likewise.
2282         (cp_parser_explicit_instantiation): Likewise.
2283         (cp_parser_explicit_specialization): Likewise.
2284         (cp_parser_enum_specifier): Likewise.
2285         (cp_parser_namespace_definition): Likewise.
2286         (cp_parser_namespace_alias_definition): Likewise.
2287         (cp_parser_using_declaration): Likewise.
2288         (cp_parser_using_directive): Likewise.
2289         (cp_parser_asm_definition): Likewise.
2290         (cp_parser_direct_declarator): Likewise.
2291         (cp_parser_ptr_operator): Likewise.
2292         (cp_parser_parameter_declaration_clause): Likewise.
2293         (cp_parser_initializer_clause): Likewise.
2294         (cp_parser_class_specifier): Likewise.
2295         (cp_parser_member_specification_opt): Likewise.
2296         (cp_parser_member_declaration): Likewise.
2297         (cp_parser_pure_specifier): Likewise.
2298         (cp_parser_constant_initializer): Likewise.
2299         (cp_parser_base_clause): Likewise.
2300         (cp_parser_exception_specification_opt): Likewise.
2301         (cp_parser_try_block): Likewise.
2302         (cp_parser_function_try_block): Likewise.
2303         (cp_parser_handler): Likewise.
2304         (cp_parser_throw_expression): Likewise.
2305         (cp_parser_asm_operand_list): Likewise.
2306         (cp_parser_attributes_opt): Likewise.
2307         (cp_parser_label_declaration): Likewise.
2308         (cp_parser_constructor_declarator_p): Likewise.
2309         (cp_parser_template_declaration_after_export): Likewise.
2310         (cp_parser_single_declaration): Likewise.
2311         (cp_parser_objc_message_expression): Likewise.
2312         (cp_parser_objc_message_args): Likewise.
2313         (cp_parser_objc_encode_expression): Likewise.
2314         (cp_parser_objc_defs_expression): Likewise.
2315         (cp_parser_objc_protocol_expression): Likewise.
2316         (cp_parser_objc_selector_expression): Likewise.
2317         (cp_parser_objc_protocol_refs_opt): Likewise.
2318         (cp_parser_objc_typename): Likewise.
2319         (cp_parser_objc_method_keyword_params): Likewise.
2320         (cp_parser_objc_superclass_or_category): Likewise.
2321         (cp_parser_objc_try_catch_finally_statement): Likewise.
2322         (cp_parser_objc_synchronized_statement): Likewise.
2323         (cp_parser_objc_throw_statement): Likewise.
2324         (cp_parser_omp_var_list_no_open): Likewise.
2325         (cp_parser_omp_clause_default): Likewise.
2326         (cp_parser_omp_clause_if): Likewise.
2327         (cp_parser_omp_clause_num_threads): Likewise.
2328         (cp_parser_omp_clause_reduction): Likewise.
2329         (cp_parser_omp_clause_schedule): Likewise.
2330         (cp_parser_omp_critical): Likewise.
2331         (cp_parser_omp_for_loop): Likewise.
2332         (cp_parser_omp_sections_scope): Likewise.
2333
2334         * parser.c (cp_parser_template_parameter_list): Simplify.
2335
2336 2008-04-07  James E. Wilson  <wilson@tuliptree.org>
2337
2338         * pt.c (tsubst_copy, case SIZEOF_EXPR): Initialize len.
2339
2340 2008-04-07  Jason Merrill  <jason@redhat.com>
2341
2342         PR c++/35734
2343         * class.c (type_has_user_nondefault_constructor): A template
2344         counts as a nondefault constructor.
2345
2346 2008-04-04  Paolo Bonzini  <bonzini@gnu.org>
2347
2348         * decl.c (cxx_push_function_context): Delete.
2349         (cxx_pop_function_context): Delete.
2350         (start_preparsed_function): Merge cxx_push_function_context (!f->decl
2351         code only).
2352         * cp-objcp-common.h (LANG_HOOKS_FUNCTION_INIT,
2353         LANG_HOOKS_FUNCTION_FINAL): Delete.
2354         (LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P): Rename to
2355         LANG_HOOKS_MISSING_NORETURN_OK_P.
2356         * cp-tree.h (cxx_push_function_context, cxx_pop_function_context):
2357         Delete prototype.
2358         * semantics.c (current_stmt_tree): Fix comment.
2359
2360 2008-04-03  Jakub Jelinek  <jakub@redhat.com>
2361
2362         PR c++/35741
2363         * semantics.c (finish_offsetof): Undo effect of convert_from_reference
2364         before calling fold_offsetof.
2365
2366 2008-04-03  Tom Tromey  <tromey@redhat.com>
2367
2368         * Make-lang.in (c++_OBJS): New variable.
2369
2370 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
2371
2372         * optimize.c (clone_body): New, from tree-inline.c.
2373
2374 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
2375
2376          * method.c (synthesize_method): Use {push,pop}_function_context.
2377          * name-lookup.c (push_to_top_level): Likewise.
2378          * parser.c (cp_parser_late_parsing_for_member): Likewise.
2379
2380 2008-03-30  Volker Reichelt  <v.reichelt@netcologne.de>
2381
2382         PR c++/35578
2383         * parser.c (cp_parser_decl_specifier_seq): Add location to error
2384         message.
2385
2386 2008-03-27  Tom Tromey  <tromey@redhat.com>
2387
2388         * Make-lang.in: Revert automatic dependency patch.
2389
2390 2008-03-27  Douglas Gregor  <doug.gregor@gmail.com>
2391
2392         PR obj-c++/35704
2393         * typeck.c (build_x_compound_expr): Use cp_build_compound_expr.
2394         (build_compound_expr): New, for compatibility with C
2395         build_compound_expr.
2396         (cp_build_compound_expr): Renamed from build_compound_expr.
2397         (build_c_cast): New, for compatibility with C build_c_cast.
2398         (cp_build_c_cast): Renamed from build_c_cast.
2399         * init.c (build_vec_delete_1): Fix calls to build_compound_expr.
2400         * decl.c (cxx_maybe_build_cleanup): Ditto.
2401         * cp-tree.h (build_compound_expr): Add C-compatibile prototype.
2402         (cp_build_compound_expr): Renamed from build_compound_expr.
2403         (build_c_cast): Add C-compatible prototype.
2404         (cp_build_c_cast): Renamed from build_c_cast.
2405         * typeck2.c (build_functional_cast): Use cp_build_c_cast.
2406         * parser.c (cp_parser_cast_expression): Fix call to build_c_cast.
2407
2408 2008-03-27  Douglas Gregor  <doug.gregor@gmail.com>
2409
2410         * pt.c (tsubst_copy) <case SIZEOF_EXPR>: Cope with
2411         tsubst_pack_expansion returning a pack expansion, or a TREE_VEC
2412         ending in a pack expansion, both of which can occur when
2413         substituting into a nested template.
2414         (tsubst_copy_and_build) <case SIZEOF_EXPR>: When we're
2415         instantiating the sizeof...(X) form, make tsubst_copy do the work.
2416         * parser.c (cp_parser_template_parameter): Deal with unnamed
2417         non-type template parameter packs identified by pack expansions in
2418         the parameter type.
2419
2420 2008-03-26  Jakub Jelinek  <jakub@redhat.com>
2421
2422         PR c++/35546
2423         * pt.c (apply_late_template_attributes): Don't call tsubst on
2424         first attribute argument if it is IDENTIFIER_NODE.
2425
2426         PR c++/35332
2427         * error.c (dump_expr): Pass {,UN}ORDERED_EXPR, UN{LT,LE,GT,GE,EQ}_EXPR
2428         and LTGT_EXPR to pp_expression.
2429
2430 2008-03-26  Douglas Gregor  <doug.gregor@gmail.com>
2431
2432         * pt.c (coerce_template_template_parm): Moved the body of the loop
2433         of coerce_template_template_parms here, to make iteration over a
2434         template argument pack simpler.
2435         Also, allow matching of a template parameter pack in the template
2436         template parameter to a template parameter in the template
2437         template argument.
2438         (coerce_template_template_parms): Deal with variadic template
2439         template parameters. Use coerce_template_template_parm.
2440         (unify): Make sure we coerce the template template argument's
2441         template arguments to the template template parameter's template
2442         parameters, not the other way around.
2443
2444 2008-03-25  Tom Tromey  <tromey@redhat.com>
2445
2446         * Make-lang.in: Remove .o targets.
2447         (cp/g++spec.o): Moved to cp/.  Reduce to variable setting.
2448         (GXX_OBJS): Update.
2449         (c++_OBJS): New variable.
2450         (CXX_TREE_H, CXX_PRETTY_PRINT_H): Remove.
2451
2452 2008-03-25  Douglas Gregor  <doug.gregor@gmail.com>
2453
2454         * typeck.c (composite_pointer_type_r): Add SFINAE support.
2455         (composite_pointer_type): Ditto.
2456         (common_type): Fix call to composite_pointer_type.
2457         (cxx_sizeof_nowarn): New; used to be a macro.
2458         (cxx_sizeof_expr): Add SFINAE support.
2459         (cxx_alignof_expr): Ditto.
2460         (decay_conversion): Fix calls for SFINAE support.
2461         (rationalize_conditional_expr): Add SFINAE support.
2462         (build_class_member_access_expr): Ditto.
2463         (finish_class_member_access_expr): Ditto.
2464         (build_x_indirect_ref): Ditto.
2465         (build_indirect_ref): Original version renamed to
2466         cp_build_indirect_ref; new version provides a bridge from
2467         c-common.
2468         (cp_build_indirect_ref): Was build_indirect_ref; added SFINAE
2469         support.
2470         (get_member_function_from_ptrfunc): Fix calls for SFINAE support.
2471         (build_function_call): Original version renamed to
2472         cp_build_function_call; new version provides a bridge from
2473         c-common.
2474         (cp_build_function_call): Was build_function_call; added SFINAE
2475         support.
2476         (convert_arguments): Add SFINAE support.
2477         (build_x_binary_op): Ditto.
2478         (build_binary_op): Original version renamed to cp_build_binary_op;
2479         new version provides a bridge from c-common.
2480         (cp_build_binary_op): Was build_binary_op; added SFINAE support.
2481         (pointer_diff): Fix calls for SFINAE.
2482         (build_x_unary_op): Add SFINAE support.
2483         (condition_conversion): Fix calls for SFINAE.
2484         (build_unary_op): Original version renamed to cp_build_unary_op;
2485         new version provides a bridge from c-common.
2486         (cp_build_unary_op): Was build_unary_op; added SFINAE support.
2487         (unary_complex_lvalue): Fix calls for SFINAE.
2488         (build_x_conditional_expr): Add SFINAE support.
2489         (build_x_compound_expr_from_list): Fix calls for SFINAE.
2490         (build_x_compound_expr): Add SFINAE support.
2491         (convert_ptrmem): Fix calls for SFINAE.
2492         (build_static_cast_1): Add SFINAE support.
2493         (build_static_cast): Ditto.
2494         (build_reinterpret_cast_1): Ditto.
2495         (build_reinterpret_cast): Ditto.
2496         (build_const_cast_1): Ditto.
2497         (build_const_cast): Ditto.
2498         (build_c_cast): Ditto.
2499         (build_modify_expr): Original version renamed to
2500         cp_build_modify_expr; new version provides a bridge from c-common.
2501         (cp_build_modify_expr): Was build_modify_expr; added SFINAE
2502         support.
2503         (build_x_modify_expr): Add SFINAE support.
2504         (build_ptrmemfunc): Fix calls for SFINAE.
2505         (convert_for_assignment): Add SFINAE support.
2506         (convert_for_initialization): Ditto.
2507         (check_return_expr): Fix calls for SFINAE.
2508         (lvalue_or_else): Add SFINAE support.
2509         * init.c (perform_member_init): Fix calls for SFINAE.
2510         (emit_mem_initializers): Ditto.
2511         (expand_virtual_init): Ditto.
2512         (expand_cleanup_for_base): Ditto.
2513         (build_aggr_init): Add SFINAE support.
2514         (expand_default_init): Ditto.
2515         (expand_aggr_init_1): Fix calls for SFINAE.
2516         (build_offset_ref): Ditto.
2517         (build_new_1): Add SFINAE support.
2518         (build_new): Ditto.
2519         (build_vec_delete_1): Fix calls for SFINAE.
2520         (get_temp_regvar): Ditto.
2521         (build_vec_init): Add SFINAE support.
2522         (build_dtor_call): Fix calls for SFINAE.
2523         (build_delete): Ditto.
2524         (push_base_cleanups): Ditto.
2525         (build_vec_delete_1): Ditto.
2526         * class.c (build_base_path): Fix calls for SFINAE.
2527         (build_simple_base_path): Ditto.
2528         (convert_to_base_statically): Ditto.
2529         (build_vfn_ref): Ditto.
2530         (resolve_address_of_overloaded_function): Ditto.
2531         * decl.c (check_initializer): Fix calls for SFINAE.
2532         (register_dtor_fn): Ditto.
2533         (compute_array_index_type): Ditto.
2534         (finish_enum): Ditto.
2535         (start_preparsed_function): Ditto.
2536         (cxx_maybe_build_cleanup): Ditto.
2537         * call.c (convert_like): Add COMPLAIN argument.
2538         (convert_like_with_context): Ditto.
2539         (build_this): Fix calls for SFINAE.
2540         (build_user_type_conversion): Ditto.
2541         (resolve_args): Ditto.
2542         (build_new_function_call): Add SFINAE support.
2543         (build_operator_new_call): Fix calls for SFINAE.
2544         (build_object_call): Add SFINAE support.
2545         (build_conditional_expr): Ditto.
2546         (build_new_op): Ditto.
2547         (build_op_delete_call): Fix calls for SFINAE.
2548         (build_temp): Ditto.
2549         (convert_like_real): Add SFINAE support.
2550         (build_x_va_arg): Fix calls for SFINAE.
2551         (convert_default_arg): Ditto.
2552         (build_over_call): Add SFINAE support.
2553         (build_java_interface_fn_ref): Fix calls for SFINAE.
2554         (build_special_member_call): Add SFINAE support.
2555         (build_new_method_call): Ditto.
2556         (perform_implicit_conversion): Ditto.
2557         (perform_direct_initialization_if_possible): Ditto.
2558         (initialize_reference): Fix calls for SFINAE.
2559         * method.c (do_build_assign_ref): Fix calls for SFINAE.
2560         * rtti.c (build_headof): Fix calls for SFINAE.
2561         (get_tinfo_decl_dynamic): Ditto.
2562         (get_typeid): Ditto.
2563         (build_dynamic_cast_1): Add SFINAE support.
2564         (build_dynamic_cast): Ditto.
2565         (tinfo_base_init): Fix calls for SFINAE.
2566         * except.c (do_get_exception_ptr): Fix calls for SFINAE.
2567         (do_end_catch): Ditto.
2568         (initialize_handler_parm): Ditto.
2569         (expand_start_catch_block): Ditto.
2570         (do_allocate_exception): Ditto.
2571         (do_free_exception): Ditto.
2572         (build_throw): Ditto.
2573         * cvt.c (build_up_reference): Fix calls for SFINAE.
2574         (convert_to_reference): Ditto.
2575         (ocp_convert): Ditto.
2576         (convert_to_void): Add SFINAE support.
2577         * tree.c (build_dummy_object): Fix calls for SFINAE.
2578         (stabilize_expr): Ditto.
2579         * cp-tree.h (build_conditional_expr): Add tsubst_flags_t
2580         parameter.
2581         (build_new_method_call): Ditto.
2582         (build_special_member_call): Ditto.
2583         (build_new_op): Ditto.
2584         (perform_implicit_conversion): Ditto.
2585         (perform_direct_initialization_if_possible): Ditto.
2586         (convert_to_void): Ditto.
2587         (build_aggr_init): Ditto.
2588         (build_new): Ditto.
2589         (build_vec_init): Ditto.
2590         (build_dynamic_cast): Ditto.
2591         (finish_call_expr): Ditto
2592         (cxx_sizeof_or_alignof_expr): Add COMPLAIN parameter.
2593         (cxx_sizeof_nowarn): Remove macro; add function declaration.
2594         (build_class_member_access_expr): Add tsubst_flags_t parameter.
2595         (finish_class_member_access_expr): Ditto.
2596         (build_x_indirect_ref): Ditto.
2597         (cp_build_indirect_ref): New.
2598         (cp_build_function_call): Add tsubst_flags_t parameter.
2599         (build_x_unary_op): Ditto.
2600         (cp_build_unary_op): New.
2601         (build_x_conditional_expr): Add tsubst_flags_t parameter.
2602         (build_x_compound_expr): Ditto.
2603         (build_compound_expr): Ditto.
2604         (build_static_cast): Ditto.
2605         (build_reinterpret_cast): Ditto.
2606         (build_const_cast): Ditto.
2607         (build_c_cast): Ditto.
2608         (build_x_modify_expr): Ditto.
2609         (cp_build_modify_expr): New.
2610         (convert_for_initialization): Add tsubst_flags_t parameter.
2611         (cp_build_binary_op): Remove macro; add function declaration.
2612         (invalid_nonstatic_memfn_p): Add tsubst_flags_t parameter.
2613         (lvalue_or_else): Ditto.
2614         (build_functional_cast): Ditto.
2615         * typeck2.c (digest_init): Fix calls for SFINAE.
2616         (process_init_constructor_array): Ditto.
2617         (process_init_constructor_record): Ditto.
2618         (build_x_arrow): Ditto.
2619         (build_m_component_ref): Ditto.
2620         (build_functional_cast): Add SFINAE support.
2621         * pt.c (tsubst_copy_and_build): Add (more) SFINAE support.
2622         * semantics.c (simplify_loop_decl_cond): Fix calls for SFINAE.
2623         (finish_expr_stmt): Ditto.
2624         (finish_for_expr): Ditto.
2625         (finish_asm_stmt): Ditto.
2626         (finish_non_static_data_member): Ditto.
2627         (finish_qualified_id_expr): Ditto.
2628         (finish_call_expr): Add SFINAE support.
2629         (finish_increment_expr): Fix calls for SFINAE.
2630         (finish_unary_op_expr): Ditto.
2631         (simplify_aggr_init_expr): Ditto.
2632         (finish_omp_clauses): Ditto.
2633         (finish_omp_for): Ditto.
2634         (finish_omp_barrier): Ditto.
2635         (finish_omo_flush): Ditto.
2636         * decl2.c (grok_array_decl): Fix calls or SFINAE.
2637         (build_anon_union_vars): Ditto.
2638         (get_guard_cond): Ditto.
2639         (set_guard): Ditto.
2640         (one_static_initialization_or_destruction): Ditto.
2641         (do_static_initialization_or_destruction): Ditto.
2642         (generate_ctor_or_dtor_function): Ditto.
2643         (build_offset_ref_call_from_tree): Ditto.
2644         * parser.c (cp_parser_postfix_expression): Fix calls for SFINAE.
2645         (cp_parser_postfix_dot_deref_expression): Ditto.
2646         (cp_parser_unary_expression): Ditto.
2647         (cp_parser_new_expression): Ditto.
2648         (cp_parser_cast_expression): Ditto.
2649         (cp_parser_binary_expression): Ditto.
2650         (cp_parser_question_colon_clause): Ditto.
2651         (cp_parser_assignment_expression): Ditto.
2652         (cp_parser_expression): Ditto.
2653         (cp_parser_builtin_offsetof): Ditto.
2654         (cp_parser_template_argument): Ditto.
2655         (cp_parser_functional_cast): Ditto.
2656
2657 2008-03-24  Tom Tromey  <tromey@redhat.com>
2658
2659         * lex.c (handle_pragma_interface): Don't copy the filename.
2660         (handle_pragma_implementation): Copy filename using xstrdup.
2661
2662 2008-03-21  Paolo Carlini  <pcarlini@suse.de>
2663
2664         * cp-tree.h (IS_AGGR_TYPE): Rename to MAYBE_CLASS_TYPE_P.
2665         (SET_IS_AGGR_TYPE): Rename to SET_CLASS_TYPE_P.
2666         (IS_AGGR_TYPE_CODE): Rename to RECORD_OR_UNION_CODE_P.
2667         (PROMOTES_TO_AGGR_TYPE): Remove.
2668         (CLASS_TYPE_P, TYPE_NON_AGGREGATE_CLASS): Adjust.
2669         * typeck.c (unary_complex_lvalue, build_modify_expr,
2670         convert_for_initialization): Adjust.
2671         * init.c (is_aggr_type): Remove.
2672         (is_class_type): Add.
2673         (build_offset_ref, build_new_1, build_vec_delete_1, build_vec_init,
2674         build_delete): Adjust.
2675         * lex.c (make_aggr_type): Remove.
2676         (make_class_type): Add.
2677         (cxx_make_type): Adjust.
2678         * class.c (finish_struct_1, fixed_type_or_null, is_empty_class):
2679         Adjust.
2680         * decl.c (build_typename_type, make_typename_type,
2681         make_unbound_class_template, cxx_init_decl_processing,
2682         check_tag_decl, groktypename, start_decl_1, layout_var_decl,
2683         check_initializer, cp_finish_decl, build_ptrmemfunc_type, grokparms,
2684         grok_op_properties, xref_tag, check_function_type): Adjust.
2685         * call.c (check_dtor_name, standard_conversion, implicit_conversion,
2686         add_builtin_candidate, add_builtin_candidates,
2687         build_user_type_conversion_1, convert_like_real, build_cxx_call,
2688         is_subseq, compare_ics): Adjust.
2689         * method.c (use_thunk): Adjust.
2690         * rtti.c (build_dynamic_cast_1, create_pseudo_type_info,
2691         create_tinfo_types): Adjust.
2692         * cvt.c (cp_convert_to_pointer, convert_to_pointer_force,
2693         build_up_reference, convert_to_reference, convert_from_reference,
2694         ocp_convert, build_expr_type_conversion): Adjust.
2695         * tree.c (bind_template_template_parm, error_type): Adjust.
2696         * dump.c (cp_dump_tree): Adjust.
2697         * search.c (lookup_member): Adjust.
2698         * friend.c (make_friend_class, do_friend): Adjust.
2699         * typeck2.c (store_init_value, process_init_constructor_array,
2700         process_init_constructor_record, build_x_arrow, build_m_component_ref,
2701         build_functional_cast): Adjust.
2702         * pt.c (finish_member_template_decl, process_template_parm,
2703         lookup_template_class, tsubst_function_type, tsubst,
2704         tsubst_copy_and_build, get_template_base, bt_instantiate_type_proc):
2705         Adjust.
2706         * semantics.c (begin_class_definition, finish_base_specifier,
2707         finish_typeof, cxx_omp_predetermined_sharing, finish_decltype_type):
2708         Adjust.
2709         * name-lookup.c (constructor_name_p, push_overloaded_decl,
2710         do_class_using_decl, lookup_qualified_name,
2711         maybe_process_template_type_declaration): Adjust.
2712         * decl2.c (grok_array_decl, check_member_template,
2713         constrain_class_visibility): Adjust.
2714         * parser.c (cp_parser_class_name): Adjust.
2715
2716 2008-03-18  Paolo Bonzini  <bonzini@gnu.org>
2717
2718          * cp-lang.c (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS): Delete.
2719
2720 2008-03-17  Jason Merrill  <jason@redhat.com>
2721
2722         PR c++/35548
2723         * call.c (reference_binding): Check LOOKUP_NO_TEMP_BIND when binding
2724         a temp directly to a reference as per DR391.
2725
2726 2008-03-12  Richard Guenther  <rguenther@suse.de>
2727
2728         PR c++/35469
2729         Revert:
2730         2008-02-04  Richard Guenther  <rguenther@suse.de>
2731
2732          PR java/35035
2733          * decl.c (record_builtin_java_type): Make jboolean a
2734          integer type again where its mode doesn't match that of bool.
2735
2736         2008-01-25  Richard Guenther  <rguenther@suse.de>
2737
2738          PR c++/33887
2739          * decl.c (record_builtin_java_type): Make __java_boolean
2740          a variant of bool.
2741          * typeck.c (structural_comptypes): Move TYPE_FOR_JAVA check
2742          after TYPE_MAIN_VARIANT check.
2743
2744 2008-03-10  Jakub Jelinek  <jakub@redhat.com>
2745
2746         PR c++/35328
2747         * semantics.c (finish_omp_clauses): Look through NOP_EXPR even
2748         if errorcount.
2749
2750         PR c++/35337
2751         * semantics.c (finish_omp_clauses): Use %qD instead of %qE for
2752         DECL_P in not a variable and appears more than once error messages.
2753
2754 2008-03-07  Paolo Bonzini  <bonzini@gnu.org>
2755
2756         Revert:
2757
2758         2008-02-06  Douglas Gregor  <doug.gregor@gmail.com>
2759
2760         PR c++/35049
2761         PR c++/35096
2762         * typeck.c (structural_comptypes): Call cp_comptypes.
2763         (comptypes): New; called from the C/C++ common bits to perform
2764         strict checks.
2765         (cp_comptypes): Renamed from comptypes, which is already used,
2766         with a different signature, by the C++ front end.
2767         (build_reinterpret_cast_1): Call cp_comptypes.
2768         (ptr_reasonably_similar): Ditto.
2769         * decl.c (decls_match): Ditto.
2770         * cvt.c (convert_to_reference): Ditto.
2771         * cp-tree.h (same_type_p): Ditto.
2772         (same_or_base_type_p): Ditto.
2773         (comptypes): Rename to cp_comptypes.
2774         * pt.c (canonical_type_parameter): Call cp_comptypes.
2775
2776 2008-03-07  Paolo Bonzini  <bonzini@gnu.org>
2777
2778         * cp-objcp-common.c (cxx_types_compatible_p): Remove obsolete
2779         test for equivalence between pointer and references.
2780
2781 2008-03-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2782
2783         PR 24924
2784         * class.c (finish_struct_anon): Use permerror instead of pedwarn.
2785         (check_field_decls): Likewise.
2786         (note_name_declared_in_class): Likewise.
2787         * call.c (build_new_op): Likewise.
2788         (convert_like_real): Likewise.
2789         (build_over_call): Likewise.
2790         * lex.c (unqualified_fn_lookup_error): Likewise.
2791         * parser.c (cp_parser_template_id): Likewise.
2792         * cvt.c (warn_ref_binding): Likewise.
2793         (convert_to_reference): Likewise.
2794         (ocp_convert): Likewise.
2795         (convert_to_void): Use error instead of pedwarn.
2796         * error.c (cp_cpp_error): Use pedantic_warning_kind.
2797         * decl.c (compute_array_index_type): Use constant_expression_error.
2798
2799 2008-03-01  Douglas Gregor  <doug.gregor@gmail.com>
2800
2801         * parser.c (cp_lexer_next_token_is_decl_specifier_keyword): Note
2802         that auto is either a storage class or a simple type specifier,
2803         depending on the dialect.
2804         (cp_parser_decl_specifier_seq): Complain about `auto' as a storage
2805         specifier in C++98 mode, error in C++0x mode (since we don't
2806         support auto as a type specifier, yet).
2807         (cp_parser_storage_class_specifier_opt): Don't treat `auto' as a
2808         storage specifier in C++0x mode.
2809         (cp_parser_simple_type_specifier): Parse `auto' as a
2810         simple-type-specifier, but error because we don't support it yet.
2811
2812 2008-02-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2813
2814         * parser.c (cp_parser_nonclass_name): New.
2815         (cp_parser_pseudo_destructor_name): Use it instead of
2816         cp_parser_type_name.
2817         (cp_parser_type_name): Move code to cp_parser_nonclass_name.
2818
2819 2008-02-29  Tom Tromey  <tromey@redhat.com>
2820
2821         * parser.c (struct cp_token) <input_file_stack_index>: Remove.
2822         (cp_lexer_get_preprocessor_token): Update.
2823         (cp_lexer_set_source_position_from_token): Don't call
2824         restore_input_file_stack.
2825         * lex.c (cxx_init): Don't use push_srcloc or pop_srcloc.
2826
2827 2008-02-28  Richard Guenther  <rguenther@suse.de>
2828
2829         Revert:
2830         2008-02-26  Richard Guenther  <rguenther@suse.de>
2831
2832         * decl.c (duplicate_decls): Remove decl from global mapping
2833         before ggc_freeing it.
2834
2835 2008-02-27  Jakub Jelinek  <jakub@redhat.com>
2836
2837         PR c++/35368
2838         * rtti.c: Include c-pragma.h.
2839         (push_abi_namespace, pop_abi_namespace): New functions.
2840         (build_dynamic_cast_1, tinfo_base_init, get_pseudo_ti_index,
2841         create_tinfo_types, emit_support_tinfos): Use them.
2842         * Make-lang.in (cp/rtti.o): Depend on $(C_PRAGMA_H).
2843
2844 2008-02-26  Jason Merrill  <jason@redhat.com>
2845
2846         PR c++/35315
2847         * decl.c (grokdeclarator): Allow a typedef of an unnamed struct
2848         to name the struct for linkage purposes even if it has attributes.
2849         (start_decl): In that case, set ATTR_FLAG_TYPE_IN_PLACE.
2850
2851 2008-02-26  Tom Tromey  <tromey@redhat.com>
2852
2853         * parser.c (eof_token): Remove old location code.
2854         (check_empty_body): Remove test of USE_MAPPED_LOCATION.
2855         * decl2.c (generate_ctor_or_dtor_function): Remove old location
2856         code.
2857         (cp_write_global_declarations): Likewise.
2858         * lex.c (cxx_init): Remove old location code.
2859         (handle_pragma_implementation): Remove test of
2860         USE_MAPPED_LOCATION.
2861         * pt.c (tsubst): Remove old location code.
2862         * error.c (cp_print_error_function): Remove test of
2863         USE_MAPPED_LOCATION.
2864         * decl.c (pop_label): Remove old location code.
2865         (finish_function): Likewise.
2866
2867 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2868
2869         PR 26264
2870         * call.c (magic_varargs_p):  Remove BUILT_IN_STDARG_START.
2871
2872 2008-02-26  Richard Guenther  <rguenther@suse.de>
2873
2874         * decl.c (duplicate_decls): Remove decl from global mapping
2875         before ggc_freeing it.
2876
2877 2008-02-26  Paolo Carlini  <pcarlini@suse.de>
2878
2879          PR c++/35323
2880          * name-lookup.c (arg_assoc_type): Handle FIXED_POINT_TYPE.
2881
2882 2008-02-26  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
2883
2884         * typeck.c (build_class_member_access_expr): Add appropriate
2885         OPT_W* parameter to warning.
2886         (build_reinterpret_cast_1): Likewise.
2887         * name-lookup.c (push_overloaded_decl): Likewise.
2888
2889 2008-02-25  Paolo Carlini  <pcarlini@suse.de>
2890
2891          PR c++/35333
2892          * error.c (dump_expr): Handle CONJ_EXPR.
2893
2894 2008-02-25  Paolo Carlini  <pcarlini@suse.de>
2895
2896          PR c++/35338
2897          * error.c (dump_type): Handle FIXED_POINT_TYPE.
2898         (dump_expr): Handle FIXED_CST.
2899
2900 2008-02-24  Jason Merrill  <jason@redhat.com>
2901
2902         * parser.c (cp_parser_declaration): Handle "inline namespace".
2903         (cp_parser_namespace_definition): Likewise.
2904
2905         PR c++/33486
2906         * name-lookup.c (arg_assoc_namespace): Look down into inline
2907         namespaces, too.
2908
2909 2008-02-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2910
2911         * typeck.c (check_for_casting_away_constness): Use 1 single
2912         argument, the type of cast, to decide what diagnostics generate.
2913         (build_static_cast_1): Remove unused code. Update call to
2914         check_for_casting_away_constness.
2915         (build_reinterpret_cast_1): Update call to
2916         check_for_casting_away_constness.
2917         (build_const_cast_1): Likewise.
2918
2919 2008-02-24  Paolo Carlini  <pcarlini@suse.de>
2920
2921         * error.c (dump_expr): Don't deal directly with NEW_EXPR (and
2922         VEC_NEW_EXPR), forward to pp_expression.
2923         * cxx-pretty-print.c (pp_cxx_new_expression): Fix FIXME.
2924
2925 2008-02-24  Danny Smith  <dannysmith@users.sourceforge.net>
2926
2927         PR c++/34749
2928         * friend.c (do_friend): Call cplus_decl_attributes earlier.
2929
2930 2008-02-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2931
2932         PR C++/34715
2933         * decl.c (duplicate_decls): Merge DECL_DISREGARD_INLINE_LIMITS for
2934         template decls' function decl.
2935
2936 2008-02-22  Paolo Carlini  <pcarlini@suse.de>
2937
2938         PR c++/35282
2939         Revert:
2940         2008-02-14  Paolo Carlini  <pcarlini@suse.de>
2941
2942          PR c++/28743
2943          * pt.c (determine_specialization): In case of function templates,
2944         when the type of DECL does not match FN there is no match.
2945
2946 2008-02-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2947
2948         PR c/19999
2949         * typeck.c (build_binary_op): Warn about floating point
2950         comparisons if FLOAT_TYPE_P, not only for REAL_TYPE.
2951
2952 2008-02-19  Jason Merrill  <jason@redhat.com>
2953
2954         PR c++/34950
2955         * pt.c (resolve_overloaded_unification): Set processing_template_decl
2956         while we look for possible bindings.
2957
2958 2008-02-19  Jakub Jelinek  <jakub@redhat.com>
2959
2960         PR c++/35028
2961         * cp-gimplify.c (cxx_omp_clause_apply_fn): Handle vararg copy ctors.
2962
2963         PR c++/34964
2964         PR c++/35244
2965         * semantics.c (finish_omp_threadprivate): Do nothing for error_operand_p
2966         vars.  Afterwards ensure v is VAR_DECL.
2967
2968         PR c++/35078
2969         * parser.c (cp_parser_omp_for_loop): If DECL has REFERENCE_TYPE, don't
2970         call cp_finish_decl.
2971         * semantics.c (finish_omp_for): Fail if DECL doesn't have integral type
2972         early.
2973
2974 2008-02-15  Douglas Gregor  <doug.gregor@gmail.com>
2975
2976         PR c++/35023
2977         PR c++/35024
2978         PR c++/35026
2979         * pt.c (finish_member_template_decl): If the type in a TYPE_DECL
2980         is error_mark_node, return an error early.
2981         (find_parameter_packs_r): Pass the pointer set along to recursive
2982         calls of cp_walk_subtrees; don't try to manage the pointer set
2983         ourselves.
2984         (uses_parameter_packs): Pass the pointer set to cp_walk_tree.
2985         (make_pack_expansion): Ditto.
2986         (check_for_bare_parameter_packs): Ditto. Also, don't bother taking
2987         a second pass through the tree with find_parameter_packs_r; that
2988         second pass no longer does anything.
2989         (push_template_decl_real): If we have an erroneous declaration,
2990         set its type to error_mark_node before returning an error.
2991
2992 2008-02-14  Douglas Gregor  <doug.gregor@gmail.com>
2993
2994         PR c++/34050
2995         * pt.c (tsubst_initializer_list): Deal with the use of
2996         VOID_TYPE_NODE to indicate value-initialization of the bases.
2997
2998 2008-02-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2999             Jason Merrill  <jason@redhat.com>
3000
3001         PR c++/5645
3002         PR c++/11159
3003         * class.c (type_has_user_nondefault_constructor): New fn.
3004         * cp-tree.h: Declare it.
3005         * init.c (emit_mem_initializers): Use it for -W warning about
3006         missing base initializer.
3007
3008 2008-02-14  Paolo Carlini  <pcarlini@suse.de>
3009
3010          PR c++/28743
3011          * pt.c (determine_specialization): In case of function templates,
3012         when the type of DECL does not match FN there is no match.
3013
3014 2008-02-13  Jakub Jelinek  <jakub@redhat.com>
3015             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3016
3017         PR c++/35138
3018         * parser.c (cp_parser_pseudo_destructor_name): If next tokens
3019         are not identifier :: ~, return before calling cp_parser_type_name.
3020
3021 2008-02-13  Jason Merrill  <jason@redhat.com>
3022
3023         PR c++/34962, c++/34937, c++/34939
3024         * decl2.c (is_late_template_attribute): Always defer attributes
3025         vector_size and weak.
3026
3027         PR c++/34774
3028         * pt.c (value_dependent_expression_p): Look into DECL_INITIAL
3029         of enumerators, too.
3030
3031 2008-02-12  Jason Merrill  <jason@redhat.com>
3032
3033         PR c++/34824
3034         * call.c (convert_like_real): Pass LOOKUP_NO_CONVERSION to build_temp
3035         if we're doing conversions to call a user-defined conversion function.
3036
3037 2008-02-12  Steven Bosscher  <steven@gcc.gnu.org>
3038
3039         PR c++/29048
3040         * semantics.c (finish_qualified_id_expr): Avoid duplicate access
3041         check here, too.
3042
3043 2008-02-12  Jakub Jelinek  <jakub@redhat.com>
3044
3045         PR c++/34862
3046         * init.c (build_new_1): Don't create placement_expr before
3047         constructing alloc_call.  Verify that the pointer is passed by
3048         value to operator new.
3049
3050 2008-02-11  Jason Merrill  <jason@redhat.com>
3051
3052         PR c++/35097
3053         * pt.c (tsubst): Don't look up a template typedef in an explicit
3054         specialization.
3055
3056 2008-02-11  Douglas Gregor  <doug.gregor@gmail.com>
3057
3058         PR c++/35113
3059         * tree.c (cp_build_qualified_type_real): When building a
3060         cv-qualified array type, build it as a unique type with
3061         build_cplus_array_type_1 and then adopt the unqualified type's
3062         main variant.
3063
3064 2008-02-11  Paolo Carlini  <pcarlini@suse.de>
3065
3066         PR c++/35077
3067         * decl.c (groktypename): Check grokdeclarator return.
3068
3069 2008-02-10  Jason Merrill  <jason@redhat.com>
3070
3071         PR c++/34094
3072         * decl2.c (cp_write_global_declarations): Don't write out static
3073         data members with DECL_IN_AGGR_P set.
3074
3075 2008-02-08  Jason Merrill  <jason@redhat.com>
3076
3077         PR c++/35116
3078         * tree.c (build_target_expr_with_type): Handle void initializer.
3079         (bot_manip): Remap slot before recursing.
3080
3081 2008-02-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3082
3083         PR other/35107
3084         * Make-lang.in (cc1plus-dummy, cc1plus): Add $(GMPLIBS).
3085
3086 2008-02-06  Alexandre Oliva  <aoliva@redhat.com>
3087
3088         PR c++/35056
3089         * tree.c: Include tree-flow.h.
3090         (build_target_expr): Check type compatibility.
3091         * Make-lang.in (cp/tree.o): Depend on $(TREE_FLOW_H).
3092         * call.c (convert_like_real): Convert bitfield to expected type.
3093
3094 2008-02-06  Douglas Gregor  <doug.gregor@gmail.com>
3095
3096         PR c++/35049
3097         PR c++/35096
3098         * typeck.c (structural_comptypes): Call cp_comptypes.
3099         (comptypes): New; called from the C/C++ common bits to perform
3100         strict checks.
3101         (cp_comptypes): Renamed from comptypes, which is already used,
3102         with a different signature, by the C++ front end.
3103         (build_reinterpret_cast_1): Call cp_comptypes.
3104         (ptr_reasonably_similar): Ditto.
3105         * decl.c (decls_match): Ditto.
3106         * cvt.c (convert_to_reference): Ditto.
3107         * cp-tree.h (same_type_p): Ditto.
3108         (same_or_base_type_p): Ditto.
3109         (comptypes): Rename to cp_comptypes.
3110         * pt.c (canonical_type_parameter): Call cp_comptypes.
3111
3112 2008-02-05  Jakub Jelinek  <jakub@redhat.com>
3113
3114         PR c++/33553
3115         * pt.c (tsubst) <case INTEGER_TYPE>: Don't issue error if max is
3116         value dependent expression.
3117
3118 2008-02-05  Douglas Gregor  <doug.gregor@gmail.com>
3119
3120         PR c++/35074
3121         * decl2.c (save_template_attributes): When we're modifying the
3122         TYPE_MAIN_VARIANT to add new attributes, be sure to also modify
3123         all of the other variants to add those same attributes. Otherwise,
3124         the main variant will be inconsistent with those other variants.
3125
3126 2008-02-04  Richard Guenther  <rguenther@suse.de>
3127
3128         PR java/35035
3129         * decl.c (record_builtin_java_type): Make jboolean a
3130         integer type again where its mode doesn't match that of bool.
3131
3132 2008-02-02  Jason Merrill  <jason@redhat.com>
3133             Mark Mitchell  <mark@codesourcery.com>
3134
3135         PR c++/33916
3136         * init.c (build_value_init_1): New function.
3137         (build_value_init): New function.
3138         * typeck2.c (build_functional_cast): Call it.
3139         * cp-gimplify.c (cp_gimplify_init_expr): Handle its output.
3140
3141         * cp-tree.h (TYPE_HAS_USER_CONSTRUCTOR): Rename from
3142         TYPE_HAS_CONSTRUCTOR.
3143         * class.c (finish_struct_bits, maybe_warn_about_overly_private_class,
3144         add_implicitly_declared_members): Adjust.
3145         (check_field_decls): Adjust. Remove warnings about reference/const
3146         in class without constructor.
3147         (check_bases_and_members): Adjust.  Give those warnings here instead.
3148         * decl.c (fixup_anonymous_aggr): Adjust.
3149         (check_initializer): Adjust, clarify logic slightly.
3150         (grok_special_member_properties): Adjust, only set if user-provided.
3151         * rtti.c (create_tinfo_types): Don't set.
3152         * cvt.c (ocp_convert): Remove exception for vtable_entry_type et al.
3153         Use same_type_ignoring_top_level_qualifiers_p.
3154         * pt.c (check_explicit_specialization): Adjust.
3155         (instantiate_class_template): Adjust.
3156
3157 2008-01-31  Douglas Gregor  <doug.gregor@gmail.com>
3158             Jakub Jelinek  <jakub@redhat.com>
3159
3160         PR c++/34935
3161         PR c++/34936
3162         * typeck.c (structural_comptypes): Handle comparisons of
3163         VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, FIXED_POINT_TYPE, and
3164         REAL_TYPE nodes.
3165         * mangle.c (write_builtin_type): Map down to the canonical type,
3166         which will be one of the predefined type nodes.
3167
3168 2008-01-29  Michael Meissner  <michael.meissner@amd.com>
3169
3170         PR 35004
3171         * cp-tree.h (struct full_lang_decl): Make tree_code bitfield 16
3172         bits to allow for expansion of the number of middle end tree
3173         codes.
3174
3175 2008-01-29  Douglas Gregor  <doug.gregor@gmail.com>
3176
3177         PR c++/34055
3178         PR c++/34103
3179         PR c++/34219
3180         PR c++/34606
3181         PR c++/34753
3182         PR c++/34754
3183         PR c++/34755
3184         PR c++/34919
3185         PR c++/34961
3186         * typeck.c (check_return_expr): Tweak call to
3187         check_for_bare_parameter_packs.
3188         * class.c (add_method): Be careful with error_mark_nodes.
3189         * cp-tree.h (check_for_bare_parameter_packs): Remove "*" from
3190         signature.
3191         * pt.c (struct find_parameter_pack_data): Remove
3192         SET_PACKS_TO_ERROR.
3193         (find_parameter_packs_r): Don't use SET_PACKS_TO_ERROR.
3194         (uses_parameter_packs): Don't set SET_PACKS_TO_ERROR.
3195         (make_pack_expansion): Ditto.
3196         (check_for_bare_parameter_packs): Parameter is now a tree, not a
3197         tree*.
3198         (process_template_parm): Tweak call to
3199         check_for_bare_parameter_packs.
3200         (push_template_decl_real): Tweak calls to
3201         check_for_bare_parameter_packs. If bare parameter packs are found
3202         in the list of exceptions, clear out that list after giving an
3203         error.
3204         * semantics.c (finish_cond): Tweak call to
3205         check_for_bare_parameter_packs.
3206         (finish_expr_stmt): Ditto.
3207         (finish_for_expr): Ditto.
3208         (finish_switch_cond): Ditto.
3209         (finish_mem_initializers): Ditto.
3210         (finish_member_declaration): Ditto.
3211         (finish_static_assert): Check for bare parameter packs in the
3212         condition.
3213         * decl2.c (cplus_decl_attributes): Check for bare parameter packs in the
3214         attributes of a declaration.
3215         * parser.c (cp_parser_using_declaration): Tweak call to
3216         check_for_bare_parameter_packs.
3217         (cp_parser_base_clause): Ditto.
3218
3219 2008-01-28  Jason Merrill  <jason@redhat.com>
3220
3221         PR c++/35007
3222         * class.c (build_base_path): Fix !want_pointer case.
3223
3224 2008-01-27  Jason Merrill  <jason@redhat.com>
3225
3226         PR c++/27177
3227         * class.c (build_base_path): Fix previous change.
3228
3229 2008-01-26  Jakub Jelinek  <jakub@redhat.com>
3230
3231         PR c++/34965
3232         * error.c (dump_expr): Handle TRUTH_AND_EXPR, TRUTH_OR_EXPR
3233         and TRUTH_XOR_EXPR.
3234
3235 2008-01-26  Richard Guenther  <rguenther@suse.de>
3236
3237         PR c++/34235
3238         * typeck.c (build_binary_op): Remove code to shorten compares.
3239
3240 2008-01-25  Richard Guenther  <rguenther@suse.de>
3241
3242         PR c++/33887
3243         * decl.c (record_builtin_java_type): Make __java_boolean
3244         a variant of bool.
3245         * typeck.c (structural_comptypes): Move TYPE_FOR_JAVA check
3246         after TYPE_MAIN_VARIANT check.
3247
3248 2008-01-25  Jason Merrill  <jason@redhat.com>
3249
3250         PR c++/27177
3251         * class.c (build_base_path): Don't mess with virtual access if
3252         skip_evaluation.
3253         * call.c (standard_conversion): Don't check whether source type
3254         is complete.
3255
3256         * decl2.c (is_late_template_attribute): Don't defer attribute
3257         visibility just because the type is dependent.
3258
3259 2008-01-25  Jason Merrill  <jason@redhat.com>
3260             Mark Mitchell  <mark@codesourcery.com>
3261
3262         PR c++/31780
3263         * call.c (standard_conversion): Allow conversion from integer/real
3264         to complex.
3265         (compare_ics): Such a conversion is worse than a normal arithmetic
3266         conversion.
3267
3268 2008-01-25  Richard Guenther  <rguenther@suse.de>
3269
3270         PR c++/33887
3271         * cp-lang.c (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS): Define
3272         to true.
3273
3274 2008-01-24  Paolo Carlini  <pcarlini@suse.de>
3275
3276          PR c++/34603
3277          * pt.c (push_template_decl_real): Return error_mark_node in case
3278         of template definition of non-template.
3279
3280 2008-01-24  Jason Merrill  <jason@redhat.com>
3281
3282         PR c++/34913
3283         * decl2.c (is_late_template_attribute): Defer any attribute with
3284         dependent args.  Also defer type attributes if the type is dependent.
3285
3286 2008-01-22  Jakub Jelinek  <jakub@redhat.com>
3287             Alexandre Oliva  <aoliva@redhat.com>
3288
3289         PR c++/33984
3290         * call.c (reference_binding): For bitfields use the declared bitfield
3291         type.
3292         (add_builtin_candidates): Likewise.
3293         * class.c (layout_class_type): For bitfields copy over the
3294         original type quals.
3295
3296 2008-01-22  Jason Merrill  <jason@redhat.com>
3297
3298         PR c++/28560
3299         * decl.c (groktypename): Also ignore attributes on dependent
3300         possibly-class types.
3301
3302         PR c++/34912
3303         * friend.c (do_friend): Check for prior declaration of a friend
3304         function of a local class.
3305         * name-lookup.c (lookup_name_innermost_nonclass_level):
3306         No longer static.
3307         * name-lookup.h: Declare it.
3308
3309 2008-01-22  Tom Tromey  <tromey@redhat.com>
3310
3311         PR c++/34829:
3312         * init.c (build_new_1): Only disallow Java aggregates.
3313
3314 2008-01-22  Jakub Jelinek  <jakub@redhat.com>
3315
3316         PR c++/34607
3317         * semantics.c (finish_omp_for): Don't call c_finish_omp_for
3318         if decl or init is error_mark_node.
3319
3320         PR c++/34918
3321         * error.c (dump_expr): Handle VECTOR_CST.
3322
3323 2008-01-21  Jason Merrill  <jason@redhat.com>
3324
3325         PR c++/33959
3326         * pt.c (tsubst_aggr_type): Make sure our context is complete.
3327
3328         PR c++/34573
3329         * pt.c (retrieve_local_specialization): Robustify.
3330         (tsubst_pack_expansion, tsubst_decl): Remove redundant checks.
3331
3332         PR c++/34846
3333         * pt.c (tsubst): Only call retrieve_local_specialization if the
3334         original typedef was in a function template.
3335
3336         PR c++/34196
3337         * decl.c (wrap_cleanups_r): Set TRY_CATCH_IS_CLEANUP.
3338
3339 2008-01-21  Richard Guenther  <rguenther@suse.de>
3340
3341         PR c++/34850
3342         * error.c (cp_print_error_function): Deal with recursive
3343         BLOCK trees.
3344
3345 2008-01-20  Paolo Carlini  <pcarlini@suse.de>
3346
3347          PR c++/34891
3348          * error.c (dump_expr): Deal with VIEW_CONVERT_EXPR.
3349
3350 2008-01-20  Paolo Carlini  <pcarlini@suse.de>
3351
3352          PR c++/34776
3353         PR c++/34486
3354          * name-lookup.c (do_class_using_decl): Do not call constructor_name_p
3355         on non-IS_AGGR_TYPE scope.
3356         (constructor_name_p): Assert IS_AGGR_TYPE.
3357
3358 2008-01-18  Ian Lance Taylor  <iant@google.com>
3359
3360         PR c++/33407
3361         * decl.c (duplicate_decls): Copy DECL_IS_OPERATOR_NEW flag.
3362         (grok_op_properties): For NEW_EXPR and VEC_NEW_EXPR set
3363         DECL_IS_OPERATOR_NEW flag.
3364
3365 2008-01-16  Richard Guenther  <rguenther@suse.de>
3366
3367         PR c++/33819
3368         * typeck.c (is_bitfield_expr_with_lowered_type): Recurse
3369         for conversions to type variants.
3370
3371 2008-01-15  Andreas Tobler  <a.tobler@schweiz.org>
3372
3373         * parser.c (cp_parser_template_parameter): Fix C90 issue with mixing
3374         declaration and code.  Update copyright year.
3375
3376 2008-01-15  Douglas Gregor  <doug.gregor@gmail.com>
3377
3378         PR c++/34399
3379         * friend.c (do_friend): Don't query TYPE_BEING_DEFINED unless we
3380         know we have a class type.
3381
3382 2008-01-15  Douglas Gregor  <doug.gregor@gmail.com>
3383
3384         PR c++/34751
3385         * pt.c (coerce_template_parameter_pack): When substituting into
3386         the type of a non-type template parameter pack. use the
3387         deduced/substituted arguments.
3388         * parser.c (declarator_can_be_parameter_pack): A pointer-to-member
3389         can be a parameter pack with the ellipsis following it.  When we
3390         have an erroneous declaration, allow it to be a parameter pack.
3391         (cp_parser_template_parameter): Complain about default
3392         arguments on non-type template parameter packs, and parse them
3393         using the new cp_parser_default_argument.
3394         (cp_parser_parameter_declaration): Complain about parameter packs
3395         with default arguments. Move parsing of default arguments into a
3396         new function, cp_parser_default_argument.
3397         (cp_parser_default_argument): New; extracted from
3398         cp_parser_parameter_declaration.
3399
3400 2008-01-15  Douglas Gregor  <doug.gregor@gmail.com>
3401
3402         PR c++/34051
3403         PR c++/34055
3404         PR c++/34102
3405         PR c++/34103
3406         * typeck.c (check_return_expr): If there are bare parameter packs
3407         in the return value, set it to error_mark_node.
3408         * tree.c (cp_walk_subtrees): Walk USING_DECL nodes.
3409         * pt.c (find_parameter_packs_r): Look at the type of
3410         IDENTIFIER_NODEs (e.g., for user-defined conversions).
3411         (check_for_bare_parameter_packs): Flip the result: now returns
3412         TRUE when there were bare parameter packs, FALSE otherwise.
3413         (push_template_decl_real): Deal with flipped result of
3414         check_for_bare_parameter_packs.
3415         * semantics.c (finish_cond): If there are bare parameter packs in
3416         the conditional, set it to error_mark_node.
3417         (finish_expr_stmt): If there are bare parameter packs in the
3418         expression, set it to error_mark_node.
3419         (finish_for_expr): Ditto.
3420         (finish_switch_cond): If there are bare parameter packs in
3421         the conditional, set it to error_mark_node.
3422         (finish_mem_initializers): If there are bare parameter packs in
3423         the member initializer, set it to error_mark_node.
3424         (finish_member_declaration): Check the attributes of the
3425         declaration for bare parameter packs, and remove the attributes if
3426         any have bare parameter packs.
3427         * parser.c (cp_parser_using_declaration): Check the using
3428         declaration for bare parameter packs.
3429         (cp_parser_base_clause): If there are bare parameter packs in a
3430         base specifier, don't add it to the chain.
3431
3432 2008-01-15  Douglas Gregor  <doug.gregor@gmail.com>
3433
3434         PR c++/34314
3435         * error.c (dump_simple_decl): Display ellipsis for template
3436         non-type parameter packs.
3437         (dump_decl): Display ellipsis for template type parameter packs.
3438         (dump_template_decl): Display ellipsis for template template
3439         parameter packs.
3440         * pt.c (redeclare_class_template): When redeclaring a class
3441         template, check for collisions between template parameters and
3442         template parameter packs.
3443
3444 2008-01-15  Douglas Gregor  <doug.gregor@gmail.com>
3445
3446         PR c++/33964
3447         * pt.c (process_partial_specialization): Don't mark template
3448         parameters that occur in non-deduced contexts.
3449         (struct pair_fn_data): Add include_nondeduced_p.
3450         (for_each_template_parm_r): Only visit non-deduced contexts if
3451         include_nondeduced_p is set.
3452         (for_each_template_parm): Added parameter include_nondeduced_p,
3453         which states whether template parameters found in non-deduced
3454         contexts should be visited.
3455         (uses_template_parms): Visit all template parameters, even those
3456         in non-deduced contexts.
3457
3458 2008-01-15  Douglas Gregor  <doug.gregor@gmail.com>
3459
3460         PR c++/34052
3461         * pt.c (check_default_tmpl_args): Check for parameter packs that
3462         aren't at the end of a primary template.
3463         (push_template_decl_real): Remove check for parameter packs that
3464         aren't at the end of a primary template; that now happens in
3465         check_default_tmpl_args.
3466         * semantics.c (finish_template_template_parm): Use
3467         check_default_tmpl_args to check for errors in the template
3468         parameter list.
3469
3470 2008-01-12  Doug Kwan  <dougkwan@google.com>
3471
3472         * decl.c: (grokdeclarator): Use OPT_Wignored_qualifiers
3473         instead of OPT_Wreturn_type in warning due to ignored return type
3474         qualifiers.
3475         * pt.c: (tsubst_function_type): Use OPT_Wignored_qualifiers
3476         instead of OPT_Wreturn_type in warning due to ignored return type
3477         qualifiers.
3478
3479 2008-01-08  Jakub Jelinek  <jakub@redhat.com>
3480
3481         PR c++/33890
3482         * semantics.c (finish_omp_for): Don't call
3483         fold_build_cleanup_point_expr if processing_template_decl.
3484
3485 2008-01-04  Paolo Carlini  <pcarlini@suse.de>
3486             Jakub Jelinek  <jakub@redhat.com>
3487
3488         PR c++/34611
3489         * error.c (dump_template_argument): Deal with TREE_LIST.
3490
3491 2008-01-01  Douglas Gregor  <doug.gregor@gmail.com>
3492
3493         * parser.c (cp_parser_check_decl_spec): Don't warn about "long
3494         long" in C++0x mode; change the warning to note that "long long"
3495         is only unsupported in C++98 mode.
3496
3497 2007-12-20  Jason Merrill  <jason@redhat.com>
3498
3499         PR c++/34111
3500         * call.c (standard_conversion): Derived-to-base is considered a
3501         standard conversion.
3502
3503 2007-12-19  Jakub Jelinek  <jakub@redhat.com>
3504
3505         PR c++/34513
3506         * parser.c (cp_parser_omp_parallel): For non-combined parallel
3507         call cp_parser_statement rather than
3508         cp_parser_already_scoped_statement.
3509
3510 2007-12-18  Jason Merrill  <jason@redhat.com>
3511
3512         PR c++/34206
3513         * pt.c (tsubst_aggr_type): Do nothing if the type already doesn't
3514         use template parms.
3515         (dependent_type_p_r): Handle the domain of an array.
3516
3517 2007-12-18  Douglas Gregor  <doug.gregor@gmail.com>
3518              Jakub Jelinek  <jakub@redhat.com>
3519
3520         PR c++/32565
3521         PR c++/33943
3522         PR c++/33965
3523         * pt.c (template_template_parm_bindings_ok_p): New; verifies
3524         bindings of template template parameters after all template
3525         arguments have been deduced.
3526         (coerce_template_parms): Don't complain when COMPLAIN doesn't
3527         include tf_error.
3528         (fn_type_unification): Use template_template_parm_bindings_ok_p.
3529         (unify): Deal with variadic, bound template template parameters.
3530         (get_class_bindings): Use template_template_parm_bindings_ok_p.
3531
3532 2007-12-18  Jakub Jelinek  <jakub@redhat.com>
3533
3534         PR c++/34488
3535         * decl.c (grokdeclarator): Reject friend sfk_constructor
3536         FUNCTION_TYPE.
3537
3538 2007-12-17  Jakub Jelinek  <jakub@redhat.com>
3539
3540         PR c/34506
3541         * parser.c (cp_parser_omp_all_clauses): Accept optional comma
3542         in between clauses.
3543
3544 2007-12-15  Alexandre Oliva  <aoliva@redhat.com>
3545
3546         PR debug/7081
3547         * cp-lang.c (cp_classify_record): New.
3548         (LANG_HOOKS_CLASSIFY_RECORD): Override.
3549
3550 2007-12-11  Jakub Jelinek  <jakub@redhat.com>
3551
3552         PR c++/34238
3553         * decl2.c (cp_write_global_declarations): Revert 2007-11-22 change.
3554
3555         PR c++/34364
3556         * rtti.c (build_dynamic_cast): Call convert_from_reference even for
3557         dynamic_cast in a template.
3558
3559 2007-12-10  Simon Martin  <simartin@users.sourceforge.net>
3560
3561         PR c++/34059
3562         * typeck.c (build_class_member_access_expr): Compute MEMBER_SCOPE from
3563         MEMBER's BASELINK_ACCESS_BINFO instead of its BASELINK_BINFO.
3564
3565 2007-12-10  Jakub Jelinek  <jakub@redhat.com>
3566
3567         PR c++/34395
3568         * error.c (dump_type_prefix, dump_type_suffix): Handle
3569         TYPE_PACK_EXPANSION.
3570
3571         PR c++/34394
3572         * error.c (dump_expr): Handle ABS_EXPR.
3573
3574 2007-12-09  Jakub Jelinek  <jakub@redhat.com>
3575
3576         PR c++/34178
3577         PR c++/34340
3578         * repo.c (repo_emit_p): Return 2 for DECL_INTEGRAL_CONSTANT_VAR_P
3579         in class scope rather than DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P.
3580         Return 2 also if DECL_EXPLICIT_INSTANTIATION.
3581         * decl2.c (import_export_decl): Don't make VAR_DECLs import_p when
3582         flag_use_repository and repo_emit_p returned 2.
3583
3584 2007-12-06  Jakub Jelinek  <jakub@redhat.com>
3585
3586         PR c++/34336
3587         * tree.c (stabilize_call, stabilize_init): Do nothing if
3588         processing_template_decl.
3589
3590 2007-12-05  Jakub Jelinek  <jakub@redhat.com>
3591
3592         PR c++/34271
3593         * semantics.c (finish_decltype_type): For SCOPE_REF issue an
3594         error instead of assertion failure.
3595         * parser.c (cp_parser_decltype): If closing paren is not found,
3596         return error_mark_node.
3597
3598 2007-12-04  Douglas Gregor  <doug.gregor@gmail.com>
3599
3600         PR c++/34101
3601         * name-lookup.c (arg_assoc_template_arg): Recurse on argument
3602         packs.
3603         (arg_assoc_type): We don't need to handle TYPE_ARGUMENT_PACK here,
3604         since arg_assoc_template_arg will deal with them (better).
3605
3606 2007-12-04  Douglas Gregor  <doug.gregor@gmail.com>
3607
3608         PR c++/33509
3609         * pt.c (tsubst_exception_specification): Handle substitutions into
3610         member templates, where tsubst_pack_expansion returns a
3611         TYPE_PACK_EXPANSION.
3612
3613 2007-12-04  Douglas Gregor  <doug.gregor@gmail.com>
3614
3615         PR c++/33091
3616         * pt.c (unify_pack_expansion): If we didn't deduce any actual
3617         bindings for the template parameter pack, don't try to keep the
3618         empty deduced arguments.
3619         (unify): If a parameter is a template-id whose template argument
3620         list contains a pack expansion that is not at the end, then we
3621         cannot unify against that template-id.
3622
3623 2007-12-02  Paolo Carlini  <pcarlini@suse.de>
3624
3625          PR c++/34061
3626          * pt.c (current_template_args): Use error_operand_p.
3627
3628 2007-12-02  Paolo Carlini  <pcarlini@suse.de>
3629
3630          PR c++/34273
3631          * error.c (dump_decl): Handle TREE_BINFO.
3632
3633 2007-12-01  Ollie Wild  <aaw@google.com>
3634
3635         PR c++/8171
3636         * typeck.c (build_binary_op): Add conversion of pointers to function
3637         members appearing as operands to the equality operators.
3638
3639 2007-11-30  Jakub Jelinek  <jakub@redhat.com>
3640
3641         PR c++/34275
3642         * error.c (dump_expr): Handle OBJ_TYPE_REF.
3643
3644 2007-11-29  Jakub Jelinek  <jakub@redhat.com>
3645
3646         PR c++/34270
3647         * tree.c (lvalue_p_1) <case COND_EXPR>: Handle x ?: y
3648         in templates.
3649         * typeck.c (is_bitfield_expr_with_lowered_type) <case COND_EXPR>:
3650         Likewise.
3651
3652         PR c++/34267
3653         PR c++/34268
3654         * parser.c (cp_parser_decltype): Don't call finish_id_expression
3655         on ~type.
3656         * semantics.c (finish_decltype_type): Issue error on types, TYPE_DECLs
3657         and ~type early.
3658
3659 2007-11-27  Jakub Jelinek  <jakub@redhat.com>
3660
3661         PR tree-optimization/34181
3662         * method.c (use_thunk): Don't inline the call in the thunk.
3663
3664         PR c++/34213
3665         * tree.c (decl_linkage): Static data members and static member
3666         functions in anonymous ns classes are lk_external.
3667
3668 2007-11-26  Andreas Krebbel  <krebbel1@de.ibm.com>
3669
3670         PR c++/34081
3671         * decl.c (start_preparsed_function): Pass
3672         processing_template_decl for the new allocate_struct_function
3673         parameter.
3674
3675 2007-11-25  Richard Guenther  <rguenther@suse.de>
3676
3677         * decl.c (poplevel): Use BLOCK_CHAIN.
3678
3679 2007-11-24  Ollie Wild  <aaw@google.com>
3680
3681         * typeck.c (delta_from_ptrmemfunc): New function.
3682         (get_member_function_from_ptrfunc): Call delta_from_ptrmemfunc.
3683         (build_binary_op): Call delta_from_ptrmemfunc.
3684
3685 2007-11-23  Jakub Jelinek  <jakub@redhat.com>
3686
3687         PR c++/30293
3688         PR c++/30294
3689         * decl.c (cp_finish_decl): Disallow variable or field
3690         definitions if extern "Java" aggregates.
3691         (grokparms): Disallow parameters with extern "Java"
3692         aggregates.
3693         (check_function_type): Disallow function return values
3694         with extern "Java" aggregates.
3695         * init.c (build_new_1): Disallow placement new with
3696         extern "Java" aggregates.
3697
3698 2007-11-23  Mark Mitchell  <mark@codesourcery.com>
3699             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3700
3701         PR c++/5310
3702         * call.c (convert_like_real): Build a zero constant when __null is
3703         converted to an integer type.
3704
3705 2007-11-22  Jakub Jelinek  <jakub@redhat.com>
3706
3707         PR c++/34094
3708         * decl2.c (cp_write_global_declarations): Issue error about static
3709         data members in anonymous namespace which are declared and used,
3710         but not defined.
3711
3712 2007-11-20  Jakub Jelinek  <jakub@redhat.com>
3713
3714         PR c++/34089
3715         * parser.c (cp_parser_class_head): Reject function template ids.
3716
3717         PR c++/28879
3718         * tree.c (build_cplus_array_type_1): Don't pass any VLA types
3719         when processing_template_decl to build_array_type.
3720
3721         PR c++/33962
3722         * pt.c (more_specialized_fn): Don't segfault if one or
3723         both argument list end with ellipsis.
3724
3725 2007-11-18  Jakub Jelinek  <jakub@redhat.com>
3726
3727         PR c++/30988
3728         * semantics.c (finish_call_expr): Set
3729         current_function_returns_abnormally if fn is noreturn FUNCTION_DECL
3730         or OVERLOAD with all noreturn functions.
3731
3732 2007-11-16  Jakub Jelinek  <jakub@redhat.com>
3733
3734         PR c++/34100
3735         * pt.c (apply_late_template_attributes): Do nothing if decl's type is
3736         error_mark_node.
3737
3738 2007-11-13  Jakub Jelinek  <jakub@redhat.com>
3739
3740         PR c++/34054
3741         PR c++/34056
3742         PR c++/34057
3743         PR c++/34058
3744         PR c++/34060
3745         * pt.c (find_parameter_packs_r): If ppd->set_packs_to_error,
3746         set to error_mark_node the outermost POINTER_TYPE to the pack if
3747         it is seen in a POINTER_TYPE.
3748         (push_template_decl_real): If check_for_bare_parameter_packs
3749         fails for function return type, set the return type to
3750         integer_type_node.  If check_for_bare_parameter_packs failed
3751         for non-function, return error_mark_node.
3752
3753         PR c++/29225
3754         * call.c (build_new_op): Call resolve_args before calling
3755         build_over_call.
3756
3757 2007-11-11  Tom Tromey  <tromey@redhat.com>
3758
3759         PR c++/17577:
3760         * lex.c (handle_pragma_implementation): Use cpp_included_before.
3761
3762 2007-11-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3763
3764         PR c++/8570
3765         * pt.c (redeclare_class_template): Update error message. Use a
3766         note to show the previous declaration.
3767         (tsubst_friend_class): Use the location of the friend template as
3768         the input location before calling redeclare_class_template.
3769
3770 2007-11-11  Jakub Jelinek  <jakub@redhat.com>
3771
3772         PR c++/34068
3773         * semantics.c (finish_pseudo_destructor_expr): Handle
3774         object == error_mark_node.
3775
3776 2007-11-10  Jakub Jelinek  <jakub@redhat.com>
3777
3778         PR c++/32241
3779         * pt.c (tsubst_copy_and_build) <case COMPONENT_REF>: If object_type
3780         is not scalar type, let finish_class_member_access_expr handle
3781         diagnostics.  Pass BIT_NOT_EXPR argument to
3782         finish_pseudo_destructor_expr.  Handle SCOPE_REF properly.
3783
3784 2007-11-09  Douglas Gregor  <doug.gregor@gmail.com>
3785
3786         PR c++/33510
3787         * decl.c (cp_complete_array_type): If any of the initializer
3788         elements are pack expansions, don't compute the array size yet.
3789
3790 2007-11-08  Andrew Pinski  <pinskia@gmail.com>
3791
3792         PR c++/30297:
3793         * tree.c (decl_linkage): Fields have no linkage.
3794
3795 2007-11-08  Daniel Jacobowitz  <dan@codesourcery.com>
3796
3797         * class.c (build_ctor_vtbl_group): Lay out the new type and decl.
3798
3799 2007-11-07  Douglas Gregor  <doug.gregor@gmail.com>
3800
3801         PR c++/33045
3802         PR c++/33837
3803         PR c++/33838
3804         * semantics.c (finish_decltype_type): See through INDIRECT_REFs.
3805         Be careful with ERROR_MARK_NODEs.
3806         * parser.c (cp_parser_check_access_in_redeclaration): Handle NULL
3807         argument.
3808
3809 2007-11-07  Jakub Jelinek  <jakub@redhat.com>
3810
3811         PR c++/33501
3812         * call.c (build_over_call): Don't check TREE_ADDRESSABLE
3813         on incomplete type.
3814
3815 2007-11-06  Douglas Gregor  <doug.gregor@gmail.com>
3816
3817         PR c++/33977
3818         PR c++/33886
3819         * tree.c (c_build_qualified_type): Define bridge to
3820         cp_build_qualified_type.
3821
3822 2007-11-06  Douglas Gregor  <doug.gregor@gmail.com>
3823
3824         PR c++/31439
3825         PR c++/32114
3826         PR c++/32115
3827         PR c++/32125
3828         PR c++/32126
3829         PR c++/32127
3830         PR c++/32128
3831         PR c++/32253
3832         PR c++/32566
3833         * typeck.c (check_return_expr): Pass address of retval to
3834         check_for_bare_parameter_packs.
3835         * class.c (build_base_field): Tolerate bases that have no layout
3836         due to errors.
3837         (end_of_base): Ditto.
3838         * tree.c (canonical_type_variant): Be careful with
3839         ERROR_MARK_NODE.
3840         * cp-tree.h (check_for_bare_parameter_packs): Now accepts a
3841         tree*.
3842         * pt.c (find_parameter_pack_data): Add set_packs_to_error field,
3843         which states whether parameter packs should be replaced with
3844         ERROR_MARK_NODE.
3845         (find_parameter_packs_r): Pass addresses to cp_walk_tree wherever
3846         possible. If set_packs_to_error is set true, replace the parameter
3847         pack with ERROR_MARK_NODE. Manage our own pointer sets.
3848         (uses_parameter_packs): Don't set parameter packs to
3849         ERROR_MARK_NODE.
3850         (check_for_bare_parameter_packs): Now takes a pointer to a tree,
3851         which may be modified (if it is a parameter pack). Instructs
3852         find_parameter_packs_r to replace parameter packs with
3853         ERROR_MARK_NODE (so that they won't cause errors later on).
3854         (process_template_parm): Pass pointer to
3855         check_for_bare_parameter_packs.
3856         (process_partial_specialization): Replace pack expansions before
3857         the end of the template argument list with ERROR_MARK_NODE.
3858         (push_template_decl_real): Pass pointer to
3859         check_for_bare_parameter_packs. Replace parameter packs not at the
3860         end of the template parameter list with ERROR_MARK_NODE.
3861         (convert_template_argument): Be more careful about using DECL_NAME
3862         on only declarations.
3863         (unify): Can't unify against ERROR_MARK_NODE.
3864         * semantics.c (finish_cond): Pass pointer to
3865         check_for_bare_parameter_packs.
3866         (finish_expr_stmt): Ditto.
3867         (finish_for_expr): Ditto.
3868         (finish_switch_cond): Pass pointer to
3869         check_for_bare_parameter_packs, and call it before we put the
3870         condition into the statement.
3871         (finish_mem_initializers): Pass pointer to
3872         check_for_bare_parameter_packs.
3873         (finish_member_declaration): Ditto.
3874         * parser.c (cp_parser_base_clause): Ditto.
3875
3876 2007-11-06  Jakub Jelinek  <jakub@redhat.com>
3877
3878         PR target/33168
3879         * decl.c (cp_finish_decl): Call make_rtl_for_nonlocal_decl already
3880         with the final TREE_READONLY flag in place.  processing_template_decl
3881         is known to be 0 in this part of function.
3882
3883         PR c++/33894
3884         * cp-tree.h: Update comment - TYPE_LANG_FLAG_0 is not
3885         OMP_ATOMIC_DEPENDENT_P in OMP_ATOMIC.
3886         * pt.c (tsubst_expr): Assert OMP_ATOMIC_DEPENDENT_P.
3887         * semantics.c (finish_omp_atomic): Revert most of the
3888         2007-02-05 changes, just keep the new representation of
3889         OMP_ATOMIC_DEPENDENT_P OMP_ATOMIC.
3890
3891 2007-11-05  H.J. Lu  <hongjiu.lu@intel.com>
3892
3893         PR c++/33871
3894         * decl2.c (constrain_visibility): Clear DECL_ONE_ONLY if marked
3895         local.
3896
3897 2007-11-05  Douglas Gregor  <doug.gregor@gmail.com>
3898
3899         PR c++/33996
3900         PR c++/33235
3901         PR c++/33930
3902         * typeck.c (merge_types): Don't lose rvalue references when
3903         merging types.
3904         * call.c (build_over_call): Don't elide move constructors just
3905         because the copy constructor is trivial (!).
3906         (compare_ics): If comparing cv-qualifiers fails, we can still order
3907         based on binding lvalues vs. rvalues.
3908
3909 2007-11-05  Douglas Gregor  <doug.gregor@gmail.com>
3910
3911         PR c++/33939
3912         * pt.c (unify_pack_expansion): bring handling of function call
3913         arguments into line with type_unification_real.
3914
3915 2007-11-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3916
3917         * typeck.c (build_binary_op): Use pedwarn instead of error for
3918         consistency.
3919
3920 2007-11-05  Jakub Jelinek  <jakub@redhat.com>
3921
3922         PR c++/33836
3923         * parser.c (cp_parser_unary_expression): For &&label call
3924         cp_parser_non_integral_constant_expression and return error_mark_node
3925         if it returned true.
3926
3927         PR c++/33969
3928         * decl.c (grokdeclarator): Don't call build_memfn_type if type
3929         is neither FUNCTION_TYPE nor METHOD_TYPE.
3930
3931 2007-11-02  Jakub Jelinek  <jakub@redhat.com>
3932
3933         PR c++/33516
3934         * parser.c (cp_parser_nested_name_specifier_opt): Use
3935         TYPE_MAIN_VARIANT (new_scope) as scope if new_scope is an incomplete
3936         typedef of currently open class.
3937
3938 2007-11-02  Paolo Carlini  <pcarlini@suse.de>
3939
3940         PR c++/33495
3941         * error.c (dump_expr): Deal specially with statements.
3942
3943 2007-11-01  Jason Merrill  <jason@redhat.com>
3944
3945         PR c++/30897
3946         * pt.c (push_template_decl_real): Set DECL_CONTEXT on template
3947         template parms.
3948         (lookup_template_class): Use it to get the outer template args
3949         for instantiating one.
3950
3951         PR c++/29236
3952         * pt.c (reduce_template_parm_level): tsubst the parameters
3953         of a template template parm.
3954
3955 2007-11-01  Douglas Gregor  <doug.gregor@gmail.com>
3956
3957         PR c++/33955
3958         * pt.c (find_parameter_packs_r): Handle TYPENAME_TYPE.
3959
3960 2007-11-01  Jakub Jelinek  <jakub@redhat.com>
3961
3962         PR c++/32384
3963         * parser.c (cp_parser_postfix_dot_deref_expression): If
3964         POSTFIX_EXPRESSION is type dependent, try to parse it as pseudo dtor
3965         first and if that succeeds and type is SCALAR_TYPE_P, create
3966         PSEUDO_DTOR_EXPR.
3967
3968         PR c++/32260
3969         * rtti.c (enum_tinfo_kind): Fix TK_TYPE_INFO_TYPE comment.
3970         (typeid_ok_p): Use the same alias set for abi::__type_info_pseudo
3971         as for std::type_info.
3972
3973 2007-10-31  Paolo Carlini  <pcarlini@suse.de>
3974
3975         PR c++/33494
3976         * cxx-pretty-print.c (pp_cxx_typeid_expression,
3977         pp_cxx_delete_expression): Change to static linkage.
3978         * cxx-pretty-print.h: Adjust declarations.
3979         * error.c (dump_expr, case EXPR_PACK_EXPANSION, TYPEID_EXPR,
3980         MEMBER_REF, DOTSTAR_EXPR, DELETE_EXPR, VEC_DELETE_EXPR,
3981         MODOP_EXPR): Forward to pp_expression.
3982
3983         * cxx-pretty-print.c (pp_cxx_expression, case NON_DEPENDENT_EXPR):
3984         Fix typo.
3985
3986 2007-10-31 Christian Bruel  <christian.bruel@st.com>
3987             Mark Mitchell  <mark@codesourcery.com>
3988
3989         PR c++/19531
3990         * typeck.c (check_return_expr): Don't set named_return_value_okay_p
3991         if retval is volatile.
3992
3993 2007-10-30  Jakub Jelinek  <jakub@redhat.com>
3994
3995         PR c++/33616
3996         * decl2.c (build_offset_ref_call_from_tree): Call
3997         build_non_dependent_expr on object prior to building ADDR_EXPR from it
3998         if FN is DOTSTAR_EXPR.
3999
4000 2007-10-30  Douglas Gregor  <doug.gregor@gmail.com>
4001
4002         PR c++/31993
4003         PR c++/32252
4004         * pt.c (find_parameter_packs_r): Fix typo in comment.
4005         (convert_template_argument): Look at the pattern of a pack
4006         expansion to determine what kind of entity we're converting.
4007         (coerce_template_parameter_pack): When we have coerced a non-type
4008         template parameter pack, substitute into the type of that pack.
4009         (tsubst_pack_expansion): When our substitution of a parameter pack
4010         is a "trivial" substitution of itself, just substitute into the
4011         pack expansion rather than actually expanding.
4012
4013 2007-10-29  Jakub Jelinek  <jakub@redhat.com>
4014
4015         PR c++/33841
4016         * class.c (check_bitfield_decl): Don't set field's type to error_mark_node
4017         for non-integral type bitfields.  Return true if bitfield is correct, false
4018         error has been diagnosed.
4019         (check_field_decls): If check_bitfield_decl returned false, call also
4020         check_field_decl.
4021
4022 2007-10-28  Paolo Carlini  <pcarlini@suse.de>
4023             Mark Mitchell  <mark@codesourcery.com>
4024
4025         PR c++/30659
4026         * pt.c (do_decl_instantiation): If the VAR_DECL is not a
4027         class member error out and return.
4028
4029 2007-10-27  Jakub Jelinek  <jakub@redhat.com>
4030
4031         * error.c (reinit_cxx_pp): Initialize cxx_pp->enclosing_scope
4032         to current_function_decl rather than 0.
4033
4034         PR c++/33844
4035         * cxx-pretty-print.c (pp_cxx_pm_expression) <case MEMBER_REF>: Print
4036         ->* rather than .*.
4037         * error.c (dump_expr): Handle MEMBER_REF and DOTSTAR_EXPR.
4038
4039 2007-10-27  Jason Merrill  <jason@redhat.com>
4040
4041         PR c++/5247
4042         * call.c (convert_default_arg): Detect recursion.
4043
4044 2007-10-27  Jakub Jelinek  <jakub@redhat.com>
4045
4046         PR c++/33842
4047         * cxx-pretty-print.h (pp_cxx_offsetof_expression): New prototype.
4048         * cxx-pretty-print.c (pp_cxx_primary_expression): Handle
4049         OFFSETOF_EXPR.
4050         (pp_cxx_offsetof_expression_1, pp_cxx_offsetof_expression): New
4051         functions.
4052         * error.c (dump_expr): Handle OFFSETOF_EXPR.
4053
4054 2007-10-26  Jason Merrill  <jason@redhat.com>
4055
4056         PR c++/24791
4057         * pt.c (get_template_info): New fn.
4058         (template_class_depth): Use it.
4059         (push_template_decl_real): Check that the template args of the
4060         definition match the args of the previous declaration.
4061
4062 2007-10-26  Paolo Carlini  <pcarlini@suse.de>
4063
4064         PR c++/31988
4065         * decl2.c (coerce_new_type): Do not allow a default argument for
4066         the first parameter.
4067
4068 2007-10-26  Douglas Gregor  <doug.gregor@gmail.com>
4069
4070         PR c++/33839
4071         * parser.c (cp_parser_decltype): Return ERROR_MARK_NODE if we
4072         don't see the leading '('. Only lookup names if we get an
4073         IDENTIFIER_NODE.
4074
4075 2007-10-26  Jakub Jelinek  <jakub@redhat.com>
4076
4077         PR c++/33744
4078         * parser.c (cp_parser_parenthesized_expression_list): Set
4079         greater_than_is_operator_p to true in between the parens.
4080
4081 2007-10-26  Paolo Carlini  <pcarlini@suse.de>
4082
4083         PR c++/31747
4084         * decl.c (grokdeclarator): In case of conflicting specifiers
4085         just return error_mark_node.
4086
4087 2007-10-26  Ollie Wild  <aaw@google.com>
4088
4089         * expr.c (cxx_expand_expr): Removed.
4090         * cp-tree.h (exx_expand_expr): Removed.
4091         * cp-objcp-common.h (LANK_HOOKS_EXPAND_EXPR): Replace cxx_expand_expr
4092         with c_expand_expr.
4093
4094 2007-10-25  Paolo Carlini  <pcarlini@suse.de>
4095
4096         PR c++/33843
4097         * cxx-pretty-print.c (pp_cxx_unqualified_id): Deal with BIT_NOT_EXPR.
4098
4099 2007-10-23  Jason Merrill  <jason@redhat.com>
4100
4101         PR c++/25950 (DR 391)
4102         * call.c (struct conversion): Remove check_copy_constructor_p.
4103         (reference_binding): Always bind a reference directly to a
4104         compatible class rvalue.  Pass down LOOKUP_NO_TEMP_BIND during
4105         temporary creation.
4106         (check_constructor_callable): Remove.
4107         (convert_like_real): Don't call it.
4108         (initialize_reference): Don't call check_constructor_callable.
4109         (standard_conversion): Check LOOKUP_NO_CONVERSION instead of
4110         LOOKUP_CONSTRUCTOR_CALLABLE.  Don't require a temporary for base
4111         conversions if LOOKUP_NO_TEMP_BIND.
4112         (implicit_conversion): Pass through LOOKUP_NO_TEMP_BIND.
4113         (build_user_type_conversion_1): Pass through LOOKUP_NO_TEMP_BIND for
4114         second conversion.
4115         * cp-tree.h (LOOKUP_CONSTRUCTOR_CALLABLE): Remove.
4116
4117 2007-10-22  Jakub Jelinek  <jakub@redhat.com>
4118
4119         PR c++/33372
4120         * semantics.c (finish_omp_clauses): Check !type_dependent_expression_p
4121         before checking if its type is integral.
4122
4123 2007-10-22  Jason Merrill  <jason@redhat.com>
4124
4125         PR c++/33620
4126         * class.c (finish_struct_bits): Copy TYPE_ATTRIBUTES.
4127         * pt.c (apply_late_template_attributes): Splice out dependent
4128         attributes from DECL_ATTRIBUTES.
4129
4130         * decl.c (cxx_maybe_build_cleanup): Use build_address.
4131
4132 2007-10-17  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4133
4134         * typeck.c (build_binary_op) : Use appropriate warning option
4135         instead of unnamed warning.
4136
4137 2007-10-16  Paolo Carlini  <pcarlini@suse.de>
4138
4139         PR c++/31446
4140         * pt.c (current_template_args): Do not change TREE_LIST elements
4141         with a TREE_VALUE of error_mark_node.
4142
4143 2007-10-16  Mark Mitchell  <mark@codesourcery.com>
4144
4145         * typeck.c (cp_apply_type_quals_to_decl): Expand documentation.
4146         * decl.c (start_decl): Tidy.
4147         (start_decl_1): Call cp_apply_type_quals_to_decl after completing
4148         the type.
4149         (grokdeclarator): Clarify comment.
4150
4151 2007-10-14  Andrew Pinski  <pinskia@gmail.com>
4152
4153         PR c++/30303
4154         * decl.c (grokfndecl): Return NULL after the "definition of
4155         implicitly-declared" error happened.
4156
4157 2007-10-12  Simon Martin  <simartin@users.sourceforge.net>
4158
4159         PR c++/26698
4160         * call.c (build_user_type_conversion_1): Do not consider conversion
4161         functions to convert a (possibly cv-qualified) object to the (possibly
4162         cv-qualified) same object type (or a reference to it), to a (possibly
4163         cv-qualified) base class of that type (or a reference to it).
4164
4165 2007-10-12  Paolo Carlini  <pcarlini@suse.de>
4166
4167         * pt.c (tsubst): Use template_parm_level_and_index.
4168
4169 2007-10-12  Jakub Jelinek  <jakub@redhat.com>
4170
4171         PR c++/32121
4172         * parser.c (cp_parser_compound_statement): Handle label-declarations
4173         at the beginning of the compound statement.
4174         (cp_parser_block_declaration): Issue diagnostics about __label__
4175         not at the beginning of a block.
4176
4177 2007-10-11  Paolo Carlini  <pcarlini@suse.de>
4178
4179         PR c++/33461
4180         * pt.c (coerce_template_parameter_pack): Do not pass error_mark_node
4181         to convert_template_argument.
4182         (coerce_template_parms): Return error_mark_node after fixed-length
4183         error.
4184         (tsubst_decl): Check for error_mark_node the return value of the
4185         first tsubst in 'case VAR_DECL'.
4186
4187 2007-10-08  Ollie Wild  <aaw@google.com>
4188
4189         * typeck2.c (digest_init): Call cplus_expand_constant after
4190         convert_for_initialization.
4191         * cp-objcp-common.h (LANG_HOOKS_EXPAND_CONSTANT): Removed.
4192         * expr.c (cplus_expand_constant): Updated function description.
4193
4194 2007-10-04  Jason Merrill  <jason@redhat.com>
4195
4196         PR c++/20416
4197         * call.c (initialize_reference): Handle local static reference
4198         temps properly.
4199
4200 2007-10-03  Jason Merrill  <jason@redhat.com>
4201
4202         PR c++/32470
4203         * name-lookup.c (push_namespace_with_attrs): Fold back into...
4204         (push_namespace): Here.
4205         (handle_namespace_attrs): New fn for the attr code.
4206         (leave_scope): Don't pop_visibility.
4207         * name-lookup.h (struct cp_binding_level): Remove has_visibility.
4208         * parser.c (cp_parser_namespace_definition): Call
4209         handle_namespace_attrs and pop_visibility as appropriate.
4210
4211         PR c++/11756
4212         * mangle.c (write_type) [TYPEOF_TYPE]: Just sorry.
4213
4214 2007-10-03  Alexandre Oliva  <aoliva@redhat.com>
4215
4216         * decl.c (duplicate_decls): Preserve linkage flags for mere
4217         redeclarations of gnu_inline definitions.
4218
4219 2007-10-03  Jason Merrill  <jason@redhat.com>
4220
4221         PR c++/15764
4222         * decl.c (wrap_cleanups_r): New fn.
4223         (wrap_temporary_cleanups): New fn.
4224         (initialize_local_var): Call it.
4225
4226 2007-09-29  Jason Merrill  <jason@redhat.com>
4227
4228         PR c++/33094
4229         * decl.c (make_rtl_for_nonlocal_decl): It's ok for a member
4230         constant to not have DECL_EXTERNAL if it's file-local.
4231
4232 2007-09-28  Ollie Wild  <aaw@google.com>
4233
4234         Revert
4235         2007-09-27  Ollie Wild  <aaw@google.com>
4236
4237         * typeck2.c (digest_init): Call cplus_expand_constant after
4238         convert_for_initialization.
4239         * cp-objcp-common.h (LANG_HOOKS_EXPAND_CONSTANT): Removed.
4240         * expr.c (cplus_expand_constant): Updated function description.
4241
4242 2007-09-28  Jason Merrill  <jason@redhat.com>
4243
4244         PR c++/10179
4245         * class.c (layout_empty_base): Take rli parameter, update
4246         rli->record_align if empty base has user-specified alignment.
4247         (build_base_field): Pass rli to it.
4248
4249 2007-09-28  Paolo Carlini  <pcarlini@suse.de>
4250
4251         PR c++/33213
4252         * error.c (dump_decl): Deal with TYPE_PACK_EXPANSION.
4253
4254 2007-09-28  Paolo Carlini  <pcarlini@suse.de>
4255
4256         PR c++/33118
4257         * error.c (dump_expr): Deal with ARGUMENT_PACK_SELECT.
4258         (dump_type): Use dump_template_argument for TYPE_ARGUMENT_PACK.
4259         (dump_parameters): Just call dump_type for argument packs too.
4260
4261 2007-09-28  Jakub Jelinek  <jakub@redhat.com>
4262
4263         PR c++/31434
4264         * tree.c (cp_build_qualified_type_real): Handle TYPE_PACK_EXPANSION
4265         qualification by creating qualified PACK_EXPANSION_PATTERN and
4266         then calling make_pack_expansion on it.
4267
4268 2007-09-27  Ollie Wild  <aaw@google.com>
4269
4270         * typeck2.c (digest_init): Call cplus_expand_constant after
4271         convert_for_initialization.
4272         * cp-objcp-common.h (LANG_HOOKS_EXPAND_CONSTANT): Removed.
4273         * expr.c (cplus_expand_constant): Updated function description.
4274
4275 2007-09-27  Jason Merrill  <jason@redhat.com>
4276
4277         PR c++/33571
4278         * decl2.c (is_late_template_attribute): Don't crash on unknown
4279         attribute.
4280
4281 2007-09-27  Paolo Carlini  <pcarlini@suse.de>
4282
4283         PR c++/33493
4284         * error.c (dump_expr): Deal with DELETE_EXPR and VEC_DELETE_EXPR.
4285         * cxx-pretty-print.c (pp_cxx_delete_expression): Add missing
4286         spaces in the formatting.
4287         * cxx-pretty-print.h (pp_cxx_delete_expression): Declare.
4288
4289 2007-09-27  Jakub Jelinek  <jakub@redhat.com>
4290
4291         * error.c (cxx_print_error_function): Add third argument, pass
4292         it over to lhd_print_error_function.
4293         (cp_print_error_function): If diagnostic->abstract_origin, print
4294         virtual backtrace.
4295         * cp-tree.h (struct diagnostic_info): New forward decl.
4296         (cxx_print_error_function): Add third argument.
4297
4298 2007-09-25  Simon Martin  <simartin@users.sourceforge.net>
4299
4300         PR c++/33207
4301         * name-lookup.c (pushtag): Do not create an implicit typedef before
4302         the associated type declaration is known to be valid.
4303
4304 2007-09-25  Jakub Jelinek  <jakub@redhat.com>
4305
4306         * tree.c (cxx_printable_name): Compare FUNCTION_DECL uids
4307         rather than pointers.
4308
4309 2007-09-24  Danny Smith  <dannysmith@user.sourceforge.net>
4310
4311         PR c++/14688
4312          * search.c (check_final_overrider): Fail if
4313         targetm.comp_type_attributes returns 0.
4314
4315 2007-09-24  Jason Merrill  <jason@redhat.com>
4316
4317         PR c++/33239
4318         * pt.c (resolve_typename_type): Don't look things up in the original
4319         template if it would mean losing template arguments.
4320
4321 2007-09-24  Jakub Jelinek  <jakub@redhat.com>
4322
4323         PR c++/33506
4324         * cp-tree.h (cxx_type_hash_eq): New prototype.
4325         * cp-objcp-common.h (LANG_HOOKS_TYPE_HASH_EQ): Redefine.
4326         * tree.c (cxx_type_hash_eq): New function.
4327
4328 2007-09-24  Douglas Gregor  <doug.gregor@gmail.com>
4329
4330         PR c++/33185
4331         * tree.c (cp_build_qualified_type_real): Build a canonical
4332         ARRAY_TYPE if the original ARRAY_TYPE was not a canonical type.
4333
4334 2007-09-24  Douglas Gregor  <doug.gregor@gmail.com>
4335
4336         PR c++/33112
4337         PR c++/33185
4338         * tree.c (cplus_array_compare): Compare pointers, not types.
4339         (build_cplus_array_type_1): Store new array type into the hash
4340         table before building the canonical type; build the canonical type
4341         correctly.
4342         (cp_build_qualified_type_real): Put all of the array types with
4343         cv-qualified element types into the C++ array hash table, built as
4344         variants of the unqualified versions.
4345
4346 2007-09-23  Jason Merrill  <jason@redhat.com>
4347
4348         PR c++/16370
4349         * decl.c (grokdeclarator): Look through implicit TYPE_DECLs
4350         for deprecation warnings.
4351
4352 2007-09-22  Jason Merrill  <jason@redhat.com>
4353
4354         PR c++/15269
4355         * call.c (build_over_call): Warn about deprecated virtuals.
4356
4357         PR c++/19407
4358         * cp-tree.h (ATTR_IS_DEPENDENT): New macro.
4359         (MAYBE_TAGGED_TYPE_P): Remove.
4360         * pt.c (apply_late_template_attributes): Check ATTR_IS_DEPENDENT
4361         instead of calling is_late_template_attribute again.
4362         (tsubst_decl) [TYPE_DECL]: Just check if the name is the tag.
4363         (tsubst): A typedef is a TYPE_NAME != TYPE_MAIN_DECL.
4364         Don't crash on typedefs from non-template classes.
4365         * decl2.c (grokfield): Don't sorry about attrs on template parms.
4366         (is_late_template_attribute): All attributes applied to template
4367         parms or typename types are dependent.  Static.
4368         (splice_template_attributes): Pass decl through.
4369         (save_template_attributes): Likewise.
4370
4371 2007-09-20  Jakub Jelinek  <jakub@redhat.com>
4372
4373         PR c++/33496
4374         * pt.c (tsubst_copy) <case SIZEOF_EXPR>: Handle error_mark_node
4375         returned from tsubst_pack_expansion.
4376         (tsubst_copy_and_build) <case SIZEOF_EXPR>: Likewise.
4377         (tsubst_copy_and_build) <case CONSTRUCTOR>: Likewise.
4378
4379 2007-09-20  Paolo Carlini  <pcarlini@suse.de>
4380
4381         PR c++/33460
4382         * semantics.c (finish_id_expression): Use consistently
4383         context_for_name_lookup.
4384         * decl.c (fixup_anonymous_aggr): Fix error message for
4385         anonymous struct (vs union).
4386
4387 2007-09-19  Jason Merrill  <jason@redhat.com>
4388
4389         PR c++/7586
4390         * pt.c (tsubst): Handle typedefs by looking for the specialization.
4391         (retrieve_specialization): Only tagged types use
4392         DECL_TEMPLATE_INSTANTIATIONS.
4393         (instantiate_class_template): Push nested classes too.
4394         (tsubst_decl) [TYPE_DECL]: Only check for canonical decl for
4395         tagged types.
4396         * cp-tree.h (MAYBE_TAGGED_TYPE_P): New macro.
4397         * init.c (is_aggr_type): Remove redundant tests.
4398         * class.c (push_nested_class): Use CLASS_TYPE_P.
4399
4400 2007-09-20  Paolo Carlini  <pcarlini@suse.de>
4401
4402         PR c++/33459
4403         * init.c (build_zero_init): If, recursively, build_zero_init
4404         returns a NULL_TREE, do not append it to the VEC of constructors.
4405
4406 2007-09-18  Jason Merrill  <jason@redhat.com>
4407
4408         PR c++/17743
4409         * pt.c (apply_late_template_attributes): Set processing_template_decl.
4410         (tsubst_decl) [TYPE_DECL]: Preserve naming typedef, pass
4411         ATTR_FLAG_TYPE_IN_PLACE.
4412         (tsubst): Do unqualified lookup to find typedefs from current class.
4413         [ARRAY_TYPE]: Propagate alignment info.
4414         * decl2.c (is_late_template_attribute): Only defer handling of
4415         attribute aligned if the expression is dependent.
4416         (save_template_attributes): If we're deferring any attributes,
4417         make this a naming typedef.
4418
4419 2007-09-18  Paolo Carlini  <pcarlini@suse.de>
4420
4421         PR c++/33462 (again)
4422         * cxx-pretty-print.c (pp_cxx_va_arg_expression): Print
4423         va_arg instead of __builtin_va_arg.
4424
4425 2007-09-18  Paolo Carlini  <pcarlini@suse.de>
4426
4427         PR c++/33462
4428         * cxx-pretty-print.c (pp_cxx_va_arg_expression): Add.
4429         (pp_cxx_primary_expression): Use it.
4430         * cxx-pretty-print.h (pp_cxx_va_arg_expression): Declare.
4431         * error.c (dump_expr): Use it.
4432
4433 2007-09-18  Paolo Carlini  <pcarlini@suse.de>
4434
4435         PR c++/33463
4436         * cxx-pretty-print.c (pp_cxx_postfix_expression): Split
4437         out case TYPEID_EXPR to...
4438         (pp_cxx_typeid_expression): ... here; use pp_cxx_left_paren
4439         and pp_cxx_right_paren.
4440         * cxx-pretty-print.h (pp_cxx_typeid_expression): Declare.
4441         * error.c (dump_expr): Use it.
4442
4443 2007-09-18  Paolo Carlini  <pcarlini@suse.de>
4444
4445         PR c++/33464
4446         * cxx-pretty-print.c (pp_cxx_trait_expression): Add.
4447         (pp_cxx_primary_expression): Use it.
4448         * cxx-pretty-print.h (pp_cxx_trait_expression): Declare.
4449         * error.c (dump_expr): Use it.
4450
4451 2007-09-16  Paolo Carlini  <pcarlini@suse.de>
4452
4453         PR c++/33124
4454         * init.c (build_new): Remove warning for zero-element
4455         allocations.
4456
4457 2007-09-16  Nathan Sidwell  <nathan@codesourcery.com>
4458
4459         PR c++/32756
4460         * call.c (maybe_handle_implicit_object): Set this_p, clear
4461         rvaluedness_matches_p.
4462         (compare_ics): Do not compare rvaluedness matching when one of the
4463         operands is an implicit object.
4464
4465 2007-09-14  Jason Merrill  <jason@redhat.com>
4466
4467         PR c++/17743, c++/19163
4468         * decl2.c (is_late_template_attribute): New fn.
4469         (splice_template_attributes, save_template_attributes): New fns.
4470         (cplus_decl_attributes): Call save_template_attributes.
4471         * pt.c (apply_late_template_attributes): New fn.
4472         (instantiate_class_template, tsubst_decl): Use it.
4473         * cp-tree.h: Declare is_late_template_attribute.
4474
4475 2007-09-13  Tom Tromey  <tromey@redhat.com>
4476
4477         * parser.c (cp_lexer_new_main): Don't use
4478         c_lex_return_raw_strings.
4479         (cp_lexer_get_preprocessor_token): Update.  Add special case when
4480         lexer is NULL.
4481
4482 2007-09-11  Jan Hubicka <jh@suse.cz>
4483
4484         * method.c (use_thunk): Use tree_rest_of_compilation
4485         * cp-objecp-common.h (LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Kill.
4486         (LANG_HOOKS_CALLGRAPH_EMIT_ASSOCIATED_THUNKS): Define.
4487         * cp-tree.h (expand_body): Kill.
4488         (emit_associated_thunks): Declare.
4489         * semantics.c (emit_associated_thunks): Export.
4490         (expand_body): Kill.
4491
4492 2007-09-09  David Daney  <ddaney@avtrex.com>
4493
4494         PR c++/33324
4495         * init.c (build_new_1):  Use POINTER_PLUS_EXPR instead of MINUS_EXPR
4496         to calculate cookie_ptr.
4497
4498 2007-09-08  Jason Merrill  <jason@redhat.com>
4499
4500         PR c++/33342
4501         * pt.c (most_specialized_class): Set processing_template_decl
4502         while tsubsting partial spec args.
4503
4504 2007-09-06  Jason Merrill  <jason@redhat.com>
4505
4506         * decl2.c (get_guard): Copy visibility from the guarded variable.
4507
4508 2007-09-06  Jan Hubicka  <jh@suse.cz>
4509
4510         * semantics.c (expand_body): Do not mark arguments of clones used.
4511
4512 2007-09-06  Paolo Carlini  <pcarlini@suse.de>
4513
4514         PR c++/32674
4515         * decl.c (cp_finish_decl): When processing_template_decl,
4516         deal correctly with init as TREE_LIST.
4517
4518 2007-09-06  Tom Tromey  <tromey@redhat.com>
4519
4520         * decl.c (finish_function): Put return's location on line zero of
4521         file.
4522
4523 2007-09-05  Jason Merrill  <jason@redhat.com>
4524
4525         PR c++/15745
4526         * except.c (prepare_eh_type): Use type_decays_to.
4527
4528         PR c++/15097
4529         * init.c (build_delete): Use build_headof to get the address of the
4530         complete object if we aren't using the deleting destructor.
4531         * rtti.c (build_headof): No longer static.
4532         * cp-tree.h: Declare it.
4533
4534 2007-09-06  Jakub Jelinek  <jakub@redhat.com>
4535
4536         * decl.c (duplicate_decls): Set TREE_NOTHROW on __builtin_XX
4537         decl if a prototype for XX is provided with throw().
4538
4539         PR c++/33289
4540         * decl.c (builtin_function_1): Set DECL_ANTICIPATED also
4541         on __*_chk non-__builtin_* decls.
4542
4543 2007-09-05  Paolo Carlini  <pcarlini@suse.de>
4544
4545         PR c++/30302
4546         * semantics.c (finish_id_expression): Use context_for_name_lookup
4547         insted of DECL_CONTEXT, to see through anonymous structs and unions.
4548         * class.c (finish_struct_anon): Deal correctly with anonymous
4549         structs (vs unions, as GNU extension) in error messages.
4550
4551 2007-09-05  Jan Hubicka  <jh@suse.cz>
4552
4553         * sematics.c (expand_body): Remove unnecesary import_export_decl
4554         call, DECL_EXTERNAL checks and current_function_decl saving.
4555
4556 2007-09-05  Paolo Carlini  <pcarlini@suse.de>
4557
4558         PR c++/29731 (again)
4559         * parser.c (cp_parser_primary_expression): Return error_mark_node
4560         when a statement-expression is found in a template-argument list.
4561
4562 2007-09-04  Jason Merrill  <jason@redhat.com>
4563
4564         * except.c (initialize_handler_parm): Use
4565         fold_build_cleanup_point_expr.
4566
4567         PR c++/31419
4568         * call.c (reference_binding): Don't look for user-defined conversions
4569         to the same type.
4570
4571         PR c++/31411
4572         * except.c (initialize_handler_parm): Put a CLEANUP_POINT_EXPR inside
4573         the MUST_NOT_THROW_EXPR.
4574
4575 2007-09-04  Richard Sandiford  <richard@codesourcery.com>
4576
4577         * decl.c (cp_finish_decl): Call determine_visibility before
4578         make_rtl_for_nonlocal_decl.
4579
4580 2007-09-04  Jason Merrill  <jason@redhat.com>
4581
4582         PR c++/14032
4583         * pt.c (most_specialized_class): Substitute outer template
4584         arguments into the arguments of a member template partial
4585         specialization.
4586         (strip_innermost_template_args): New fn.
4587
4588 2007-09-03  Daniel Jacobowitz  <dan@codesourcery.com>
4589
4590         * Make-lang.in (g++spec.o): Remove SHLIB_MULTILIB.
4591
4592 2007-09-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4593
4594         * call.c (name_as_c_string): Supply a TYPE for CONST_CAST.
4595         * decl.c (cp_make_fname_decl): Likewise,
4596         * parser.c (cp_parser_string_literal): Likewise,
4597         * tree.c (pod_type_p, zero_init_p): Use CONST_CAST_TREE.
4598         * typeck.c (cp_type_quals, cp_type_readonly, cp_has_mutable_p):
4599         Likewise,
4600
4601 2007-09-02  Paolo Carlini  <pcarlini@suse.de>
4602
4603         PR c++/33208
4604         * typeck.c (build_unary_op): Fix error message for
4605         Boolean expression as operand to operator--.
4606
4607 2007-09-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4608
4609         * tree.c (pod_type_p, zero_init_p): Use strip_array_types.
4610         * typeck.c (cp_type_quals, cp_type_readonly, cp_has_mutable_p):
4611         Likewise.
4612
4613 2007-08-31 Douglas Gregor <doug.gregor@gmail.com>
4614
4615         PR c++/32597
4616         * init.c (build_default_init): Make extern.
4617         * cp-tree.h (build_default_init): Declare here.
4618         * pt.c (tsubst_expr): When the instantiation of the initializer of
4619         a variable results in an empty list, default-initialize the
4620         variable.
4621         (tsubst_copy_and_build): When the instantiation of the initializer
4622         in a new expression results in an empty initializer list,
4623         default-initialize it.
4624
4625 2007-08-31  Douglas Gregor  <doug.gregor@gmail.com>
4626
4627         * mangle.c (write_type): Change mangling of rvalue reference from
4628         `RR' to `O'.
4629
4630 2007-08-31  Jakub Jelinek  <jakub@redhat.com>
4631
4632         * decl.c (duplicate_decls): Remove duplicated line.
4633
4634 2007-08-31  Paolo Carlini  <pcarlini@suse.de>
4635
4636         PR c++/33210
4637         * cxx-pretty-print.c (pp_cxx_unqualified_id): Deal with
4638         BOUND_TEMPLATE_TEMPLATE_PARM.
4639
4640 2007-08-31  Paolo Carlini  <pcarlini@suse.de>
4641
4642         PR c++/32113
4643         * search.c (lookup_member): Check the name argument for
4644         error_mark_node.
4645
4646 2007-08-31  Paolo Carlini  <pcarlini@suse.de>
4647
4648         PR c++/33212
4649         * parser.c (cp_parser_trait_expr): Check rerurn value of
4650         cp_parser_type_id.
4651
4652 2007-08-30  Ollie Wild  <aaw@google.com>
4653
4654         * cvt.c (cp_convert_to_pointer): Remove force parameter. Call
4655         convert_ptrmem for pointer to member conversions.
4656         (convert_to_pointer_force): Update cp_convert_to_pointer call.
4657         (ocp_convert): Update cp_convert_to_pointer call.
4658         * typeck.c (convert_ptrmem): Add conditional for null pointers to
4659         members.
4660         (build_static_cast_1): Check can_convert for conversions in either
4661         direction.
4662         (get_delta_difference_1): New function.
4663         (get_delta_difference): Refactor to call get_delta_difference_1.
4664
4665 2007-08-30  Jakub Jelinek  <jakub@redhat.com>
4666
4667         * decl.c (start_preparsed_function): Set
4668         DECL_DISREGARD_INLINE_LIMITS for GNU_INLINE_P functions.
4669
4670 2007-08-28  Paolo Carlini  <pcarlini@suse.de>
4671
4672         PR c++/33209
4673         * error.c (dump_expr): Deal with TEMPLATE_TYPE_PARM and
4674         BOUND_TEMPLATE_TEMPLATE_PARM.
4675
4676 2007-08-28  Jakub Jelinek  <jakub@redhat.com>
4677
4678         PR c++/32596
4679         PR c++/32400
4680         * pt.c (check_explicit_specialization): Set DECL_INTERFACE_KNOWN
4681         and DECL_NOT_REALLY_EXTERN if tmpl_func is not public.
4682
4683 2007-08-27  Jason Merrill  <jason@redhat.com>
4684
4685         PR c++/29000
4686         * pt.c (build_non_dependent_expr, type_dependent_expression_p):
4687         Look inside STMT_EXPR.
4688         * semantics.c (stmt_expr_value_expr): New fn.
4689         * cp-tree.h: Declare it.
4690
4691         PR c++/28558
4692         * decl.c (groktypename): Ignore attributes applied to class type.
4693
4694 2007-08-28  Richard Guenther  <rguenther@suse.de>
4695
4696         * decl.c (duplicate_decls): Merge DECL_DISREGARD_INLINE_LIMITS.
4697
4698 2007-08-28  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4699
4700         * error.c (dump_expr): Handle COMPLEX_CST.
4701         * cxx-pretty-print.c (pp_cxx_primary_expression): Likewise.
4702         (pp_cxx_expression): Likewise.
4703
4704 2007-08-27  Alexandre Oliva  <aoliva@redhat.com>
4705
4706         * decl.c (GNU_INLINE_P): New.
4707         (duplicate_decls): Handle gnu_inline.  Merge attributes and
4708         some flags in overriding definitions.
4709         (redeclaration_error_message): Handle gnu_inline.
4710         (start_preparsed_function): Likewise.
4711
4712 2007-08-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4713
4714         * call.c (sufficient_parms_p): Constify.
4715         * class.c (same_signature_p): Likewise.
4716         * cp-gimplify.c (is_invisiref_parm,
4717         cxx_omp_privatize_by_reference): Likewise.
4718         * cp-objcp-common.c (has_c_linkage): Likewise.
4719         * cp-tree.h (NON_THUNK_FUNCTION_CHECK, THUNK_FUNCTION_CHECK,
4720         sufficient_parms_p, same_signature_p, copy_fn_p, move_fn_p,
4721         grok_ctor_properties, nothrow_libfn_p, skip_artificial_parms_for,
4722         num_artificial_parms_for, comp_template_parms,
4723         template_parameter_pack_p, any_dependent_template_arguments_p,
4724         any_type_dependent_arguments_p, any_value_dependent_elements_p,
4725         repo_export_class_p, cxx_omp_privatize_by_reference, pod_type_p,
4726         zero_init_p, member_p, cp_lvalue_kind,
4727         builtin_valid_in_constant_expr_p, decl_anon_ns_mem_p,
4728         varargs_function_p, is_dummy_object, special_function_kind,
4729         string_conv_p, type_unknown_p, comp_except_specs, compparms,
4730         comp_cv_qualification, is_bitfield_expr_with_lowered_type,
4731         unlowered_expr_type, ptr_reasonably_similar, cp_type_readonly,
4732         cp_has_mutable_p, at_least_as_qualified_p,
4733         invalid_nonstatic_memfn_p, lvalue_or_else, lvalue_p): Likewise.
4734         * decl.c (copy_fn_p, move_fn_p, grok_ctor_properties): Likewise.
4735         * except.c (nothrow_libfn_p): Likewise.
4736         * method.c (skip_artificial_parms_for, num_artificial_parms_for):
4737         Likewise.
4738         * pt.c (comp_template_parms, template_parameter_pack_p,
4739         any_type_dependent_arguments_p, any_value_dependent_elements_p,
4740         any_dependent_template_arguments_p): Likewise.
4741         * repo.c (repo_export_class_p): Likewise.
4742         * semantics.c (anon_aggr_type_p): Likewise.
4743         * tree.c (lvalue_p_1, real_lvalue_p, lvalue_p,
4744         builtin_valid_in_constant_expr_p, decl_anon_ns_mem_p,
4745         varargs_function_p, member_p, is_dummy_object, pod_type_p,
4746         zero_init_p, special_function_p): Likewise.
4747         * typeck.c (comp_array_types, type_unknown_p, comp_except_specs,
4748         comp_array_types, at_least_as_qualified_p, comp_cv_qualification,
4749         compparms, invalid_nonstatic_memfn_p,
4750         is_bitfield_expr_with_lowered_type, unlowered_expr_type,
4751         string_conv_p, ptr_reasonably_similar, cp_type_readonly,
4752         cp_has_mutable_p, lvalue_or_else): Likewise.
4753
4754 2007-08-25  Paolo Bonzini  <bonzini@gnu.org>
4755
4756         * decl.c (cp_tree_node_structure): Kill TINST_LEVEL case.
4757         * cp-objcp-common.c (cp_tree_size): Ditto.
4758         * tree.c (cp_walk_subtrees): Ditto
4759         * cp-tree.def (TINST_LEVEL): Go away.
4760         * cp-tree.h (struct tinst_level_s): Rename to struct tinst_level,
4761         move together with other non-tree structs.
4762         (enum cp_tree_node_structure_enum): Nuke TS_CP_TINST_LEVEL.
4763         (union lang_tree_node): Eliminate tinst_level field.
4764         (TINST_DECL, TINST_LOCATION, TINST_IN_SYSTEM_HEADER_P): Annihilate.
4765         (current_instantiation, outermost_tinst_level): Return
4766         a "struct tinst_level *".
4767
4768         * error.c (print_instantiation_partial_context): Change second
4769         parameter to a "struct tinst_level *".  Replace accessor macros
4770         with field access.
4771         (print_instantiation_full_context): Likewise.
4772         * lex.c (in_main_input_context): Likewise.
4773
4774         * pt.c (struct pending_templates): New.
4775         (pending_templates, last_pending_template): Use it as a type.
4776         (current_tinst_level): Change typo to "struct tinst_level *"
4777         (reopen_tinst_level): Accept "struct tinst_level *", return decl.
4778         (add_pending_template): Construct a "struct pending_template".
4779         Replace TINST_LEVEL accessor macros with field access.
4780         (push_tinst_level): Likewise, using GGC_NEW instead of make_node.
4781         (pop_tinst_level): Likewise.
4782         (instantiate_pending_templates): Likewise.  Factor common code used
4783         when an instantiation has been done.
4784         (outermost_tinst_level): Replace tree_last with loop.
4785         (current_instantiation): Return a "struct tinst_level *".
4786
4787 2007-08-24  Ollie Wild  <aaw@google.com>
4788
4789         * name-lookup.c (add_decl_to_level): Remove addition to vtables chain.
4790         * name-lookup.h (cp_binding_level): Remove vtables member.
4791
4792 2007-08-24  Richard Guenther  <rguenther@suse.de>
4793
4794         * tree.c (cp_cannot_inline_tree_fn): Remove.
4795         * cp-tree.h (cp_cannot_inline_tree_fn): Likewise.
4796         * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN):
4797         Remove define.
4798
4799 2007-08-24  Jakub Jelinek  <jakub@redhat.com>
4800
4801         PR c++/32567
4802         * typeck.c (build_unary_op) <case PREINCREMENT_EXPR>: Return
4803         error_mark_node right away if build_expr_type_conversion
4804         returned it.
4805
4806         PR c++/32898
4807         * name-lookup.c (set_decl_namespace): lookup_qualified_name failure
4808         is error_mark_node rather than NULL_TREE.
4809         * pt.c (check_explicit_specialization): Likewise.
4810
4811         PR c++/31941
4812         * error.c (resolve_virtual_fun_from_obj_type_ref): Handle
4813         TARGET_VTABLE_USES_DESCRIPTORS targets properly.
4814
4815 2007-08-22  Jason Merrill  <jason@redhat.com>
4816
4817         PR c++/29365
4818         * pt.c (outermost_tinst_level): New function.
4819         * lex.c (in_main_input_context): New function.
4820         * cp-tree.h: Declare it.
4821         * decl2.c (constrain_class_visibility): Use it to avoid warning
4822         about uses of the anonymous namespace in the main input file.
4823
4824 2007-08-21  Jakub Jelinek  <jakub@redhat.com>
4825
4826         * init.c (build_new_1): Use get_target_expr instead of save_expr.
4827
4828 2007-08-20  Pawel Sikora  <pluto@pld-linux.org>
4829
4830         PR c++/7302
4831         * class.c (finish_struct_1): Warn when a class has virtual
4832         functions and accessible non-virtual destructor.
4833
4834 2007-08-20  Richard Guenther  <rguenther@suse.de>
4835
4836         PR c++/22369
4837         PR c++/22451
4838         * call.c (build_new_method_call): Convert initializer to
4839         the basetype.
4840         * init.c (build_aggr_init): Do not fiddle with types.
4841         (build_vec_delete_1): Use correct type for POINTER_PLUS_EXPR.
4842         * except.c (build_throw): Do not drop qualifiers for the
4843         pointer type.
4844         * typeck.c (get_member_function_from_ptrfunc): Do not
4845         fiddle with types, instead convert.
4846         (build_ptrmemfunc1): Convert to the target type for
4847         initialization.
4848         (gfc_trans_allocate): Convert result to target type.
4849         * cp-objcp-common.c (cxx_get_alias_set): Pointers to
4850         pointer-to-member structures shall have alias set zero as well.
4851
4852 2007-08-20  Richard Guenther  <rguenther@suse.de>
4853
4854         * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P):
4855         Remove.
4856         * cp-tree.h (cp_auto_var_in_fn_p): Remove.
4857         (nonstatic_local_decl_p): Likewise.
4858         * tree.c (cp_auto_var_in_fn_p): Remove.
4859         * decl.c (nonstatic_local_decl_p): Remove.
4860
4861 2007-08-20  Richard Guenther  <rguenther@suse.de>
4862
4863         * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_WALK_SUBTREES):
4864         Remove define.
4865         * tree.h (cp_walk_tree): New define to walk_tree_1 with
4866         cp_walk_subtrees lh parameter.
4867         (cp_walk_tree_without_duplicates): New define to
4868         walk_tree_without_duplicates_1 with cp_walk_subtrees lh parameter.
4869         * tree.c (count_trees): Call
4870         cp_walk_tree_without_duplicates.
4871         (verify_stmt_tree): Call cp_walk_tree.
4872         (break_out_target_exprs): Likewise.
4873         (WALK_SUBTREE): Likewise.
4874         * cp-gimplify.c (cp_genericize): Likewise.
4875         * cp-pt.c (find_parameter_packs_r): Likewise.
4876         (uses_parameter_packs): Likewise.
4877         (make_pack_expansion): Likewise.
4878         (check_for_bare_parameter_packs): Likewise.
4879         (for_each_template_parm): Likewise.
4880         * decl.c (check_default_argument): Call
4881         cp_walk_tree_without_duplicates.
4882         * except.c (build_throw): Likewise.
4883         * decl2.c (type_visibility): Likewise.
4884         * semantics.c (expand_or_defer_fn): Likewise.
4885         (finalize_nrv): Call cp_walk_tree.
4886
4887 2007-08-20  Jakub Jelinek  <jakub@redhat.com>
4888
4889         PR c++/33025
4890         * init.c (build_new_1): Rename placement_var variable to placement_expr.
4891         Initialize it with save_expr rather than get_temp_regvar.
4892
4893 2007-08-17  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4894
4895         PR c++/28989
4896         * tree.c (lvalue_p_1 <case SAVE_EXPR>): SAVE_EXPRs are never
4897         lvalues.
4898
4899 2007-08-17  Ollie Wild  <aaw@google.com>
4900
4901         PR c++/31749
4902         * name-lookup.c (do_nonmember_using_decl): Shift implicit type
4903         declarations into appropriate slots for comparison.  Fix type
4904         comparison.
4905
4906 2007-08-17  Paolo Carlini  <pcarlini@suse.de>
4907
4908         PR c++/32112
4909         * error.c (dump_decl): Deal with UNBOUND_CLASS_TEMPLATE.
4910         * cxx-pretty-print.c (pp_cxx_unqualified_id): Likewise.
4911
4912 2007-08-17  Paolo Carlini  <pcarlini@suse.de>
4913
4914         PR c++/32870
4915         * parser.c (cp_parser_class_head): Improve error message.
4916
4917 2007-08-16  Seongbae Park  <seongbae.park@gmail.com>
4918
4919         * pt.c (instantiate_decl): Set input_location
4920         for the function end.
4921
4922 2007-08-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4923
4924         * cp-objcp-common.c (cxx_warn_unused_global_decl, cp_expr_size):
4925         Constify.
4926         * cp-tree.h (local_variable_p, nonstatic_local_decl_p,
4927         class_tmpl_impl_spec_p, cp_auto_var_in_fn_p, cp_type_quals,
4928         cxx_incomplete_type_diagnostic, cxx_incomplete_type_error,
4929         cxx_warn_unused_global_decl, cp_expr_size): Likewise.
4930         * decl.c (local_variable_p, nonstatic_local_decl_p): Likewise.
4931         * tree.c (class_tmpl_impl_spec_p, cp_auto_var_in_fn_p): Likewise.
4932         * typeck.c (cp_type_quals): Likewise.
4933         * typeck2.c (cxx_incomplete_type_diagnostic,
4934         cxx_incomplete_type_error): Likewise.
4935
4936 2007-08-16  Paolo Carlini  <pcarlini@suse.de>
4937
4938         PR c++/31132
4939         * pt.c (tsubst_friend_function): When check_classfn
4940         returns error_mark_node likewise return it.
4941
4942 2007-08-15  Jakub Jelinek  <jakub@redhat.com>
4943
4944         PR c++/32992
4945         * typeck.c (check_return_expr): Don't NRV optimize vars in
4946         anonymous unions.
4947         * decl.c (finish_function): Comment fix.
4948
4949 2007-08-15  Paolo Carlini  <pcarlini@suse.de>
4950
4951         PR c++/33035
4952         * pt.c (push_template_decl_real): Depending on TYPE_P
4953         use either TYPE_CONTEXT or DECL_CONTEXT.
4954
4955 2007-08-14  Mark Mitchell  <mark@codesourcery.com>
4956
4957         * semantics.c (finish_omp_clauses): Strip a NOP_EXPR if
4958         constructors and destructors return this.
4959
4960 2007-08-14  Paolo Carlini  <pcarlini@suse.de>
4961
4962         PR c++/27211
4963         * decl2.c (check_classfn): Return error_mark_node in case of error;
4964         in that case, do not call add_method.
4965         * decl.c (start_decl): Deal with check_classfn returning
4966         error_mark_node.
4967         (grokfndecl): Likewise.
4968         * pt.c (tsubst_friend_function): Likewise.
4969
4970 2007-08-14  Andrew Pinski  <pinskia@gmail.com>
4971
4972         PR c++/30428
4973         * typeck.c (build_binary_op): Disallow vector float types with
4974         BIT_IOR_EXPR, BIT_AND_EXPR, and BIT_XOR_EXPR.
4975
4976 2007-08-11  Ian Lance Taylor  <iant@google.com>
4977
4978         * cp-objcp-common.c (cxx_get_alias_set): Change return type to
4979         alias_set_type.
4980         * cp-tree.h (cxx_get_alias_set): Update declaration.
4981
4982 2007-08-10  Ollie Wild  <aaw@google.com>
4983
4984         * name-lookup.c (do_nonmember_using_decl): Print an error for ambiguous
4985         type lookups.
4986         (ambiguous_decl): Construct tree of ambiguous types.  Remove extaneous
4987         function parameter.
4988         (unqualified_namespace_lookup): Fix ambiguous_decl call.
4989         (lookup_using_namespace): Fix ambiguous_decl call.
4990         (qualified_lookup_using_namespace): Fix ambiguous_decl call.
4991
4992 2007-08-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4993
4994         * call.c (name_as_c_string): Use CONST_CAST.
4995         * decl.c (build_decl): Likewise.
4996         * parser.c (cp_parser_string_literal): Likewise.
4997
4998 2007-08-10  Paolo Carlini  <pcarlini@suse.de>
4999
5000         PR c++/17763
5001         * error.c (dump_expr): Consistently use the *_cxx_*
5002         variants of the pretty-print functions.
5003
5004 2007-08-10  Paolo Carlini  <pcarlini@suse.de>
5005
5006         PR c++/22256
5007         * decl.c (check_special_function_return_type): Just error
5008         on return type specified for conversion operator.
5009
5010 2007-08-09  Daniel Berlin  <dberlin@dberlin.org>
5011
5012         * typeck2.c (readonly_error): Handle general expressions.
5013         * error.c (dump_expr): Handle POINTER_PLUS_EXPR
5014
5015 2007-08-06  Dan Hipschman  <dsh@google.com>
5016
5017         * method.c (use_thunk): Use DECL_NAME instead of DECL_RTL to
5018         access function name.
5019
5020 2007-08-04  Alfred Minarik  <a.minarik@aon.at>
5021
5022         PR pch/13676
5023         * lang-specs.h: Add .hp, .hxx, .hpp, .h, .HPP, .tcc as c++ header.
5024         * g++spec.c (lang_specific_driver): Check them.
5025
5026 2007-08-06  Paolo Carlini  <pcarlini@suse.de>
5027
5028         PR c++/19532
5029         * pt.c (inline_needs_template_parms): Fix comment; change return type
5030         to bool.
5031
5032 2007-08-05  Volker Reichelt  <v.reichelt@netcologne.de>
5033
5034         Revert:
5035         2007-03-26  Dirk Mueller  <dmueller@suse.de>
5036
5037         * parser.c (cp_parser_member_declaration): Pedwarn
5038         about stray semicolons after member declarations.
5039
5040 2007-08-02  Lee Millward  <lee.millward@gmail.com>
5041
5042         PR c++/30849
5043         PR c++/30850
5044         PR c++/30851
5045         * parser.c (cp_parser_asm_definition): Detect and discard asm
5046         statements with invalid inputs or outputs.
5047          (cp_parser_asm_operand_list): Return error mark node if any
5048          of the operands are invalid. Adjust documentation.
5049
5050 2007-08-02  Nick Clifton  <nickc@redhat.com>
5051
5052         * typeck.c: Change copyright header to refer to version 3 of the
5053         GNU General Public License and to point readers at the COPYING3
5054         file and the FSF's license web page.
5055         * optimize.c, lang-specs.h, init.c, class.c, repo.c, decl.c,
5056         config-lang.in, cp-tree.def, call.c, decl.h, ptree.c,
5057         Make-lang.in, method.c, rtti.c, cp-objcp-common.c, g++spec.c,
5058         cp-objcp-common.h, except.c, error.c, operators.def, cvt.c,
5059         tree.c, mangle.c, cp-tree.h, dump.c, search.c, friend.c, expr.c,
5060         cp-gimplify.c, cxx-pretty-print.c, cp-lang.c, typeck2.c, pt.c,
5061         cxx-pretty-print.h, semantics.c, name-lookup.c, lex.c, decl2.c,
5062         name-lookup.h, parser.c: Likewise.
5063
5064 2007-08-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5065
5066         PR middle-end/32668
5067         * call.c (magic_varargs_p): Honor the "type generic" attribute.
5068
5069 2007-07-30  Paolo Carlini  <pcarlini@suse.de>
5070
5071         PR c++/32108
5072         * semantics.c (finish_label_stmt): Reject the __label__
5073         extension outside function scopes.
5074
5075 2007-07-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5076
5077         * parser.c (eof_token): Un-constify.
5078         (cp_lexer_new_main, cp_lexer_new_from_tokens, VEC_alloc,
5079         cp_lexer_consume_token, cp_lexer_purge_token): Remove spurious
5080         casts.
5081
5082 2007-07-28  Kazu Hirata  <kazu@codesourcery.com>
5083
5084         * pt.c, tree.c, typeck2.c: Fix comment typos.
5085
5086 2007-07-28  Simon Martin  <simartin@users.sourceforge.net>
5087             Mark Mitchell  <mark@codesourcery.com>
5088
5089         PR c++/30917
5090         * name-lookup.c (lookup_name_real): Non namespace-scope bindings can be
5091         hidden due to friend declarations in local classes.
5092
5093 2007-07-27  Douglas Gregor  <doug.gregor@gmail.com>
5094
5095         * typeck.c (structural_comptypes): Compare DECLTYPE_TYPE nodes.
5096         * cp-tree.def (DECLTYPE_TYPE): New.
5097         * error.c (dump_type): Dump DECLTYPE_TYPE nodes.
5098         (dump_type_prefix): Ditto.
5099         (dump_type_suffix): Ditto.
5100         * tree.c (DECLTYPE_TYPE): Walk DECLTYPE_TYPE nodes.
5101         * mangle.c (write_type): Handle DECLTYPE_TYPE.
5102         * cp-tree.h (IS_AGGR_TYPE): DECLTYPE_TYPE nodes can be aggregate
5103         types.
5104         (DECLTYPE_TYPE_EXPR): New.
5105         (DECLTYPE_TYPE_ID_EXPR_OR_MEMBER_ACCESS_P): New.
5106         (finish_declared_type): Declare.
5107         * cxx-pretty-print.c (pp_cxx_type_specifier_seq): Print
5108         DECLTYPE_TYPE nodes.
5109         (pp_cxx_type_id): Ditto.
5110         * pt.c (for_each_template_parm_r): Walk DECLTYPE_TYPE children.
5111         (tsubst): Substitute into a DECLTYPE_TYPE node.
5112         (tsubst_copy): Ditto.
5113         (unify): Cannot deduce anything from TYPEOF_TYPE or DECLTYPE_TYPE
5114         nodes.
5115         (dependent_type_p_r): DECLTYPE_TYPE types are always dependent.
5116         * semantics.c (finish_typeof): TYPEOF_TYPE types need to use
5117         structural equality (because we can't hash the expressions).
5118         (finish_declared_type): New.
5119         * lex.c (reswords): Add "decltype" keyword.
5120         * parser.c cp_lexer_next_token_is_decl_specifier_keyword
5121         (cp_parser_postfix_expression): Add member_access_only_p to
5122         restrict postfix expression to member access expressions.
5123         (cp_parser_unary_expression): Update call to
5124         cp_parser_postfix_expression to reflect new parameter.
5125         (cp_parser_declared_type): New.
5126         (cp_parser_simple_type_specifier): Parse decltype types.
5127
5128 2007-07-27  Mark Mitchell  <mark@codesourcery.com>
5129
5130         PR c++/32346
5131         * call.c (convert_for_arg_passing): Only widen bitfields to their
5132         declared types if necessary.
5133
5134 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5135
5136         * parser.c (cp_parser_string_literal, cp_parser_sizeof_operand):
5137         Constify.
5138
5139 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5140
5141         * decl.c (typename_hash, typename_compare): Constify.
5142         * mangle.c (hash_type, compare_type): Likewise.
5143         * pt.c (eq_local_specializations, hash_local_specialization):
5144         Likewise.
5145         * tree.c (cplus_array_hash, cplus_array_compare, list_hash_eq,
5146         list_hash): Likewise.
5147         * typeck2.c (pat_compare): Likewise.
5148
5149 2007-07-24  Nathan Sidwell  <nathan@codesourcery.com>
5150
5151         * method.c (implicitly_declare_fn): Increase alignment if member
5152         function pointer format requires it.
5153
5154 2007-07-24  Paolo Carlini  <pcarlini@suse.de>
5155
5156         PR c++/29001
5157         * typeck.c (check_return_expr): Do not pass a null argument
5158         to null_ptr_cst_p.
5159
5160 2007-07-24  Paolo Carlini  <pcarlini@suse.de>
5161
5162         PR c++/32561
5163         * decl.c (redeclaration_error_message): Call DECL_ANON_UNION_VAR_P
5164         only on VAR_DECL.
5165
5166 2007-07-22  Nathan Sidwell  <nathan@codesourcery.com>
5167
5168         PR c++/32839
5169         * typeck.c (convert_arguments): Only use default args if we have
5170         a function decl.
5171
5172         PR c++/30818
5173         * typeck.c (structural_comptypes): No need to check
5174         resolve_typename_type return value here.
5175         * cp-tree.h (TYPENAME_IS_RESOLVING_P): New.
5176         * pt.c (resolve_typename_type): Follow typename typedefs.  Return
5177         original type rather than error_mark_node in case of failure.
5178         * parser.c (cp_parser_nested_name_specifier_opt): Adjust
5179         resolve_typename_type result check.
5180         (cp_parser_direct_declarator, cp_parser_head,
5181         cp_parser_constructor_declarator_p): Likewise.
5182
5183 2007-07-12  Kazu Hirata  <kazu@codesourcery.com>
5184
5185         * pt.c (template_parms_variadic_p): Remove.
5186         * cp-tree.h: Remove the prototype for template_parms_variadic_p.
5187
5188 2007-07-12  Jakub Jelinek  <jakub@redhat.com>
5189
5190         PR c++/30854
5191         * error.c (dump_expr) <case AGGR_INIT_EXPR>: Pass true as last
5192         argument to dump_aggr_init_expr_args instead of false.
5193
5194 2007-07-11  Douglas Gregor  <doug.gregor@gmail.com>
5195
5196         * typeck.c (comptypes): When USE_CANONICAL_TYPES, use the
5197         canonical types; otherwise, fall back to structural type
5198         comparisons. If ENABLE_CHECKING and USE_CANONICAL_TYPES, give an
5199         internal compiler error if the canonical types are wrong.
5200
5201 2007-07-11  Paolo Carlini  <pcarlini@suse.de>
5202
5203         PR c++/32560
5204         * parser.c (cp_parser_make_indirect_declarator): When the
5205         the code argument is ERROR_MARK return cp_error_declarator.
5206
5207 2007-07-09  Geoffrey Keating  <geoffk@apple.com>
5208
5209         PR 32617
5210         * decl.c (cxx_init_decl_processing): Don't set
5211         force_align_functions_log.
5212         (grokfndecl): Honour ptrmemfunc_vbit_in_pfn.
5213         * typeck.c (cxx_alignof_expr): When alignof is used on a plain
5214         FUNCTION_DECL, return its alignment.
5215
5216 2007-07-09  Richard Guenther  <rguenther@suse.de>
5217
5218         * decl.c (start_preparsed_function): Do not promote return type.
5219
5220 2007-07-08  Paolo Carlini  <pcarlini@suse.de>
5221
5222         PR c++/30535
5223         * pt.c (unify): Never pass error_mark_node to template_decl_level.
5224
5225 2007-07-07  Mark Mitchell  <mark@codesourcery.com>
5226
5227         PR c++/32232
5228         * pt.c (resolve_overloaded_unification): Robustify.  Return a
5229         bool, not an int.
5230         (type_unification_real): Adjust accordingly.
5231
5232 2007-07-06  Richard Guenther  <rguenther@suse.de>
5233
5234         * init.c (build_new_1): Use the correct pointer type.
5235         * typeck2.c (build_m_component_ref): Likewise.
5236
5237 2007-07-05  Mark Mitchell  <mark@codesourcery.com>
5238
5239         PR c++/32245
5240         * init.c (build_zero_init): Always build an initializer for
5241         non-static storage.
5242         * typeck2.c (build_functional_cast): Use build_zero_init.
5243
5244         PR c++/32251
5245         * init.c (build_new_1): Always pass the allocation function to
5246         build_op_delete_call.
5247         * call.c (build_op_delete_call): Handle operator delete with a
5248         variable-argument list.  Do not issue an error when no matching
5249         deallocation function is available for a new operator.
5250
5251         PR c++/31992
5252         * cp-tree.h (any_value_dependent_elements_p): Declare it.
5253         * decl.c (value_dependent_init_p): New function.
5254         (cp_finish_decl): Use it.
5255         * pt.c (value_dependent_expression_p): Use
5256         any_value_dependent_elements_p.
5257         * parser.c (cp_parser_primary_expression): Add comment about
5258         treating dependent qualified names as integral
5259         constant-expressions.
5260
5261 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
5262
5263         * decl.c (build_ptrmemfunc_type): Always use structural equality
5264         tests when comparing pointer-to-member-function types, because the
5265         handling of TYPE_GET_PTRMEMFUNC_TYPE currently defeats canonical
5266         types.
5267
5268 2007-07-03  Mark Mitchell  <mark@codesourcery.com>
5269
5270         * init.c (build_new): Tweak comment.
5271
5272 2007-06-29  Dave Brolley  <brolley@redhat.com>
5273
5274         PR c++/31743
5275         * parser.c (cp_parser_new_type_id): Don't reduce a named array
5276         type to its base type and number of elements here.
5277         * init.c (build_new): Call complete_type_or_else to ensure that the
5278         type is complete and to issue a diagnostic if it is not.
5279         (build_new_1): Don't call complete_type_or_else here.
5280
5281 2007-07-03  Richard Guenther  <rguenther@suse.de>
5282
5283         PR c++/32609
5284         * class.c (fixed_type_or_null): Re-lookup the hashtable slot
5285         after recursing.
5286
5287 2007-07-02  Simon Baldwin  <simonb@google.com>
5288
5289         * parser.c (cp_parser_elaborated_type_specifier): Added a warning
5290         for inner-style nested forward declarations that don't declare
5291         anything useful.
5292
5293 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
5294
5295         PR c++/31748
5296         * semantics.c (finish_omp_clauses): Use %qD instead of %qE for
5297         DECL_P in not a variable and appears more than once error messages.
5298
5299 2007-07-01  Ollie Wild  <aaw@google.com>
5300
5301         * name-lookup.c (ambiguous_decl): Fix case when new->value is hidden.
5302         (select_decl): Remove function.
5303         (unqualified_namespace_lookup): Populate binding by calling
5304         ambiguous_decl.  Remove select_decl call.
5305         (lookup_qualified_name): Remove select_decl call.
5306         * decl.c (lookup_and_check_tag): Check for ambiguous references.
5307         * parser.c (cp_parser_elaborated_type_specifier): Skip redundant error
5308         generation when name lookup is ambiguous.
5309
5310 2007-06-29  Douglas Gregor  <doug.gregor@gmail.com>
5311
5312         PR c++/31724
5313         * init.c (build_new_1): Use structural equality on the copy of the
5314         array type.
5315
5316 2007-06-28  Geoffrey Keating  <geoffk@apple.com>
5317
5318         * decl2.c (determine_visibility): Implement
5319         flag_visibility_ms_compat effect on type info.
5320         * decl.c (cxx_init_decl_processing): Implement
5321         global effect of flag_visibility_ms_compat.
5322
5323 2007-06-28  Geoffrey Keating  <geoffk@apple.com>
5324
5325         * decl2.c (start_objects): Mark constructor-running function
5326         as artificial.
5327
5328 2007-06-26  Simon Martin  <simartin@users.sourceforge.net>
5329
5330         PR c++/32111
5331         * decl.c (grokdeclarator): Reset friendp for member functions declared
5332         friend of their own class.
5333
5334 2007-06-23  Mark Mitchell  <mark@codesourcery.com>
5335
5336         * decl2.c (determine_visibility): Don't look for dllexport here.
5337         (determine_visibility_from_class): Tidy.
5338
5339 2007-06-18  Simon Baldwin <simonb@google.com>
5340
5341         PR c++/31923
5342         * parser.c (cp_parser_single_declaration): Added check for storage
5343         class other than sc_none in parsed declaration, and a flag to indicate
5344         if the call is part of an explicit template specialization parse.
5345         * (cp_parser_explicit_specialization): Specialization check flag added
5346         to call to cp_parser_single_declaration(), set true.
5347         * (cp_parser_template_declaration_after_export): Specialization check
5348         flag added to call to cp_parser_single_declaration(), set false.
5349         * pt.c (check_explicit_specialization): Added code to copy visiblity
5350         and linkage from the templated function to the explicit specialization.
5351
5352 2007-06-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5353
5354         * typeck.c (build_binary_op): For templates build the
5355         expression in pieces to avoid the assert in build2_stat.
5356         (get_member_function_from_ptrfunc):
5357         Change over to using POINTER_PLUS_EXPR and convert
5358         the second operand to sizetype.
5359         * typeck2.c (build_m_component_ref):  Likewise.
5360         * init.c (expand_virtual_init): Create a POINTER_PLUS_EXPR
5361         instead of PLUS_EXPR for pointers.
5362         (build_new_1): Likewise.
5363         (build_vec_delete_1): Likewise.
5364         (build_vec_delete): Likewise.
5365         * class.c (build_base_path): Likewise.
5366         (build_base_path): Likewise.
5367         (convert_to_base_statically): Likewise.
5368         (fixed_type_or_null): Handle POINTER_PLUS_EXPR.
5369         (get_vtbl_decl_for_binfo): Handle POINTER_PLUS_EXPR
5370         instead of PLUS_EXPR.
5371         (dfs_accumulate_vtbl_inits): Create a POINTER_PLUS_EXPR
5372         instead of PLUS_EXPR for pointers.
5373         * call.c (build_special_member_call): Likewise.
5374         * rtti.c (build_headof): Likewise.
5375         Use sizetype instead of ptrdiff_type_node.
5376         (tinfo_base_init): Create a POINTER_PLUS_EXPR
5377         instead of PLUS_EXPR for pointers.
5378         * except.c (expand_start_catch_block):  Do a
5379         NEGATIVE and then a POINTER_PLUS_EXPR instead
5380         of a MINUS_EXPR.
5381         * cp-gimplify.c (cxx_omp_clause_apply_fn): Convert
5382         PLUS_EXPR on pointer types over to use
5383         POINTER_PLUS_EXPR and remove the conversion
5384         to the pointer types.
5385         * method.c (thunk_adjust): Use POINTER_PLUS_EXPR for
5386         adding to a pointer type. Use size_int instead of
5387         ssize_int. Convert the index to sizetype before
5388         adding it to the pointer.
5389
5390 2007-06-15  Mark Mitchell  <mark@codesourcery.com>
5391
5392         * cp-tree.h (DECL_VAR_MARKED_P): Remove.
5393         (DECL_ANON_UNION_VAR_P): New macro.
5394         * class.c (fixed_type_or_null): Tidy.  Use a hash table, rather
5395         than DECL_VAR_MARKED_P, to keep track of which variables we have
5396         seen.
5397         * decl.c (redeclaration_error_message): Complain about redeclaring
5398         anonymous union members at namespace scope.
5399         * decl2.c (build_anon_union_vars): Set DECL_ANON_UNION_VAR_P.
5400
5401 2007-06-14  Geoff Keating  <geoffk@apple.com>
5402
5403         * decl2.c (determine_visibility): Ensure that functions with
5404         hidden types as parameters are hidden.
5405
5406         PR 31093
5407         * decl2.c (determine_visibility): Remove duplicate code for
5408         handling type info.
5409
5410 2007-06-12  Ian Lance Taylor  <iant@google.com>
5411
5412         PR libstdc++/29286
5413         * init.c (avoid_placement_new_aliasing): New static function.
5414         (build_new_1): Call it.
5415
5416 2007-06-11  Rafael Ávila de Espíndola  <espindola@google.com>
5417
5418         * cp-objcp-common.h (LANG_HOOKS_SIGNED_TYPE): Remove.
5419         (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
5420
5421 2007-06-08  Jakub Jelinek  <jakub@redhat.com>
5422
5423         PR c++/32177
5424         * semantics.c (finish_omp_for): Call fold_build_cleanup_point_expr
5425         on init, the non-decl cond operand and increment value.
5426
5427 2007-06-07  Simon Martin  <simartin@users.sourceforge.net>
5428
5429         PR c++/30759
5430         * decl.c (check_initializer): Report an error when a brace enclosed
5431         initializer is used for a non-aggregate type in C++98.
5432         (redeclaration_error_message): Rewrote flag_cpp0x in terms of
5433         cxx_dialect.
5434         (grokdeclarator): Likewise.
5435         (move_fn_p): Likewise.
5436         * typeck.c (check_return_expr): Likewise.
5437         * call.c (reference_binding): Likewise.
5438         * error.c (cp_cpp_error): Likewise.
5439         * pt.c (check_default_tmpl_args): Likewise.
5440         (tsubst): Likewise.
5441         * lex.c (init_reswords): Likewise.
5442         * parser.c (p_parser_primary_expression): Likewise.
5443         (TOKEN_PRECEDENCE): Likewise.
5444         (cp_parser_init_declarator): Likewise.
5445         (cp_parser_ptr_operator): Likewise.
5446         (cp_parser_parameter_declaration): Likewise.
5447         (cp_parser_enclosed_template_argument_list): Likewise.
5448         (cp_parser_skip_to_end_of_template_parameter_list): Likewise.
5449         (cp_parser_next_token_ends_template_argument_p): Likewise.
5450
5451 2007-06-04  Simon Baldwin  <simonb@google.com>
5452
5453         * decl.c (grokdeclarator): Readability change.  Moved case labels
5454         into direct switch statement scope.
5455
5456 2007-06-04  Paolo Carlini  <pcarlini@suse.de>
5457
5458         * call.c (convert_like_real): Remove pointless code.
5459
5460 2007-05-31  Mark Mitchell  <mark@codesourcery.com>
5461
5462         * decl.c (get_atexit_fn_ptr_type): New function.
5463         (get_atexit_node): Use it.
5464         (start_cleanup_fn): Likewise.
5465         (register_dtor_fn): Use the object's destructor, instead of a
5466         separate cleanup function, where possible.
5467         * cp-tree.h (CPTI_ATEXIT_FN_PTR_TYPE): New enumerator.
5468         (atexit_fn_ptr_type_node): New macro.
5469         * decl2.c (build_cleanup): Use build_address.
5470
5471 2007-05-31  Daniel Berlin  <dberlin@dberlin.org>
5472
5473         * typeck.c (build_binary_op): Include types in error.
5474
5475 2007-05-31  Jakub Jelinek  <jakub@redhat.com>
5476
5477         PR c++/31806
5478         * decl.c (cp_finish_decl): Also clear was_readonly if a static var
5479         needs runtime initialization.
5480
5481 2007-05-31  Paolo Carlini  <pcarlini@suse.de>
5482
5483         PR c++/32158
5484         * semantics.c (finish_trait_expr): Complete the types.
5485
5486 2007-05-30  Russell Yanofsky <russ@yanofsky.org>
5487              Douglas Gregor <doug.gregor@gmail.com>
5488              Pedro Lamarao <pedro.lamarao@mndfck.org>
5489              Howard Hinnant <howard.hinnant@gmail.com>
5490
5491         PR c++/7412
5492         PR c++/29939
5493         * typeck.c (comptypes): Don't consider rvalue and lvalue
5494         reference types to be equivalent.
5495         (check_return_expr): Move from certain lvalues when returning
5496         them.
5497         * decl.c (grokdeclarator): Implement reference collapsing.
5498         (copy_fn_p): Don't consider constructors taking rvalue references
5499         to be copy constructors.
5500         (move_fn_p): New.
5501         * call.c (conversion): New "rvaluedness_matches_p" member.
5502         (convert_class_to_reference): Require reference type as first
5503         parameter instead of base type.
5504         (reference_binding): Add logic to handle rvalue references.
5505         (implicit_conversion): Update inaccurate comment.
5506         (convert_like_real): Disable creation of temporaries that are
5507         impossible to initialize for types with move constructors.
5508         (build_over_call): Elide move constructors when possible.
5509         (maybe_handle_implicit_object): Set "rvaluedness_matches_p".
5510         (maybe_handle_ref_bind): Return conversion instead of type node.
5511         (compare_ics): Add logic to use "rvaluedness_matches_p" values to
5512         determine preferred conversion sequences.
5513         * cp-tree.h (TYPE_REF_IS_RVALUE): New.
5514         (LOOKUP_PREFER_RVALUE): New.
5515         (DECL_MOVE_CONSTRUCTOR_P): New.
5516         (struct cp_declarator): Add "reference" member for reference
5517         types, with new "rvalue_ref" flag.
5518         (cp_build_reference_type): Declare.
5519         (move_fn_p): Declare.
5520         * error.c (dump_type_prefix): Format rvalue reference types
5521         correctly in error messages.
5522         * except.c (build_throw): Move from certain lvalues when
5523         throwing.
5524         * mangle.c (write_type): Mangle rvalue references differently
5525         than regular references.
5526         * parser.c (make_reference_declarator): Add boolean parameter for
5527         rvalue references.
5528         (cp_parser_make_indirect_declarator): New.
5529         (cp_parser_new_declarator_opt): Call
5530         cp_parser_make_indirect_declarator.
5531         (cp_parser_conversion_declarator_opt): Ditto.
5532         (cp_parser_declarator): Ditto.
5533         (cp_parser_ptr_operator): Parse "&&" tokens into rvalue reference
5534         declarators.
5535         * pt.c (tsubst): Implement reference collapsing.
5536         (maybe_adjust_types_for_deduction): Implement special template
5537         parameter deduction rule for rvalue references.
5538         (type_unification_real): Update calls to
5539         maybe_adjust_types_for_deduction.
5540         (try_one_overload): Ditto.
5541         (unify_pack_expansion): Ditto.
5542         * tree.c (lvalue_p_1): Handle rvalue reference types.
5543         (cp_build_reference_type): New.
5544
5545 2007-05-30  Jakub Jelinek  <jakub@redhat.com>
5546
5547         PR c++/31809
5548         * decl.c (cp_finish_decl): Clear TREE_READONLY flag on TREE_STATIC
5549         variables that need runtime initialization.
5550
5551 2007-05-28  Andrew Pinski  <Andrew_pinski@playstation.sony.com>
5552
5553         PR c++/31339
5554         * typeck.c (build_unary_op <case PREINCREMENT_EXPR,
5555         case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,
5556         case POSTDECREMENT_EXPR>): Return the error_mark_node
5557         if either the real or imaginary parts would an
5558         error_mark_node.
5559
5560 2007-05-25  Simon Martin  <simartin@users.sourceforge.net>
5561             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5562
5563         PR c++/31745
5564         * parser.c (cp_parser_skip_to_closing_brace): Return true if the next
5565         token is a closing brace, false if there are no tokens left.
5566         (cp_parser_namespace_alias_definition): Only consume the next token if
5567         it is a closing brace.
5568
5569         * parser.c (cp_parser_class_specifier): Likewise.
5570
5571 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
5572
5573         * semantics.c (finish_member_declaration): Fix a typo in the
5574         last checkin.
5575
5576 2007-05-25  Douglas Gregor <doug.gregor@gmail.com>
5577
5578         PR c++/31431
5579         PR c++/31432
5580         PR c++/31434
5581         PR c++/31435
5582         PR c++/31437
5583         PR c++/31438
5584         PR c++/31442
5585         PR c++/31443
5586         PR c++/31444
5587         PR c++/31445
5588         * error.c (dump_type): Dump TYPE_ARGUMENT_PACK nodes.
5589         * cp-tree.h (check_for_bare_parameter_packs): Returns bool.
5590         * pt.c (check_for_bare_parameter_packs): Return bool indicated
5591         whether everything was okay. Fix indentation.
5592         (push_template_decl_real): Check for bare parameter packs in
5593         function parameters; where errors occur, mark the parameter types
5594         with ERROR_MARK_NODEs to avert ICEs.
5595         (coerce_template_parameter_pack): New.
5596         (coerce_template_parms): Moved parameter pack coercion into
5597         coerce_template_parameter_pack, and permit it anywhere in the
5598         template parameter list (not just at the end). Parameter and
5599         argument indices can vary (somewhat) separately now, so add
5600         PARM_IDX and ARG_IDX.
5601         (fn_type_unification): Don't set an argument pack as incomplete if
5602         no argument pack was deduced.
5603         (type_unification_real): If a type parameter is a parameter pack
5604         and has not otherwise been deduced, it will be deduced to an empty
5605         parameter pack.
5606         (more_specialized_fn): Use the actual lengths of the argument
5607         lists when comparing against expansions.
5608         * semantics.c (finish_member_declaration): If a field's type has
5609         bare parameter packs, error and set its type to ERROR_MARK_NODE.
5610
5611 2007-05-24  Danny Smith  <dannysmith@users.sourceforge.net>
5612
5613         PR target/27067
5614         * mangle.c (mangle_decl): Call targetm.mangle_decl_assembler_name.
5615
5616 2007-05-22  Ollie Wild  <aaw@google.com>
5617
5618         * name-lookup.c (ambiguous_decl): Adds check for hidden types.
5619         (unqualified_namespace_lookup): Adds check for hidden types.
5620
5621 2007-05-22  Ollie Wild  <aaw@google.com>
5622
5623         * decl.c (duplicate_decls): Verify namespace names are unique.
5624
5625 2007-05-21  Mark Mitchell  <mark@codesourcery.com>
5626
5627         * decl.c (cxx_maybe_build_cleanup): Handle
5628         __attribute__((cleanup)).
5629
5630 2007-05-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5631
5632         * cvt.c (cp_convert_and_check): Don't check warnings if the
5633         conversion failed.
5634
5635 2007-05-18  Geoffrey Keating  <geoffk@apple.com>
5636
5637         * mangle.c (write_real_cst): Use 'unsigned long' for %lx.
5638
5639 2007-05-14  Paolo Carlini  <pcarlini@suse.de>
5640
5641         PR c++/29928
5642         * rtti.c (get_tinfo_decl_dynamic, get_typeid): Try to complete the
5643         type only if is a class type (5.2.8/4).
5644
5645 2007-05-14  Rafael Ávila de Espíndola  <espindola@google.com>
5646
5647         * cp-objcp-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
5648         * decl.c (grokdeclarator): Use unsigned_type_for instead of
5649         c_common_unsigned_type.
5650
5651 2007-05-11  Silvius Rus  <rus@google.com>
5652
5653         * typeck.c (build_indirect_ref): Add call to
5654         strict_aliasing_warning.
5655         (build_reinterpret_cast_1): Condition call to
5656         strict_aliasing_warning.
5657
5658 2007-05-11  Jan Hubicka  <jh@suse.cz>
5659
5660         * semantics.c (expand_or_defer_fn): Do not call c_record_cdtor_fn.
5661         * decl2.c (start_objects): ctors and dtors are no longer public.
5662         (cp_write_global_declarations): Do not call c_build_cdtor_fns.
5663
5664 2007-05-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5665
5666         * typeck.c (build_unary_op): Remove code that used to
5667         handle non lvalue increments/decrements.
5668
5669 2007-05-07  Mike Stump  <mrs@apple.com>
5670
5671         * parser.c (check_empty_body): Add.
5672         (cp_parser_iteration_statement): Add call to check_empty_body.
5673
5674 2007-05-05  Geoffrey Keating  <geoffk@apple.com>
5675
5676         PR 31775
5677         * mangle.c (write_mangled_name): Mangle static variable names.
5678         (write_unqualified_name): Use local-source-name for
5679         namespace-scope static variables.
5680
5681 2007-05-04  Dirk Mueller  <dmueller@suse.de>
5682
5683         * cp-tree.h (DECL_MAIN_P): only if -ffreestanding is
5684         not in effect.
5685
5686 2007-05-02  Seongbae Park  <seongbae.park@gmail.com>
5687
5688         PR c++/31663
5689         * decl2.c (constrain_class_visibility):
5690         Use strip_pointer_or_array_types instead of strip_array_types.
5691
5692 2007-04-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5693
5694         PR C++/30221
5695         * decl.c (reshape_init_r): Don't reshape the first element if it
5696         is a pointer to member function.
5697
5698 2007-04-27  Simon Baldwin  <simonb@google.com>
5699
5700         * decl.c (grokparms): Changed message format from %qD to %qE.
5701
5702 2007-04-27  Douglas Gregor  <doug.gregor@gmail.com>
5703
5704         * error.c (maybe_warn_variadic_templates): Variadic templates are
5705         now in C++0x, so only warn about them in C++98 mode.
5706
5707 2007-04-26  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5708
5709         PR C++/30016
5710         * typeck.c (build_reinterpret_cast_1): Only allow conversion to
5711         integeral types from vectors types.
5712
5713 2007-04-26  Jakub Jelinek  <jakub@redhat.com>
5714
5715         PR c++/31598
5716         * semantics.c (finish_omp_clauses): Don't create CP_OMP_CLAUSE_INFO
5717         for type dependent OMP_CLAUSE_DECLs.
5718
5719 2007-04-24  Mark Mitchell  <mark@codesourcery.com>
5720
5721         PR c++/31338
5722         * cp-tree.h (ARITHMETIC_TYPE): Include COMPLEX_TYPE.
5723         * typeck.c (type_after_usual_arithmetic_conversions): Adjust, as
5724         COMPLEX_TYPE is now an ARITHMETIC_TYPE.
5725         * init.c (build_zero_init): Adjust, as
5726         COMPLEX_TYPE is now a SCALAR_TYPE.
5727         * typeck2.c (digest_init): Allow brace-enclosed initializers for
5728         COMPLEX_TYPE, even though that is now a SCALAR_TYPE.
5729
5730 2007-04-25  Paolo Carlini  <pcarlini@suse.de>
5731
5732         * semantics.c (classtype_has_nothrow_copy_or_assign_p): Adjust
5733         per N2255; rename as classtype_has_nothrow_assign_or_copy_p.
5734         (trait_expr_value): Adjust.
5735
5736 2007-04-23  Simon Baldwin  <simonb@google.com>
5737
5738         * decl.c (grokparms): Added new error for duplicate function
5739         parameters names in function prototypes, to match gcc behavior.
5740
5741 2007-04-23  Jan Hubicka  <jh@suse.cz>
5742
5743         * decl2.c (finish_objects): Do not call target constructor/destructor
5744         bits dirrectly.
5745
5746 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5747
5748         * cp-tree.h (lang_tree_node): Use GENERIC_NEXT
5749         instead of checking GIMPLE_STMT_P in chain_next.
5750
5751 2007-04-17  Mark Mitchell  <mark@codesourcery.com>
5752
5753         PR c++/31513
5754         * call.c (convert_for_arg_passing): Convert bitfields to their
5755         declared types.
5756
5757 2007-04-17  Simon Martin  <simartin@users.sourceforge.net>
5758
5759         PR c++/31517
5760         * pt.c (value_dependent_expression_p): Handle MODOP_EXPRs.
5761
5762 2007-04-16  Seongbae Park <seongbae.park@gmail.com>
5763
5764         PR c++/29365
5765         * decl2.c (constrain_class_visibility):
5766         Do not warn about the use of anonymous namespace in the main input file.
5767
5768 2007-04-15  Mark Mitchell  <mark@codesourcery.com>
5769
5770         * cp-tree.h (current_template_parms): Fix typo in comment.
5771
5772 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
5773
5774         * cp-tree.h, error.c: Fix comment typos.
5775
5776 2007-04-13  Jason Merrill  <jason@redhat.com>
5777
5778         PR c++/31074
5779         * call.c (reference_binding): Add c_cast_p parm.  If true,
5780         add quals to TO as needed to make it reference-compatible.
5781
5782 2007-04-11  Jan Hubicka  <jh@suse.cz>
5783
5784         * class.c (convert_to_base_statically): Fold produced tree; verify
5785         that we are not processing template_decl.
5786
5787 2007-04-09  Mark Mitchell  <mark@codesourcery.com>
5788
5789         PR c++/31449
5790         * class.c (build_base_path): Ensure that the converted pointer has
5791         the same cv-qualification as the input.
5792
5793 2007-04-09  Paolo Carlini  <pcarlini@suse.de>
5794
5795         * tree.c (cp_tree_equal): Deal with TRAIT_EXPR.
5796
5797 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
5798
5799         * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS):
5800         Do not set it.
5801         (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do not set it.
5802         * tree.c (cp_add_pending_fn_decls): Remove.
5803         * cp-tree.h (cp_add_pending_fn_decls): Remove prototype.
5804
5805 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
5806
5807         Revert change removing staticp.
5808
5809 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
5810
5811         * cp-objcp-common.c (cxx_staticp): Remove.
5812         * cp-objcp-common.h (LANG_HOOKS_STATICP): Remove.
5813         * cp-tree.h (cxx_staticp):
5814
5815 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
5816
5817         * class.c (check_for_override): Don't remove dllmport attribute
5818         of virtual methods.
5819
5820 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
5821
5822         PR c++/30847
5823         * typeck.c (build_modify_expr): For COND_EXPR on LHS, if RHS has void
5824         type issue error and return early.
5825
5826 2007-03-30  Jason Merrill  <jason@redhat.com>
5827
5828         PR c++/31187
5829         * typeck.c (cp_type_readonly): New fn.
5830         * cp-tree.h: Declare it.
5831         * decl.c (start_decl): Set implicit DECL_THIS_STATIC here.
5832         (cp_finish_decl): Not here.
5833
5834 2007-03-31  Richard Guenther  <rguenther@suse.de>
5835
5836         * optimize.c (maybe_clone_body): Replace splay-tree usage by
5837         pointer-map.
5838
5839 2007-03-31  Douglas Gregor  <doug.gregor@gmail.com>
5840
5841         PR c++/31138
5842         PR c++/31140
5843         PR c++/31141
5844         * parser.c (declarator_can_be_parameter_pack): New.
5845         (cp_parser_template_parameter): Only parse the `...' if the
5846         declarator can be a parameter pack.
5847         (cp_parser_parameter_declaration): Ditto. Also, handle when TYPE
5848         is NULL.
5849         * pt.c (find_parameter_packs_r): Look into the bounds on integer
5850         types (they could be used as array bounds).
5851         (check_for_bare_parameter_packs): Deal with TEMPLATE_PARM_INDEX.
5852         (tsubst_pack_expansion): Handle failure to expand parameter
5853         packs.
5854
5855 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
5856
5857         PR c++/26099
5858         * cp-tree.h (enum cp_trait_kind, struct tree_trait_expr,
5859         TRAIT_EXPR_TYPE1, TRAIT_EXPR_TYPE2, TRAIT_EXPR_KIND): Add.
5860         (enum cp_tree_node_structure_enum, union lang_tree_node): Update.
5861         (CLASS_TYPE_NON_UNION_P): Add.
5862         (struct lang_type_class): Add has_complex_dflt.
5863         (TYPE_HAS_COMPLEX_DFLT, TYPE_HAS_TRIVIAL_DFLT): Add.
5864         (locate_copy, locate_ctor, locate_dtor, finish_trait_expr): Declare.
5865         * cp-tree.def: Add TRAIT_EXPR.
5866         * cp-objcp-common.c (cp_tree_size): Add TRAIT_EXPR case.
5867         * lex.c (struct resword): Add __has_nothrow_assign,
5868         __has_nothrow_constructor, __has_nothrow_copy, __has_trivial_assign,
5869         __has_trivial_constructor, __has_trivial_copy,
5870         __has_trivial_destructor, __has_virtual_destructor, __is_abstract,
5871         __is_base_of, __is_class, __is_convertible_to, __is_empty, __is_enum,
5872         __is_pod, __is_polymorphic, __is_union.
5873         * parser.c (cp_parser_primary_expression): Deal with the new RIDs.
5874         (cp_parser_trait_expr): New.
5875         * semantics.c (finish_trait_expr, trait_expr_value
5876         classtype_has_nothrow_copy_or_assign_p): New.
5877         * method.c (locate_copy, locate_ctor, locate_dtor): Do not define
5878         as static.
5879         * decl.c (cp_tree_node_structure): Add TRAIT_EXPR.
5880         * class.c (check_bases, check_field_decl, check_bases_and_members):
5881         Deal with TYPE_HAS_COMPLEX_DFLT (t) too.
5882         * pt.c (uses_template_parms, tsubst_copy_and_build,
5883         value_dependent_expression_p, type_dependent_expression_p): Deal with
5884         TRAIT_EXPR.
5885         * tree.c (cp_walk_subtrees): Deal with TRAIT_EXPR.
5886
5887 2007-03-29  Richard Guenther  <rguenther@suse.de>
5888
5889         * tree.c (cp_walk_subtrees): Do not set input_location.
5890
5891 2007-03-28  Simon Martin  <simartin@users.sourceforge.net>
5892
5893         PR c++/29077
5894         * decl.c (grokfndecl): Properly setup decl if it is a constructor or a
5895         destructor.
5896
5897 2007-03-28 Douglas Gregor <doug.gregor@gmail.com>
5898
5899         * parser.c (struct cp_parser): Update comment for
5900         greater_than_is_operator_p.
5901         (cp_parser_primary_expression): In C++0x mode, a cast operator can
5902         be terminated with a `>>' token when !GREATER_THAN_IS_OPERATOR_P.
5903         (TOKEN_PRECEDENCE): In C++0x mode, `>>' is treated like `>' when
5904         !GREATER_THAN_IS_OPERATOR_P.
5905         (cp_parser_binary_expression): When -Wc++0x-compat, warn about
5906         `>>' operators that will become two `>' tokens in C++0x.
5907         (cp_parser_parameter_declaration): Treat `>>' like `>' in C++0x
5908         mode, allowing it to terminate default arguments.
5909         (cp_parser_enclosed_template_argument_list): In C++0x mode, treat
5910         `>>' like two consecutive `>' tokens.
5911         (cp_parser_skip_to_end_of_template_parameter_list): Ditto.
5912         (cp_parser_next_token_ends_template_argument_p): In C++0x, `>>'
5913         ends a template argument.
5914
5915 2007-03-28  Douglas Gregor  <doug.gregor@gmail.com>
5916
5917         * decl.c (redeclaration_error_message): Complain when redeclaring
5918         a friend function with default template arguments (C++0x mode only).
5919         * cp-tree.h (check_default_tmpl_args): Declare.
5920         * pt.c (check_default_tmpl_args): In C++0x mode, permit default
5921         template arguments in function templates. Add support for checking
5922         the default template arguments of friend templates.
5923         (push_template_decl_real): Fix call to check_default_tmpl_args.
5924         (type_unification_real): If a template parameter has not been
5925         deduced but provides a default template argument, substitute into
5926         that default template argument.
5927         * parser.c (cp_parser_init_declarator): When declaring (but not
5928         defining!) a function template in C++0x mode, check for default
5929         template arguments.
5930
5931 2007-03-28 Douglas Gregor <doug.gregor@gmail.com>
5932
5933         PR c++/29993
5934         * decl.c (grokdeclarator): Deal with cv-qualified function type
5935         typedefs in the same way for member and non-member functions.
5936
5937 2007-03-26  Dirk Mueller  <dmueller@suse.de>
5938
5939         * parser.c (cp_parser_member_declaration): Pedwarn
5940         about stray semicolons after member declarations.
5941
5942 2007-03-26  Paolo Carlini  <pcarlini@suse.de>
5943
5944         PR c++/30500
5945         * pt.c (instantiate_decl): Set in_system_header.
5946
5947 2007-03-22  Mark Mitchell  <mark@codesourcery.com>
5948
5949         * cp-tree.h (current_tempalte_parms): Improve documentation.
5950         * pt.c (current_template_args): Likewise.
5951
5952         PR c++/30863
5953         * parser.c (cp_parser_parse_and_diagnose_invalid_type_name): Do
5954         not consume tokens when failing.
5955
5956 2007-03-22  Jim Wilson  <wilson@specifix.com>
5957             Mark Mitchell  <mark@codesourcery.com>
5958
5959         PR c++/31273
5960         * call.c (standard_conversion): Use type_decays_to.  Keep FCODE
5961         consistent with FROM.
5962
5963 2007-03-22  Gabriel Dos Reis  <gdr@integrable-solutions.net>
5964
5965         * error.c (dump_expr): Handle dependent names that designate types.
5966         * cxx-pretty-print.c (pp_cxx_unqualified_id): Handle TYPENAME_TYPE.
5967
5968 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
5969
5970         * cp-tree.def, parser.c, pt.c: Fix comment typos.
5971
5972 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5973
5974         * cvt.c (cp_convert_and_check) : Define.
5975         * cp-tree.h (cp_convert_and_check): Declare.
5976         * call.c (convert_conversion_warnings): Rename to
5977         conversion_null_warnings.  The warning for floating-point to
5978         integer is handled by convert_and_check in convert_like_real.
5979         (convert_like_real): convert_conversion_warnings was renamed as
5980         conversion_null_warnings.
5981         * typeck.c (build_binary_op): Use cp_convert_and_check to warn for
5982         overflow and changes of value during conversion.
5983
5984 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5985
5986         PR c++/30891
5987         * parser.c (cp_parser_statement): If 'namespace' is found, this
5988         only can be a namespace alias definition, so parse it now.
5989         (cp_parser_namespace_alias_definition): if we find an open brace
5990         instead of '=', then this is actually a misplaced namespace
5991         definition.
5992
5993 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5994
5995         PR c++/24924
5996         * decl.c (cxx_init_decl_processing): Move command-line options
5997         processing to c-opts.c.
5998
5999 2007-03-15  Douglas Gregor  <doug.gregor@gmail.com>
6000
6001         * ptree.c (cxx_print_type): Use formatting markup for integers
6002         when printing template parameter index/level/orig level.
6003         (cxx_print_xnode): Ditto.
6004         * cp-tree.h (TEMPLATE_PARM_PARAMETER_PACK): Use TREE_LANG_FLAG_0.
6005         (struct template_parm_index_s): Remove the PARAMETER_PACK member.
6006         Make INDEX, LEVEL, and ORIG_LEVEL integers instead of
6007         HOST_WIDE_INTs.
6008         (struct saved_scope): Make X_PROCESSING_TEMPLATE_DECL an int,
6009         rather than a HOST_WIDE_INT.
6010         Turn X_PROCESSING_EXPLICIT_INSTANTIATION, SKIP_EVALUATION, and
6011         NEED_POP_FUNCTION_CONTEXT into bool bitfields; reorder fields for
6012         better bit-packing.
6013         (struct language_function): Make RETURNS_VALUE, RETURNS_NULL,
6014         RETURNS_ABNORMALLY, IN_FUNCTION_TRY_HANDLER, and
6015         IN_BASE_INITIALIZER bool bitfields.
6016         (struct cp_declarator): Make KIND a 4-bit field. Make
6017         PARAMETER_PACK_P a bool bitfield just after KIND.
6018         * pt.c (uses_parameter_packs): Destroy the pointer set.
6019         (make_pack_expansion): Ditto.
6020         (check_for_bare_parameter_packs): Ditto.
6021         * name-lookup.c (push_to_top_level): Make need_pop a bool value.
6022
6023 2007-03-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6024
6025         PR c++/31165
6026         * call.c  (convert_default_arg): Instead of copying the node,
6027         unshare it.
6028
6029 2007-03-15  Dirk Mueller  <dmueller@suse.de>
6030
6031         PR c++/30860
6032         * call.c (convert_conversion_warnings): New..
6033         (convert_like_real): .. factored out from here.
6034         (convert_conversion_warnings): Add warning about
6035         false being converted to NULL in argument passing.
6036
6037 2007-03-14  Dirk Mueller  <dmueller@suse.de>
6038
6039         * semantics.c (c_finish_if_stmt): Call empty_if_body_warning.
6040         (finish_do_body): Warn about empty body in do/while statement.
6041
6042 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6043
6044         * class.c (warn_hidden): Add OPT_Woverloaded_virtual to warning.
6045
6046 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6047
6048         PR c/21438
6049         * typeck.c (build_binary_op): Call warn_for_div_zero instead of
6050         warning.
6051
6052 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
6053
6054         * repo.c (init_repo): Initialize random_seed saved options.
6055         (finish_repo): Adjust.
6056
6057 2007-03-13  Mark Mitchell  <mark@codesourcery.com>
6058
6059         PR bootstrap/30899
6060         * Make-lang.in (doc/g++.1): Use $< to specify the location from
6061         which to copy.
6062
6063 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
6064
6065         * decl.c (compute_array_index_type): New warning flag warn_vla.
6066
6067 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
6068
6069         PR c++/30108
6070         * call.c (convert_default_arg): Copy non-constant arguments.
6071
6072 2007-03-11  Mark Mitchell  <mark@codesourcery.com>
6073
6074         PR c++/31038
6075         * parser.c (cp_parser_postfix_expression): Disallow compound
6076         literals in constant expressions.
6077
6078         PR c++/30328
6079         * semantics.c (finish_typeof): Use unlowered_expr_type.
6080
6081 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
6082
6083         PR c++/30274
6084         * cp-tree.h (unlowered_expr_type): New function.
6085         * typeck.c (is_bitfield_expr_with_lowered_type): Handle
6086         COMPOUND_EXPR, MODIFY_EXPR, and SAVE_EXPR.
6087         (unlowered_expr_type): New function.
6088         (build_unary_op): Disallow predecrements of bool bitfields.
6089         * call.c (build_conditional_expr): Use unlowered_expr_type.
6090         * pt.c (type_unification_real): Likewise.
6091
6092 2007-03-09  Douglas Gregor  <doug.gregor@gmail.com>
6093
6094         PR c++/20599
6095         * typeck.c (check_return_expr): Check for bare parameter packs.
6096         (comptypes): Compare template parameter packs and
6097         type pack expansions.
6098         * decl.c (grokdeclarator): Deal with the declaration of function
6099         parameter packs.
6100         (grokparms): Verify that the (optional) function parameter pack is
6101         at the end of the parameter list.
6102         (xref_basetypes): Handle pack expansions in the base class.
6103         (cp_tree_node_structure): Handle ARGUMENT_PACK_SELECT.
6104         * cp-tree.def (TYPE_ARGUMENT_PACK): New.
6105         (NONTYPE_ARGUMENT_PACK): New.
6106         (TYPE_PACK_EXPANSION): New.
6107         (EXPR_PACK_EXPANSION): New.
6108         (ARGUMENT_PACK_SELECT): New.
6109         * cp-objcp-common.c (cp_tree_size): Compute size of
6110         (NON)TYPE_ARGUMENT_PACK, (TYPE|EXPR)_PACK_EXPANSION, and
6111         ARGUMENT_PACK_SELECT.
6112         * error.c (dump_template_argument): Print template argument packs.
6113         (dump_template_argument_list): Ditto.
6114         (dump_template_parameter): Dump `...' for template type parameter
6115         packs.
6116         (dump_type): Dump TYPE_PACK_EXPANSION nodes.
6117         (dump_parameters): Print function parameter packs.
6118         (dump_template_parms): Print template argument packs.
6119         (dump_expr): Dump EXPR_PACK_EXPANSION nodes.
6120         (maybe_warn_variadic_templates): New.
6121         * operators.def: Add ellipsis operator for EXPR_PACK_EXPANSION.
6122         * tree.c (cp_walk_subtrees): Walk BASELINK, TYPE_ARGUMENT_PACK,
6123         NONTYPE_ARGUMENT_PACK, TYPE_PACK_EXPANSION, EXPR_PACK_EXPANSION,
6124         CAST_EXPR.
6125         * mangle.c (write_type): Mangle TYPE_PACK_EXPANSION.
6126         (write_template_arg): Write argument packs as separate arguments.
6127         * cp-tree.h (struct template_parm_index_s): Add flag that
6128         indicates that the template parameter is actually a parameter
6129         pack.
6130         (struct tree_argument_pack_select): New.
6131         (enum cp_tree_node_structure_enum): Add TS_CP_ARGUMENT_PACK_SELECT.
6132         (union lang_tree_node): Add argument_pack_select.
6133         (FUNCTION_PARAMETER_PACK_P): New.
6134         (PACK_EXPANSION_P): New.
6135         (PACK_EXPANSION_PATTERN): New.
6136         (SET_PACK_EXPANSION_PATTERN): New.
6137         (PACK_EXPANSION_PARAMETER_PACKS): New.
6138         (ARGUMENT_PACK_P): New.
6139         (ARGUMENT_PACK_ARGS): New.
6140         (SET_ARGUMENT_PACK_ARGS): New.
6141         (ARGUMENT_PACK_INCOMPLETE_P): New.
6142         (ARGUMENT_PACK_EXPLICIT_ARGS): New.
6143         (TEMPLATE_PARM_PARAMETER_PACK): New.
6144         (TEMPLATE_TYPE_PARAMETER_PACK): New.
6145         (ARGUMENT_PACK_SELECT_FROM_PACK): New.
6146         (ARGUMENT_PACK_SELECT_INDEX): New.
6147         (ARGUMENT_PACK_SELECT_ARG): New.
6148         (struct cp_declarator): Add parameter_pack_p flag.
6149         (maybe_warn_variadic_templates): Declare.
6150         (process_template_parm): Add bool parameter IS_PARAMETER_PACK, to
6151         indicate a template parameter pack.
6152         (uses_parameter_packs): Declare.
6153         (template_parameter_pack_p): Declare.
6154         (template_parms_variadic_p): Declare.
6155         (make_pack_expansion): Declare.
6156         (check_for_bare_parameter_packs): Declare.
6157         * cxx-pretty-print.c (pp_cxx_unary_expression): Print
6158         sizeof... expressions.
6159         (pp_cxx_expression): Print pack expansions and non-type argument
6160         packs.
6161         (pp_cxx_exception_specification): Print pack expansions.
6162         (pp_cxx_direct_declarator): Print ellipsis for parameter packs.
6163         (pp_cxx_ctor_initializer): Print pack expansions.
6164         (pp_cxx_type_id): Print pack expansions.
6165         (pp_cxx_template_argument_list): Print argument packs.
6166         (pp_cxx_template_parameter): Print ellipsis for template parameter
6167         packs.
6168         * pt.c (comp_template_parms): Compare template parameter packs.
6169         (template_parameter_pack_p): New.
6170         (template_parms_variadic_p): New.
6171         (template_args_variadic_p): New.
6172         (make_ith_pack_parameter_name): New.
6173         (struct find_parameter_pack_data): New.
6174         (find_parameter_packs_r): New.
6175         (uses_parameter_packs): New.
6176         (make_pack_expansion): New.
6177         (check_for_bare_parameter_packs): New.
6178         (expand_template_argument_pack): New.
6179         (reduce_template_parm_level): Propagate parameter pack flag.
6180         (process_template_parm): Add is_parameter_pack parameter to state
6181         when the parameter is actually a parameter pack. Create template
6182         parameter packs when is_parameter_pack is true.
6183         (current_template_args): The argument for a template parameter
6184         pack is an argument pack containing a single pack expansion.
6185         (process_partial_specialization): When checking that non-type
6186         argument expressions do not involve template parameters, loop over
6187         the arguments in argument packs separately.
6188         (push_template_decl_real): Check that the type of the declaration
6189         does not have any bare parameter packs. Check that primary
6190         templates have no more than one parameter pack, and that it comes
6191         at the end of the template parameter list.
6192         (convert_template_argument): Handle coercions for pack expansion
6193         expressions by coercing the pattern then rebuilding the expansion.
6194         (coerce_template_parms): When coercing the arguments for a
6195         variadic template, pack "extra" arguments into an argument pack.
6196         (coerce_template_template_parms): Cannot coerce between parameter
6197         packs and non-pack parameters.
6198         (template_args_equal): Compare PACK_EXPANSION_P expressions.
6199         (comp_template_args): Expand all template arguments packs before
6200         comparing template argument lists.
6201         (mangle_class_name_for_template): Make argument packs as separate
6202         template arguments.
6203         (for_each_template_parm_r): No need to handle BASELINK.
6204         (instantiate_class_template): Handle pack expansions in the base
6205         class list.
6206         (tsubst_pack_expansion): New.
6207         (tsubst_template_args): Handle substitutions of argument packs and
6208         pack expansion into template argument lists.
6209         (tsubst_decl): Expand function parameter packs into separate
6210         function parameters.
6211         (tsubst_arg_types): Expand a type pack expansion into separate
6212         argument types.
6213         (tsubst_exception_specification): Handle pack expansions in
6214         exception specifiers.
6215         (tsubst): See through ARGUMENT_PACK_SELECT arguments when
6216         replacing a template parameter with its argument. If we encounter
6217         a substitution for an argument pack, just return the parameter
6218         itself.
6219         (tsubst_copy): sizeof(X...) returns the number of elements in
6220         parameter pack X.  See through ARGUMENT_PACK_SELECT when the
6221         PARM_DECL is a parameter pack.
6222         (tsubst_expr): Expression pack expansions and argument packs
6223         cannot show up here; they will all be handled through function
6224         calls, sizeof, and template argument lists.
6225         (tsubst_copy_and_build): sizeof(X...) returns the number of
6226         elements in parameter pack X.  Handle pack expansions in TREE_LIST
6227         and CONSTRUCTOR nodes.
6228         (fn_type_unification): Handle "incomplete" explicit template
6229         argument lists that specify some of the arguments for a template
6230         parameter pack.
6231         (type_unification_real): Unify arguments against pack expansions.
6232         (template_parm_level_and_index): New, helper function.
6233         (unify_pack_expansion): New.
6234         (unify): Unify argument packs on an argument-by-argument basis,
6235         handling variadic argument packs as well.
6236         (more_specialized_fn): Handle unification of function parameter
6237         packs. All things being equal, prefer non-variadic function
6238         templates to variadic function templates.
6239         (more_specialized_class): Prefer the variadic class template
6240         partial specialization that binds fewer arguments to a parameter
6241         pack.
6242         (regenerate_decl_from_template): Expand function parameter packs
6243         into separate parameters.
6244         (instantiate_decl): Ditto.
6245         (tsubst_initializer_list): Handle pack expansions for base-class
6246         initializers.
6247         (dependent_type_p_r): Determine dependent types in argument packs
6248         and pack expansions.
6249         (value_dependent_expression_p): Determine value-dependence of
6250         non-type argument packs.
6251         (dependent_template_arg_p): Handle argument packs.
6252         * semantics.c (finish_cond): Check for bare parameter packs.
6253         (finish_expr_stmt): Ditto.
6254         (finish_for_expr): Ditto.
6255         (finish_switch_cond): Ditto.
6256         (finish_mem_initializers): Ditto.
6257         * name-lookup.c (arg_assoc_type): Handle pack expansions and
6258         argument packs.
6259         * decl2.c (cp_build_parm_decl): Mark function parameter packs.
6260         * parser.c (make_declarator): Declarator is not an expansion.
6261         (make_pointer_declarator): Transfer parameter pack flag to outer
6262         declarator.
6263         (make_reference_declarator): Ditto.
6264         (make_ptrmem_declarator): Ditto.
6265         (make_call_declarator): Ditto.
6266         (make_array_declarator): Ditto.
6267         (cp_parser_postfix_expression): Allow pack expansion expressions
6268         in the argument list for a call expression.
6269         (cp_parser_parenthesized_expression_list): Add new parameter
6270         ALLOW_EXPANSION_P. When true, parse the ellipsis to mean "expand
6271         into separate arguments."
6272         (cp_parser_new_placement): Allow pack expansion expressions.
6273         (cp_parser_new_initializer): Ditto.
6274         (cp_parser_mem_initializer_list): Allow ellipsis to create a
6275         base-class initializer expansion.
6276         (cp_parser_mem_initializer): Ditto.
6277         (cp_parser_template_parameter_list): Keep track of whether the
6278         template parameter is a template parameter pack.
6279         (cp_parser_template_parameter): Parse the ellipsis to indicate a
6280         template parameter pack.
6281         (cp_parser_type_parameter): Ditto.
6282         (cp_parser_template_argument_list): Parse the ellipsis to indicate
6283         a pack expansion.
6284         (cp_parser_direct_declarator): Parse the ellipsis to indicate that
6285         this declarator is a parameter pack.
6286         (cp_parser_parameter_declaration): The ellipsis does not end the
6287         parameter declaration, because it might be a parameter pack. Parse
6288         the ellipsis to indicate a parameter pack.
6289         (cp_parser_initializer): Allow pack expansions.
6290         (cp_parser_initializer_list): Allow ellipsis to create an
6291         initializer expansion.
6292         (cp_parser_base_clause): Allow ellipsis to create a base specifier
6293         expansion.
6294         (cp_parser_type_id_list): Allow ellipsis to create an exception
6295         specifier expansion.
6296         (cp_parser_attribute_list): Don't allow pack expansions.
6297         (cp_parser_functional_cast): Allow pack expansions.
6298         (cp_parser_sizeof_operand): Allow ellipsis following "sizeof" to
6299         compute the length of a parameter pack.
6300         (cp_parser_next_token_ends_template_argument_p): An ellipsis can
6301         end a template argument.
6302         * tree.c (cp_walk_subtrees): Walk BASELINK, TYPE_ARGUMENT_PACK,
6303         NONTYPE_ARGUMENT_PACK, TYPE_PACK_EXPANSION, EXPR_PACK_EXPANSION,
6304         CAST_EXPR.
6305
6306 2007-03-09  Dirk Mueller  <dmueller@suse.de>
6307
6308         * call.c (build_new_op): Call warn_logical_operator.
6309
6310 2007-03-08  Volker Reichelt  <v.reichelt@netcologne.de>
6311
6312         PR c++/30852
6313         * semantics.c (finish_offsetof): Handle COMPOUND_EXPR.
6314
6315         PR c++/30534
6316         * pt.c (any_template_arguments_need_structural_equality_p):
6317         Robustify.
6318
6319 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
6320
6321         * decl.c (grokdeclarator): Disable warnings for anonymous
6322         bitfields.
6323
6324 2007-03-05  Volker Reichelt  <v.reichelt@netcologne.de>
6325
6326         * typeck2.c (readonly_error): Always emit a hard error.
6327         Remove last argument.
6328         * cp-tree.h (readonly_error): Adjust prototype.
6329         * semantics.c (finish_asm_stmt): Adjust call to readonly_error.
6330         * typeck.c (build_unary_op): Likewise.
6331         (build_modify_expr): Likewise.
6332
6333 2007-03-04  Simon Martin  <simartin@users.sourceforge.net>
6334
6335         PR c++/30895
6336         * tree.c (cp_tree_equal): Properly handle COMPLEX_CST trees.
6337
6338 2007-03-03  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6339
6340         PR c++/15787
6341         * parser.c (struct cp_parser): New IN_IF_STMT.
6342         (cp_parser_statement_seq_opt): Handle an unexpected 'else',
6343         returning if parsing the body of an 'if' statement or issuing an
6344         error and continuing.
6345         (cp_parser_selection_statement): Set IN_IF_STMT bit when parsing
6346         body of 'if'.
6347         (cp_parser_jump_statement): Mask new IN_IF_STMT bit.
6348
6349 2007-03-02  Simon Martin  <simartin@users.sourceforge.net>
6350
6351         PR c++/28253
6352         * class.c (update_vtable_entry_for_fn): Properly handle invalid overriders
6353         for thunks.
6354
6355 2007-03-02  Geoffrey Keating  <geoffk@apple.com>
6356
6357         * g++spec.c (lang_specific_driver): Add -lstdc++ when compiling
6358         Objective-C++.  Don't exit early if -shared-libgcc needs to be
6359         added.
6360
6361 2007-03-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6362
6363         * typeck.c (common_base_type): Delete unused function.
6364
6365 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
6366
6367         * Make-lang.in: Add dummy lang.install-pdf target.
6368
6369 2007-03-01  Simon Baldwin <simonb@google.com>
6370
6371         PR c++/23689
6372         * decl.c (check_tag_decl): Added new warning for typedef ignored
6373         when it precedes an otherwise valid non-typedef declaration.
6374
6375 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
6376
6377         * typeck.c (build_function_call): Store converted arguments
6378         in a stack-allocated array instead of building a list.
6379         (convert_arguments): Store arguments in the array passed in as an
6380         argument, and return the actual number of arguments.
6381         * call.c (build_call): Delete, and replace with...
6382         (build_call_n, build_call_a): New.
6383         (build_op_delete_call): Rewrite to avoid constructing argument lists.
6384         (build_over_call): Store converted arguments in a stack-allocated
6385         array instead of building a list.
6386         (build_cxx_call): Pass arguments in an array instead of as a list.
6387         (build_java_interface_fn_ref): Rewrite to avoid constructing
6388         argument lists.
6389         * tree.h: Update declarations to reflect above changes.
6390         * method.c (use_thunk): Use a stack-allocated array to hold
6391         the arguments instead of a list.
6392         * rtti.c (throw_bad_cast): Update call to cxx_call.
6393         (throw_bad_typeid): Likewise.
6394         (build_dynamic_cast_1): Likewise.
6395         * init.c (build_builtin_delete_call): Use build_call_n.
6396         * decl.c (expand_static_init): Likewise.
6397         * except.c (cp_protect_cleanup_actions): Likewise.
6398         * cp-gimplify.c (genericize_eh_spec_block): Likewise.
6399         (gimplify_must_not_throw_expr): Likewise.
6400         (cxx_omp_apply_fn): Use build_call_a.
6401
6402 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
6403
6404         * semantics.c (expand_or_defer_fn): Call c_record_cdtor_fn.
6405         * decl2.c (cp_write_gloabl_declarations): Call c_build_cdtor_fns.
6406
6407 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
6408
6409         * cp-tree.h (static_ctors): Remove.
6410         * cp-tree.h (static_dtors): Likewise.
6411         * cp-objcp-common.c (decl_shadowed_for_var_lookup): Adjust for
6412         refactoring of tree_map hierarchy.
6413         (decl_shadowed_for_var_insert): Likewise.
6414         * semantics.c (expand_body): Use c_expand_body.
6415         (expand_or_defer_fn): Don't update static_ctors or static_dtors.
6416         * decl2.c (static_ctors): Remove.
6417         (static_dtors): Likewise.
6418         (generate_ctor_or_dtor_function): Pass NULL_TREE to
6419         objc_generate_static_init_call.  Do not call static_[cd]tors.
6420         (generate_ctor_and_dtor_functions_for_priority): Do not check for
6421         static_[cd]tors.
6422         (cp_write_global_declarations): Likewise.
6423
6424 2007-02-23  Richard Guenther  <rguenther@suse.de>
6425
6426         * class.c (note_name_declared_in_class): Make declaration
6427         changes meaning a pedwarn.
6428
6429 2007-02-22  Michael Matz  <matz@suse.de>
6430
6431         PR c++/29433
6432         * cp-tree.h (TFF_UNQUALIFIED_NAME): New formatting flag.
6433         * error.c (dump_aggr_type, dump_simple_decl, dump_decl,
6434         dump_function_decl): Guard emitting outer scopes by new flag.
6435         * cp-lang.c (cxx_dwarf_name): New function.
6436         (LANG_HOOKS_DWARF_NAME): Define to cxx_dwarf_name.
6437         * pt.c (classtype_mangled_name, mangle_class_name_for_template):
6438         Remove functions.
6439         (push_template_decl_real, lookup_template_class): Remove calls
6440         to above functions.
6441
6442 2007-02-19  Mark Mitchell  <mark@codesourcery.com>
6443
6444         * call.c (build_new_method_call): Ensure that explicit calls of
6445         destructors have type "void".
6446
6447 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6448
6449         * typeck.c (build_binary_op): Replace -Wstring-literal-comparison
6450         and -Walways-true with -Waddress.
6451         * cvt.c (convert_to_void): Replace unconditional warning with
6452         -Waddress.
6453
6454 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
6455
6456         * decl.c, tree.c: Fix comment typos.
6457
6458 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6459
6460         PR C++/30158
6461         * semantics.c (finish_stmt_expr_expr): Set TREE_TYPE of the
6462         statement expression if we had an error mark node.
6463
6464 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
6465             Brooks Moses  <brooks.moses@codesourcery.com>
6466             Lee Millward  <lee.millward@codesourcery.com>
6467
6468         * cp-tree.def (AGGR_INIT_EXPR): Adjust documentation.
6469         Change class to tcc_vl_exp.
6470
6471         * call.c (build_call): Use build_call_list instead
6472         of build3.
6473         (build_over_call): Likewise.
6474         (build_new_method_call): Use build_min_non_dep_call_list
6475         instead of build_min_non_dep.
6476
6477         * error.c (dump_call_expr_args): New function.
6478         (dump_aggr_init_expr_args): New function.
6479         (dump_expr) <AGGR_INIT_EXPR, CALL_EXPR, INDIRECT_REF>: Use them.
6480         Update to use new CALL_EXPR and AGGR_INIT_EXPR accessor macros.
6481
6482         * cvt.c (convert_to_void): Use build_call_array instead
6483         of build3; use new AGGR_INIT_EXPR accessor macros.
6484
6485         * mangle.c (write_expression): Use TREE_OPERAND_LENGTH
6486         instead of TREE_CODE_LENGTH.
6487
6488         * dump.c (cp_dump_tree) <AGGR_INIT_EXPR>: Update to use new
6489         AGGR_INIT_EXPR accessor macros.
6490
6491         * cp-gimplify.c (cp_gimplify_init_expr): Use
6492         AGGR_INIT_EXPR_SLOT to set the slot operand.
6493
6494         * cp-tree.h (AGGR_INIT_EXPR_FN): New macro.
6495         (AGGR_INIT_EXPR_SLOT): New macro.
6496         (AGGR_INIT_EXPR_ARG): New macro.
6497         (aggr_init_expr_nargs): New macro.
6498         (AGGR_INIT_EXPR_ARGP): New macro.
6499         (aggr_init_expr_arg_iterator): New.
6500         (init_aggr_init_expr_arg_iterator): New.
6501         (next_aggr_init_expr_arg): New.
6502         (first_aggr_init_expr_arg): New.
6503         (more_aggr_init_expr_args_p): New.
6504         (FOR_EACH_AGGR_INIT_EXPR_ARG): New.
6505         (stabilize_aggr_init): New declaration.
6506         (build_min_non_dep_call_list): Likewise.
6507
6508         * tree.c (process_aggr_init_operands): New function.
6509         (build_aggr_init_array) New function.
6510         (build_cplus_new): Update to use new CALL_EXPR and
6511         AGGR_INIT_EXPR accessor macros. Replace use of build3 with
6512         build_aggr_init_array.
6513         (build_min_non_dep_call_list) New function.
6514         (build_min_nt): Assert input code parameter is not a variable
6515         length expression class.
6516         (build_min, build_min_non_dep): Likewise.
6517         (cp_tree_equal) <CALL_EXPR>: Iterate through the arguments
6518         to check for equality instead of recursing. Handle tcc_vl_exp
6519         tree code classes.
6520         (stabilize_call): Update to only handle CALL_EXPRs, not
6521         AGGR_INIT_EXPRs; use new CALL_EXPR accessor macros.
6522         (stabilize_aggr_init): New function.
6523         (stabilize_init): Use it.
6524
6525         * cxx-pretty-print.c (pp_cxx_postfix_expression)
6526         <AGGR_INIT_EXPR, CALL_EXPR>: Update to use new CALL_EXPR and
6527         AGGR_INIT_EXPR accessor macros and argument iterators.
6528
6529         * pt.c (tsubst_copy) <CALL_EXPR>: Replace build_nt with
6530         build_vl_exp. Iterate through the operands, recursively
6531         processing each one.
6532         (tsubst_copy_and_build) <CALL_EXPR>: Update to use new
6533         CALL_EXPR accessor macros.
6534         (value_dependent_expression_p) <default>: Handle tcc_vl_exp
6535         tree code classes. Use TREE_OPERAND_LENGTH instead of
6536         TREE_CODE_LENGTH.
6537
6538         * semantics.c (finish_call_expr): Use build_nt_call_list
6539         instead of build_nt.
6540         (simplify_aggr_init_expr): Update to use new AGGR_INIT_EXPR
6541         accessor macros. Use build_call_array to construct the
6542         CALL_EXPR node instead of build3
6543
6544         * decl2.c (build_offset_ref_call_from_tree): Use
6545         build_nt_call_list and build_min_non_dep_call_list instead
6546         of build_min_nt and build_min_non_dep.
6547
6548         * parser.c (cp_parser_postfix_expression) <CPP_OPEN_PAREN>:
6549         Use build_nt_call_list instead of build_min_nt.
6550
6551 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6552
6553         PR c++/28943
6554         * call.c (build_conditional_expr): Improve error message.
6555
6556 2007-02-13  Dirk Mueller  <dmueller@suse.de>
6557
6558         * friend.c (do_friend): Annotate warning about friend
6559         declarations in templates with OPT_Wnon_template_friend.
6560         Convert informal message from warning() to inform().
6561
6562 2007-02-12  Simon Martin  <simartin@users.sourceforge.net>
6563             Mark Mitchell  <mark@codesourcery.com>
6564
6565         PR c++/14622
6566         * pt.c (do_decl_instantiation): Detect type mismatches in explicit
6567         instantiations for variables.
6568
6569 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6570
6571         PR middle-end/7651
6572         * cp-gimplify.c (gimplify_expr_stmt): Don't check extra_warnings.
6573         Check warn_unused_value just once.
6574
6575 2007-02-11  Mark Mitchell  <mark@codesourcery.com>
6576
6577         PR c++/26988
6578         * pt.c (determine_specialization): Use skip_artificial_parms_for.
6579         (fn_type_unificiation): Likewise.
6580         (get_bindings): Likewise.
6581
6582 o2007-02-06  Mark Mitchell  <mark@codesourcery.com>
6583
6584         PR target/29487
6585         * decl.c (finish_function): Use DECL_REPLACEABLE.
6586         * tree.c (cp_cannot_inline_tree_fn): Likewise.
6587
6588 2007-02-10  Gabriel Dos Reis  <gdr@integrable-solutions.net>
6589
6590         * parser.c (cp_parser_primary_expression): Reformat overly long lines.
6591
6592 2007-02-10  Richard Henderson  <rth@redhat.com>, Jakub Jelinek  <jakub@redhat.com>
6593
6594         * decl.c (grokvardecl): Don't error if !have_tls.
6595         (grokdeclarator): Likewise.
6596         * parser.c (cp_parser_omp_threadprivate): Likewise.
6597
6598 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
6599
6600         PR c++/30703
6601         * cp-gimplify.c (cp_genericize_r): Don't dereference invisiref
6602         parameters and result decls in omp clauses.
6603         (cxx_omp_privatize_by_reference): Pass also invisiref PARM_DECLs
6604         by reference.
6605
6606 2007-02-05  Dirk Mueller  <dmueller@suse.de>
6607
6608         PR bootstrap/30510
6609         * parser.c (cp_parser_class_specifier): Always initialize bases.
6610
6611 2007-02-05  Paolo Bonzini  <bonzini@gnu.org>
6612
6613         * cp-tree.h (OMP_ATOMIC_CODE): Delete.
6614         (OMP_ATOMIC_DEPENDENT_P): Rewrite.
6615         * pt.c (tsubst_expr): Adjust for new format of dependent OMP_ATOMIC
6616         expressions.
6617         * semantics.c (finish_omp_atomic): Store a whole expression node
6618         in operand 1, and integer_zero_node in operand 0, for dependent
6619         OMP_ATOMIC.  Rewrite to make flow easier to understand.
6620
6621 2007-02-03  Gabriel Dos Reis  <gdr@integrable-solutions.net>
6622
6623         * decl.c (grokdeclarator): Use OPT_Wreturn_type instead of 0.
6624
6625 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
6626
6627         * class.c, cp-tree.h, decl.c, decl2.c, g++spec.c, init.c,
6628         parser.c, pt.c, tree.c, typeck.c: Follow spelling conventions.
6629
6630 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
6631
6632         * parser.c (cp_lexer_get_preprocessor_token): Attach the C++0x
6633         keyword warning to -Wc++0x-compat.
6634
6635 2007-02-03  Gabriel Dos Reis  <gdr@integrable-solutions.net>
6636
6637         * decl.c (grokdeclarator): Update documentation.
6638
6639 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
6640
6641         PR c++/30536
6642         * decl.c (grokdeclarator): If __thread is used together with
6643         a storage class other than extern and static, clear thread_p
6644         after issuing diagnostics and fall through to checking the
6645         storage class.
6646
6647 2007-01-30  Roger Sayle  <roger@eyesopen.com>
6648
6649         * error.c (dump_type_suffix): Avoid use of cp_build_binary_op when
6650         calculating the size of an array (to avoid recursive errors).
6651
6652 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6653
6654         PR c++/24745
6655         * typeck.c (build_binary_op): Fix logic for warning. Move warning
6656         to -Wpointer-arith.
6657         * call.c (convert_like_real): Don't warn when converting to
6658         boolean type.
6659
6660 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6661
6662         * decl.c (pop_label): Replace warning with call to
6663         warn_for_unused_label.
6664
6665 2007-01-28  Andrew Pinski  <pinskia@gmail.com>
6666
6667         PR C++/28988
6668         * semantics.c (finish_pseudo_destructor_expr): Check the
6669         destrutor name by calling check_dtor_name.
6670
6671 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
6672
6673         * lex.c (D_CPP0X): Rename.
6674         (D_CXX0X): To this.
6675         (reswords): D_CPP0X -> D_CXX0X.
6676         (init_reswords): Ditto.
6677         * parser.c (cp_lexer_get_preprocessor_token): Warn about the use
6678         of C++0x keywords as identifiers.
6679
6680 2007-01-23  Simon Martin  <simartin@users.sourceforge.net>
6681
6682         PR c++/27492
6683         * decl.c (duplicate_decls): Don't reset DECL_INVALID_OVERRIDER_P for
6684         function decls.
6685
6686 2007-01-23  Ian Lance Taylor  <iant@google.com>
6687
6688         * typeck.c (convert_for_assignment): Only warn about a = b = c
6689         when converting to bool.
6690
6691 2007-01-23  Roger Sayle  <roger@eyesopen.com>
6692
6693         * call.c (null_ptr_cst_p): Replace use of TREE_CONSTANT_OVERFLOW with
6694         TREE_OVERFLOW.
6695         * typeck.c (ignore_overflows): Remove the remaining uses of
6696         TREE_CONSTANT_OVERFLOW.
6697
6698 2007-01-20  Jan Hubicka  <jh@suse.cz>
6699
6700         * decl2.c (start_objects, start_static_storage_duration_function):
6701         Do not make the functions uninlinable.
6702
6703 2007-01-17  Ian Lance Taylor  <iant@google.com>
6704
6705         * class.c (add_method): Call VEC_reserve_exact rather than passing
6706         a negative size to VEC_reserve.
6707
6708 2007-01-11  Simon Martin  <simartin@users.sourceforge.net>
6709
6710         PR c++/29573
6711         * tree.c (cp_tree_equal): Properly handle MODOP_EXPR trees.
6712
6713 2007-01-10  Mark Mitchell  <mark@codesourcery.com>
6714
6715         PR c++/28999
6716         * decl.c (make_typename_type): If the qualified name is not a
6717         type, issue an error.
6718         * parser.c (cp_parser_elaborated_type_specifier): Fix comment
6719         formatting.
6720
6721 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
6722
6723         * rtti.c: Include target.h.
6724         (emit_support_tinfos): If ! targetm.cxx.library_rtti_comdat (),
6725         don't emit typeinfo for fundamental types as weak.
6726         * Make-lang.in (cp/rtti.o): Update and correct dependencies.
6727
6728 2007-01-08  Richard Guenther  <rguenther@suse.de>
6729
6730         * cvt.c (cp_convert_to_pointer): Use build_int_cst_type.
6731
6732 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
6733
6734         * call.c (standard_conversion): Pass flag to
6735         vector_types_convertible_p to disallow emission of note.
6736         * typeck.c (convert_for_assignment): Pass flag to
6737         vector_types_convertible_p to allow emission of note.
6738         (ptr_reasonably_similar): Pass flag to vector_types_convertible_p
6739         to disallow emission of note.
6740
6741 2007-01-07  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6742
6743         PR c++/28986
6744         * typeck.c (build_binary_op): Call overflow_warning if
6745         TREE_OVERFLOW_P is true for the result and not for any of the
6746         operands.
6747
6748 2007-01-06  Lee Millward  <lee.millward@codesourcery.com>
6749
6750         PR c++/19439
6751         * class.c (add_method): Don't wait until template
6752         instantiation time to complain about duplicate methods.
6753
6754 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6755
6756         PR c/19978
6757         * semantics.c (finish_unary_op_expr): Warn only if result
6758         overflowed and operands did not.
6759
6760 2007-01-05  Ian Lance Taylor  <iant@google.com>
6761
6762         * typeck.c (build_binary_op): Warn about comparing a non-weak
6763         address to NULL.
6764
6765 2007-01-05  Douglas Gregor  <doug.gregor@gmail.com>
6766
6767         * pt.c (tsubst): Propagate the need for structural equality checks
6768         when reducing the level of template parameters.
6769
6770 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
6771
6772         * pt.c: Fix a comment typo.
6773
6774 2007-01-02  Ian Lance Taylor  <iant@google.com>
6775
6776         * semantics.c (maybe_convert_cond): Optionally warn when using an
6777         assignment as a condition.
6778         * typeck.c (convert_for_assignment): Optionally warn about
6779         assigning the result of an assignment to a bool.
6780
6781 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
6782
6783         * pt.c (canonical_template_parms): Correct typo in comment.
6784
6785 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
6786
6787         * typeck.c (structural_comptypes): Renamed from "comptypes".
6788         (comptypes): Use canonical type information to perform fast type
6789         comparison. When VERIFY_CANONICAL_TYPES, verify that the
6790         canonical type comparison returns the same results as we would see
6791         from the current, structural check. Support COMPARE_STRUCTURAL
6792         when we need structural checks.
6793         * decl.c (typename_compare): Fix comment.
6794         (build_typename_type): TYPENAME_TYPE nodes require structural
6795         equality checks, because they resolve different based on the
6796         current class type.
6797         (make_unbound_class_template): UNBOUND_CLASS_TEMPLATE nodes
6798         require structural equality checks (for now).
6799         (build_ptrmemfunc_type): Build the canonical pointer to member
6800         function type.
6801         (compute_array_index_type): Whenever we build a new index type
6802         to represent the size of an array in a template, we need to mark
6803         this index type as requiring structural equality. This goes for
6804         arrays with value-dependent sizes with the current ABI, or all
6805         arrays with ABI-1.
6806         * tree.c (cplus_array_hash): New.
6807         (struct cplus_array_info): New.
6808         (cplus_array_compare): New.
6809         (cplus_array_htab): New.
6810         (build_cplus_array_type_1): Use a hash table to cache the array
6811         types we build. Build the canonical array type for each array
6812         type.
6813         (cp_build_qualified_type_real): When building a cv-qualified array
6814         type, use the hash table of array types and build canonical array
6815         types as necessary.
6816         (bind_template_template_parm): BOUND_TEMPLATE_TEMPLATE_PARM nodes
6817         use structural equality (for now).
6818         * cp-tree.h (COMPARE_STRUCTURAL): New.
6819         * pt.c (canonical_template_parms): New.
6820         (canonical_type_parameter): New.
6821         (process_template_parm): Find the canonical type parameter.
6822         (lookup_template_class): When we have named the primary template
6823         type, set the canonical type for our template class to the primary
6824         template type. If any of the template arguments need structural
6825         equality checks, the template class needs structural equality
6826         checks.
6827         (tsubst): When reducing the level of a template template
6828         parameter, we require structural equality tests for the resulting
6829         parameter because its template parameters have not had their types
6830         canonicalized. When reducing a template type parameter, find the
6831         canonical reduced type parameter.
6832         (any_template_arguments_need_structural_equality_p): New.
6833