OSDN Git Service

/cp
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
1 2009-02-01  Paolo Carlini  <paolo.carlini@oracle.com>
2
3         PR c++/39053
4         * parser.c (cp_parser_pure_specifier): If there are no tokens left
5         do not call cp_lexer_consume_token.
6
7 2009-01-30  Jakub Jelinek  <jakub@redhat.com>
8
9         PR c++/39028
10         * parser.c (cp_parser_already_scoped_statement): Handle __label__
11         declarations.
12
13 2009-01-30  Paolo Carlini  <paolo.carlini@oracle.com>
14
15         PR c++/33465
16         * error.c (dump_expr): Handle FIX_TRUNC_EXPR and FLOAT_EXPR.
17
18 2009-01-30  Paolo Carlini  <paolo.carlini@oracle.com>
19
20         PR c++/38655
21         * error.c (dump_type_prefix, dump_type_suffix): Handle FIXED_POINT_TYPE.
22
23 2009-01-29  Paolo Carlini  <paolo.carlini@oracle.com>
24
25         * typeck.c (invalid_nonstatic_memfn_p): Use
26         DECL_NONSTATIC_MEMBER_FUNCTION_P.
27
28 2009-01-27  Paolo Carlini  <paolo.carlini@oracle.com>
29
30         PR c++/37554
31         * call.c (build_over_call): If convert_for_arg_passing returns
32         error_mark_node unconditionally return it.
33
34 2009-01-22  Adam Nemet  <anemet@caviumnetworks.com>
35
36         * class.c (check_field_decls): Also inherit packed for bitfields
37         regardless of their type.
38
39 2009-01-22  Dodji Seketeli  <dodji@redhat.com>
40
41         PR c++/38930
42         * decl2.c (grokfield): Reverting changes of PR c++/26693
43         (save_template_attributes): Likewise.
44         * decl.c (grokdeclarator): Likewise.
45         * name-lookup.c (pushdecl_maybe_friend): Likewise.
46         * cp-tree.h (MEMBER_TYPES_NEEDING_ACCESS_CHECK): Likewise.
47         (append_type_to_template_for_access_check): Likewise.
48         * semantics.c (check_accessibility_of_qualified_id): Likewise.
49         * pt.c (instantiate_class_template, instantiate_template ): Likewise.
50         (tsubst): Likewise.
51         (resolve_type_name_type): Likewise.
52         (append_type_to_template_for_access_check): Likewise.
53
54 2009-01-21  Dodji Seketeli  <dodji@redhat.com>
55
56         PR c++/26693
57         * decl2.c (grokfield): when a typedef appears in a
58         class, create the typedef variant type node for it.
59         (save_template_attributes): Creating typedef variant type node
60          here is now useless.
61         * decl.c (grokdeclarator): If the typedef'ed struct/class was
62         anonymous, set the proper type name to all its type variants.
63         * name-lookup.c (pushdecl_maybe_friend): Reuse the
64         set_underlying_type function to install typedef variant types.
65         * cp-tree.h (MEMBER_TYPES_NEEDING_ACCESS_CHECK): New template accessor
66         macro.
67         (append_type_to_template_for_access_check): New entry points.
68         * semantics.c (check_accessibility_of_qualified_id):
69         When a typedef that is a member of a class appears in a template,
70         add it to the template. It will be ...
71         * pt.c (instantiate_class_template, instantiate_template ): ... access
72         checked at template instantiation time.
73         (tsubst): Handle the case of being called with NULL args.
74         (resolve_type_name_type): The type name should be the name of the
75         main type variant.
76         (append_type_to_template_for_access_check): New entry point.
77
78 2009-01-19  Jason Merrill  <jason@redhat.com>
79
80         PR c++/23287
81         * parser.c (cp_parser_unqualified_id): In a template,
82         accept ~identifier.
83         * typeck.c (lookup_destructor): Handle IDENTIFIER_NODE.
84
85 2009-01-16  Jason Merrill  <jason@redhat.com>
86
87         PR c++/38877
88         * tree.c (lvalue_p_1): Allow non-fields in COMPONENT_REF.
89         * init.c (build_new): Don't call describable_type unless we
90         have an auto.
91
92         PR c++/29470
93         * pt.c (tsubst_decl) [USING_DECL]: Propagate access flags.
94
95         PR c++/38579
96         * search.c (protected_accessible_p): N doesn't vary.
97
98 2009-01-15  Jason Merrill  <jason@redhat.com>
99
100         PR c++/38850
101         * pt.c (tsubst_copy_and_build): Tell finish_call_expr to
102         accept hidden friends.
103
104 2009-01-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
105
106         PR C++/29388
107         * decl.c (grokdeclarator): Check for a non namespace/class context.
108
109 2009-01-15  Jason Merrill  <jason@redhat.com>
110
111         PR c++/36334
112         PR c++/37646
113         * tree.c (lvalue_p_1): Handle BASELINK.  A COMPONENT_REF to
114         a function isn't necessarily an lvalue. Take tree, not const_tree.
115         (lvalue_p, real_lvalue_p): Take tree, not const_tree.
116         * typeck.c (lvalue_or_else): Likewise.
117         * cp-tree.h: Adjust prototypes.
118
119 2009-01-15  Steve Ellcey  <sje@cup.hp.com>
120
121         PR c++/38357
122         * pt.c (tsubst): Check for NULL args.
123
124 2009-01-15  Dodji Seketeli  <dodji@redhat.com>
125
126         PR c++/38636
127         * name-lookup.c (pushtag): Don't create members to types that are not
128         being created.
129
130 2009-01-14  Nick Clifton  <nickc@redhat.com>
131
132         PR c++/37862
133         * parser.c: Pass cp_id_kind computed in
134         cp_parser_postfix_dot_deref_expression to
135         cp_parser_primary_expression.
136
137 2009-01-13  Jakub Jelinek  <jakub@redhat.com>
138
139         PR c++/38795
140         * tree.c (cp_walk_subtrees): Handle REINTERPRET_CAST_EXPR,
141         STATIC_CAST_EXPR, CONST_CAST_EXPR and DYNAMIC_CAST_EXPR the same
142         as CAST_EXPR.
143
144 2009-01-12  Jason Merrill  <jason@redhat.com>
145             Steve Ellcey  <sje@cup.hp.com>
146
147         PR c++/35109
148         * name-lookup.c (lookup_name_real): Keep looking past a hidden 
149         binding.
150
151 2009-01-12  Dodji Seketeli  <dodji@redhat.com>
152
153         PR c++/36019
154         * pt.c (parameter_of_template_p): New function.
155         * cp-tree.h: Declare it.
156         * name-lookup.c (binding_to_template_parms_of_scope_p): New
157         function.
158         (outer_binding): Take template parameters in account when looking for
159         a name binding.
160
161 2009-01-12  Jason Merrill  <jason@redhat.com>
162
163         PR c++/31488
164         * tree.c (pod_type_p): Return 1 for structs created by the back end.
165
166 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
167
168         PR c/32041
169         * parser.c (cp_parser_builtin_offsetof): Allow `->' in
170         offsetof member-designator, handle it as `[0].'.
171
172         PR c++/38794
173         * decl.c (start_function): If grokdeclarator hasn't returned
174         FUNCTION_DECL nor error_mark_node, issue diagnostics.
175
176 2009-01-11  Jakub Jelinek  <jakub@redhat.com>
177
178         PR c++/36254
179         * cp-gimplify.c (genericize_if_stmt): Renamed from ...
180         (gimplify_if_stmt): ... this.
181         (cp_gimplify_expr): Don't handle IF_STMT here.
182         (cp_genericize_r): Call genericize_if_stmt for IF_STMT.
183
184 2009-01-10  Andrew Pinski  <pinskia@gmail.com>
185
186         PR c++/38648
187         * typeck.c (cp_build_modify_expr): Check for NULL current_function_decl.
188
189         PR c++/36695
190         * typeck2.c (build_functional_cast): Check for reference type and NULL
191         PARMS.
192
193 2009-01-09  Steve Ellcey  <sje@cup.hp.com>
194
195         * typeck.c (cp_build_unary_op): Check for ERROR_MARK.
196
197 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
198
199         PR c++/35335
200         * error.c (dump_expr): Handle EXPR_STMT like BIND_EXPR.
201
202 2009-01-09  John F. Carr  <jfc@mit.edu>
203
204         PR c++/37877
205         * parser.c (cp_parser_class_specifier): Clear
206         parser->in_unbraced_linkage_specification_p while parsing class
207         specifiers.
208
209 2009-01-07  Jakub Jelinek  <jakub@redhat.com>
210
211         PR c++/38725
212         * semantics.c (finish_goto_stmt): Convert destination to
213         void *.
214
215 2009-01-06  Jason Merrill  <jason@redhat.com>
216
217         PR c++/35297
218         PR c++/35477
219         PR c++/35784
220         PR c++/36846
221         PR c++/38276
222         * pt.c (check_default_tmpl_args): Don't complain about
223         out-of-order parameter packs in the enclosing class
224         or parameter packs after default args.
225         (coerce_template_parms): If we have more than one
226         parameter pack, don't flatten argument packs.
227         (template_args_equal): Handle argument packs.
228         (comp_template_args): Don't flatten argument packs.
229         (check_instantiated_arg): Split out from...
230         (check_instantiated_args): Here.  Handle arg packs.
231         (convert_template_argument): Just check that nontype argument
232         packs have the right type.
233
234 2009-01-05  Dodji Seketeli  <dodji@redhat.com>
235
236         PR c++/38472
237         * typeck.c (type_after_usual_arithmetic_conversions): Fix a typo.
238
239 2009-01-05  Jason Merrill  <jason@redhat.com>
240
241         PR c++/38698
242         * typeck2.c (process_init_constructor_union): Handle union with
243         no fields.
244
245         * mangle.c (write_expression): Remove mangling for zero-operand
246         casts.
247
248         PR c++/38701
249         * decl.c (cp_finish_decl): Clear DECL_INITIAL for invalid
250         defaulting.
251
252         PR c++/38702
253         * class.c (defaultable_fn_p): Only operator== can be a copy
254         assignment operator.
255
256 2009-01-02  Jason Merrill  <jason@redhat.com>
257
258         PR c++/38698
259         * typeck2.c (process_init_constructor_union): Handle excess
260         initializers.
261         (process_init_constructor_record): Likewise.
262
263         PR c++/38684
264         * typeck2.c (digest_init_r): Don't use process_init_constructor
265         for non-aggregate classes.
266
267 2008-12-31  Jakub Jelinek  <jakub@redhat.com>
268
269         PR c++/38647
270         * parser.c (cp_parser_primary_expression) <case RID_FUNCTION_NAME>:
271         Return error_mark_node if cp_parser_non_integral_constant_expression
272         returns true.
273
274         PR c++/38640
275         * semantics.c (finish_decltype_type): Handle TEMPLATE_PARM_INDEX.
276
277 2008-12-29  Jakub Jelinek  <jakub@redhat.com>
278
279         PR c++/38635
280         * parser.c (cp_parser_condition): Use cp_parser_require
281         instead of cp_lexer_consume_token to consume =.
282
283         PR c++/38637
284         * decl.c (start_enum): If enumtype is error_mark_node, exit early.
285
286 2008-12-28  Jakub Jelinek  <jakub@redhat.com>
287
288         PR c++/38650
289         * semantics.c (finish_omp_for): Don't add CLEANUP_POINT_EXPR
290         around volatile iteration var in condition and/or increment
291         expression.
292
293 2008-12-27  Jakub Jelinek  <jakub@redhat.com>
294
295         PR c++/38639
296         * pt.c (tsubst_omp_for_iterator): RECUR on whole init_expr instead of
297         just its type.
298
299 2008-12-21  Jason Merrill  <jason@redhat.com>
300
301         PR c++/38597
302         * name-lookup.c (arg_assoc_type): Handle DECLTYPE_TYPE.
303
304 2008-12-20  Jakub Jelinek  <jakub@redhat.com>
305             Manuel López-Ibáñez  <manu@gcc.gnu.org>
306
307         PR c++/36921
308         * c-common.c (warn_about_parentheses): Remove ARG_UNUSED from
309         arg_left.  Don't warn about X<=Y<=Z if comparison's type isn't
310         integral.
311
312 2008-12-19  Jakub Jelinek  <jakub@redhat.com>
313
314         PR c++/38577
315         * call.c (build_new_method_call): Handle call being COMPOUND_EXPR
316         or NOP_EXPR.
317
318 2008-12-18  Jakub Jelinek  <jakub@redhat.com>
319
320         PR c++/38427
321         * init.c (perform_member_init): For value-initialized
322         references call permerror instead of warning and don't emit any
323         INIT_EXPR.
324
325 2008-12-18  Jason Merrill  <jason@redhat.com>
326
327         PR c++/38485
328         * parser.c (cp_parser_token_starts_cast_expression): An EOF
329         can't start a cast-expression.
330
331 2008-12-17  Jason Merrill  <jason@redhat.com>
332
333         * semantics.c (describable_type): New function.
334         (finish_decltype_type): Use it for dependent exprs.
335         * cp-tree.h: Declare it.
336         * mangle.c (write_type) [DECLTYPE_TYPE]: Set skip_evaluation.
337         (write_expression): If skip_evaluation, use type stubs.
338         * tree.c (cp_tree_equal): Handle PARM_DECLs from different
339         declarations of a function.
340         * init.c (build_new): Do auto deduction if type is describable.
341         * decl.c (cp_finish_decl): Likewise.
342         * parser.c (cp_parser_omp_for_loop): Likewise.
343
344 2008-12-10  Jason Merrill  <jason@redhat.com>
345
346         PR c++/35319
347         * mangle.c (write_builtin_type): Add mangling for decimal floating 
348         point and fixed point types.
349         (write_type): Pass FIXED_POINT_TYPE along.
350
351 2008-12-09  Mark Mitchell  <mark@codesourcery.com>
352
353         PR c++/37971
354         * class.c (resolve_address_of_overloaded_function): Check
355         accessibility of member functions unless FLAGS indicates
356         otherwise.
357         * call.c (standard_conversion): Adjust flags passed to
358         instantiate_type.
359         (convert_default_arg): Do not perform access checks.
360         * cp-tree.h (tsubst_flags_t): Add tf_no_access_control.
361
362 2008-12-08  Steve Ellcey  <sje@cup.hp.com>
363
364         * decl2.c (mark_used): Remove assemble_external call.
365
366 2008-12-08  Dodji Seketeli  <dodji@redhat.com>
367
368         PR debug/38390
369         * name-lookup.c (kept_level_p): Don't forget the case of levels
370           having using directives.
371
372 2008-12-08  Richard Henderson  <rth@redhat.com>
373
374         PR 38240
375         * class.c (finish_struct_bits): Use SET_TYPE_MODE.
376         * decl.c (record_unknown_type): Likewise.
377         (start_enum, finish_enum): Likewise.
378
379 2008-12-05  Jakub Jelinek  <jakub@redhat.com>
380
381         PR c++/35336
382         * error.c (dump_expr): Handle BIT_FIELD_REF.
383
384 2008-12-05  Sebastian Pop  <sebastian.pop@amd.com>
385
386         PR bootstrap/38262
387         * Make-lang.in (cc1plus-dummy, cc1plus): Add BACKENDLIBS,
388         remove GMPLIBS.
389
390 2008-12-04  Jason Merrill  <jason@redhat.com>
391
392         PR c++/37906
393         * decl.c (grok_special_member_properties): Set TYPE_HAS_COMPLEX_DFLT
394         here.
395         * class.c (check_bases_and_members): Rather than assuming any
396         user-declared default constructor is complex here.
397
398 2008-12-04  Richard Guenther  <rguenther@suse.de>
399
400         PR c++/38334
401         * typeck.c (get_member_function_from_ptrfunc): Mark the vtbl
402         pointer access with TREE_NO_WARNING.
403
404 2008-12-03  Jason Merrill  <jason@redhat.com>
405
406         PR c++/38232
407         * init.c (build_value_init): Do initial zero-initialization
408         of a class with an implicitly-defined constructor using
409         build_zero_init rather than in build_value_init.
410         (build_value_init_1): Fold into build_value_init.
411
412         PR c++/38256
413         * parser.c (cp_parser_conversion_type_id): Diagnose
414         'operator auto' here.
415         * decl.c (grokdeclarator): Not here.
416
417         PR c++/38380
418         * decl.c (grokdeclarator): Only set DECL_NONCONVERTING_P
419         on explicit constructors.
420         * pt.c (tsubst_copy_and_build) [CONSTRUCTOR]: Propagate
421         CONSTRUCTOR_IS_DIRECT_INIT.
422
423 2008-12-02  Jason Merrill  <jason@redhat.com>
424
425         PR c++/35782, c++/37860
426         * call.c (build_user_type_conversion_1): Remember
427         list-initialization.
428         (convert_like_real): Likewise.
429         (build_over_call): Don't require the copy constructor
430         for copy-list-initialization.
431         * cp-tree.h (TARGET_EXPR_LIST_INIT_P): New macro.
432
433         PR c++/37234
434         * decl.c (cp_finish_decl): Handle =default and =delete for
435         templates, too.
436
437 2008-12-01  Jakub Jelinek  <jakub@redhat.com>
438
439         PR c++/38257
440         * parser.c (cp_parser_omp_for_loop): Handle auto.
441         * pt.c (tsubst_omp_for_iterator): Likewise.
442
443 2008-11-28  Jason Merrill  <jason@redhat.com>
444
445         PR c++/38233
446         * init.c (perform_member_init): Fix value-initialization.
447         (build_value_init_1): Add assert to catch cases that will break
448         in the gimplifier.
449         (build_default_init): Remove.
450         * cp-tree.h: Remove its prototype.
451         * pt.c (tsubst_expr) [DECL_EXPR]: Use build_value_init for
452         value-initialization.
453
454         PR c++/38278
455         * parser.c (cp_parser_class_name): Only call 
456         maybe_note_name_used_in_class if we actually found a class name.
457
458 2008-11-25  Jason Merrill  <jason@redhat.com>
459
460         PR c++/28743
461         * decl2.c (check_classfn): Error rather than abort on parameter
462         list mismatch.
463
464 2008-11-20  Jason Merrill  <jason@redhat.com>
465
466         PR c++/28513
467         * parser.c (cp_parser_class_name): Call maybe_note_name_used_in_class.
468
469         PR c++/37540
470         * call.c (build_over_call): Take the address of the function even
471         in a template.
472         (build_new_method_call): Remember the type of the called function
473         in a template.
474
475 2008-11-19  Dodji Seketeli  <dodji@redhat.com>
476
477         PR c++/37142
478         * pt.c (coerce_template_template_parm): Use the more robust
479         uses_template_parms instead of dependent_type_p.
480
481 2008-11-19  Dodji Seketeli  <dodji@redhat.com>
482
483         PR c++/35405
484         * pt.c (lookup_template_class): Check pointers before dereferencing
485         them.
486         * error.c (dump_template_decl): Likewise.
487
488 2008-11-19  Jason Merrill  <jason@redhat.com>
489
490         PR c++/36410
491         * decl2.c (grokfield): Pass ATTR_FLAG_TYPE_IN_PLACE for a typedef
492         that names a class for linkage purposes.
493
494         PR c++/37563
495         * parser.c (cp_parser_pseudo_destructor_name): A pseudo-destructor
496         name is not a declaration.
497
498         PR c++/37256
499         * pt.c (instantiate_decl): Don't require a definition of
500         a template that is explicitly instantiated 'extern'.
501
502 2008-11-18  Jason Merrill  <jason@redhat.com>
503             Jakub Jelinek  <jakub@redhat.com>
504         
505         PR c++/37962
506         * parser.c (cp_parser_type_id): Complain about auto.
507         * decl.c (grokdeclarator): Complain about parameters and
508         conversion functions declared with auto.
509
510         * call.c (standard_conversion): Use CLASS_TYPE_P instead of
511         MAYBE_CLASS_TYPE_P.
512         * cp-tree.h (TYPE_NON_AGGREGATE_CLASS): Likewise.
513
514 2008-11-17  Jakub Jelinek  <jakub@redhat.com>
515
516         PR c++/36089
517         * init.c (constant_value_1): Handle TREE_LIST init.
518
519 2008-11-15  Jakub Jelinek  <jakub@redhat.com>
520
521         PR c++/37561
522         * typeck.c (cp_build_unary_op): Don't call get_unwidened.  Use
523         argtype instead of result_type.
524
525 2008-11-14  Jason Merrill  <jason@redhat.com>
526
527         PR c++/38030
528         * semantics.c (finish_call_expr): Don't repeat arg-dep lookup
529         for a non-dependent call.
530
531         PR c++/37740
532         * call.c (build_aggr_conv): Increment i.
533
534 2008-11-13  Jason Merrill  <jason@redhat.com>
535
536         PR c++/37932
537         * typeck2.c (process_init_constructor_record): Update bitfield
538         handling.
539         (check_narrowing): Update bitfield handling, print source type.
540         
541 2008-11-12  Jakub Jelinek  <jakub@redhat.com>
542
543         PR c++/36478
544         Revert:
545         2007-05-07  Mike Stump  <mrs@apple.com>
546         * parser.c (check_empty_body): Add.
547         (cp_parser_iteration_statement): Add call to check_empty_body.
548
549 2008-11-12  Jason Merrill  <jason@redhat.com>
550
551         PR c++/38007
552         * typeck.c (cp_build_modify_expr): Update bitfield handling.
553
554 2008-11-12  Jakub Jelinek  <jakub@redhat.com>
555
556         PR c++/34269
557         * parser.c (cp_parser_simple_declaration): Don't commit
558         to tentative parse if parse errors were seen.
559
560         PR c++/35334
561         * error.c (dump_expr): Handle COMPLEX_EXPR.
562
563 2008-11-10  Jakub Jelinek  <jakub@redhat.com>
564
565         PR c++/38021
566         * parser.c (cp_parser_enum_specifier): After parsing :,
567         parse definitely.  Don't return early if type specifier
568         is erroneous.
569
570 2008-11-06  David Edelsohn  <edelsohn@gnu.org>
571
572         PR target/26397
573         * g++spec.c (LIBSTDCXX_STATIC): New.
574         (lang_spec_driver): Use LIBSTDCXX_STATIC when not
575         shared_libgcc.
576         
577 2008-11-05  Fabien Chene <fabien.chene@gmail.com>
578
579         PR c++/32519
580         * cp-tree.h: Fix DECL_NONSTATIC_MEMBER_P to handle member template
581         functions.
582
583 2008-11-05  Richard Guenther  <rguenther@suse.de>
584
585         PR middle-end/37742
586         * decl.c (start_preparsed_function): Use the correct type for
587         building the RESULT_DECL.
588
589 2008-10-31  Jakub Jelinek  <jakub@redhat.com>
590
591         PR c++/37967
592         * decl.c (grokdeclarator): Diagnose auto function decl without
593         late return type and late return type function decl where type
594         is not auto.
595
596         PR c++/37965
597         * decl.c (cp_finish_decl): Diagnose type_uses_auto type with
598         no initializer.
599
600 2008-10-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
601
602         PR 11492
603         * class.c (check_bitfield_decl): Rename min_precision to
604         tree_int_cst_min_precision.
605         * decl.c (finish_enum): Likewise.
606
607 2008-10-29  Manuel López-Ibáñez  <manu@gcc.gnu.org>
608
609         PR c++/26997
610         * parser.c (cp_parser_token_starts_cast_expression): New.
611         (cp_parser_cast_expression): Peek the next token to decide whether
612         this could be a parenthesized constructor or is definitely an
613         actual cast.
614
615 2008-10-24  Manuel López-Ibáñez  <manu@gcc.gnu.org>
616
617         PR c/7543
618         * typeck.c (build_x_binary_op): Update call to
619         warn_about_parentheses.
620         * parser.c (cp_parser_binary_expression): Add note about passing
621         the correct code for unary expressions.
622
623 2008-10-24  Jakub Jelinek  <jakub@redhat.com>
624
625         * Make-lang.in (check-c++-subtargets): New alias for
626         check-g++-subtargets.
627         (lang_checks_parallelized): Add check-g++.
628         (check_g++_parallelize): New variable.
629
630 2008-10-21  Richard Guenther  <rguenther@suse.de>
631
632         * semantics.c (simplify_aggr_init_exprs_r): Remove.
633         (expand_or_defer_fn): Do not walk the function body to
634         simplify aggr_init_exprs.
635
636 2008-10-20  Manuel López-Ibáñez  <manu@gcc.gnu.org>
637
638         PR c++/37004
639         * typeck.c (cp_common_type): New. The same as
640         type_after_usual_arithmetic_conversions but without promotions.
641         (type_after_usual_arithmetic_conversions): Do the promotions and
642         call cp_common_type.
643         (common_type): Make it behave like the C version of this
644         function. Do not handle pointer types.
645         (common_pointer_type): Move handling of pointer types from
646         common_type to here.
647         (cp_build_binary_op): Use common_pointer_type instead of
648         common_type in call to pointer_diff.
649         Use cp_common_type instead of common_type.
650         * cp-tree.h (common_pointer_type): Declare.
651
652 2008-10-14  Jakub Jelinek  <jakub@redhat.com>
653
654         PR c++/37819
655         * cp-gimplify.c (cp_genericize_r): Only fold_convert COND_EXPR
656         arguments if they don't already have COND_EXPR's type.
657
658 2008-10-14  Paolo Carlini  <paolo.carlini@oracle.com>
659
660         PR c++/37650
661         * pt.c (push_template_decl_real): Check that current_template_parms
662         is not null.
663         (process_partial_specialization): Assert current_template_parms not
664         null.
665
666 2008-10-13  Doug Evans  <dje@google.com>
667
668         * cp-tree.h (DECL_MAIN_P): Fix parentheses around expression.
669
670 2008-10-10  Jakub Jelinek  <jakub@redhat.com>
671
672         PR c++/37146
673         * cp-gimplify.c (cp_genericize_r): Fix up bitfield operands of
674         COND_EXPR.
675
676 2008-10-09  Jakub Jelinek  <jakub@redhat.com>
677
678         PR c++/37568
679         * semantics.c (finalize_nrv_r): Clear DECL_INITIAL instead of
680         setting it to error_mark_node.
681
682 2008-10-07  Steve Ellcey  <sje@cup.hp.com>
683
684         * decl.c (start_cleanup_fn): Declare as inline.
685
686 2008-10-06  Jason Merrill  <jason@redhat.com>
687
688         PR c++/37376, other mangling issues
689         * mangle.c (write_type): Update TYPE_PACK_EXPANSION mangling.
690         (write_member_name): Break out from...
691         (write_expression): ...here.  Handle dependent COMPONENT_REF.
692         (write_template_arg): Wrap an argument pack in 'I'/'E'.
693         (write_builtin_type): Update char16/32_t mangling.
694         (write_nested_name, write_prefix): Don't forget template args
695         for typename types.
696         * operators.def: Add ARROW_EXPR, update COMPONENT_REF and 
697         EXPR_PACK_EXPANSION.
698
699 2008-10-06  Aldy Hernandez  <aldyh@redhat.com>
700
701         * typeck.c (build_x_indirect_ref): Add location argument.
702         (cp_build_binary_op): Pass location to warn_for_div_by_zero.
703         (cp_build_unary_op): Add location argument.
704         (cp_build_modify_expr): Same.
705         * class.c (build_base_path): Pass location to build_indirect_ref.
706         * semantics.c (handle_omp_for_class_iterator): Pass elocus to
707         build_modify_expr.
708
709 2008-10-05  Dodji Seketeli  <dodji@redhat.com>
710
711         PR c++/37410
712         * cp-gimplify.c (cp_gimplify_expr): For each USING_STMT
713         make sure an IMPORTED_DECL node is added to the BLOCK_VARS list
714         of the innermost containing BLOCK.
715
716 2008-10-03  Paolo Carlini  <paolo.carlini@oracle.com>
717
718         PR c++/37719
719         * error.c (dump_function_decl): Save the exceptions in case of
720         error about incompatible specifications in a specialization.
721
722 2008-10-01  Andrew Pinski  <andrew_pinski@playstation.sony.com>
723
724         * tree.c (lvalue_p_1): COMPOUND_LITERAL_EXPR is also an lvalue.
725
726 2008-09-30  H.J. Lu  <hongjiu.lu@intel.com>
727
728         PR c++/37683
729         * parser.c (cp_parser_selection_statement): Fix uninitialized
730         variable.
731
732 2008-09-30  Simon Martin  <simartin@users.sourceforge.net>
733
734         PR c++/37555
735         PR c++/37556
736         * decl.c (grokdeclarator): Set the type for typedefs to a
737         nested-name-specifier to error_mark_node.
738
739 2008-09-30  Paolo Bonzini  <bonzini@gnu.org>
740
741         * parser.c (cp_parser_selection_statement): Implement here the
742         -Wempty-body warning for `if' and `else' statements.
743         * semantics.c (finish_if_stmt): Do not call empty_body_warning.
744
745 2008-09-25  Paolo Carlini  <paolo.carlini@oracle.com>
746
747         PR c++/37649
748         * name-lookup.c (maybe_process_template_type_declaration): Check
749         return value of push_template_decl_real for error_mark_node.
750
751 2008-09-24  Aldy Hernandez  <aldyh@redhat.com>
752
753         * semantics.c (finish_fname): Pass location to fname_decl.
754
755 2008-09-23  Jakub Jelinek  <jakub@redhat.com>
756
757         PR c++/37533
758         * semantics.c (finish_omp_for): If processing_template_decl, just build
759         MODIFY_EXPR for init instead of calling cp_build_modify_expr.
760
761 2008-09-23  Aldy Hernandez  <aldyh@redhat.com>
762
763         * typeck.c (build_array_ref): Pass location to cp_build_binary_op.
764         (get_member_function_from_ptrfunc): Same.
765         (build_x_binary_op): Same.
766         (build_binary_op): Same.
767         (cp_build_binary_op): New location argument.
768         (pointer_diff): Pass location to cp_build_binary_op.
769         (cp_truthvalue_conversion): Pass location to build_binary_op.
770         (convert_ptrmem): Pass location to cp_build_binary_op.
771         (cp_build_modify_expr): Same.
772         (build_ptrmemfunc): Same.
773         * init.c (expand_cleanup_for_base): Pass location to
774         c_common_truthvalue_conversion.
775         (build_new_1): Pass location to cp_build_binary_op.
776         (build_vec_delete_1): Pass location to *build_binary_op,
777         c_common_truthvalue_conversion.
778         (build_vec_init): Same.
779         (build_delete): Same.
780         * decl.c (compute_array_index_type): Same.
781         * call.c (build_new_op): Same.
782         * rtti.c (build_dynamic_cast_1): Same.
783         * cp-tree.h: Add argument to cp_build_binary_op.
784         * semantics.c (handle_omp_for_class_iterator): Pass location to
785         *build_binary_op, c_common_truthvalue_conversion.
786         * decl2.c (get_guard_cond): Same.
787
788 2008-09-17  Richard Guenther  <rguenther@suse.de>
789
790         PR c++/22374
791         * rtti.c (build_dynamic_cast_1): Convert the COND_EXPR
792         result to the correct type.
793
794 2008-09-17  H.J. Lu  <hongjiu.lu@intel.com>
795
796         PR c++/37450
797         * name-lookup.c (pushdecl_maybe_friend): Don't return the old
798         parameter for duplicate.
799
800 2008-09-17  Jason Merrill  <jason@redhat.com>
801
802         PR c++/37588
803         * name-lookup.c (lookup_type_scope): Look through sk_function_parms.
804
805 2008-09-17  Jakub Jelinek  <jakub@redhat.com>
806
807         PR c++/37552
808         * typeck.c (build_array_ref): Use protected_set_expr_location instead
809         of SET_EXPR_LOCATION when ret might not be an expression.
810
811 2008-09-17  Jan Hubicka  <jh@suse.cz>
812
813         PR c++/18071
814         * cp/decl.c (start_method): Set DECL_NO_INLINE_WARNING_P.
815
816 2008-09-16  Jakub Jelinek  <jakub@redhat.com>
817
818         PR c++/37531
819         * semantics.c (finish_compound_literal): Return error_mark_node if
820         type is errorneous.
821
822         PR c++/37532
823         * lex.c (init_reswords): Don't populate ridpointers for D_CONLY
824         reserved words.
825
826 2008-09-15  Aldy Hernandez  <aldyh@redhat.com>
827
828         * decl.c (duplicate_decls): Call error_at.
829         (grokfndecl): New location argument.  Use location if available.
830         (grokdeclarator): Pass declarator location to grokfndecl.
831         * cp-tree.h (struct cp_declarator): Update comment for id_loc.
832         * decl2.c (check_classfn): Use error_at.
833         * parser.c (cp_parser_init_declarator): Set function_start_locus
834         to brace location.
835         (cp_parser_member_declaration): Set id_loc for function declarators.
836
837 2008-09-09  Jan Hubicka  <jh@suse.cz>
838
839         PR middle-end/37500
840         * pt.c (tsubst_decl): Do not copy DECL_STRUCT_FUNCTION pointer.
841
842 2008-09-09  Jakub Jelinek  <jakub@redhat.com>
843
844         PR c++/37417
845         * tree.c (array_type_nelts_top): Add size_one_node instead of
846         integer_one_node.
847
848 2008-09-09  Jason Merrill  <jason@redhat.com>
849
850         PR c++/37439
851         * pt.c (tsubst_copy) [PARM_DECL]: Don't abort if the parm has
852         DECL_CONTEXT set.
853
854 2008-09-09  Jakub Jelinek  <jakub@redhat.com>
855
856         PR c++/37389
857         * decl.c (build_enumerator): Handle previous value's DECL_INITIAL
858         being error_operand_p.  Don't clear value if it was error_mark_node.
859
860 2008-09-09  Paolo Bonzini  <bonzini@gnu.org>
861
862         * cp-objcp-common.h (LANG_HOOKS_EXPAND_DECL): Remove.
863         * cp-tree.h: Don't mention DECL_ANON_UNION_ELEMS.
864         * semantics.c (anon_aggr_type_p): Remove.
865
866 2008-09-06  Jason Merrill  <jason@redhat.com>
867
868         PR c++/37302
869         * parser.c (cp_parser_parameter_declaration_list): Process the
870         PARM_DECLs as we go and push them.  Return a TREE_LIST.
871         (cp_parser_parameter_declaration_clause): Return a TREE_LIST.
872         (cp_parser_direct_declarator): Create a binding level and
873         suppress deprecated warnings in the parameter list.
874         (make_call_declarator): PARMS is now a tree.
875         * cp-tree.h (struct cp_declarator): Function parms are now a tree.
876         * decl.h (enum deprecated_states, deprecated_state): Move here.
877         * decl.c: From here.
878         (type_is_deprecated): New fn.
879         (grokparms): PARMLIST is a tree now.  Warn about parms that
880         use deprecated types.
881         * mangle.c (write_expression): Handle PARM_DECL, CALL_EXPR and
882         0-operand cast.
883         * pt.c (tsubst) [DECLTYPE_TYPE]: Set skip_evaluation.
884         (tsubst_copy) [PARM_DECL]: Handle a PARM_DECL used outside of a 
885         function.
886         * name-lookup.c (pushtag): Look through function parameter scopes.
887         (pushdecl_maybe_friend): Don't set DECL_CONTEXT on a PARM_DECL 
888         when we're parsing a function declarator.
889
890 2008-09-05  Douglas Gregor  <doug.gregor@gmail.com>
891
892        PR c++/37342
893        * tree.c (cp_build_qualified_type_real): Deal with sharing of
894        TYPE_LANG_SPECIFIC in the canonical types of pointer-to-method
895        types.
896         
897 2008-09-04  Ian Lance Taylor  <iant@google.com>
898
899         * parser.c (check_no_duplicate_clause): Change code parameter to
900         enum omp_clause_code.
901
902 2008-09-03  Jakub Jelinek  <jakub@redhat.com>
903
904         PR c++/37348
905         * decl.c (cp_finish_decl): Only set
906         DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P if decl is VAR_DECL.
907
908         PR c++/37189
909         * cp-tree.h (defer_mark_used_calls, deferred_mark_used_calls): New
910         extern decls.
911         * decl2.c (mark_used): If defer_mark_used_calls, push decl into
912         deferred_mark_used_calls vector and exit early.
913         * decl.c (defer_mark_used_calls, deferred_mark_used_calls): New
914         variables.
915         (finish_function): Set defer_mark_used_calls for the duration of the
916         function.  Call mark_used on any queued decls.
917
918 2008-09-02  Jason Merrill  <jason@redhat.com>
919
920         PR c++/37208
921         * call.c (build_over_call): Make =delete work with SFINAE.
922         * class.c (resolve_address_of_overloaded_function): Likewise.
923
924         * cp-tree.h (struct lang_decl_flags): Rename threadprivate_p to
925         threadprivate_or_deleted_p.
926         (CP_DECL_THREADPRIVATE_P): Adjust.
927         (DECL_DELETED_FN): Likewise.
928         (SD_UNINITIALIZED, SD_INITIALIZED, SD_DEFAULTED): New macros.
929         (SD_DELETED): New macro.
930         * parser.c (cp_parser_init_declarator): Use them.
931         * decl.c (start_decl): Use them.
932
933         * decl2.c (mark_used): Give =deleted error even in sizeof.
934
935         * typeck2.c (check_narrowing): Downgrade narrowing error to
936         permerror.
937
938 2008-09-02  Aldy Hernandez  <aldyh@redhat.com>
939
940         * typeck.c (build_array_ref): Use new location argument.
941         * class.c (build_vtbl_ref_1): Pass location to build_array_ref.
942         * call.c (build_new_op): Same.
943         * decl2.c (grok_array_decl): Same.
944         * cp-tree.h (build_array_ref): Add location argument to prototype.
945
946 2008-09-01  Aldy Hernandez  <aldyh@redhat.com>
947
948         * typeck.c (build_x_indirect_ref): Add location argument.
949         * class.c (build_base_path): Pass location to build_indirect_ref.
950         * pt.c (tsubst_copy_and_build): Pass location to
951         finish_label_address_expr.
952         * parser.c (cp_parser_unary_expression): Same.
953
954 2008-08-31  Jason Merrill  <jason@redhat.com>
955
956         Implement late-specified return type using 'auto'.
957         * cp-tree.h (struct cp_declarator): Add late_return_type field to
958         function declarator.
959         * parser.c (cp_parser_late_return_type_opt): New fn.
960         (cp_parser_direct_declarator): Use it.
961         (make_call_declarator): Put it in the declarator.
962         * decl.c (grokdeclarator): Splice in late-specified return type.
963         * pt.c (splice_late_return_type): New fn.
964
965 2008-08-29  Michael Meissner  <gnu@the-meissners.org>
966
967         * decl.c (builtin_function_1): Take a bool argument to decide
968         whether to use pushdecl or pushdecl_top_level.
969         (duplicate_decls): Copy function specific target and optimization
970         options on duplicate declarations.
971         (cxx_builtin_function): Update builtin_function_1 call.
972         (cxx_builtin_function_ext_scope): New function, guarantee that the
973         declaration is done at global scope.
974
975         * cp-objcp-common.h (LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE): New
976         macro, define builtin function hook for delayed machine specific
977         builtins.
978
979         * cp-tree.h (cxx_builtin_function_ext_scope): Add declaration.
980
981 2008-08-30  Jason Merrill  <jason@redhat.com>
982
983         PR c++/37288
984         * pt.c (dependent_type_p): Don't abort on auto outside of a template.
985
986 2008-08-29  Jason Merrill  <jason@redhat.com>
987
988         Implement C++0x 'auto' semantics.
989         * decl.c (start_decl_1): Don't complain about auto being incomplete.
990         (cp_finish_decl): Deduce auto.
991         * init.c (build_new): Handle 'new auto'.
992         * typeck2.c (cxx_incomplete_type_diagnostic): Give a different
993         message for auto than for normal template type parms.
994         * pt.c (type_dependent_expression_p): Handle { }.
995         (make_auto): New function.
996         (listify_autos): New function.
997         (do_auto_deduction): New function.
998         (is_auto): New function.
999         (type_uses_auto): New function.
1000         * cp-tree.h: Declare them.
1001         * parser.c (cp_parser_decl_specifier_seq): In C++0x mode, don't
1002         treat auto as a declspec.
1003         (cp_parser_simple_type_specifier): It's a type-specifier.
1004
1005 2008-08-29  Mark Mitchell  <mark@codesourcery.com>
1006
1007         * mangle.c (write_type): Add target-specific manglings for
1008         non-fundamental types to the substitution table.
1009         gcc/testsuite/
1010
1011 2008-08-29  Jakub Jelinek  <jakub@redhat.com>
1012
1013         PR fortran/29635
1014         PR fortran/23057
1015         * name-lookup.c (do_using_directive, cp_emit_debug_info_for_using):
1016         Adjust debug_hooks->imported_module_or_decl callers.
1017
1018 2008-08-29  Jan Hubicka  <jh@suse.cz>
1019
1020         * cp-gimplify.c (cp_gimplify_expr): Add PRED_CONTINUE heuristic.
1021
1022 2008-08-28  Paolo Carlini  <paolo.carlini@oracle.com>
1023
1024         PR c++/37260
1025         * decl.c (reshape_init_r): Check init for error_mark_node.
1026
1027 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1028
1029         PR c++/17880
1030         * semantics.c (maybe_convert_cond): Call verify_sequence_points.
1031         (finish_return_stmt): Likewise.
1032         (finish_switch_condition): Likewise.
1033
1034 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1035
1036         * cp-tree.h: Fix #error directive.
1037
1038 2008-08-26  Douglas Gregor  <doug.gregor@gmail.com>
1039
1040         * typeck.c (type_after_usual_arithmetic_conversions): Don't do the
1041         usual arithmetic conversions on scoped enumeration types.
1042         (common_type): Ditto.
1043         (default_conversion): Don't perform integral promotions on scoped
1044         enumeration types. 
1045         (build_array_ref): Scoped enumeration types can't be used as
1046         subscripts.
1047         * decl.c (start_enum): If building a C++0x scoped enumeration,
1048         enter its scope. If provided with an underlying type, check that
1049         underlying type and set up the enumeration type accordingly.
1050         (finish_enum): Only compute an underlying type if the underlying
1051         type isn't already fixed, and only convert the enumerator values
1052         now if we've just computed the underlying type. Finish the scope
1053         of C++0x scoped enumerations.
1054         (build_enumerator): For enumerations with a fixed underlying type,
1055         check the enumerator values when the enumerator is defined.
1056         (lookup_enumerator): New.
1057         * call.c (standard_conversion): Don't allow assignment from
1058         integers to scoped enumeration types, even with -fpermissive.
1059         Don't convert from scoped enumerations to bool or any arithmetic
1060         types.
1061         (build_conditional_expr): Don't per the usual arithmetic
1062         conversions for scoped enumeration types.
1063         (convert_like_real): Check complain to see if we should
1064         produce warnings.
1065         * error.c (class_key_or_enum_as_string): Print scoped enums.
1066         * cp-tree.h (MAYBE_CLASS_TYPE_P): Check CLASS_TYPE_P, not
1067         TYPE_LANG_FLAG_5.
1068         (INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P): New.
1069         (SCOPED_ENUM_P): New.
1070         (UNSCOPED_ENUM_P): New.
1071         (SET_SCOPED_ENUM_P): New.
1072         (ENUM_UNDERLYING_TYPE): New.
1073         * pt.c (lookup_template_class): Update the instantiation of enum
1074         types to deal with C++0x scoped enumerations and underlying
1075         types.
1076         * name-lookup.c (begin_scope): Deal with scoped enumeration
1077         scopes.
1078         (lookup_qualified_name): Deal with lookup into enumeration types.
1079         * name-lookup.h (enum scope_kind): Add sk_scoped_enum.
1080         * parser.c (cp_parser_class_or_namespace_name): Rename to...
1081         (cp_parser_qualifying_entity): ... this. Also, in C++0x mode,
1082         parse a type-name that can be an enumeration type.
1083         (cp_parser_nested_name_specifier_opt): Update with C++0x grammar.
1084         (cp_parser_elaborated_type_specifier): Parse the
1085         optional `struct' or `class' following enum (in C++0x).
1086         (cp_parser_enum_specifier): Parse C++0x scoped enumerations and
1087         enum-base clauses.
1088
1089 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1090
1091         * typeck.c: Update all calls to pedwarn.
1092         * decl.c: Likewise.
1093         * call.c: Likewise.
1094         * error.c: Likewise.
1095         * pt.c: Likewise.
1096         * name-lookup.c: Likewise.
1097         * parser.c: Likewise.
1098
1099 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1100
1101         PR c++/35158
1102         * parser.c (cp_parser_omp_for_loop): Handle parenthesized
1103         initializers.
1104
1105 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1106
1107         * parser.c: Update all calls to inform.
1108         * typeck.c: Likewise.
1109         * init.c: Likewise.
1110         * class.c: Likewise.
1111         * call.c: Likewise.
1112         * method.c: Likewise.
1113         * friend.c: Likewise.
1114         * typeck2.c: Likewise.
1115         * pt.c: Likewise.
1116         * name-lookup.c: Likewise.
1117         * lex.c: Likewise.
1118
1119 2008-08-19  Jakub Jelinek  <jakub@redhat.com>
1120
1121         PR debug/37156
1122         * error.c (cp_print_error_function): Deal with recursive BLOCK trees.
1123
1124 2008-08-18  Tomas Bily  <tbily@suse.cz>
1125
1126         * tree.c (cp_tree_equal): Use CONVERT_EXPR_CODE_P.
1127
1128 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1129
1130         * typeck.c: Update all callers of permerror.
1131         * init.c: Likewise.
1132         * class.c: Likewise.
1133         * decl.c: Likewise.
1134         * call.c: Likewise.
1135         * except.c: Likewise.
1136         * cvt.c: Likewise.
1137         * typeck2.c: Likewise.
1138         * pt.c: Likewise.
1139         * semantics.c: Likewise.
1140         * name-lookup.c: Likewise.
1141         * lex.c: Likewise.
1142         * decl2.c: Likewise.
1143         * parser.c: Likewise.
1144
1145 2008-08-14  Paolo Carlini  <paolo.carlini@oracle.com>
1146
1147         PR c++/34485
1148         * pt.c (check_template_shadow): Change to return a bool.
1149         * name-lookup.c (push_class_level_binding): Early return if
1150         check_template_shadow returns false.
1151         * cp-tree.h (check_template_shadow): Adjust declaration.
1152
1153 2008-08-14  Paolo Carlini  <paolo.carlini@oracle.com>
1154
1155         PR c++/34600
1156         * decl.c (grokdeclarator): In case of extern and initializer, return
1157         error_mark_node after the error.
1158
1159 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1160
1161         PR 30551
1162         * decl.c (grokfndecl): Call check_main_parameters_type only if
1163         -Wmain.
1164
1165 2008-08-12  Paolo Carlini  <paolo.carlini@oracle.com>
1166
1167         PR c++/37087
1168         * parser.c (cp_parser_class_head): Early return error_mark_node in
1169         case of global qualification of class name or qualified name that
1170         does not name a class.
1171
1172 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1173
1174         PR c++/12242
1175         * cvt.c (ocp_convert): Warn for out-of-range conversions to enum.
1176
1177 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1178
1179         PR 36901
1180         * cp-tree.h (struct diagnostic_context, struct diagnostic_info):
1181         Delete forward declarations. Check that toplev.h has not been
1182         included before this file. Include toplev.h and diagnostic.h.
1183         * error.c (cp_cpp_error): Use DK_PEDWARN.
1184         (cxx_incomplete_type_diagnostic): Update declaration.
1185         (cxx_incomplete_type_error): Use DK_ERROR.
1186         * typeck2.c (cxx_incomplete_type_diagnostic): Take a diagnostic_t
1187         as argument. Use emit_diagnostic.
1188         (cxx_incomplete_type_error): Use DK_ERROR.
1189         (add_exception_specifier): Use diagnostic_t instead of custom
1190         codes.  
1191         * typeck.c (complete_type_or_else): Update call to
1192         cxx_incomplete_type_diagnostic.
1193         * init.c (build_delete): Likewise.  
1194         * call.c (diagnostic_fn_t): Remove unused typedef.
1195         (build_temp): Pass a pointer to diagnostic_t.
1196         (convert_like_real): Use emit_diagnostic.
1197         (joust): Check return value of warning before giving informative
1198         note.  
1199         * friend.c (do_friend): Check return value of warning
1200         before giving informative note.
1201         * parser.c (cp_parser_template_id): Likewise.
1202
1203 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1204
1205         PR 7651
1206         * class.c (check_bases_and_members): Warn with -Wuninitialized
1207         instead of -Wextra.
1208         
1209 2008-08-08  Volker Reichelt  <v.reichelt@netcologne.de>
1210
1211         PR c++/35985
1212         * decl.c (xref_basetypes): Check base for MAYBE_CLASS_TYPE_P,
1213         and make sure it is not a union.
1214
1215 2008-08-07  H.J. Lu  <hongjiu.lu@intel.com>
1216
1217         * semantics.c (finish_decltype_type): Initialize type.
1218
1219 2008-08-07  Douglas Gregor  <doug.gregor@gmail.com>
1220
1221         * semantics.c (finish_decltype_type): Handle calls to function
1222         pointers and references to functions properly.
1223
1224 2008-08-06  Douglas Gregor  <doug.gregor@gmail.com>
1225
1226         PR c++/36460
1227         * parser.c (cp_parser_template_argument): Don't assume that '>>'
1228         following a type-id is an error when in C++0x mode.
1229
1230 2008-08-06  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1231
1232         PR 26785
1233         * decl.c (grokdeclarator): Use explicit location with permerror_at.
1234
1235 2008-08-06  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1236
1237         PR 8715
1238         * typeck.c (cp_build_binary_op): Move code to c-common.c.
1239
1240 2008-08-05  Jason Merrill  <jason@redhat.com>
1241
1242         PR c++/37016
1243         * decl.c (build_ptrmemfunc_type): Don't require structural
1244         comparison of PMF types.
1245         * tree.c (cp_build_qualified_type_real): Don't clear
1246         a valid TYPE_PTRMEMFUNC_TYPE.
1247         * typeck.c (cp_build_unary_op): Still do build_ptrmemfunc in
1248         templates.
1249
1250 2008-08-04  Jason Merrill  <jason@redhat.com>
1251
1252         PR c++/36963
1253         * typeck2.c (check_narrowing): Allow narrowing conversion
1254         from an explicit floating-point constant.
1255
1256         PR c++/37006
1257         * pt.c (tsubst_decl): Leave DECL_INITIAL set on deleted
1258         instantiations.
1259
1260 2008-08-04  Simon Baldwin  <simonb@google.com>
1261
1262         PR c++/36999
1263         * parser.c (cp_parser_elaborated_type_specifier): Warn only when
1264         the declaration's id is followed by a semicolon.
1265
1266 2008-07-31  Jakub Jelinek  <jakub@redhat.com>
1267
1268         PR c++/36405
1269         * rtti.c (get_tinfo_decl_dynamic, get_typeid): Call
1270         complete_type_or_else even for UNKNOWN_TYPE to get diagnostics.
1271
1272 2008-07-31  Jason Merrill  <jason@redhat.com>
1273
1274         PR c++/36633
1275         * init.c (build_new_1): Don't convert pointer to the data type
1276         until we're actually going to treat it as that type.
1277
1278         PR c++/11309
1279         * tree.c (build_aggr_init_expr): Split out...
1280         (build_cplus_new): ...from here.
1281         (stabilize_init): Don't mess with AGGR_INIT_EXPR either.
1282         * init.c (build_new_1): new T() means value-initialization,
1283         not default-initialization.
1284         (build_vec_init): Likewise.
1285         (build_value_init_1): Use build_aggr_init_expr.
1286
1287 2008-07-30  Dodji Seketeli  <dseketel@redhat.com>
1288
1289         PR c++/36767
1290         * decl2.c (fix_temporary_vars_context_r): New function.
1291          (one_static_initialization_or_destruction): Make sure temporary
1292          variables part of the initialiser have their DECL_CONTEXT()
1293          properly set.
1294
1295 2008-07-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1296
1297         PR 34389
1298         * typeck.c (build_binary_op): Encapsulate code into
1299         shorten_binary_op.
1300
1301 2008-07-29  Jakub Jelinek  <jakub@redhat.com>
1302
1303         PR c++/36852
1304         * tree.c (cplus_array_hash, build_cplus_array_type_1): Hash on
1305         TYPE_UID instead of pointers.
1306
1307 2008-07-29  Jan Hubicka  <jh@suse.cz>
1308
1309         * optimize.c (maybe_clone_body): Remove DECL_INLINE.
1310         * decl.c (duplicate_decls): Likewise.
1311         (grokfndecl): Likewise.
1312         (start_method): Likewise.
1313         * method.c (make_thunk, make_alias_for, implicitly_declare_fn):
1314         Likewise.
1315         * pt.c (register_specialization, regenerate_decl_from_template):
1316         Likewise.
1317         * decl2.c (grokfield): Likewise.
1318
1319 2008-07-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1320
1321         PR 34985
1322         * decl.c (duplicate_decls): Merge USED flags.
1323
1324 2008-07-27  Jason Merrill  <jason@redhat.com>
1325
1326         PR c++/36943
1327         * decl.c (reshape_init_r): Allow C++0x initializer lists.
1328
1329 2008-07-28  Richard Guenther  <rguenther@suse.de>
1330
1331         Merge from gimple-tuples-branch.
1332
1333         2008-07-22  Aldy Hernandez  <aldyh@redhat.com>
1334
1335         * cp-gimplify.c (gimplify_if_stmt): Set location on newly created
1336         COND_EXPR.
1337
1338         2008-07-18  Jakub Jelinek  <jakub@redhat.com>
1339
1340         * decl.c (finish_function): Call gimple_body after cp_genericize.
1341
1342         2008-07-18  Aldy Hernandez  <aldyh@redhat.com>
1343
1344         * optimize.c: Include gimple.h instead of tree-gimple.h.
1345         * Make-lang.in (cp-gimplify.o): Depend on tree-iterator.h.
1346         * cp-gimplify.c: Rename tree-gimple.h to gimple.h.  Include
1347         tree-iterator.h.
1348
1349         2008-07-16  Jakub Jelinek  <jakub@redhat.com>
1350
1351         * optimize.c (maybe_clone_body): Clear DECL_SAVED_TREE for the clone.
1352
1353         2008-07-14  Jakub Jelinek  <jakub@redhat.com>
1354
1355         * cp-gimplify.c (cp_gimplify_expr): Update comment.
1356
1357         2008-07-14  Aldy Hernandez  <aldyh@redhat.com>
1358
1359         * cp-tree.h (union lang_tree_node): Rename GENERIC_NEXT to
1360         TREE_CHAIN.
1361         * cp-gimplify.c (cxx_omp_clause_apply_fn): Rename
1362         GIMPLE_MODIFY_STMT to MODIFY_EXPR.
1363         (cxx_omp_clause_copy_ctor): Same.
1364         (cxx_omp_clause_assign_op): Same.
1365
1366         2008-05-28  Jakub Jelinek  <jakub@redhat.com>
1367
1368         * cp-gimplify.c (cp_gimplify_omp_for): Add pre_p argument.  Tuplify.
1369         (cp_gimplify_expr): Adjust caller.
1370
1371         2008-05-11 Doug Kwan  <dougkwan@google.com>
1372
1373         * init.c (build_vec_delete): Add type conversion for argument
1374         0 of POINTER_PLUS_EXPR.
1375
1376         2008-04-29  Doug Kwan  <dougkwan@google.com>
1377
1378         * decl2 (File): Include "gimple.h"
1379         (cp_write_global_declarations): Use gimple_body instead of
1380         DECL_SAVED_TREE.
1381         * Make-lang.in (cp/decl2.o): Add $(GIMPLE_H)
1382
1383         2008-04-10  Diego Novillo  <dnovillo@google.com>
1384
1385         http://gcc.gnu.org/ml/gcc-patches/2008-04/msg00913.html
1386
1387         * optimize.c (maybe_clone_body): Re-enable call to
1388         clone_body.
1389         * cp-gimplify.c (cp_gimplify_omp_for): Mark disabled
1390         code with call to gimple_unreachable.
1391         (cp_genericize): Fix handling of clone bodies.
1392
1393         2008-04-04  Diego Novillo  <dnovillo@google.com>
1394
1395         http://gcc.gnu.org/ml/gcc-patches/2008-04/msg00413.html
1396
1397         * optimize.c (maybe_clone_body): Re-enable.
1398
1399         2008-02-19  Diego Novillo  <dnovillo@google.com>
1400                     Oleg Ryjkov  <olegr@google.com>
1401
1402         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00804.html
1403
1404         * cp-gimplify.c (gimplify_for_stmt): Change gimple_seq
1405         argument to gimple_seq *.  Update all users.
1406         (gimplify_must_not_throw_expr): Likewise.
1407
1408         2008-02-04  Oleg Ryjkov <olegr@google.com>
1409
1410         * except.c: Include gimple.h
1411         (cp_protect_cleanup_actions): Convert to tuples.
1412         * Make-lang.in (cp/except.o): Add dependency on gimple.h
1413
1414         2007-11-10  Aldy Hernandez  <aldyh@redhat.com>
1415
1416         * cp-gimplify.c (gimplify_cp_loop): Call tree_annotate_all_with_locus
1417         instead of annotating each block manually.
1418
1419         2007-10-30  Aldy Hernandez  <aldyh@redhat.com>
1420
1421         * cp-gimplify.c (gimplify_cp_loop): Tuplify.
1422         (gimplify_for_stmt): Same.
1423         (gimplify_switch_stmt): Same.
1424         (cp_gimplify_expr): [FOR_STMT]: Do not call gimplify_for_stmt.  Return
1425         GS_OK.
1426         [WHILE_STMT]: Return GS_OK.
1427         [SWITCH_STMT]: Same.
1428         [CONTINUE_STMT]: Same.
1429         [BREAK_STMT]: Same.
1430         (cp_genericize): Set gimple_body() of cloned functions when needed.
1431
1432         2007-10-29  Aldy Hernandez  <aldy@quesejoda.com>
1433
1434         * cp-gimplify.c: Move build_gimple_eh_filter_tree here.
1435         (cp_gimplify_init_expr): Convert to tuples.
1436         (gimplify_must_not_throw_expr): Make function return a
1437         gimplify_status and convert to tuples.
1438
1439         2007-10-18  Aldy Hernandez  <aldy@quesejoda.com>
1440
1441         * cp-gimplify.c (genericize_try_block): Enable and do not call
1442         gimplify_stmt.
1443         (genericize_catch_block): Same.
1444         (genericize_eh_spec_block): Same.
1445         Rename gimple_build_eh_filter_tree to build_gimple_eh_filter_tree.
1446         (cp_gimplify_expr): Enable TRY_BLOCK, HANDLER, and EH_SPEC_BLOCK.
1447
1448         2007-10-16  Aldy Hernandez  <aldy@quesejoda.com>
1449
1450         * optimize.c (maybe_clone_body): Comment out call to clone_body.
1451         * decl.c (finish_function): Use gimple_body instead of
1452         DECL_SAVED_TREE.
1453         * cp-tree.h (cp_gimplify_expr): Last 2 arguments are sequences.
1454         * cp-gimplify.c (genericize_try_block): Comment out.
1455         (genericize_catch_block): Same.
1456         (genericize_eh_spec_block): Same.
1457         (gimplify_cp_loop): Comment out calls to gimplify_stmt.
1458         (gimplify_for_stmt): Comment out.
1459         (gimplify_switch_stmt): Comment out call to gimplify_stmt.
1460         (cp_gimplify_omp_for): Same.
1461         (gimplify_must_not_throw_expr): Argument pre_p is a sequence.
1462         Comment out call to gimplify_stmt and append_to_statement_list.
1463         Rename gimple_build_eh_filter_tree to build_gimple_eh_filter_tree.
1464         (cp_gimplify_init_expr): Arguments pre_p and post_p are sequences.
1465         (cp_gimplify_expr): Same.
1466         Comment out calls to genericize_*_block.  Comment out call to
1467         gimplify_for_stmt.
1468
1469 2008-07-27  H.J. Lu  <hongjiu.lu@intel.com>
1470
1471         PR c++/36944
1472         * class.c (type_has_user_provided_default_constructor): Handle
1473         default parameters.
1474
1475 2008-07-27  Paolo Carlini  <paolo.carlini@oracle.com>
1476
1477         * decl.c (push_library_fn): Add a parameter for the exceptions that
1478         the function may throw.
1479         (push_void_library_fn, push_throw_library_fn, expand_static_init):
1480         Adjust.
1481         (build_library_fn): Change to static.
1482         * cp-tree.h: Adjust declarations.
1483         * except.c (declare_nothrow_library_fn): New.
1484         (do_get_exception_ptr, do_begin_catch, do_free_exception,
1485         do_allocate_exception):  Use the latter, adjust the declarations
1486         (ie, add empty exception-specification), consistently with the
1487         actual implementation in libsupc++.
1488
1489 2008-07-25  Jan Hubicka  <jh@suse.cz>
1490
1491         * typeck.c (inline_conversion): Remove.
1492         (cp_build_function_call): Do not use inline_conversion.
1493         * decl.c (duplicate_decls): Do not insist on inline being declared
1494         early.
1495         (start_cleanup_fn): Do not assume that INLINE flags prevent function
1496         from being output.  We now remove static functions always.
1497         (finish_function): Do return warning on all static functions.
1498         * call.c (build_over_call): Do not use inline_conversion.
1499         * cp-tree.h (possibly_inlined_p): Declare.
1500         (inline_conversion): Remove.
1501         * pt.c (instantiate_decl): Use possibly_inlined_p predicate.
1502         * decl2.c (cp_write_global_declarations): Likewise.
1503         (mark_used): Likewise.
1504         (possibly_inlined_p): New functions.
1505
1506 2008-07-25  Jason Merrill  <jason@redhat.com>
1507
1508         * class.c (type_has_user_provided_default_constructor): Handle
1509         templates.
1510
1511 2008-07-23  Jan Hubicka  <jh@suse.cz>
1512
1513         * decl.c (duplicate_decls): Update comment and unit-at-a-time.
1514         (grogfndecl): Drop flag_inline_trees code.
1515         * pt.c (instantiate_decl): Drop flag_iline_trees code.
1516         * lex.c (cxx_init): Do not set unit-at-a-time.
1517
1518 2008-07-23  Jason Merrill  <jason@redhat.com>
1519
1520         * mangle.c (write_unqualified_name): Avoid infinite recursion when
1521         trying to mangle a decl with no name.
1522
1523         Implement defaulted/deleted functions as per N2346
1524         * cp-tree.h (struct lang_decl_flags): Add defaulted_p bitfield.
1525         (DECL_DELETED_FN): New macro.
1526         (DECL_DEFAULTED_FN): New macro.
1527         * class.c (user_provided_p): New fn.
1528         (defaultable_fn_p): New fn.
1529         (type_has_user_provided_constructor): New fn.
1530         (type_has_user_provided_default_constructor): New fn.
1531         (check_methods): A defaulted fn is still trivial.
1532         (check_bases_and_members): Likewise.
1533         * decl.c (grok_special_member_properties): Likewise.
1534         (duplicate_decls): Complain about redeclaring a function as deleted.
1535         (start_decl): initialized==2 means deleted.
1536         (cp_finish_decl): Handle deleted/defaulted semantics.
1537         * decl2.c (grokfield): Likewise.
1538         (mark_used): Check DECL_DEFAULTED_FN instead of DECL_ARTIFICIAL.
1539         Complain about using a deleted fn.
1540         * init.c (build_value_init_1): Use type_has_user_provided_constructor.
1541         (perform_member_init): Check for a user-provided default constructor
1542         even if TYPE_NEEDS_CONSTRUCTING.
1543         (build_new_1): Likewise.
1544         * call.c (build_over_call): Don't call mark_used twice.
1545         * method.c (implicitly_declare_fn): Set DECL_DEFAULTED_FN.
1546         * search.c (check_final_overrider): Check for deleted mismatch.
1547         * parser.c (cp_parser_init_declarator): Tell start_decl about =delete.
1548         (cp_parser_pure_specifier): Handle =default and =delete.
1549
1550         * error.c (maybe_warn_cpp0x): Suggest -std=gnu++0x as well.
1551
1552 2008-07-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1553
1554         PR 35058
1555         * typeck.c: All calls to pedwarn changed.
1556         * decl.c: All calls to pedwarn changed.
1557         * call.c: All calls to pedwarn changed.
1558         * error.c: All calls to pedwarn changed.
1559         * typeck2.c: All calls to pedwarn changed.
1560         * pt.c: All calls to pedwarn changed.
1561         * name-lookup.c: All calls to pedwarn changed.
1562         * parser.c: All calls to pedwarn changed.
1563
1564 2008-07-21  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
1565
1566         * call.c: Fix comment typos.
1567         * class.c: Likewise.
1568         * cp-tree.h: Likewise.
1569         * cxx-pretty-print.c: Likewise.
1570         * decl.c: Likewise.
1571         * init.c: Likewise.
1572         * name-lookup.c: Likewise.
1573         * operators.def: Likewise.
1574         * parser.c: Likewise.
1575         * pt.c: Likewise.
1576         * tree.c: Likewise.
1577         * typeck.c: Likewise.
1578
1579 2008-07-21  Paolo Carlini  <paolo.carlini@oracle.com>
1580
1581         PR c++/36871
1582         PR c++/36872
1583         * semantics.c (classtype_has_nothrow_assign_or_copy_p): Only check
1584         copy constructors and copy assignment operators proper.
1585
1586 2008-07-21  Rafael Ávila de Espíndola  <espindola@google.com>
1587
1588         * parser.c (cp_token): Remove in_system_header.
1589         (eof_token): Remove in_system_header.
1590         (cp_lexer_get_preprocessor_token): Don't set in_system_header.
1591         (cp_lexer_set_source_position_from_token): Don't set in_system_header.
1592         (cp_parser_member_declaration):  Use in_system_header_at.
1593         * pt.c (lookup_template_class): Don't set DECL_IN_SYSTEM_HEADER.
1594         (pop_tinst_level): Don't set in_system_header.
1595         (instantiate_class_template): Don't set in_system_header.
1596         (instantiate_decl): Don't set in_system_header.
1597         (instantiate_pending_templates): Don't set in_system_header.
1598
1599 2008-07-21  Paolo Carlini  <paolo.carlini@oracle.com>
1600
1601         PR c++/36870
1602         * semantics.c (classtype_has_nothrow_assign_or_copy_p): Use
1603         TYPE_NOTHROW_P, not TREE_NOTHROW.
1604         (trait_expr_value): Likewise.
1605
1606 2008-07-18  Dodji Seketeli  <dseketel@redhat.com>
1607
1608         PR c++/36407
1609         * call.c (convert_like_real): Don't take the error code path
1610           when a rvalue or base conversion has the bad_p field set.
1611
1612 2008-07-18  Kris Van Hees  <kris.van.hees@oracle.com>
1613
1614         * rtti.c (emit_support_tinfos): Add char16_type_node and
1615         char32_type_node.
1616         * typeck2.c (digest_init): Support char16_t and char32_t.
1617
1618 2008-07-18  Kavih R. Ghazi  <ghazi@caip.rutgers.edu>
1619
1620         * cvt.c (convert_to_void): Avoid C++ keywords.
1621         * decl.c (walk_namespaces_r, wrapup_globals_for_namespace):
1622         Likewise.
1623         * friend.c (is_friend): Likewise.
1624         * init.c (perform_member_init): Likewise.
1625         * mangle.c (write_template_prefix, write_template_template_param):
1626         Likewise.
1627         * name-lookup.c (do_namespace_alias, do_using_directive,
1628         parse_using_directive, ambiguous_decl, arg_assoc): Likewise.
1629         * parser.c (cp_parser_template_id, cp_parser_namespace_definition,
1630         cp_parser_objc_typename, cp_parser_objc_method_keyword_params):
1631         Likewise.
1632         * pt.c (is_specialization_of_friend, lookup_template_class,
1633         push_tinst_level, instantiate_class_template,
1634         tsubst_copy_and_build): Likewise.
1635         * tree.c (add_stmt_to_compound): Likewise.
1636         * typeck.c (finish_class_member_access_expr): Likewise.
1637
1638 2008-07-17  Julian Brown  <julian@codesourcery.com>
1639             Mark Mitchell  <mark@codesourcery.com>
1640
1641         * decl2.c (determine_visibility): Allow target to override
1642         visibility of class data.
1643
1644 2008-07-17  Paolo Carlini  <paolo.carlini@oracle.com>
1645
1646         PR c++/36855
1647         * semantics.c (trait_expr_value): Update __has_trivial_destructor
1648         semantics to the current WP (N2691).
1649
1650 2008-07-16  Dodji Seketeli  <dseketel@redhat.com>
1651
1652         PR c++/13699
1653         * name-lookup.c (lookup_extern_c_fun_binding_in_all_ns): New function.
1654         (pushdecl_maybe_friend): Check if a redeclaration of extern C function
1655         complies with exception specification constraints.
1656
1657 2008-07-14  Jason Merrill  <jason@redhat.com>
1658
1659         * lex.c (init_reswords): Always set D_OBJC.
1660
1661 2008-07-11  Tom Tromey  <tromey@redhat.com>
1662             Ian Lance Taylor  <iant@google.com>
1663
1664         * lex.c (struct resword, reswords): Don't define.
1665         (D_EXT, D_ASM, D_OBJC, D_CXX0X): Don't define.
1666         (init_reswords): Clarify mask code.  Use c_common_reswords rather
1667         than reswords.
1668
1669 2008-07-11  Dodji Seketeli  <dseketel@redhat.com>
1670
1671         PR c++/13101
1672         * decl.c (grokdeclarator): Warn about initializing variables
1673         of storage class 'extern' only after the type of the declarator
1674         has been properly computed.
1675
1676 2008-07-11  Dodji Seketeli  <dseketel@redhat.com>
1677
1678         PR c++/31754
1679         * cp-tree.h (struct cp_decl_specifier_seq): Add a location field. It
1680         carries the location of the primary type.
1681         * parser.c (cp_parser_check_type_definition): Update documentation.
1682         (cp_parser_check_for_definition_in_return_type,
1683         cp_parser_check_for_invalid_template_id,
1684         cp_parser_set_decl_spec_type,
1685         cp_parser_check_for_definition_in_return_type,
1686         cp_parser_diagnose_invalid_type_name,
1687         cp_parser_new_expression, cp_parser_explicit_instantiation,
1688         cp_parser_type_specifier, cp_parser_simple_type_specifier,
1689         cp_parser_omp_for_loop, cp_parser_pragma): Use location in error
1690         messages.
1691
1692 2008-07-11 Dodji Seketeli <dseketel@redhat.com>
1693
1694         PR c++/31754
1695         * pt.c, semantic.c:
1696         * semantic.c (qualified_name_lookup_error, finish_id_expression):
1697         Add a location_t parameter so that
1698         error message can have a more accurate location.
1699         * cp-tree.h: Updated prototype
1700         * pt.c (tsubst_qualified_id): Use location in error messages.
1701         * parser.c (cp_parser_postfix_expression,
1702         cp_parser_objc_statement, cp_parser_trait_expr,
1703         cp_parser_token_is_class_key,
1704         cp_parser_uncommitted_to_tentative_parse_p,
1705         cp_parser_check_for_invalid_template_id, cp_parser_is_string_literal,
1706         cp_parser_error, cp_parser_name_lookup_error,
1707         cp_parser_simulate_error, cp_parser_check_decl_spec,
1708         cp_parser_check_decl_spec, cp_parser_non_integral_constant_expression,
1709         cp_parser_diagnose_invalid_type_name,
1710         cp_parser_parse_and_diagnose_invalid_type_name,
1711         cp_parser_require_pragma_eol, cp_parser_make_typename_type,
1712         cp_parser_string_literal, cp_parser_primary_expression,
1713         cp_parser_primary_expression, cp_parser_unqualified_id,
1714         cp_parser_nested_name_specifier_opt, cp_parser_postfix_expression,
1715         cp_parser_postfix_dot_deref_expression, cp_parser_new_expression,
1716         cp_parser_direct_new_declarator, cp_parser_builtin_offsetof,
1717         cp_parser_label_for_labeled_statement, cp_parser_statement_seq_opt,
1718         cp_parser_jump_statement, cp_parser_block_declaration,
1719         cp_parser_simple_declaration, cp_parser_decl_specifier_seq,
1720         cp_parser_function_specifier_opt, cp_parser_decltype,
1721         cp_parser_mem_initializer_list, cp_parser_mem_initializer,
1722         cp_parser_mem_initializer_id, cp_parser_template_parameter,
1723         cp_parser_type_parameter, cp_parser_template_id,
1724         cp_parser_template_name, cp_parser_template_argument): Likewise.
1725
1726 2008-07-09  Paolo Carlini  <paolo.carlini@oracle.com>
1727
1728         PR c++/36760
1729         * pt.c (tsubst_function_type): Remove warning for type qualifiers
1730         on function return type.
1731
1732 2008-07-09  Paolo Carlini  <paolo.carlini@oracle.com>
1733
1734         PR c++/36760
1735         * pt.c (tsubst_function_type): Don't warn for type qualifiers
1736         on function return type in case of system header.
1737
1738 2008-07-09  Raksit Ashok <raksit@google.com>
1739
1740         * parser.c (cp_parser_postfix_expression): New warning based on flag
1741         warn_disallowed_functions.
1742
1743 2008-07-08  Simon Martin  <simartin@users.sourceforge.net>
1744
1745         PR c++/34963
1746         * decl.c (grokdeclarator): Reset storage_class and staticp for friend
1747         functions declared with a storage class qualifier.
1748
1749 2008-07-03  Richard Guenther  <rguenther@suse.de>
1750
1751         PR c++/36128
1752         * typeck.c (cp_build_function_call): Move code to verify
1753         builtin function arguments ...
1754         * call.c (build_cxx_call): ... here.
1755
1756 2008-07-02  Jason Merrill  <jason@redhat.com>
1757
1758         * Make-lang.in (cp/typeck2.o): Add $(REAL_H) dependency.
1759
1760         Implement WG21 N2672, Initializer List proposed wording
1761         * cp-tree.h (enum cp_tree_index): Add CPTI_INIT_LIST_TYPE.
1762         (struct lang_type_class): Add has_list_ctor bitfield.
1763         (TYPE_HAS_LIST_CTOR): New macro.
1764         (BRACE_ENCLOSED_INITIALIZER_P): Expect init_list_type_node.
1765         (CONSTRUCTOR_IS_DIRECT_INIT): New macro.
1766         (LOOKUP_NO_NARROWING): New macro.
1767         (LOOKUP_NO_COPY_CTOR_CONVERSION): New macro.
1768         * parser.c (cp_parse_braced_list): Split out from...
1769         (cp_parser_initializer_clause): ...here.
1770         (cp_parser_postfix_expression): Build up CONSTRUCTOR for compound
1771         literal here.
1772         (cp_lexer_next_token_is_not_keyword): New fn.
1773         (cp_parser_parenthesized_expression_list): Handle { }.
1774         (cp_parser_new_expression, cp_parser_new_initializer): Likewise.
1775         (cp_parser_assignment_expression, cp_parser_condition): Likewise.
1776         (cp_parser_jump_statement, cp_parser_simple_declaration): Likewise.
1777         (cp_parser_mem_initializer, cp_parser_init_declarator): Likewise.
1778         (cp_parser_initializer, cp_parser_functional_cast): Likewise.
1779         (cp_parser_omp_for_loop, cp_parser_cache_group): Likewise.
1780         (cp_parser_save_member_function_body): Likewise.
1781         * call.c (conversion_kind): Add ck_list, ck_aggr.
1782         (struct conversion): Add check_narrowing bitfield, conversion list.
1783         (build_list_conv): New fn.
1784         (build_aggr_conv): New fn.
1785         (implicit_conversion): Call them.
1786         (standard_conversion): Set check_narrowing if appropriate.
1787         (add_function_candidate): Handle LOOKUP_NO_COPY_CTOR_CONVERSION.
1788         (build_user_type_conversion_1): When converting from an init list,
1789         we allow additional conversions except when calling a copy ctor.
1790         (convert_like_real): Calling an explicit ctor for an init list is
1791         ill-formed.  Handle ck_list and ck_addr.  Check narrowing.
1792         (build_new_method_call): If CONSTRUCTOR_IS_DIRECT_INIT is set and
1793         class doesn't have a list ctor, break the {} into a TREE_LIST.
1794         (compare_ics): ck_list is better than other UDCs.
1795         (set_up_extended_ref_temp): Split out from initialize_reference.
1796         (is_std_init_list): New fn.
1797         (is_list_ctor): New fn.
1798         * decl.c (cxx_init_decl_processing): Create init_list_type_node.
1799         (reshape_init_array_1): Pass it to build_constructor.
1800         (reshape_init_class): Ditto.
1801         (initialize_artificial_var): Pass the appropriate type.
1802         (build_aggr_init_full_exprs): Split out from...
1803         (check_initializer): ...here.  Handle new semantics.
1804         (build_init_list_var_init): New subroutine of check_initializer.
1805         (grokdeclarator): Converting constructors can have more than one parm.
1806         (grok_special_member_properties): Set TYPE_HAS_LIST_CTOR.
1807         * init.c (expand_default_init): Only do digest_init for aggregates.
1808         * rtti.c (tinfo_base_init): Pass init_list_type_node to
1809         build_constructor_from_list.
1810         (generic_initializer, ptr_initializer): Ditto.
1811         (ptm_initializer, class_initializer): Ditto.
1812         (get_pseudo_ti_init): Ditto.
1813         * error.c (dump_type): Handle init_list_type_node.
1814         (maybe_warn_cpp0x): New fn.
1815         (maybe_varn_variadic_templates): Call it.
1816         * cvt.c (ocp_convert): Handle conversion from { }.
1817         * tree.c (build_array_of_n_type): New fn.
1818         * typeck2.c (store_init_value): Use init_list_type_node.
1819         (digest_init): Likewise.
1820         (check_narrowing): New fn.
1821         * semantics.c: (finish_compound_literal): Take CONSTRUCTOR instead
1822         of vector of constructor elts.  Handle non-aggregate types.  Make
1823         constant literals static.
1824         * pt.c: (tsubst_copy_and_build): Adjust.
1825         (unify): Handle { }.
1826         * name-lookup.c (arg_assoc_type): Handle init_list_type_node.
1827
1828 2008-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
1829
1830         * typeck.c (comp_ptr_ttypes_real): Use vector_targets_convertible_p.
1831         (comp_ptr_ttypes_const): Likewise.
1832
1833 2008-07-01  Andrew Haley  <aph@redhat.com>
1834
1835         * decl.c (finish_constructor_body): Don't set the return value of
1836         the constructor if the constructor is that of a Java type.
1837
1838 2008-06-30  Jakub Jelinek  <jakub@redhat.com>
1839
1840         PR c++/36662
1841         * decl2.c (is_late_template_attribute): If the first attribute
1842         argument is IDENTIFIER_NODE, don't consider it when checking
1843         if arguments are value or type dependent.
1844
1845 2008-06-29  Paolo Carlini  <paolo.carlini@oracle.com>
1846
1847         PR c++/36655
1848         * pt.c (do_type_instantiation): In c++0x mode do not warn for
1849         extern template.
1850
1851 2008-06-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1852
1853         * Make-lang.in (cp-warn): Delete $(CXX_COMPAT_WARN).
1854
1855 2008-06-28  Jakub Jelinek  <jakub@redhat.com>
1856
1857         PR c++/36364
1858         * repo.c (repo_emit_p): Put const static data members initialized
1859         by const expr into *.rpo file, just return 2 if IDENTIFIER_REPO_CHOSEN
1860         for it is 0.
1861
1862 2008-06-27  Paolo Carlini  <paolo.carlini@oracle.com>
1863
1864         PR c++/36655
1865         * pt.c (do_decl_instantiation): In c++0x mode do not warn for
1866         extern template.
1867
1868 2008-06-24  Jonathan Wakely  <jwakely.gcc@gmail.com>
1869
1870         PR c++/23194
1871         * typeck.c (cp_build_function_call): Show example syntax in
1872         diagnostic.
1873
1874 2008-06-21  Jonathan Wakely  <jwakely.gcc@gmail.com>
1875
1876         * typeck.c (composite_pointer_type_r, cxx_sizeof_expr,
1877         cxx_alignof_expr, check_template_keyword, cp_build_binary_op,
1878         pointer_diff, cp_build_unary_op, build_x_compound_expr_from_list,
1879         build_reinterpret_cast_1, cp_build_c_cast, check_return_expr): Change
1880         pedwarn to permerror.
1881         * init.c (perform_member_init, build_new_1, build_new): Likewise.
1882         * decl.c (warn_extern_redeclared_static, duplicate_decls,
1883         * identify_goto, check_previous_goto_1, check_goto, define_label,
1884         check_tag_decl, start_decl, check_class_member_definition_namespace,
1885         grokfndecl, grokdeclarator): Likewise.
1886         * except.c (check_handlers): Likewise.
1887         * typeck2.c (digest_init): Likewise.
1888         * pt.c (check_specialization_namespace,
1889         check_explicit_instantiation_namespace,
1890         maybe_process_partial_specialization, check_explicit_specialization,
1891         convert_template_argument, do_decl_instantiation,
1892         do_type_instantiation, instantiate_decl): Likewise.
1893         * semantics.c (finish_template_type_parm): Likewise.
1894         * name-lookup.c (pushdecl_maybe_friend,
1895         check_for_out_of_scope_variable): Likewise.
1896         * decl2.c (finish_static_data_member_decl, build_anon_union_vars,
1897         coerce_new_type): Likewise.
1898         * parser.c (cp_parser_nested_name_specifier_opt,
1899         cp_parser_mem_initializer, cp_parser_elaborated_type_specifier,
1900         cp_parser_class_head, cp_parser_check_class_key): Likewise.
1901         (cp_parser_parameter_declaration): Check flag_permissive instead of
1902         flag_pedantic_errors.
1903         * call.c (joust): Change pedwarn to warning.
1904         * friend.c (make_friend_class): Likewise.
1905
1906 2008-06-16  Jan Hubicka  <jh@suse.cz>
1907
1908         * method.c: Include cgraph.h.
1909         (use_thunk): Use cgraph_add_new_function instead of calling backend
1910         directly.
1911
1912 2008-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
1913
1914         * parser.c: Fix comment typo.
1915
1916 2008-06-14  Simon Martin  <simartin@users.sourceforge.net>
1917
1918         PR c++/35320
1919         * decl2.c (grokbitfield): Receive the list of attributes, pass it to
1920         grokdeclarator and apply it to the created declaration.
1921         * cp-tree.h (grokbitfield): Update prototype.
1922         * parser.c (cp_parser_member_declaration): Don't apply the attributes
1923         since they are now applied in grokbitfield. Adjusted the call to
1924         grokbitfield.
1925         (cp_parser_objc_class_ivars): Likewise.
1926
1927 2008-06-14  Simon Martin  <simartin@users.sourceforge.net>
1928
1929         PR c++/35317
1930         * class.c (type_requires_array_cookie): Do not consider delete[]
1931         operators with an ellipsis as second argument.
1932
1933 2008-06-09  Jakub Jelinek  <jakub@redhat.com>
1934
1935         PR c++/36408
1936         * semantics.c (stmt_expr_value_expr): Don't crash on empty
1937         STATEMENT_LIST.
1938
1939 2008-06-08  Paolo Carlini  <paolo.carlini@oracle.com>
1940
1941          PR c++/35242
1942          * pt.c (maybe_process_partial_specialization): Check the tree
1943         returned by push_template_decl for error_mark_node.
1944         * parser.c (cp_parser_class_head): Likewise, check the tree
1945         returned by the latter.
1946
1947 2008-06-07  Paolo Carlini  <paolo.carlini@oracle.com>
1948
1949          PR c++/35327
1950          * decl.c (grokdeclarator): In case of wrong return type return
1951         immediately error_mark_node.
1952
1953 2008-06-06  Jakub Jelinek  <jakub@redhat.com>
1954
1955         * cp-tree.h (cxx_omp_finish_clause, cxx_omp_create_clause_info,
1956         dependent_omp_for_p, begin_omp_task, finish_omp_task,
1957         finish_omp_taskwait): New prototypes.
1958         (cxx_omp_clause_default_ctor): Add outer argument.
1959         (finish_omp_for): Add new clauses argument.
1960         * cp-gimplify.c (cxx_omp_finish_clause): New function.
1961         (cxx_omp_predetermined_sharing): Moved from semantics.c, rewritten.
1962         (cxx_omp_clause_default_ctor): Add outer argument.
1963         (cp_genericize_r): Walk OMP_CLAUSE_LASTPRIVATE_STMT.
1964         * cp-objcp-common.h (LANG_HOOKS_OMP_FINISH_CLAUSE): Define.
1965         * parser.c (cp_parser_omp_for_loop): Parse collapsed for loops.
1966         Add par_clauses argument.  If decl is present in parallel's
1967         lastprivate clause, change that clause to shared and add
1968         a lastprivate clause for decl to OMP_FOR_CLAUSES.
1969         Fix wording of error messages.  Adjust finish_omp_for caller.
1970         Add clauses argument.  Parse loops with random access iterators.
1971         (cp_parser_omp_clause_collapse, cp_parser_omp_clause_untied): New
1972         functions.
1973         (cp_parser_omp_for, cp_parser_omp_parallel): Adjust
1974         cp_parser_omp_for_loop callers.
1975         (cp_parser_omp_for_cond, cp_parser_omp_for_incr): New helper
1976         functions.
1977         (cp_parser_omp_clause_name): Handle collapse and untied
1978         clauses.
1979         (cp_parser_omp_clause_schedule): Handle auto schedule.
1980         (cp_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_COLLAPSE
1981         and PRAGMA_OMP_CLAUSE_UNTIED.
1982         (OMP_FOR_CLAUSE_MASK): Add PRAGMA_OMP_CLAUSE_COLLAPSE.
1983         (OMP_TASK_CLAUSE_MASK): Define.
1984         (cp_parser_omp_task, cp_parser_omp_taskwait): New functions.
1985         (cp_parser_omp_construct): Handle PRAGMA_OMP_TASK.
1986         (cp_parser_pragma): Handle PRAGMA_OMP_TASK and
1987         PRAGMA_OMP_TASKWAIT.
1988         * pt.c (tsubst_omp_clauses): Handle OMP_CLAUSE_COLLAPSE and
1989         OMP_CLAUSE_UNTIED.  Handle OMP_CLAUSE_LASTPRIVATE_STMT.
1990         (tsubst_omp_for_iterator): New function.
1991         (dependent_omp_for_p): New function.
1992         (tsubst_expr) <case OMP_FOR>: Use it.  Handle collapsed OMP_FOR
1993         loops.  Adjust finish_omp_for caller.  Handle loops with random
1994         access iterators.  Adjust for OMP_FOR_{INIT,COND,INCR} changes.
1995         (tsubst_expr): Handle OMP_TASK.
1996         * semantics.c (cxx_omp_create_clause_info): New function.
1997         (finish_omp_clauses): Call it.  Handle OMP_CLAUSE_UNTIED and
1998         OMP_CLAUSE_COLLAPSE.
1999         (cxx_omp_predetermined_sharing): Removed.
2000         * semantics.c (finish_omp_for): Allow pointer iterators.  Use
2001         handle_omp_for_class_iterator and dependent_omp_for_p.  Handle
2002         collapsed for loops.  Adjust c_finish_omp_for caller.  Add new
2003         clauses argument.  Fix check for type dependent cond or incr.
2004         Set OMP_FOR_CLAUSES to clauses.  Use cp_convert instead of
2005         fold_convert to convert incr amount to difference_type.  Only
2006         fold if not in template.  If decl is mentioned in lastprivate
2007         clause, set OMP_CLAUSE_LASTPRIVATE_STMT.  Handle loops with random
2008         access iterators.  Adjust for OMP_FOR_{INIT,COND,INCR}
2009         changes.
2010         (finish_omp_threadprivate): Allow static class members of the
2011         current class.
2012         (handle_omp_for_class_iterator, begin_omp_task, finish_omp_task,
2013         finish_omp_taskwait): New functions.
2014
2015         * parser.c (cp_parser_binary_expression): Add prec argument.
2016         (cp_parser_assignment_expression): Adjust caller.
2017         * cp-tree.h (outer_curly_brace_block): New prototype.
2018         * decl.c (outer_curly_brace_block): No longer static.
2019
2020 2008-06-02  Paolo Carlini  <paolo.carlini@oracle.com>
2021
2022          PR c++/36404
2023          * pt.c (push_template_decl_real): Consistently return error_mark_node
2024         on error.
2025
2026 2008-06-02  Tomas Bily  <tbily@suse.cz>
2027
2028          * typeck.c (is_bitfield_expr_with_lowered_type): Use CASE_CONVERT.
2029          (cp_build_unary_op): Likewise.
2030          (cp_build_indirect_ref): Use CONVERT_EXPR_P.
2031          (maybe_warn_about_returning_address_of_local): Likewise.
2032
2033 2008-05-29  Paolo Carlini  <paolo.carlini@oracle.com>
2034
2035          PR c++/35243
2036          * pt.c (tsubst_initializer_list): Consistently check the tree
2037          returned by tsubst_pack_expansion for error_mark_node.
2038
2039 2008-05-27  Michael Matz  <matz@suse.de>
2040
2041         PR c++/27975
2042         * call.c (build_new_op): Make warning conditional on
2043         OPT_Wenum_compare.
2044
2045 2008-05-27  Alexandre Oliva  <aoliva@redhat.com>
2046
2047         PR c++/35909
2048         * call.c (convert_like_real): Convert bitfield to desired type
2049         before creating temporary.
2050
2051 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
2052
2053         * Makefile.in: Adjusted dependencies on c-incpath.o.
2054
2055 2008-05-23  Jakub Jelinek  <jakub@redhat.com>
2056
2057         PR c++/36237
2058         * cp-gimplify.c (cxx_omp_clause_apply_fn): Call
2059         fold_build_cleanup_point_expr on build_call_a results.
2060
2061         PR c++/36308
2062         * semantics.c (omp_clause_info_fndecl): New function.
2063         (finish_omp_clauses): Use it.
2064
2065 2008-05-21  Jakub Jelinek  <jakub@redhat.com>
2066
2067         PR c++/36023
2068         * cp-tree.h (check_array_initializer): New prototype.
2069         * decl.c (check_array_initializer): New function.
2070         (check_initializer): Call it.
2071         * semantics.c (finish_compound_literal): Call it for ARRAY_TYPEs.
2072
2073 2008-05-21  Tom Tromey  <tromey@redhat.com>
2074
2075         * mangle.c (save_partially_mangled_name): Remove.
2076         (restore_partially_mangled_name): Likewise.
2077         (write_encoding): Update.
2078         (write_unqualified_name): Likewise.
2079         (start_mangling): Always use name_obstack.  Remove 'ident_p'
2080         argument.
2081         (get_identifier_nocopy): Remove.
2082         (finish_mangling_internal): Rename from finish_mangling.
2083         (finish_mangling): New function.
2084         (finish_mangling_get_identifier): Likewise.
2085         (partially_mangled_name, partially_mangled_name_len): Remove.
2086         (mangle_decl_string): Change return type.  Update.
2087         (mangle_decl, mangle_type_string, mangle_special_for_type,
2088         mangle_ctor_vtbl_for_type, mangle_thunk, mangle_guard_variable,
2089         mangle_ref_init_variable): Update.
2090
2091 2008-05-12  Paolo Carlini  <paolo.carlini@oracle.com>
2092
2093          PR c++/35331
2094          * semantics.c (begin_class_definition): Extend checks on the first
2095         argument.
2096
2097 2008-05-12  Tomas Bily  <tbily@suse.cz>
2098
2099          * typeck2.c (digest_init): Use CONVERT_EXPR_P.
2100          * call.c (build_over_call): Likewise.
2101          * error.c (dump_expr): Use CASE_CONVERT.
2102          * class.c (fixed_type_or_null): Likewise.
2103
2104 2008-05-11  Volker Reichelt  <v.reichelt@netcologne.de>
2105
2106         * parser.c (cp_parser_omp_clause_reduction): Add missing "expected"
2107         in error message.
2108         (cp_parser_omp_clause_schedule): Remove superfluous "expected"
2109         in error message.
2110
2111 2008-05-07  Kenneth Zadeck  <zadeck@naturalbridge.com>
2112
2113         * decl.c (duplicate_decls): Merge in DECL_PURE_P, TREE_READONLY,
2114         DECL_LOOPING_CONST_OR_PURE_P attributes.
2115         * rtti.c (build_dynamic_cast_1): Rename DECL_IS_PURE to
2116         DECL_PURE_P.
2117
2118 2008-05-02  Simon Baldwin  <simonb@google.com>
2119
2120         PR bootstrap/36108
2121         * typeck.c (build_array_ref): Remove warn_array_subscript_range.
2122
2123 2008-05-01  Simon Baldwin  <simonb@google.com>
2124
2125         * typeck.c (build_array_ref): Call warn_array_subscript_range.
2126
2127 2008-04-30  Jakub Jelinek  <jakub@redhat.com>
2128
2129         PR c++/35986
2130         * pt.c (more_specialized_fn): Stop the loop even if there are no
2131         arguments before ellipsis.
2132
2133 2008-04-29  Jakub Jelinek  <jakub@redhat.com>
2134
2135         PR c++/35650
2136         * parser.c (cp_parser_lookup_name): Look through single function
2137         OVERLOAD.
2138
2139         PR c++/35987
2140         * typeck.c (cp_build_modify_expr) <case PREINCREMENT_EXPR>: Don't build
2141         COMPOUND_EXPR if the second argument would be error_mark_node.
2142
2143 2008-04-28  Jason Merrill  <jason@redhat.com>
2144             Liu Guanwei <liu_gw@163.com>
2145
2146         PR c++/57
2147         * parser.c (cp_parser_parameter_declaration): Handle < ambiguity
2148         in default arguments.
2149
2150 2008-04-25  Jan Hubicka  <jh@suse.cz>
2151
2152         * typeck.c (check_return_expr): Update.
2153         * decl.c (start_preparsed_function): Update.
2154         * method.c (use_thunk): Update.
2155
2156 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
2157
2158         PR c++/35758
2159         * cp-tree.h (cp_reconstruct_complex_type): New prototype.
2160         * cp-objcp-common.h (LANG_HOOKS_RECONSTRUCT_COMPLEX_TYPE): Define.
2161         * decl2.c (is_late_template_attribute): Only make vector_size
2162         late tmpl attribute if argument is type or value dependent.
2163         (cp_reconstruct_complex_type): New function.
2164
2165 2008-04-24  Richard Guenther  <rguenther@suse.de>
2166
2167         * typeck.c (cp_build_function_call): Call
2168         check_builtin_function_arguments.
2169
2170 2008-04-23  Paolo Bonzini  <bonzini@gnu.org>
2171
2172         * typeck.c (get_member_function_from_ptrfunc): Don't set TREE_INVARIANT.
2173         (build_ptrmemfunc1): Don't set TREE_INVARIANT.
2174         * init.c (build_zero_init): Don't set TREE_INVARIANT.
2175         * class.c (build_base_path): Don't set TREE_INVARIANT.
2176         (build_vtbl_ref_1): Don't set TREE_INVARIANT.
2177         (build_vtbl_initializer): Don't set TREE_INVARIANT.
2178         * decl.c (build_enumerator): Don't set TREE_INVARIANT.
2179         * rtti.c (tinfo_base_init): Don't set TREE_INVARIANT.
2180         (generic_initializer): Don't set TREE_INVARIANT.
2181         (ptr_initializer): Don't set TREE_INVARIANT.
2182         (ptm_initializer): Don't set TREE_INVARIANT.
2183         (class_initializer): Don't set TREE_INVARIANT.
2184         * typeck2.c (process_init_constructor): Don't set TREE_INVARIANT.
2185         * pt.c (push_inline_template_parms_recursive): Don't set TREE_INVARIANT.
2186         (build_template_parm_index): Don't set TREE_INVARIANT.
2187         (reduce_template_parm_level): Don't set TREE_INVARIANT.
2188         (process_template_parm): Don't set TREE_INVARIANT.
2189
2190 2008-04-22  Jason Merrill  <jason@redhat.com>
2191
2192         PR c++/35316
2193         * semantics.c (finish_decltype_type): Check DECL_BIT_FIELD_TYPE
2194         to see if DECL_BIT_FIELD_TYPE should be used, not some other flag.
2195         * typeck.c (is_bitfield_expr_with_lowered_type): Likewise.
2196
2197 2008-04-22  Jakub Jelinek  <jakub@redhat.com>
2198
2199         PR c++/35747
2200         * semantics.c (finish_stmt_expr): Call pop_stmt_list even if the stmt
2201         expression is errorneous.
2202
2203 2008-04-21  Jason Merrill  <jason@redhat.com>
2204
2205         PR c++/35325
2206         * tree.c (cp_tree_equal): Handle FIXED_CST.
2207
2208         PR c++/35678
2209         * pt.c (template_template_parm_bindings_ok_p): Set
2210         processing_template_decl while in this function.
2211
2212 2008-04-18  Kris Van Hees <kris.van.hees@oracle.com>
2213
2214         * cvt.c (type_promotes_to): Support char16_t and char32_t.
2215         * decl.c (grokdeclarator): Disallow signed/unsigned/short/long on
2216         char16_t and char32_t.
2217         * lex.c (reswords): Add char16_t and char32_t (for c++0x).
2218         * mangle.c (write_builtin_type): Mangle char16_t/char32_t as vendor
2219         extended builtin type "u8char{16,32}_t".
2220         * parser.c (cp_lexer_next_token_is_decl_specifier_keyword): Support
2221         RID_CHAR{16,32}.
2222         (cp_lexer_print_token): Support CPP_STRING{16,32}.
2223         (cp_parser_is_string_literal): Idem.
2224         (cp_parser_string_literal): Idem.
2225         (cp_parser_primary_expression): Support CPP_CHAR{16,32} and
2226         CPP_STRING{16,32}.
2227         (cp_parser_simple_type_specifier): Support RID_CHAR{16,32}.
2228         * tree.c (char_type_p): Support char16_t and char32_t as char types.
2229         * typeck.c (string_conv_p): Support char16_t and char32_t.
2230
2231 2008-04-17  Jason Merrill  <jason@redhat.com>
2232
2233         PR c++/35773
2234         * call.c (build_user_type_conversion_1): Represent second step of
2235         copy-init with an rvalue conversion.
2236         (convert_like_real) [ck_user]: Don't implicitly add it here.
2237
2238 2008-04-15  Jakub Jelinek  <jakub@redhat.com>
2239
2240         PR c/35751
2241         * decl.c (layout_var_decl): If extern or static var has variable
2242         size, set TREE_TYPE (decl) to error_mark_node.
2243
2244 2008-04-16  Danny Smith  <dannysmith@users.sourceforge.net>
2245
2246         PR target/35921
2247         * optimize.c (maybe_clone_body): Copy DECL_DLLIMPORT_P flag
2248         to clone.
2249
2250 2008-04-09  Jason Merrill  <jason@redhat.com>
2251
2252         PR c++/35708
2253         * semantics.c (finish_compound_literal): Return a TARGET_EXPR,
2254         not a pushed variable.
2255
2256 2008-04-09  Volker Reichelt  <v.reichelt@netcologne.de>
2257
2258         * call.c (build_op_delete_call): Fix quotation in warning message.
2259         * decl.c (grokdeclarator): Quote keyword in error message.
2260         * pt.c (check_for_bare_parameter_packs): Fix quotation in error
2261         message.
2262
2263         * parser.c (cp_parser_check_type_definition): Print error string
2264         directly rather than using "%s".
2265         (cp_parser_postfix_expression): Fix quotation.
2266         (cp_parser_decltype): Likewise.
2267         (cp_parser_sizeof_operand): Fix quotation. Simplify.
2268
2269         * parser.c (cp_parser_non_integral_constant_expression): Build error
2270         message with CONCAT rather than using "%s".
2271         (cp_parser_primary_expression): Fix quotation.
2272         (cp_parser_postfix_expression): Likewise.
2273         (cp_parser_postfix_dot_deref_expression): Likewise.
2274         (cp_parser_unary_expression): Likewise.
2275         (cp_parser_new_expression): Likewise.
2276         (cp_parser_delete_expression): Likewise.
2277
2278         * parser.c (cp_parser_asm_specification_opt): Print CPP_CLOSE_PAREN
2279         as `)', not as `('.  Fix quotation.
2280         (cp_parser_consume_semicolon_at_end_of_statement): Fix quotation.
2281         (cp_parser_primary_expression): Likewise.
2282         (cp_parser_nested_name_specifier_opt): Likewise.
2283         (cp_parser_postfix_expression): Likewise.
2284         (cp_parser_postfix_open_square_expression): Likewise.
2285         (cp_parser_parenthesized_expression_list): Likewise.
2286         (cp_parser_pseudo_destructor_name): Likewise.
2287         (cp_parser_new_expression): Likewise.
2288         (cp_parser_direct_new_declarator): Likewise.
2289         (cp_parser_delete_expression): Likewise.
2290         (cp_parser_cast_expression): Likewise.
2291         (cp_parser_question_colon_clause): Likewise.
2292         (cp_parser_builtin_offsetof): Likewise.
2293         (cp_parser_trait_expr): Likewise.
2294         (cp_parser_label_for_labeled_statement): Likewise.
2295         (cp_parser_compound_statement): Likewise.
2296         (cp_parser_selection_statement): Likewise.
2297         (cp_parser_condition): Likewise.
2298         (cp_parser_iteration_statement): Likewise.
2299         (cp_parser_already_scoped_statement): Likewise.
2300         (cp_parser_simple_declaration): Likewise.
2301         (cp_parser_linkage_specification): Likewise.
2302         (cp_parser_static_assert): Likewise.
2303         (cp_parser_decltype): Likewise.
2304         (cp_parser_conversion_function_id): Likewise.
2305         (cp_parser_operator_function_id): Likewise.
2306         (cp_parser_operator): Likewise.
2307         (cp_parser_type_parameter): Likewise.
2308         (cp_parser_template_id): Likewise.
2309         (cp_parser_explicit_instantiation): Likewise.
2310         (cp_parser_explicit_specialization): Likewise.
2311         (cp_parser_enum_specifier): Likewise.
2312         (cp_parser_namespace_definition): Likewise.
2313         (cp_parser_namespace_alias_definition): Likewise.
2314         (cp_parser_using_declaration): Likewise.
2315         (cp_parser_using_directive): Likewise.
2316         (cp_parser_asm_definition): Likewise.
2317         (cp_parser_direct_declarator): Likewise.
2318         (cp_parser_ptr_operator): Likewise.
2319         (cp_parser_parameter_declaration_clause): Likewise.
2320         (cp_parser_initializer_clause): Likewise.
2321         (cp_parser_class_specifier): Likewise.
2322         (cp_parser_member_specification_opt): Likewise.
2323         (cp_parser_member_declaration): Likewise.
2324         (cp_parser_pure_specifier): Likewise.
2325         (cp_parser_constant_initializer): Likewise.
2326         (cp_parser_base_clause): Likewise.
2327         (cp_parser_exception_specification_opt): Likewise.
2328         (cp_parser_try_block): Likewise.
2329         (cp_parser_function_try_block): Likewise.
2330         (cp_parser_handler): Likewise.
2331         (cp_parser_throw_expression): Likewise.
2332         (cp_parser_asm_operand_list): Likewise.
2333         (cp_parser_attributes_opt): Likewise.
2334         (cp_parser_label_declaration): Likewise.
2335         (cp_parser_constructor_declarator_p): Likewise.
2336         (cp_parser_template_declaration_after_export): Likewise.
2337         (cp_parser_single_declaration): Likewise.
2338         (cp_parser_objc_message_expression): Likewise.
2339         (cp_parser_objc_message_args): Likewise.
2340         (cp_parser_objc_encode_expression): Likewise.
2341         (cp_parser_objc_defs_expression): Likewise.
2342         (cp_parser_objc_protocol_expression): Likewise.
2343         (cp_parser_objc_selector_expression): Likewise.
2344         (cp_parser_objc_protocol_refs_opt): Likewise.
2345         (cp_parser_objc_typename): Likewise.
2346         (cp_parser_objc_method_keyword_params): Likewise.
2347         (cp_parser_objc_superclass_or_category): Likewise.
2348         (cp_parser_objc_try_catch_finally_statement): Likewise.
2349         (cp_parser_objc_synchronized_statement): Likewise.
2350         (cp_parser_objc_throw_statement): Likewise.
2351         (cp_parser_omp_var_list_no_open): Likewise.
2352         (cp_parser_omp_clause_default): Likewise.
2353         (cp_parser_omp_clause_if): Likewise.
2354         (cp_parser_omp_clause_num_threads): Likewise.
2355         (cp_parser_omp_clause_reduction): Likewise.
2356         (cp_parser_omp_clause_schedule): Likewise.
2357         (cp_parser_omp_critical): Likewise.
2358         (cp_parser_omp_for_loop): Likewise.
2359         (cp_parser_omp_sections_scope): Likewise.
2360
2361         * parser.c (cp_parser_template_parameter_list): Simplify.
2362
2363 2008-04-07  James E. Wilson  <wilson@tuliptree.org>
2364
2365         * pt.c (tsubst_copy, case SIZEOF_EXPR): Initialize len.
2366
2367 2008-04-07  Jason Merrill  <jason@redhat.com>
2368
2369         PR c++/35734
2370         * class.c (type_has_user_nondefault_constructor): A template
2371         counts as a nondefault constructor.
2372
2373 2008-04-04  Paolo Bonzini  <bonzini@gnu.org>
2374
2375         * decl.c (cxx_push_function_context): Delete.
2376         (cxx_pop_function_context): Delete.
2377         (start_preparsed_function): Merge cxx_push_function_context (!f->decl
2378         code only).
2379         * cp-objcp-common.h (LANG_HOOKS_FUNCTION_INIT,
2380         LANG_HOOKS_FUNCTION_FINAL): Delete.
2381         (LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P): Rename to
2382         LANG_HOOKS_MISSING_NORETURN_OK_P.
2383         * cp-tree.h (cxx_push_function_context, cxx_pop_function_context):
2384         Delete prototype.
2385         * semantics.c (current_stmt_tree): Fix comment.
2386
2387 2008-04-03  Jakub Jelinek  <jakub@redhat.com>
2388
2389         PR c++/35741
2390         * semantics.c (finish_offsetof): Undo effect of convert_from_reference
2391         before calling fold_offsetof.
2392
2393 2008-04-03  Tom Tromey  <tromey@redhat.com>
2394
2395         * Make-lang.in (c++_OBJS): New variable.
2396
2397 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
2398
2399         * optimize.c (clone_body): New, from tree-inline.c.
2400
2401 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
2402
2403          * method.c (synthesize_method): Use {push,pop}_function_context.
2404          * name-lookup.c (push_to_top_level): Likewise.
2405          * parser.c (cp_parser_late_parsing_for_member): Likewise.
2406
2407 2008-03-30  Volker Reichelt  <v.reichelt@netcologne.de>
2408
2409         PR c++/35578
2410         * parser.c (cp_parser_decl_specifier_seq): Add location to error
2411         message.
2412
2413 2008-03-27  Tom Tromey  <tromey@redhat.com>
2414
2415         * Make-lang.in: Revert automatic dependency patch.
2416
2417 2008-03-27  Douglas Gregor  <doug.gregor@gmail.com>
2418
2419         PR obj-c++/35704
2420         * typeck.c (build_x_compound_expr): Use cp_build_compound_expr.
2421         (build_compound_expr): New, for compatibility with C
2422         build_compound_expr.
2423         (cp_build_compound_expr): Renamed from build_compound_expr.
2424         (build_c_cast): New, for compatibility with C build_c_cast.
2425         (cp_build_c_cast): Renamed from build_c_cast.
2426         * init.c (build_vec_delete_1): Fix calls to build_compound_expr.
2427         * decl.c (cxx_maybe_build_cleanup): Ditto.
2428         * cp-tree.h (build_compound_expr): Add C-compatibile prototype.
2429         (cp_build_compound_expr): Renamed from build_compound_expr.
2430         (build_c_cast): Add C-compatible prototype.
2431         (cp_build_c_cast): Renamed from build_c_cast.
2432         * typeck2.c (build_functional_cast): Use cp_build_c_cast.
2433         * parser.c (cp_parser_cast_expression): Fix call to build_c_cast.
2434
2435 2008-03-27  Douglas Gregor  <doug.gregor@gmail.com>
2436
2437         * pt.c (tsubst_copy) <case SIZEOF_EXPR>: Cope with
2438         tsubst_pack_expansion returning a pack expansion, or a TREE_VEC
2439         ending in a pack expansion, both of which can occur when
2440         substituting into a nested template.
2441         (tsubst_copy_and_build) <case SIZEOF_EXPR>: When we're
2442         instantiating the sizeof...(X) form, make tsubst_copy do the work.
2443         * parser.c (cp_parser_template_parameter): Deal with unnamed
2444         non-type template parameter packs identified by pack expansions in
2445         the parameter type.
2446
2447 2008-03-26  Jakub Jelinek  <jakub@redhat.com>
2448
2449         PR c++/35546
2450         * pt.c (apply_late_template_attributes): Don't call tsubst on
2451         first attribute argument if it is IDENTIFIER_NODE.
2452
2453         PR c++/35332
2454         * error.c (dump_expr): Pass {,UN}ORDERED_EXPR, UN{LT,LE,GT,GE,EQ}_EXPR
2455         and LTGT_EXPR to pp_expression.
2456
2457 2008-03-26  Douglas Gregor  <doug.gregor@gmail.com>
2458
2459         * pt.c (coerce_template_template_parm): Moved the body of the loop
2460         of coerce_template_template_parms here, to make iteration over a
2461         template argument pack simpler.
2462         Also, allow matching of a template parameter pack in the template
2463         template parameter to a template parameter in the template
2464         template argument.
2465         (coerce_template_template_parms): Deal with variadic template
2466         template parameters. Use coerce_template_template_parm.
2467         (unify): Make sure we coerce the template template argument's
2468         template arguments to the template template parameter's template
2469         parameters, not the other way around.
2470
2471 2008-03-25  Tom Tromey  <tromey@redhat.com>
2472
2473         * Make-lang.in: Remove .o targets.
2474         (cp/g++spec.o): Moved to cp/.  Reduce to variable setting.
2475         (GXX_OBJS): Update.
2476         (c++_OBJS): New variable.
2477         (CXX_TREE_H, CXX_PRETTY_PRINT_H): Remove.
2478
2479 2008-03-25  Douglas Gregor  <doug.gregor@gmail.com>
2480
2481         * typeck.c (composite_pointer_type_r): Add SFINAE support.
2482         (composite_pointer_type): Ditto.
2483         (common_type): Fix call to composite_pointer_type.
2484         (cxx_sizeof_nowarn): New; used to be a macro.
2485         (cxx_sizeof_expr): Add SFINAE support.
2486         (cxx_alignof_expr): Ditto.
2487         (decay_conversion): Fix calls for SFINAE support.
2488         (rationalize_conditional_expr): Add SFINAE support.
2489         (build_class_member_access_expr): Ditto.
2490         (finish_class_member_access_expr): Ditto.
2491         (build_x_indirect_ref): Ditto.
2492         (build_indirect_ref): Original version renamed to
2493         cp_build_indirect_ref; new version provides a bridge from
2494         c-common.
2495         (cp_build_indirect_ref): Was build_indirect_ref; added SFINAE
2496         support.
2497         (get_member_function_from_ptrfunc): Fix calls for SFINAE support.
2498         (build_function_call): Original version renamed to
2499         cp_build_function_call; new version provides a bridge from
2500         c-common.
2501         (cp_build_function_call): Was build_function_call; added SFINAE
2502         support.
2503         (convert_arguments): Add SFINAE support.
2504         (build_x_binary_op): Ditto.
2505         (build_binary_op): Original version renamed to cp_build_binary_op;
2506         new version provides a bridge from c-common.
2507         (cp_build_binary_op): Was build_binary_op; added SFINAE support.
2508         (pointer_diff): Fix calls for SFINAE.
2509         (build_x_unary_op): Add SFINAE support.
2510         (condition_conversion): Fix calls for SFINAE.
2511         (build_unary_op): Original version renamed to cp_build_unary_op;
2512         new version provides a bridge from c-common.
2513         (cp_build_unary_op): Was build_unary_op; added SFINAE support.
2514         (unary_complex_lvalue): Fix calls for SFINAE.
2515         (build_x_conditional_expr): Add SFINAE support.
2516         (build_x_compound_expr_from_list): Fix calls for SFINAE.
2517         (build_x_compound_expr): Add SFINAE support.
2518         (convert_ptrmem): Fix calls for SFINAE.
2519         (build_static_cast_1): Add SFINAE support.
2520         (build_static_cast): Ditto.
2521         (build_reinterpret_cast_1): Ditto.
2522         (build_reinterpret_cast): Ditto.
2523         (build_const_cast_1): Ditto.
2524         (build_const_cast): Ditto.
2525         (build_c_cast): Ditto.
2526         (build_modify_expr): Original version renamed to
2527         cp_build_modify_expr; new version provides a bridge from c-common.
2528         (cp_build_modify_expr): Was build_modify_expr; added SFINAE
2529         support.
2530         (build_x_modify_expr): Add SFINAE support.
2531         (build_ptrmemfunc): Fix calls for SFINAE.
2532         (convert_for_assignment): Add SFINAE support.
2533         (convert_for_initialization): Ditto.
2534         (check_return_expr): Fix calls for SFINAE.
2535         (lvalue_or_else): Add SFINAE support.
2536         * init.c (perform_member_init): Fix calls for SFINAE.
2537         (emit_mem_initializers): Ditto.
2538         (expand_virtual_init): Ditto.
2539         (expand_cleanup_for_base): Ditto.
2540         (build_aggr_init): Add SFINAE support.
2541         (expand_default_init): Ditto.
2542         (expand_aggr_init_1): Fix calls for SFINAE.
2543         (build_offset_ref): Ditto.
2544         (build_new_1): Add SFINAE support.
2545         (build_new): Ditto.
2546         (build_vec_delete_1): Fix calls for SFINAE.
2547         (get_temp_regvar): Ditto.
2548         (build_vec_init): Add SFINAE support.
2549         (build_dtor_call): Fix calls for SFINAE.
2550         (build_delete): Ditto.
2551         (push_base_cleanups): Ditto.
2552         (build_vec_delete_1): Ditto.
2553         * class.c (build_base_path): Fix calls for SFINAE.
2554         (build_simple_base_path): Ditto.
2555         (convert_to_base_statically): Ditto.
2556         (build_vfn_ref): Ditto.
2557         (resolve_address_of_overloaded_function): Ditto.
2558         * decl.c (check_initializer): Fix calls for SFINAE.
2559         (register_dtor_fn): Ditto.
2560         (compute_array_index_type): Ditto.
2561         (finish_enum): Ditto.
2562         (start_preparsed_function): Ditto.
2563         (cxx_maybe_build_cleanup): Ditto.
2564         * call.c (convert_like): Add COMPLAIN argument.
2565         (convert_like_with_context): Ditto.
2566         (build_this): Fix calls for SFINAE.
2567         (build_user_type_conversion): Ditto.
2568         (resolve_args): Ditto.
2569         (build_new_function_call): Add SFINAE support.
2570         (build_operator_new_call): Fix calls for SFINAE.
2571         (build_object_call): Add SFINAE support.
2572         (build_conditional_expr): Ditto.
2573         (build_new_op): Ditto.
2574         (build_op_delete_call): Fix calls for SFINAE.
2575         (build_temp): Ditto.
2576         (convert_like_real): Add SFINAE support.
2577         (build_x_va_arg): Fix calls for SFINAE.
2578         (convert_default_arg): Ditto.
2579         (build_over_call): Add SFINAE support.
2580         (build_java_interface_fn_ref): Fix calls for SFINAE.
2581         (build_special_member_call): Add SFINAE support.
2582         (build_new_method_call): Ditto.
2583         (perform_implicit_conversion): Ditto.
2584         (perform_direct_initialization_if_possible): Ditto.
2585         (initialize_reference): Fix calls for SFINAE.
2586         * method.c (do_build_assign_ref): Fix calls for SFINAE.
2587         * rtti.c (build_headof): Fix calls for SFINAE.
2588         (get_tinfo_decl_dynamic): Ditto.
2589         (get_typeid): Ditto.
2590         (build_dynamic_cast_1): Add SFINAE support.
2591         (build_dynamic_cast): Ditto.
2592         (tinfo_base_init): Fix calls for SFINAE.
2593         * except.c (do_get_exception_ptr): Fix calls for SFINAE.
2594         (do_end_catch): Ditto.
2595         (initialize_handler_parm): Ditto.
2596         (expand_start_catch_block): Ditto.
2597         (do_allocate_exception): Ditto.
2598         (do_free_exception): Ditto.
2599         (build_throw): Ditto.
2600         * cvt.c (build_up_reference): Fix calls for SFINAE.
2601         (convert_to_reference): Ditto.
2602         (ocp_convert): Ditto.
2603         (convert_to_void): Add SFINAE support.
2604         * tree.c (build_dummy_object): Fix calls for SFINAE.
2605         (stabilize_expr): Ditto.
2606         * cp-tree.h (build_conditional_expr): Add tsubst_flags_t
2607         parameter.
2608         (build_new_method_call): Ditto.
2609         (build_special_member_call): Ditto.
2610         (build_new_op): Ditto.
2611         (perform_implicit_conversion): Ditto.
2612         (perform_direct_initialization_if_possible): Ditto.
2613         (convert_to_void): Ditto.
2614         (build_aggr_init): Ditto.
2615         (build_new): Ditto.
2616         (build_vec_init): Ditto.
2617         (build_dynamic_cast): Ditto.
2618         (finish_call_expr): Ditto
2619         (cxx_sizeof_or_alignof_expr): Add COMPLAIN parameter.
2620         (cxx_sizeof_nowarn): Remove macro; add function declaration.
2621         (build_class_member_access_expr): Add tsubst_flags_t parameter.
2622         (finish_class_member_access_expr): Ditto.
2623         (build_x_indirect_ref): Ditto.
2624         (cp_build_indirect_ref): New.
2625         (cp_build_function_call): Add tsubst_flags_t parameter.
2626         (build_x_unary_op): Ditto.
2627         (cp_build_unary_op): New.
2628         (build_x_conditional_expr): Add tsubst_flags_t parameter.
2629         (build_x_compound_expr): Ditto.
2630         (build_compound_expr): Ditto.
2631         (build_static_cast): Ditto.
2632         (build_reinterpret_cast): Ditto.
2633         (build_const_cast): Ditto.
2634         (build_c_cast): Ditto.
2635         (build_x_modify_expr): Ditto.
2636         (cp_build_modify_expr): New.
2637         (convert_for_initialization): Add tsubst_flags_t parameter.
2638         (cp_build_binary_op): Remove macro; add function declaration.
2639         (invalid_nonstatic_memfn_p): Add tsubst_flags_t parameter.
2640         (lvalue_or_else): Ditto.
2641         (build_functional_cast): Ditto.
2642         * typeck2.c (digest_init): Fix calls for SFINAE.
2643         (process_init_constructor_array): Ditto.
2644         (process_init_constructor_record): Ditto.
2645         (build_x_arrow): Ditto.
2646         (build_m_component_ref): Ditto.
2647         (build_functional_cast): Add SFINAE support.
2648         * pt.c (tsubst_copy_and_build): Add (more) SFINAE support.
2649         * semantics.c (simplify_loop_decl_cond): Fix calls for SFINAE.
2650         (finish_expr_stmt): Ditto.
2651         (finish_for_expr): Ditto.
2652         (finish_asm_stmt): Ditto.
2653         (finish_non_static_data_member): Ditto.
2654         (finish_qualified_id_expr): Ditto.
2655         (finish_call_expr): Add SFINAE support.
2656         (finish_increment_expr): Fix calls for SFINAE.
2657         (finish_unary_op_expr): Ditto.
2658         (simplify_aggr_init_expr): Ditto.
2659         (finish_omp_clauses): Ditto.
2660         (finish_omp_for): Ditto.
2661         (finish_omp_barrier): Ditto.
2662         (finish_omo_flush): Ditto.
2663         * decl2.c (grok_array_decl): Fix calls or SFINAE.
2664         (build_anon_union_vars): Ditto.
2665         (get_guard_cond): Ditto.
2666         (set_guard): Ditto.
2667         (one_static_initialization_or_destruction): Ditto.
2668         (do_static_initialization_or_destruction): Ditto.
2669         (generate_ctor_or_dtor_function): Ditto.
2670         (build_offset_ref_call_from_tree): Ditto.
2671         * parser.c (cp_parser_postfix_expression): Fix calls for SFINAE.
2672         (cp_parser_postfix_dot_deref_expression): Ditto.
2673         (cp_parser_unary_expression): Ditto.
2674         (cp_parser_new_expression): Ditto.
2675         (cp_parser_cast_expression): Ditto.
2676         (cp_parser_binary_expression): Ditto.
2677         (cp_parser_question_colon_clause): Ditto.
2678         (cp_parser_assignment_expression): Ditto.
2679         (cp_parser_expression): Ditto.
2680         (cp_parser_builtin_offsetof): Ditto.
2681         (cp_parser_template_argument): Ditto.
2682         (cp_parser_functional_cast): Ditto.
2683
2684 2008-03-24  Tom Tromey  <tromey@redhat.com>
2685
2686         * lex.c (handle_pragma_interface): Don't copy the filename.
2687         (handle_pragma_implementation): Copy filename using xstrdup.
2688
2689 2008-03-21  Paolo Carlini  <pcarlini@suse.de>
2690
2691         * cp-tree.h (IS_AGGR_TYPE): Rename to MAYBE_CLASS_TYPE_P.
2692         (SET_IS_AGGR_TYPE): Rename to SET_CLASS_TYPE_P.
2693         (IS_AGGR_TYPE_CODE): Rename to RECORD_OR_UNION_CODE_P.
2694         (PROMOTES_TO_AGGR_TYPE): Remove.
2695         (CLASS_TYPE_P, TYPE_NON_AGGREGATE_CLASS): Adjust.
2696         * typeck.c (unary_complex_lvalue, build_modify_expr,
2697         convert_for_initialization): Adjust.
2698         * init.c (is_aggr_type): Remove.
2699         (is_class_type): Add.
2700         (build_offset_ref, build_new_1, build_vec_delete_1, build_vec_init,
2701         build_delete): Adjust.
2702         * lex.c (make_aggr_type): Remove.
2703         (make_class_type): Add.
2704         (cxx_make_type): Adjust.
2705         * class.c (finish_struct_1, fixed_type_or_null, is_empty_class):
2706         Adjust.
2707         * decl.c (build_typename_type, make_typename_type,
2708         make_unbound_class_template, cxx_init_decl_processing,
2709         check_tag_decl, groktypename, start_decl_1, layout_var_decl,
2710         check_initializer, cp_finish_decl, build_ptrmemfunc_type, grokparms,
2711         grok_op_properties, xref_tag, check_function_type): Adjust.
2712         * call.c (check_dtor_name, standard_conversion, implicit_conversion,
2713         add_builtin_candidate, add_builtin_candidates,
2714         build_user_type_conversion_1, convert_like_real, build_cxx_call,
2715         is_subseq, compare_ics): Adjust.
2716         * method.c (use_thunk): Adjust.
2717         * rtti.c (build_dynamic_cast_1, create_pseudo_type_info,
2718         create_tinfo_types): Adjust.
2719         * cvt.c (cp_convert_to_pointer, convert_to_pointer_force,
2720         build_up_reference, convert_to_reference, convert_from_reference,
2721         ocp_convert, build_expr_type_conversion): Adjust.
2722         * tree.c (bind_template_template_parm, error_type): Adjust.
2723         * dump.c (cp_dump_tree): Adjust.
2724         * search.c (lookup_member): Adjust.
2725         * friend.c (make_friend_class, do_friend): Adjust.
2726         * typeck2.c (store_init_value, process_init_constructor_array,
2727         process_init_constructor_record, build_x_arrow, build_m_component_ref,
2728         build_functional_cast): Adjust.
2729         * pt.c (finish_member_template_decl, process_template_parm,
2730         lookup_template_class, tsubst_function_type, tsubst,
2731         tsubst_copy_and_build, get_template_base, bt_instantiate_type_proc):
2732         Adjust.
2733         * semantics.c (begin_class_definition, finish_base_specifier,
2734         finish_typeof, cxx_omp_predetermined_sharing, finish_decltype_type):
2735         Adjust.
2736         * name-lookup.c (constructor_name_p, push_overloaded_decl,
2737         do_class_using_decl, lookup_qualified_name,
2738         maybe_process_template_type_declaration): Adjust.
2739         * decl2.c (grok_array_decl, check_member_template,
2740         constrain_class_visibility): Adjust.
2741         * parser.c (cp_parser_class_name): Adjust.
2742
2743 2008-03-18  Paolo Bonzini  <bonzini@gnu.org>
2744
2745          * cp-lang.c (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS): Delete.
2746
2747 2008-03-17  Jason Merrill  <jason@redhat.com>
2748
2749         PR c++/35548
2750         * call.c (reference_binding): Check LOOKUP_NO_TEMP_BIND when binding
2751         a temp directly to a reference as per DR391.
2752
2753 2008-03-12  Richard Guenther  <rguenther@suse.de>
2754
2755         PR c++/35469
2756         Revert:
2757         2008-02-04  Richard Guenther  <rguenther@suse.de>
2758
2759          PR java/35035
2760          * decl.c (record_builtin_java_type): Make jboolean a
2761          integer type again where its mode doesn't match that of bool.
2762
2763         2008-01-25  Richard Guenther  <rguenther@suse.de>
2764
2765          PR c++/33887
2766          * decl.c (record_builtin_java_type): Make __java_boolean
2767          a variant of bool.
2768          * typeck.c (structural_comptypes): Move TYPE_FOR_JAVA check
2769          after TYPE_MAIN_VARIANT check.
2770
2771 2008-03-10  Jakub Jelinek  <jakub@redhat.com>
2772
2773         PR c++/35328
2774         * semantics.c (finish_omp_clauses): Look through NOP_EXPR even
2775         if errorcount.
2776
2777         PR c++/35337
2778         * semantics.c (finish_omp_clauses): Use %qD instead of %qE for
2779         DECL_P in not a variable and appears more than once error messages.
2780
2781 2008-03-07  Paolo Bonzini  <bonzini@gnu.org>
2782
2783         Revert:
2784
2785         2008-02-06  Douglas Gregor  <doug.gregor@gmail.com>
2786
2787         PR c++/35049
2788         PR c++/35096
2789         * typeck.c (structural_comptypes): Call cp_comptypes.
2790         (comptypes): New; called from the C/C++ common bits to perform
2791         strict checks.
2792         (cp_comptypes): Renamed from comptypes, which is already used,
2793         with a different signature, by the C++ front end.
2794         (build_reinterpret_cast_1): Call cp_comptypes.
2795         (ptr_reasonably_similar): Ditto.
2796         * decl.c (decls_match): Ditto.
2797         * cvt.c (convert_to_reference): Ditto.
2798         * cp-tree.h (same_type_p): Ditto.
2799         (same_or_base_type_p): Ditto.
2800         (comptypes): Rename to cp_comptypes.
2801         * pt.c (canonical_type_parameter): Call cp_comptypes.
2802
2803 2008-03-07  Paolo Bonzini  <bonzini@gnu.org>
2804
2805         * cp-objcp-common.c (cxx_types_compatible_p): Remove obsolete
2806         test for equivalence between pointer and references.
2807
2808 2008-03-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2809
2810         PR 24924
2811         * class.c (finish_struct_anon): Use permerror instead of pedwarn.
2812         (check_field_decls): Likewise.
2813         (note_name_declared_in_class): Likewise.
2814         * call.c (build_new_op): Likewise.
2815         (convert_like_real): Likewise.
2816         (build_over_call): Likewise.
2817         * lex.c (unqualified_fn_lookup_error): Likewise.
2818         * parser.c (cp_parser_template_id): Likewise.
2819         * cvt.c (warn_ref_binding): Likewise.
2820         (convert_to_reference): Likewise.
2821         (ocp_convert): Likewise.
2822         (convert_to_void): Use error instead of pedwarn.
2823         * error.c (cp_cpp_error): Use pedantic_warning_kind.
2824         * decl.c (compute_array_index_type): Use constant_expression_error.
2825
2826 2008-03-01  Douglas Gregor  <doug.gregor@gmail.com>
2827
2828         * parser.c (cp_lexer_next_token_is_decl_specifier_keyword): Note
2829         that auto is either a storage class or a simple type specifier,
2830         depending on the dialect.
2831         (cp_parser_decl_specifier_seq): Complain about `auto' as a storage
2832         specifier in C++98 mode, error in C++0x mode (since we don't
2833         support auto as a type specifier, yet).
2834         (cp_parser_storage_class_specifier_opt): Don't treat `auto' as a
2835         storage specifier in C++0x mode.
2836         (cp_parser_simple_type_specifier): Parse `auto' as a
2837         simple-type-specifier, but error because we don't support it yet.
2838
2839 2008-02-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2840
2841         * parser.c (cp_parser_nonclass_name): New.
2842         (cp_parser_pseudo_destructor_name): Use it instead of
2843         cp_parser_type_name.
2844         (cp_parser_type_name): Move code to cp_parser_nonclass_name.
2845
2846 2008-02-29  Tom Tromey  <tromey@redhat.com>
2847
2848         * parser.c (struct cp_token) <input_file_stack_index>: Remove.
2849         (cp_lexer_get_preprocessor_token): Update.
2850         (cp_lexer_set_source_position_from_token): Don't call
2851         restore_input_file_stack.
2852         * lex.c (cxx_init): Don't use push_srcloc or pop_srcloc.
2853
2854 2008-02-28  Richard Guenther  <rguenther@suse.de>
2855
2856         Revert:
2857         2008-02-26  Richard Guenther  <rguenther@suse.de>
2858
2859         * decl.c (duplicate_decls): Remove decl from global mapping
2860         before ggc_freeing it.
2861
2862 2008-02-27  Jakub Jelinek  <jakub@redhat.com>
2863
2864         PR c++/35368
2865         * rtti.c: Include c-pragma.h.
2866         (push_abi_namespace, pop_abi_namespace): New functions.
2867         (build_dynamic_cast_1, tinfo_base_init, get_pseudo_ti_index,
2868         create_tinfo_types, emit_support_tinfos): Use them.
2869         * Make-lang.in (cp/rtti.o): Depend on $(C_PRAGMA_H).
2870
2871 2008-02-26  Jason Merrill  <jason@redhat.com>
2872
2873         PR c++/35315
2874         * decl.c (grokdeclarator): Allow a typedef of an unnamed struct
2875         to name the struct for linkage purposes even if it has attributes.
2876         (start_decl): In that case, set ATTR_FLAG_TYPE_IN_PLACE.
2877
2878 2008-02-26  Tom Tromey  <tromey@redhat.com>
2879
2880         * parser.c (eof_token): Remove old location code.
2881         (check_empty_body): Remove test of USE_MAPPED_LOCATION.
2882         * decl2.c (generate_ctor_or_dtor_function): Remove old location
2883         code.
2884         (cp_write_global_declarations): Likewise.
2885         * lex.c (cxx_init): Remove old location code.
2886         (handle_pragma_implementation): Remove test of
2887         USE_MAPPED_LOCATION.
2888         * pt.c (tsubst): Remove old location code.
2889         * error.c (cp_print_error_function): Remove test of
2890         USE_MAPPED_LOCATION.
2891         * decl.c (pop_label): Remove old location code.
2892         (finish_function): Likewise.
2893
2894 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2895
2896         PR 26264
2897         * call.c (magic_varargs_p):  Remove BUILT_IN_STDARG_START.
2898
2899 2008-02-26  Richard Guenther  <rguenther@suse.de>
2900
2901         * decl.c (duplicate_decls): Remove decl from global mapping
2902         before ggc_freeing it.
2903
2904 2008-02-26  Paolo Carlini  <pcarlini@suse.de>
2905
2906          PR c++/35323
2907          * name-lookup.c (arg_assoc_type): Handle FIXED_POINT_TYPE.
2908
2909 2008-02-26  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
2910
2911         * typeck.c (build_class_member_access_expr): Add appropriate
2912         OPT_W* parameter to warning.
2913         (build_reinterpret_cast_1): Likewise.
2914         * name-lookup.c (push_overloaded_decl): Likewise.
2915
2916 2008-02-25  Paolo Carlini  <pcarlini@suse.de>
2917
2918          PR c++/35333
2919          * error.c (dump_expr): Handle CONJ_EXPR.
2920
2921 2008-02-25  Paolo Carlini  <pcarlini@suse.de>
2922
2923          PR c++/35338
2924          * error.c (dump_type): Handle FIXED_POINT_TYPE.
2925         (dump_expr): Handle FIXED_CST.
2926
2927 2008-02-24  Jason Merrill  <jason@redhat.com>
2928
2929         * parser.c (cp_parser_declaration): Handle "inline namespace".
2930         (cp_parser_namespace_definition): Likewise.
2931
2932         PR c++/33486
2933         * name-lookup.c (arg_assoc_namespace): Look down into inline
2934         namespaces, too.
2935
2936 2008-02-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2937
2938         * typeck.c (check_for_casting_away_constness): Use 1 single
2939         argument, the type of cast, to decide what diagnostics generate.
2940         (build_static_cast_1): Remove unused code. Update call to
2941         check_for_casting_away_constness.
2942         (build_reinterpret_cast_1): Update call to
2943         check_for_casting_away_constness.
2944         (build_const_cast_1): Likewise.
2945
2946 2008-02-24  Paolo Carlini  <pcarlini@suse.de>
2947
2948         * error.c (dump_expr): Don't deal directly with NEW_EXPR (and
2949         VEC_NEW_EXPR), forward to pp_expression.
2950         * cxx-pretty-print.c (pp_cxx_new_expression): Fix FIXME.
2951
2952 2008-02-24  Danny Smith  <dannysmith@users.sourceforge.net>
2953
2954         PR c++/34749
2955         * friend.c (do_friend): Call cplus_decl_attributes earlier.
2956
2957 2008-02-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2958
2959         PR C++/34715
2960         * decl.c (duplicate_decls): Merge DECL_DISREGARD_INLINE_LIMITS for
2961         template decls' function decl.
2962
2963 2008-02-22  Paolo Carlini  <pcarlini@suse.de>
2964
2965         PR c++/35282
2966         Revert:
2967         2008-02-14  Paolo Carlini  <pcarlini@suse.de>
2968
2969          PR c++/28743
2970          * pt.c (determine_specialization): In case of function templates,
2971         when the type of DECL does not match FN there is no match.
2972
2973 2008-02-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2974
2975         PR c/19999
2976         * typeck.c (build_binary_op): Warn about floating point
2977         comparisons if FLOAT_TYPE_P, not only for REAL_TYPE.
2978
2979 2008-02-19  Jason Merrill  <jason@redhat.com>
2980
2981         PR c++/34950
2982         * pt.c (resolve_overloaded_unification): Set processing_template_decl
2983         while we look for possible bindings.
2984
2985 2008-02-19  Jakub Jelinek  <jakub@redhat.com>
2986
2987         PR c++/35028
2988         * cp-gimplify.c (cxx_omp_clause_apply_fn): Handle vararg copy ctors.
2989
2990         PR c++/34964
2991         PR c++/35244
2992         * semantics.c (finish_omp_threadprivate): Do nothing for error_operand_p
2993         vars.  Afterwards ensure v is VAR_DECL.
2994
2995         PR c++/35078
2996         * parser.c (cp_parser_omp_for_loop): If DECL has REFERENCE_TYPE, don't
2997         call cp_finish_decl.
2998         * semantics.c (finish_omp_for): Fail if DECL doesn't have integral type
2999         early.
3000
3001 2008-02-15  Douglas Gregor  <doug.gregor@gmail.com>
3002
3003         PR c++/35023
3004         PR c++/35024
3005         PR c++/35026
3006         * pt.c (finish_member_template_decl): If the type in a TYPE_DECL
3007         is error_mark_node, return an error early.
3008         (find_parameter_packs_r): Pass the pointer set along to recursive
3009         calls of cp_walk_subtrees; don't try to manage the pointer set
3010         ourselves.
3011         (uses_parameter_packs): Pass the pointer set to cp_walk_tree.
3012         (make_pack_expansion): Ditto.
3013         (check_for_bare_parameter_packs): Ditto. Also, don't bother taking
3014         a second pass through the tree with find_parameter_packs_r; that
3015         second pass no longer does anything.
3016         (push_template_decl_real): If we have an erroneous declaration,
3017         set its type to error_mark_node before returning an error.
3018
3019 2008-02-14  Douglas Gregor  <doug.gregor@gmail.com>
3020
3021         PR c++/34050
3022         * pt.c (tsubst_initializer_list): Deal with the use of
3023         VOID_TYPE_NODE to indicate value-initialization of the bases.
3024
3025 2008-02-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3026             Jason Merrill  <jason@redhat.com>
3027
3028         PR c++/5645
3029         PR c++/11159
3030         * class.c (type_has_user_nondefault_constructor): New fn.
3031         * cp-tree.h: Declare it.
3032         * init.c (emit_mem_initializers): Use it for -W warning about
3033         missing base initializer.
3034
3035 2008-02-14  Paolo Carlini  <pcarlini@suse.de>
3036
3037          PR c++/28743
3038          * pt.c (determine_specialization): In case of function templates,
3039         when the type of DECL does not match FN there is no match.
3040
3041 2008-02-13  Jakub Jelinek  <jakub@redhat.com>
3042             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3043
3044         PR c++/35138
3045         * parser.c (cp_parser_pseudo_destructor_name): If next tokens
3046         are not identifier :: ~, return before calling cp_parser_type_name.
3047
3048 2008-02-13  Jason Merrill  <jason@redhat.com>
3049
3050         PR c++/34962, c++/34937, c++/34939
3051         * decl2.c (is_late_template_attribute): Always defer attributes
3052         vector_size and weak.
3053
3054         PR c++/34774
3055         * pt.c (value_dependent_expression_p): Look into DECL_INITIAL
3056         of enumerators, too.
3057
3058 2008-02-12  Jason Merrill  <jason@redhat.com>
3059
3060         PR c++/34824
3061         * call.c (convert_like_real): Pass LOOKUP_NO_CONVERSION to build_temp
3062         if we're doing conversions to call a user-defined conversion function.
3063
3064 2008-02-12  Steven Bosscher  <steven@gcc.gnu.org>
3065
3066         PR c++/29048
3067         * semantics.c (finish_qualified_id_expr): Avoid duplicate access
3068         check here, too.
3069
3070 2008-02-12  Jakub Jelinek  <jakub@redhat.com>
3071
3072         PR c++/34862
3073         * init.c (build_new_1): Don't create placement_expr before
3074         constructing alloc_call.  Verify that the pointer is passed by
3075         value to operator new.
3076
3077 2008-02-11  Jason Merrill  <jason@redhat.com>
3078
3079         PR c++/35097
3080         * pt.c (tsubst): Don't look up a template typedef in an explicit
3081         specialization.
3082
3083 2008-02-11  Douglas Gregor  <doug.gregor@gmail.com>
3084
3085         PR c++/35113
3086         * tree.c (cp_build_qualified_type_real): When building a
3087         cv-qualified array type, build it as a unique type with
3088         build_cplus_array_type_1 and then adopt the unqualified type's
3089         main variant.
3090
3091 2008-02-11  Paolo Carlini  <pcarlini@suse.de>
3092
3093         PR c++/35077
3094         * decl.c (groktypename): Check grokdeclarator return.
3095
3096 2008-02-10  Jason Merrill  <jason@redhat.com>
3097
3098         PR c++/34094
3099         * decl2.c (cp_write_global_declarations): Don't write out static
3100         data members with DECL_IN_AGGR_P set.
3101
3102 2008-02-08  Jason Merrill  <jason@redhat.com>
3103
3104         PR c++/35116
3105         * tree.c (build_target_expr_with_type): Handle void initializer.
3106         (bot_manip): Remap slot before recursing.
3107
3108 2008-02-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3109
3110         PR other/35107
3111         * Make-lang.in (cc1plus-dummy, cc1plus): Add $(GMPLIBS).
3112
3113 2008-02-06  Alexandre Oliva  <aoliva@redhat.com>
3114
3115         PR c++/35056
3116         * tree.c: Include tree-flow.h.
3117         (build_target_expr): Check type compatibility.
3118         * Make-lang.in (cp/tree.o): Depend on $(TREE_FLOW_H).
3119         * call.c (convert_like_real): Convert bitfield to expected type.
3120
3121 2008-02-06  Douglas Gregor  <doug.gregor@gmail.com>
3122
3123         PR c++/35049
3124         PR c++/35096
3125         * typeck.c (structural_comptypes): Call cp_comptypes.
3126         (comptypes): New; called from the C/C++ common bits to perform
3127         strict checks.
3128         (cp_comptypes): Renamed from comptypes, which is already used,
3129         with a different signature, by the C++ front end.
3130         (build_reinterpret_cast_1): Call cp_comptypes.
3131         (ptr_reasonably_similar): Ditto.
3132         * decl.c (decls_match): Ditto.
3133         * cvt.c (convert_to_reference): Ditto.
3134         * cp-tree.h (same_type_p): Ditto.
3135         (same_or_base_type_p): Ditto.
3136         (comptypes): Rename to cp_comptypes.
3137         * pt.c (canonical_type_parameter): Call cp_comptypes.
3138
3139 2008-02-05  Jakub Jelinek  <jakub@redhat.com>
3140
3141         PR c++/33553
3142         * pt.c (tsubst) <case INTEGER_TYPE>: Don't issue error if max is
3143         value dependent expression.
3144
3145 2008-02-05  Douglas Gregor  <doug.gregor@gmail.com>
3146
3147         PR c++/35074
3148         * decl2.c (save_template_attributes): When we're modifying the
3149         TYPE_MAIN_VARIANT to add new attributes, be sure to also modify
3150         all of the other variants to add those same attributes. Otherwise,
3151         the main variant will be inconsistent with those other variants.
3152
3153 2008-02-04  Richard Guenther  <rguenther@suse.de>
3154
3155         PR java/35035
3156         * decl.c (record_builtin_java_type): Make jboolean a
3157         integer type again where its mode doesn't match that of bool.
3158
3159 2008-02-02  Jason Merrill  <jason@redhat.com>
3160             Mark Mitchell  <mark@codesourcery.com>
3161
3162         PR c++/33916
3163         * init.c (build_value_init_1): New function.
3164         (build_value_init): New function.
3165         * typeck2.c (build_functional_cast): Call it.
3166         * cp-gimplify.c (cp_gimplify_init_expr): Handle its output.
3167
3168         * cp-tree.h (TYPE_HAS_USER_CONSTRUCTOR): Rename from
3169         TYPE_HAS_CONSTRUCTOR.
3170         * class.c (finish_struct_bits, maybe_warn_about_overly_private_class,
3171         add_implicitly_declared_members): Adjust.
3172         (check_field_decls): Adjust. Remove warnings about reference/const
3173         in class without constructor.
3174         (check_bases_and_members): Adjust.  Give those warnings here instead.
3175         * decl.c (fixup_anonymous_aggr): Adjust.
3176         (check_initializer): Adjust, clarify logic slightly.
3177         (grok_special_member_properties): Adjust, only set if user-provided.
3178         * rtti.c (create_tinfo_types): Don't set.
3179         * cvt.c (ocp_convert): Remove exception for vtable_entry_type et al.
3180         Use same_type_ignoring_top_level_qualifiers_p.
3181         * pt.c (check_explicit_specialization): Adjust.
3182         (instantiate_class_template): Adjust.
3183
3184 2008-01-31  Douglas Gregor  <doug.gregor@gmail.com>
3185             Jakub Jelinek  <jakub@redhat.com>
3186
3187         PR c++/34935
3188         PR c++/34936
3189         * typeck.c (structural_comptypes): Handle comparisons of
3190         VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, FIXED_POINT_TYPE, and
3191         REAL_TYPE nodes.
3192         * mangle.c (write_builtin_type): Map down to the canonical type,
3193         which will be one of the predefined type nodes.
3194
3195 2008-01-29  Michael Meissner  <michael.meissner@amd.com>
3196
3197         PR 35004
3198         * cp-tree.h (struct full_lang_decl): Make tree_code bitfield 16
3199         bits to allow for expansion of the number of middle end tree
3200         codes.
3201
3202 2008-01-29  Douglas Gregor  <doug.gregor@gmail.com>
3203
3204         PR c++/34055
3205         PR c++/34103
3206         PR c++/34219
3207         PR c++/34606
3208         PR c++/34753
3209         PR c++/34754
3210         PR c++/34755
3211         PR c++/34919
3212         PR c++/34961
3213         * typeck.c (check_return_expr): Tweak call to
3214         check_for_bare_parameter_packs.
3215         * class.c (add_method): Be careful with error_mark_nodes.
3216         * cp-tree.h (check_for_bare_parameter_packs): Remove "*" from
3217         signature.
3218         * pt.c (struct find_parameter_pack_data): Remove
3219         SET_PACKS_TO_ERROR.
3220         (find_parameter_packs_r): Don't use SET_PACKS_TO_ERROR.
3221         (uses_parameter_packs): Don't set SET_PACKS_TO_ERROR.
3222         (make_pack_expansion): Ditto.
3223         (check_for_bare_parameter_packs): Parameter is now a tree, not a
3224         tree*.
3225         (process_template_parm): Tweak call to
3226         check_for_bare_parameter_packs.
3227         (push_template_decl_real): Tweak calls to
3228         check_for_bare_parameter_packs. If bare parameter packs are found
3229         in the list of exceptions, clear out that list after giving an
3230         error.
3231         * semantics.c (finish_cond): Tweak call to
3232         check_for_bare_parameter_packs.
3233         (finish_expr_stmt): Ditto.
3234         (finish_for_expr): Ditto.
3235         (finish_switch_cond): Ditto.
3236         (finish_mem_initializers): Ditto.
3237         (finish_member_declaration): Ditto.
3238         (finish_static_assert): Check for bare parameter packs in the
3239         condition.
3240         * decl2.c (cplus_decl_attributes): Check for bare parameter packs in the
3241         attributes of a declaration.
3242         * parser.c (cp_parser_using_declaration): Tweak call to
3243         check_for_bare_parameter_packs.
3244         (cp_parser_base_clause): Ditto.
3245
3246 2008-01-28  Jason Merrill  <jason@redhat.com>
3247
3248         PR c++/35007
3249         * class.c (build_base_path): Fix !want_pointer case.
3250
3251 2008-01-27  Jason Merrill  <jason@redhat.com>
3252
3253         PR c++/27177
3254         * class.c (build_base_path): Fix previous change.
3255
3256 2008-01-26  Jakub Jelinek  <jakub@redhat.com>
3257
3258         PR c++/34965
3259         * error.c (dump_expr): Handle TRUTH_AND_EXPR, TRUTH_OR_EXPR
3260         and TRUTH_XOR_EXPR.
3261
3262 2008-01-26  Richard Guenther  <rguenther@suse.de>
3263
3264         PR c++/34235
3265         * typeck.c (build_binary_op): Remove code to shorten compares.
3266
3267 2008-01-25  Richard Guenther  <rguenther@suse.de>
3268
3269         PR c++/33887
3270         * decl.c (record_builtin_java_type): Make __java_boolean
3271         a variant of bool.
3272         * typeck.c (structural_comptypes): Move TYPE_FOR_JAVA check
3273         after TYPE_MAIN_VARIANT check.
3274
3275 2008-01-25  Jason Merrill  <jason@redhat.com>
3276
3277         PR c++/27177
3278         * class.c (build_base_path): Don't mess with virtual access if
3279         skip_evaluation.
3280         * call.c (standard_conversion): Don't check whether source type
3281         is complete.
3282
3283         * decl2.c (is_late_template_attribute): Don't defer attribute
3284         visibility just because the type is dependent.
3285
3286 2008-01-25  Jason Merrill  <jason@redhat.com>
3287             Mark Mitchell  <mark@codesourcery.com>
3288
3289         PR c++/31780
3290         * call.c (standard_conversion): Allow conversion from integer/real
3291         to complex.
3292         (compare_ics): Such a conversion is worse than a normal arithmetic
3293         conversion.
3294
3295 2008-01-25  Richard Guenther  <rguenther@suse.de>
3296
3297         PR c++/33887
3298         * cp-lang.c (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS): Define
3299         to true.
3300
3301 2008-01-24  Paolo Carlini  <pcarlini@suse.de>
3302
3303          PR c++/34603
3304          * pt.c (push_template_decl_real): Return error_mark_node in case
3305         of template definition of non-template.
3306
3307 2008-01-24  Jason Merrill  <jason@redhat.com>
3308
3309         PR c++/34913
3310         * decl2.c (is_late_template_attribute): Defer any attribute with
3311         dependent args.  Also defer type attributes if the type is dependent.
3312
3313 2008-01-22  Jakub Jelinek  <jakub@redhat.com>
3314             Alexandre Oliva  <aoliva@redhat.com>
3315
3316         PR c++/33984
3317         * call.c (reference_binding): For bitfields use the declared bitfield
3318         type.
3319         (add_builtin_candidates): Likewise.
3320         * class.c (layout_class_type): For bitfields copy over the
3321         original type quals.
3322
3323 2008-01-22  Jason Merrill  <jason@redhat.com>
3324
3325         PR c++/28560
3326         * decl.c (groktypename): Also ignore attributes on dependent
3327         possibly-class types.
3328
3329         PR c++/34912
3330         * friend.c (do_friend): Check for prior declaration of a friend
3331         function of a local class.
3332         * name-lookup.c (lookup_name_innermost_nonclass_level):
3333         No longer static.
3334         * name-lookup.h: Declare it.
3335
3336 2008-01-22  Tom Tromey  <tromey@redhat.com>
3337
3338         PR c++/34829:
3339         * init.c (build_new_1): Only disallow Java aggregates.
3340
3341 2008-01-22  Jakub Jelinek  <jakub@redhat.com>
3342
3343         PR c++/34607
3344         * semantics.c (finish_omp_for): Don't call c_finish_omp_for
3345         if decl or init is error_mark_node.
3346
3347         PR c++/34918
3348         * error.c (dump_expr): Handle VECTOR_CST.
3349
3350 2008-01-21  Jason Merrill  <jason@redhat.com>
3351
3352         PR c++/33959
3353         * pt.c (tsubst_aggr_type): Make sure our context is complete.
3354
3355         PR c++/34573
3356         * pt.c (retrieve_local_specialization): Robustify.
3357         (tsubst_pack_expansion, tsubst_decl): Remove redundant checks.
3358
3359         PR c++/34846
3360         * pt.c (tsubst): Only call retrieve_local_specialization if the
3361         original typedef was in a function template.
3362
3363         PR c++/34196
3364         * decl.c (wrap_cleanups_r): Set TRY_CATCH_IS_CLEANUP.
3365
3366 2008-01-21  Richard Guenther  <rguenther@suse.de>
3367
3368         PR c++/34850
3369         * error.c (cp_print_error_function): Deal with recursive
3370         BLOCK trees.
3371
3372 2008-01-20  Paolo Carlini  <pcarlini@suse.de>
3373
3374          PR c++/34891
3375          * error.c (dump_expr): Deal with VIEW_CONVERT_EXPR.
3376
3377 2008-01-20  Paolo Carlini  <pcarlini@suse.de>
3378
3379          PR c++/34776
3380         PR c++/34486
3381          * name-lookup.c (do_class_using_decl): Do not call constructor_name_p
3382         on non-IS_AGGR_TYPE scope.
3383         (constructor_name_p): Assert IS_AGGR_TYPE.
3384
3385 2008-01-18  Ian Lance Taylor  <iant@google.com>
3386
3387         PR c++/33407
3388         * decl.c (duplicate_decls): Copy DECL_IS_OPERATOR_NEW flag.
3389         (grok_op_properties): For NEW_EXPR and VEC_NEW_EXPR set
3390         DECL_IS_OPERATOR_NEW flag.
3391
3392 2008-01-16  Richard Guenther  <rguenther@suse.de>
3393
3394         PR c++/33819
3395         * typeck.c (is_bitfield_expr_with_lowered_type): Recurse
3396         for conversions to type variants.
3397
3398 2008-01-15  Andreas Tobler  <a.tobler@schweiz.org>
3399
3400         * parser.c (cp_parser_template_parameter): Fix C90 issue with mixing
3401         declaration and code.  Update copyright year.
3402
3403 2008-01-15  Douglas Gregor  <doug.gregor@gmail.com>
3404
3405         PR c++/34399
3406         * friend.c (do_friend): Don't query TYPE_BEING_DEFINED unless we
3407         know we have a class type.
3408
3409 2008-01-15  Douglas Gregor  <doug.gregor@gmail.com>
3410
3411         PR c++/34751
3412         * pt.c (coerce_template_parameter_pack): When substituting into
3413         the type of a non-type template parameter pack. use the
3414         deduced/substituted arguments.
3415         * parser.c (declarator_can_be_parameter_pack): A pointer-to-member
3416         can be a parameter pack with the ellipsis following it.  When we
3417         have an erroneous declaration, allow it to be a parameter pack.
3418         (cp_parser_template_parameter): Complain about default
3419         arguments on non-type template parameter packs, and parse them
3420         using the new cp_parser_default_argument.
3421         (cp_parser_parameter_declaration): Complain about parameter packs
3422         with default arguments. Move parsing of default arguments into a
3423         new function, cp_parser_default_argument.
3424         (cp_parser_default_argument): New; extracted from
3425         cp_parser_parameter_declaration.
3426
3427 2008-01-15  Douglas Gregor  <doug.gregor@gmail.com>
3428
3429         PR c++/34051
3430         PR c++/34055
3431         PR c++/34102
3432         PR c++/34103
3433         * typeck.c (check_return_expr): If there are bare parameter packs
3434         in the return value, set it to error_mark_node.
3435         * tree.c (cp_walk_subtrees): Walk USING_DECL nodes.
3436         * pt.c (find_parameter_packs_r): Look at the type of
3437         IDENTIFIER_NODEs (e.g., for user-defined conversions).
3438         (check_for_bare_parameter_packs): Flip the result: now returns
3439         TRUE when there were bare parameter packs, FALSE otherwise.
3440         (push_template_decl_real): Deal with flipped result of
3441         check_for_bare_parameter_packs.
3442         * semantics.c (finish_cond): If there are bare parameter packs in
3443         the conditional, set it to error_mark_node.
3444         (finish_expr_stmt): If there are bare parameter packs in the
3445         expression, set it to error_mark_node.
3446         (finish_for_expr): Ditto.
3447         (finish_switch_cond): If there are bare parameter packs in
3448         the conditional, set it to error_mark_node.
3449         (finish_mem_initializers): If there are bare parameter packs in
3450         the member initializer, set it to error_mark_node.
3451         (finish_member_declaration): Check the attributes of the
3452         declaration for bare parameter packs, and remove the attributes if
3453         any have bare parameter packs.
3454         * parser.c (cp_parser_using_declaration): Check the using
3455         declaration for bare parameter packs.
3456         (cp_parser_base_clause): If there are bare parameter packs in a
3457         base specifier, don't add it to the chain.