OSDN Git Service

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