OSDN Git Service

4e1f46966c36c85e4999798f39405183ee90f975
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
1 2009-11-18  Shujing Zhao  <pearly.zhao@oracle.com>
2
3         PR c++/40892
4         * error.c (maybe_warn_cpp0x): Accept enum cpp0x_warn_str as argument.
5         (maybe_warn_variadic_templates): Update the maybe_warn_cpp0x calls to
6         match the new declaration.
7         * cp-tree.h (cpp0x_warn_str): New type.
8         (maybe_warn_cpp0x): Adjust prototype with new argument.
9         * call.c (reference_binding): Update the maybe_warn_cpp0x calls.
10         * decl.c (reshape_init_r, check_initializer, grokdeclarator):
11         Likewise.
12         * parser.c (cp_parser_primary_expression)
13         (cp_parser_parenthesized_expression_list, cp_parser_new_initializer)
14         (cp_parser_assignment_expression, cp_parser_condition)
15         (cp_parser_jump_statement, cp_parser_mem_initializer)
16         (cp_parser_simple_type_specifier, cp_parser_elaborated_type_specifier)
17         (cp_parser_enum_specifier, cp_parser_initializer)
18         (cp_parser_pure_specifier, cp_parser_functional_cast): Likewise.
19
20 2009-11-18  Jakub Jelinek  <jakub@redhat.com>
21
22         PR c++/3187
23         * cp-tree.h (expand_or_defer_fn_1): New prototype.
24         * decl2.c (cp_write_global_declarations): Mark as !DECL_EXTERNAL
25         also all same_body aliases.
26         * semantics.c (expand_or_defer_fn): Move most of the function
27         except registering with cgraph to ...
28         (expand_or_defer_fn_1): ... here.  New function.
29         * optimize.c: Include cgraph.h.
30         (maybe_clone_body): If in charge parm is not used and both base
31         and complete clones are created and are not comdat, tell cgraph
32         they have the same body.
33         * Make-lang.in (cp/optimize.o): Depend on $(CGRAPH_H).
34
35 2009-11-17  Paolo Carlini  <paolo.carlini@oracle.com>
36
37         PR c++/42058
38         * typeck2.c (digest_init_r): Check init for error_operand_p.
39         * decl.c (reshape_init_class): Check return value of reshape_init_r
40         for error_mark_node.
41
42 2009-11-17  Jakub Jelinek  <jakub@redhat.com>
43
44         PR c++/42061
45         * call.c (reference_binding): Return NULL for initializer list with
46         error operand inside of it.
47
48         PR c++/42059
49         * typeck.c (cp_build_modify_expr): For initializer list call
50         check_array_initializer to make sure lhs isn't a VLA.
51
52 2009-11-16  Jason Merrill  <jason@redhat.com>
53
54         PR c++/189, c++/9937, c++/13950, DR 176
55         * search.c (lookup_field_r): Allow lookup to find the
56         injected-class-name from a template base.
57         (template_self_reference_p): Remove.
58         * decl.c (make_typename_type): Diagnose ambiguity.  Use
59         maybe_get_template_decl_from_type_decl.
60         * parser.c (cp_parser_template_name): Pass true to is_template
61         rather than use maybe_get_template_decl_from_type_decl.
62         (cp_parser_lookup_name): Use maybe_get_template_decl_from_type_decl.
63         * pt.c (maybe_get_template_decl_from_type_decl): Handle ambiguity.
64         Use DECL_SELF_REFERENCE_P.
65
66         * parser.c (cp_parser_parse_and_diagnose_invalid_type_name):
67         Avoid duplicate ambiguity error.
68         * error.c (dump_decl): Don't say "typedef" for injected-class-name.
69         * pt.c (convert_template_argument): Tweak logic.
70
71 2009-11-16  Paolo Carlini  <paolo.carlini@oracle.com>
72
73         PR c++/42055
74         * pt.c (determine_specialization): Assign to candidates the return
75         value of the chainon called before print_candidates.
76
77 2009-11-16  Paolo Carlini  <paolo.carlini@oracle.com>
78
79         PR c++/32056
80         * decl.h (enum decl_context): Add TPARM enumerator.
81         * decl.c (grokdeclarator): Per 14.1/2, error out if a storage class
82         is specified in a template parameter declaration.
83         * parser.c (cp_parser_template_parameter): Call grokdeclarator with
84         TPARM as third argument.
85
86 2009-11-13  Jason Merrill  <jason@redhat.com>
87
88         PR c++/27425
89         PR c++/34274
90         * pt.c (expand_template_argument_pack): Handle null arg gracefully.
91         (convert_template_argument): Use %T for type.
92
93         PR c++/29363
94         * decl.c (create_implicit_typedef): Set TYPE_STUB_DECL here.
95         (cxx_init_decl_processing): Not here.
96         * name-lookup.c (pushtag): Or here.
97         * pt.c (lookup_template_class): Or here.
98
99         PR c++/35075
100         * pt.c (convert_nontype_argument): Give helpful error about
101         reference variable argument to reference template parameter.
102
103         PR c++/21008, DR 515
104         * semantics.c (finish_non_static_data_member): Don't check
105         derivation in a template.
106
107         PR c++/11987
108         * parser.c (cp_parser_direct_declarator): Give helpful error about
109         trying to define member of a dependent typedef.
110         * pt.c (resolve_typename_type): Don't resolve a typedef typename.
111         * tree.c (typedef_variant_p): New.
112         * cp-tree.h: Declare it.
113
114 2009-11-12  Jason Merrill  <jason@redhat.com>
115
116         PR c++/27078
117         * parser.c (cp_parser_primary_expression): Don't give a duplicate
118         ambiguity error.
119
120         PR c++/39560
121         * decl2.c (build_anon_union_vars): Set DECL_ARTIFICIAL.
122
123         PR c++/37037
124         * decl.c (grokdeclarator): Don't generate a void PARM_DECL.
125
126         PR c++/42013
127         * call.c (build_conditional_expr): Check specifically for folding
128         to CALL_EXPR rather than TREE_SIDE_EFFECTS.
129
130         * typeck.c (cv_qualified_p): New fn.
131         (decay_conversion): Use it.
132         * cp-tree.h: Declare it.
133         * tree.c (rvalue): Use it and cv_unqualified.
134         * init.c (build_aggr_init): Likewise.
135
136         PR c++/42013
137         * call.c (build_conditional_expr): Don't fold a TREE_SIDE_EFFECTS
138         COND_EXPR in unevaluated context.
139
140 2009-11-12  Jan Hubicka  <jh@suse.cz>
141
142         * decl2.c (constrain_visibility): Clear WEAK and COMMON flags.
143
144 2009-11-11  Jason Merrill  <jason@redhat.com>
145
146         PR c++/39131
147         * rtti.c (emit_support_tinfos): Add DFP types.
148
149         * call.c (build_op_delete_call): Downgrade error about
150         placement/non-placement confusion to permerror.
151
152 2009-11-10  Jason Merrill  <jason@redhat.com>
153
154         * call.c (build_op_delete_call): Tweak error.
155
156         PR c++/34158
157         PR c++/36406
158         * call.c (non_placement_deallocation_fn_p): Split out...
159         (build_op_delete_call): ...from here.  Use instantiate_type
160         for placement delete.  Simplify logic.
161         * pt.c (primary_template_instantiation_p): Non-static.
162         * cp-tree.h: Declare it.
163
164 2009-11-09  Jason Merrill  <jason@redhat.com>
165
166         PR c++/41972
167         * parser.c (cp_parser_template_argument): Accept SCOPE_REF around
168         VAR_DECL.
169
170         PR c++/41994
171         * pt.c (tsubst_baselink): tsubst the name.
172
173 2009-11-07  Jason Merrill  <jason@redhat.com>
174
175         PR c++/37920
176         * pt.c (tsubst) [TYPEOF_TYPE]: Set cp_unevaluated_operand.
177
178         PR c++/18451
179         PR c++/40738
180         * cp-tree.h (cp_decl_specifier_seq): Add any_type_specifiers_p.
181         * parser.c (cp_parser_single_declaration): Call
182         cp_parser_parse_and_diagnose_invalid_type_name here, too.
183         (cp_parser_parameter_declaration): And here.
184         (cp_parser_parse_and_diagnose_invalid_type_name): Be
185         less picky about declarator form.  Don't skip to
186         the end of the block if we're in a declarator.
187         (cp_parser_decl_specifier_seq): Set any_type_specifiers_p.
188         (cp_parser_simple_declaration): Check it.
189         (cp_parser_member_declaration): Likewise.
190         (cp_parser_diagnose_invalid_type_name): Tweak error message.
191         (cp_parser_expression_statement): Likewise.
192         * decl2.c (grokfield): Mention decltype instead of typeof.
193
194 2009-11-06  Jason Merrill  <jason@redhat.com>
195
196         PR c++/15946
197         * parser.c (cp_parser_check_template_parameters): Don't talk about
198         specialization at function scope.
199         (cp_parser_diagnose_invalid_type_name): Handle dependent scope.
200         (cp_parser_parse_and_diagnose_invalid_type_name): Likewise.
201         (cp_parser_expression_statement): Suggest typename.
202         * error.c (dump_decl) [SCOPE_REF]: Print the type here.
203         (dump_expr) [SCOPE_REF]: Call it.
204         (dump_type) [UNBOUND_CLASS_TEMPLATE]: Check TFF_UNQUALIFIED_NAME.
205         * cxx-pretty-print.c (pp_cxx_unqualified_id): Print class template
206         args.
207
208         PR c++/9381
209         * decl2.c (build_memfn_type): Preserve attributes.
210         (cp_reconstruct_complex_type): Likewise.
211         (maybe_retrofit_in_chrg): Likewise.
212         * class.c (adjust_clone_args): Likewise.
213         * call.c (standard_conversion): Use build_memfn_type.
214         * pt.c (tsubst): Likewise.
215         * decl.c (build_ptrmem_type): Likewise
216         (check_function_type): Preserve attributes.
217         * tree.c (cp_build_type_attribute_variant): Propagate exception
218         specs on METHOD_TYPE, too.
219         (strip_typedefs): Preserve exception specs and attributes.
220
221 2009-11-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
222
223         PR c++/41536
224         * optimize.c (maybe_clone_body): Copy DECL_ATTRIBUTES and
225         DECL_DISREGARD_INLINE_LIMITS also.
226
227 2009-11-06  Jakub Jelinek  <jakub@redhat.com>
228
229         PR c++/41967
230         * parser.c (cp_parser_omp_for_loop): After diagnosing not perfectly
231         nested loop and parsing statements, don't cp_parser_require }, instead
232         exit the loop if next token is CPP_EOF.
233
234 2009-11-05  Jason Merrill  <jason@redhat.com>
235
236         PR c++/34180
237         * method.c (do_build_copy_constructor): Don't drop cv-quals from
238         the field type.
239
240         PR c++/7046
241         * class.c (finish_struct): Store maximum_field_alignment in
242         TYPE_PRECISION.
243         * pt.c (instantiate_class_template): Set maximum_field_alignment.
244
245         PR c++/34870
246         * name-lookup.c (arg_assoc_class): Call complete_type.
247         * pt.c (instantiate_class_template): Call uses_template_parms
248         instead of dependent_type_p.
249
250         PR c++/41703
251         * pt.c (check_undeduced_parms): New subroutine of...
252         (more_specialized_fn): ...here.  Undeduced template parms can make
253         a template less specialized than another.
254
255 2009-11-04  Jason Merrill  <jason@redhat.com>
256
257         PR c++/39413
258         * search.c (lookup_base): Don't complete_type (base).
259
260         PR c++/35067
261         * method.c (use_thunk): Check DECL_WEAK as well as
262         DECL_ONE_ONLY.
263
264         PR c++/17365, DR 218
265         * name-lookup.c (add_function): Ignore non-functions.
266
267 2009-11-03  Jason Merrill  <jason@redhat.com>
268
269         PR c++/36959
270         * decl2.c (cxx_callgraph_analyze_expr): Don't reference a function
271         just because a static variable in it is needed unless -frepo.
272
273         PR c++/41876
274         * parser.c (cp_parser_type_specifier_seq): Rename is_condition to
275         is_declaration.
276         (cp_parser_exception_declaration): Pass true.
277         (cp_parser_omp_for_loop): Likewise.
278
279         PR c++/41927
280         * typeck.c (build_x_binary_op): Don't do warn_parentheses
281         if we're in a SFINAE context.
282
283         PR c++/41815
284         * call.c (build_call_a): Strip cv-quals from rvalue result.
285
286         PR c++/40944
287         * call.c (initialize_reference): Add complain parm.
288         * typeck.c (convert_for_initialization): Pass it.
289         * decl.c (grok_reference_init): Likewise.
290         * cp-tree.h: Declare it.
291
292         PR c++/40687
293         * pt.c (do_auto_deduction): Diagnose inconsistent deduction.
294
295 2009-11-02  Dodji Seketeli  <dodji@redhat.com>
296
297         PR c++/37093
298         * pt.c (check_valid_ptrmem_cst_expr): New function.
299         (convert_nontype_argument): Use it to output an error for
300         illegal pointer to member expressions used as template arguments.
301
302 2009-11-02  Jason Merrill  <jason@redhat.com>
303
304         Restrict DR 757 change to C++0x mode.
305         * decl2.c (mark_used): Check cxx_dialect.
306         * decl.c (grokfndecl): Do check type linkage in C++98 mode.
307         (grokvardecl): Likewise.
308         * pt.c (check_instantiated_arg): Likewise.
309
310 2009-11-02  Jakub Jelinek  <jakub@redhat.com>
311
312         PR c++/41774
313         * name-lookup.c (handle_namespace_attrs): Pass 1 as last argument to
314         push_visibility.
315         * parser.c (cp_parser_namespace_definition): Pass 1 as argument to
316         pop_visibility.
317         * rtti.c (push_abi_namespace): Pass 2 as last argument to
318         push_visibility.
319         (pop_abi_namespace): Pass 2 as argument to pop_visibility.
320
321 2009-10-31  Jason Merrill  <jason@redhat.com>
322
323         * tree.c (cv_unqualified): New fn.
324         * cp-tree.h: Declare it.
325         * typeck.c (decay_conversion): Use it instead of TYPE_MAIN_VARIANT.
326
327         * rtti.c (tinfo_name): Fix lengths for private case.
328
329 2009-10-31  Jason Merrill  <jason@redhat.com>
330
331         PR c++/41754
332         * call.c (compare_ics): Avoid bad union use when
333         comparing two ck_lists.
334
335 2009-10-30  Jerry Quinn  <jlquinn@optonline.net>
336
337         * mangle.c (mangle_type_string_for_rtti): Reapply 153734.
338         (needs_fake_anon): Likewise.
339         (write_name): Likewise.
340         (write_nested_name): Likewise.
341         * cp-tree.h (mangle_type_string_for_rtti): Likewise.
342         (get_anonymous_namespace): Likewise.
343         * name-lookup.c (get_anonymous_namespace_name): Likewise.
344         * rtti.c (tinfo_name): Likewise, with +1 in the second
345         build_string call fixed.
346         (tinfo_base_init): Likewise.
347
348 2009-10-30  Jason Merrill  <jason@redhat.com>
349
350         Revert:
351         * decl.c (cp_fname_init): Correct build_string argument.
352
353 2009-10-30  Jerry Quinn  <jlquinn@optonline.net>
354
355         * mangle.c (mangle_type_string_for_rtti): Revert 153734.
356         (needs_fake_anon): Likewise.
357         (write_name): Likewise.
358         (write_nested_name): Likewise.
359         * cp-tree.h (mangle_type_string_for_rtti): Likewise.
360         (get_anonymous_namespace): Likewise.
361         * name-lookup.c (get_anonymous_namespace_name): Likewise.
362         * rtti.c (tinfo_name): Likewise.
363         (tinfo_base_init): Likewise.
364
365 2009-10-30  Dodji Seketeli  <dodji@redhat.com>
366
367         PR c++/41863
368         * pt.c (iterative_hash_template_arg): articifial parms
369         don't have DECL_PARM_INDEX set. Do not hash it.
370
371 2009-10-28  Jerry Quinn  <jlquinn@optonline.net>
372
373         * mangle.c (mangle_type_string_for_rtti): Revert r149964.
374         (needs_fake_anon): Likewise.
375         (write_name): Likewise.
376         (write_nested_name): Likewise.
377         * cp-tree.h (mangle_type_string_for_rtti): Likewise.
378         (get_anonymous_namespace): Likewise.
379         * name-lookup.c (get_anonymous_namespace_name): Likewise.
380         * rtti.c (tinfo_name): Insert '*' in front of private names.
381         (tinfo_base_init): Use it.
382
383 2009-10-28  Jason Merrill  <jason@redhat.com>
384
385         Core issue 812, 861
386         * name-lookup.c (set_decl_namespace): Deal properly with inline
387         namespaces.
388         (qualified_lookup_using_namespace): Overhaul.
389         * pt.c (print_candidates): Handle getting an OVERLOAD.
390
391 2009-10-28  Jason Merrill  <jason@redhat.com>
392
393         * decl.c (cp_fname_init): Correct build_string argument.
394
395 2009-10-27  Jason Merrill  <jason@redhat.com>
396
397         Allow no-capture lambdas to convert to function pointer.
398         * semantics.c (maybe_add_lambda_conv_op): New.
399         * parser.c (cp_parser_lambda_expression): Call it.
400         (cp_parser_lambda_declarator_opt): Make op() static if
401         no captures.
402         * mangle.c (write_closure_type_name): Adjust.
403         * semantics.c (finish_this_expr): Adjust.
404         * decl.c (grok_op_properties): Allow it.
405         * call.c (build_user_type_conversion_1): Handle static conversion op.
406         (build_op_call): And op().
407
408 2009-10-26  Jakub Jelinek  <jakub@redhat.com>
409
410         PR debug/41828
411         * cp-lang.c (cxx_dwarf_name): Return NULL instead of
412         <anonymous ...> for anonymous aggregate names.
413
414 2009-10-26  Jason Merrill  <jason@redhat.com>
415
416         PR c++/38796, Core issue 906
417         * cp-tree.h (DECL_DEFAULTED_OUTSIDE_CLASS_P): New.
418         (DECL_DEFAULTED_IN_CLASS_P): New.
419         * class.c (user_provided_p): Non-static.
420         (check_methods): Use it.
421         (check_bases_and_members): Check defaulted fns.
422         (defaultable_fn_p): Move and rename to...
423         * method.c (defaultable_fn_check): ...this.
424         (defaulted_late_check): New.
425         * pt.c (tsubst_decl): Call it.
426         * decl2.c (grokfield): Adjust.
427         * decl.c (cp_finish_decl): Adjust.
428         (grok_special_member_properties): Use user_provided_p.
429
430 2009-10-26  Dodji Seketeli  <dodji@redhat.com>
431
432         PR c++/41785
433         * pt.c (template_args_equal): Handle comparison of
434         an ARGUMENT_PACK_SELECT node with the arguments node it selects into.
435         * cp-tree.def: Fix a typo in the description of TYPE_PACK_EXPANSION.
436
437 2009-10-26  Dodji Seketeli  <dodji@redhat.com>
438
439         PR c++/41020
440         * decl.c (decls_match): Use DECL_IS_BUILTIN instead of
441         DECL_BUILT_IN.
442
443 2009-10-23  Dodji Seketeli  <dodji@redhat.com>
444
445         PR c++/40808
446         * mangle.c (write_template_args): Allow mangling of empty template
447         argument list. Updated function comments.
448
449 2009-10-23  Jason Merrill  <jason@redhat.com>
450
451         * semantics.c (lambda_expr_this_capture): Use thisify_lambda_field.
452
453         * semantics.c (outer_lambda_capture_p): New fn.
454         (thisify_lambda_field): Factor out...
455         (add_default_capture): ...from here.
456         (finish_id_expression): Use them.
457
458         Core issue 899
459         * call.c (add_function_candidate): Only permit explicit conversion
460         ops if copy ctor was called with a single argument.
461
462         * call.c (initialize_reference): Tweak error message.
463
464 2009-10-21  Jakub Jelinek  <jakub@redhat.com>
465
466         * mangle.c (finish_mangling_get_identifier): Use
467         obstack_base (mangle_obstack) instead of name_base.
468
469 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
470
471         * parser.c (cp_lexer_print_token, cp_parser_is_string_literal,
472         cp_parser_string_literal, cp_parser_primary_expression): Likewise.
473         (cp_lexer_get_preprocessor_token): Use C_LEX_STRING_JOIN instead
474         of C_LEX_RAW_STRINGS.
475
476 2009-10-15  Jason Merrill  <jason@redhat.com>
477
478         PR c++/38888
479         * error.c (dump_template_bindings): Wrap argument packs in {}.
480
481         PR c++/38798
482         * parser.c (CP_PARSER_FLAGS_NO_TYPE_DEFINITIONS): New.
483         (cp_parser_type_specifier): Don't try to parse a class-specifier
484         or enum-specifier in that case.
485         (cp_parser_trailing_type_id): New.
486         (cp_parser_late_return_type_opt): Call it.
487         (cp_parser_type_id_1): Add is_trailing_return parm.
488         (cp_parser_type_specifier_seq): Likewise.
489
490 2009-10-14  Jason Merrill  <jason@redhat.com>
491
492         PR c++/39866
493         * call.c (print_z_candidates): Don't print deleted candidates.
494         (print_z_candidate): Note deleted candidates.
495
496 2009-10-14  Larry Evans  <cppljevans@suddenlink.net>
497
498         PR c++/40092
499         * tree.c (cp_tree_equal): Add test for TEMPLATE_PARM_PARAMETER_PACK
500         equality.
501
502 2009-10-12  Jason Merrill  <jason@redhat.com>
503
504         PR c++/37875
505         * parser.c (cp_parser_decltype): Set greater_than_is_operator_p.
506
507         PR c++/37766
508         * pt.c (type_unification_real): Call convert_template_argument
509         for function default template arguments.
510         (check_default_tmpl_args): Suggest -std=c++0x when function default
511         template args seen in C++98 mode.
512
513 2009-10-11  Jason Merrill  <jason@redhat.com>
514
515         PR c++/37204
516         * typeck.c (build_reinterpret_cast_1): Handle rvalue refs
517         properly.
518
519 2009-10-11  Richard Guenther  <rguenther@suse.de>
520
521         * tree.c (cp_free_lang_data): Drop anonymous aggregate names.
522
523 2009-10-08  Jason Merrill  <jason@redhat.com>
524
525         PR c++/36816
526         * pt.c (maybe_adjust_types_for_deduction): Do rvalue ref adjustment
527         even when DEDUCE_EXACT.
528
529         PR c++/37177
530         * pt.c (resolve_nondeduced_context): New.
531         * cvt.c (convert_to_void): Call it.
532         * semantics.c (finish_decltype_type): Likewise.
533         * typeck.c (decay_conversion): Here too.
534         * pt.c (tsubst_decl): Don't clobber input_location.
535         Don't register a bad specialization.
536
537 2009-10-07  Gabriel Dos Reis  <gdr@cs.tamu.edu>
538
539         * cp-tree.h: Fix location of documentation for DECL_LANG_FLAG_7.
540
541 2009-10-07  Jason Merrill  <jason@redhat.com>
542
543         PR c++/39863
544         * pt.c (tsubst_pack_expansion): Don't do anything now if we
545         have incomplete packs of different lengths.
546
547         PR c++/41038
548         * tree.c (build_qualified_name): Call convert_from_reference.
549
550 2009-10-06  Jason Merrill  <jason@redhat.com>
551
552         Fix lookup of initialized captures in unevaluated context.
553         * cp-tree.h (DECL_NORMAL_CAPTURE_P): New.
554         * name-lookup.c (qualify_lookup): Check it.
555         * parser.c (cp_parser_lambda_introducer): Pass explicit_init_p
556         to add_capture.
557         * semantics.c (add_capture): Set DECL_NORMAL_CAPTURE_P
558         on captures without explicit init.
559         (add_default_capture): Pass explicit_init_p.
560
561         Fix capture by copy of types with explicit copy constructor.
562         * cp-tree.h (TARGET_EXPR_DIRECT_INIT_P): New.
563         (DIRECT_INIT_EXPR_P): New.
564         * typeck.c (convert_for_initialization): Just return if
565         DIRECT_INIT_EXPR_P.
566         * semantics.c (build_lambda_object): Use
567         TARGET_EXPR_DIRECT_INIT_P for normal captures.
568
569 2009-10-05  Jason Merrill  <jason@redhat.com>
570
571         * parser.c: Mark lambda_scope and lambda_count for PCH.
572
573 2009-10-03  Jason Merrill  <jason@redhat.com>
574
575         PR c++/41553
576         * parser.c (cp_parser_lambda_introducer): Avoid infinite loop on
577         parse error.
578
579 2009-10-02  Jason Merrill  <jason@redhat.com>
580
581         * mangle.c (write_unnamed_type_name): Implement.
582         (local_class_index): Split out from...
583         (discriminator_for_local_entity): ...here.
584         (nested_anon_class_index): New.
585         * cp-tree.h (TYPE_FUNCTION_SCOPE_P): New.
586
587 2009-10-02  Janis Johnson  <janis187@us.ibm.com>
588
589         * call.c (convert_arg_to_ellipsis): Avoid promoting decimal32
590         to double.
591
592 2009-10-01  Jason Merrill  <jason@redhat.com>
593
594         * parser.c (cp_parser_lambda_expression): Compute visibility.
595         (no_linkage_lambda_type_p): Remove.
596         * cp-tree.h: Remove declaration.
597         * tree.c (no_linkage_check): Don't call it.  Don't check template
598         args.  Don't check TREE_PUBLIC Types.
599
600 2009-10-01  Gabriel Dos Reis  <gdr@cse.tamu.edu>
601             Jason Merrill <jason@redhat.com>
602
603         * decl.c (grokdeclarator): Set constexprness before announcing
604         friendship.
605
606 2009-10-01  Gabriel Dos Reis  <gdr@cs.tamu.edu>
607
608         * decl.c (record_builtin_java_type): Undo unintended change.
609         (cxx_init_decl_processing): Likewise.
610
611 2009-10-01  Jason Merrill  <jason@redhat.com>
612
613         * pt.c (register_specialization): Push DECL_SOURCE_LOCATION to the
614         clones.
615
616         * decl.c (grok_special_member_properties): Only adjust
617         TYPE_HAS_COMPLEX_* if the function is defaulted in the class body.
618         (cp_finish_decl): Push DECL_DELETED_FN/DECL_DEFAULTED_FN to the
619         clones.
620
621 2009-09-30  Gabriel Dos Reis  <gdr@cs.tamu.edu>
622
623         * decl.c (check_for_uninitialized_const_var): Check constexpr
624         variables too.
625         (grokdeclarator): Handle `constexpr'.
626         (check_tag_decl): Reject `constexpr'.
627         (check_function_type): Check constexpr functions.
628         * cp-tree.h (ds_constexpr): New cp_decl_spec enumerator.
629         (CLASSTYPE_LITERAL_P): New.
630         (lang_type_class::is_literal): New.
631         (lang_type_class::dummy): Adjust width.
632         (literal_type_p): Declare.
633         * parser.c (cp_parser_check_decl_spec): Print it.
634         (cp_parser_decl_specifier_seq): Accept "constexpr".
635         * semantics.c (validate_constexpr_fundecl): Define.
636         (literal_type_p): Define.
637
638 2009-09-30  Jason Merrill  <jason@redhat.com>
639
640         * semantics.c (lambda_expr_this_capture): Fix default capture
641         of explicit capture of 'this'.
642
643 2009-09-30  Jason Merrill  <jason@redhat.com>
644
645         * parser.c (cp_parser_lambda_expression): Don't add __ to __this.
646
647 2009-09-30  Jason Merrill  <jason@redhat.com>
648
649         * cp-tree.h (LANG_DECL_U2_CHECK): Check LANG_DECL_HAS_MIN.
650
651 2009-09-29  John Freeman  <jfreeman08@gmail.com>
652             Jason Merrill  <jason@redhat.com>
653
654         Add support for lambda-expressions as per N2927.
655         * cp-tree.def (VEC_INIT_EXPR, LAMBDA_EXPR): New.
656         * cp-tree.h (LAMBDA_TYPE_P, LAMBDA_FUNCTION_P): New.
657         (LAMBDA_EXPR_DEFAULT_CAPTURE_MODE): New.
658         (LAMBDA_EXPR_DEFAULT_CAPTURE_LIST): New.
659         (LAMBDA_EXPR_THIS_CAPTURE, LAMBDA_EXPR_CAPTURES_THIS_P): New.
660         (LAMBDA_EXPR_MUTABLE_P, LAMBDA_EXPR_DEDUCE_RETURN_TYPE_P): New.
661         (LAMBDA_EXPR_RETURN_TYPE, LAMBDA_EXPR_LOCATION): New.
662         (LAMBDA_EXPR_EXTRA_SCOPE, LAMBDA_EXPR_DISCRIMINATOR): New.
663         (struct tree_lambda_expr): New.
664         (union lang_tree_node): Add lambda_expression.
665         (struct lang_type_class): Add lazy_move_ctor flag, lambda_expr field.
666         (CLASSTYPE_LAZY_MOVE_CTOR, CLASSTYPE_LAMBDA_EXPR): New.
667         (LAMBDA_TYPE_EXTRA_SCOPE, VEC_INIT_EXPR_SLOT): New.
668         (VEC_INIT_EXPR_INIT, DECLTYPE_FOR_LAMBDA_CAPTURE): New.
669         (DECLTYPE_FOR_LAMBDA_RETURN): New.
670         (enum special_function_kind): Add sfk_move_constructor.
671         (LAMBDANAME_PREFIX, LAMBDANAME_FORMAT, LAMBDANAME_P): New.
672         * parser.c (cp_parser_lambda_expression, cp_parser_lambda_introducer)
673         (cp_parser_lambda_declarator_opt, cp_parser_lambda_body): New.
674         (start_lambda_scope, record_lambda_scope, finish_lambda_scope): New.
675         (no_linkage_lambda_type_p): New.
676         (cp_parser_primary_expression): Recognize lambda expression.
677         (cp_parser_init_declarator): Note lambda scope.
678         (cp_parser_function_definition_after_declarator): Likewise.
679         (cp_parser_late_parsing_default_args): Likewise.
680         (cp_parser_skip_to_closing_parenthesis): Skip to end of lambda capture
681         lists, too.
682         (cp_parser_parameter_declaration): Don't defer lambda default args.
683         * semantics.c (finish_non_static_data_member, finish_id_expression):
684         Handle default capture for lambda expressions.
685         (finish_this_expr): Handle 'this' keyword inside of lambda expressions.
686         (outer_automatic_var_p): New.
687         (finish_decltype_type): Handle decltypes within lambda expressions.
688         (classtype_has_nothrow_assign_or_copy_p): Synthesized move constructor.
689         (build_lambda_expr, build_lambda_object, begin_lambda_type)
690         (lambda_return_type, lambda_capture_field_type, apply_lambda_return_type)
691         (capture_decltype, add_capture, add_default_capture)
692         (lambda_expr_this_capture): New.
693         * mangle.c (write_unnamed_type_name): New. Incomplete.
694         (write_closure_type_name): New.
695         (write_unqualified_name): Recognize unnamed, closure types.
696         (write_type): Do not write decltypes from lambda expressions.
697         (decl_mangling_context): New.
698         (write_name): Use it.  Handle PARM_DECL scope.
699         (write_prefix): Likewise.  Handle VAR_DECL/FIELD_DECL scope.
700         (write_compact_number): Factor out from...
701         (write_expression, write_template_param): ...here.
702         (discriminator_for_local_entity): Recognize lambdas.
703         (write_local_name): Handle PARM_DECL scope.
704         * typeck.c (structural_comptypes): Compare decltypes from lambda
705         expressions.
706         (check_return_expr): Deduce lambda return type from multiple return
707         statements.
708         * class.c (add_implicitly_declared_members): Add lazy move constructor
709         for lambda types.
710         (check_bases_and_members): Delete default constructor and assignment
711         operator for lambda types.
712         (maybe_note_name_used_in_class): Do not confuse lambda expression with
713         defining a class.
714         * decl.c (reshape_init_r): Array copy.
715         (grokfndecl): Synthesized move constructor.
716         (cp_tree_node_structure): Lambda expression.
717         * method.c (use_thunk): Synthesized move constructor.
718         (do_build_copy_constructor): Likewise.
719         (locate_copy): Likewise.
720         (implicitly_declare_fn): Likewise.
721         * cp-objcp-common.c (cp_tree_size): Handle LAMBDA_EXPR.
722         * error.c (dump_aggr_type): Recognize lambda type.
723         (dump_function_decl): Recognize lambda function.
724         (function_category): Likewise.
725         (dump_function_name): Hide lambda name.
726         * tree.c (build_array_copy, move): New.
727         (special_function_p): Synthesized move constructor.
728         (no_linkage_check): Handle lambdas.
729         * search.c (lookup_fnfields_1): Synthesized move constructor.
730         * cp-gimplify.c (cp_gimplify_init_expr, cp_gimplify_expr):
731         Handle VEC_INIT_EXPR.
732         * typeck2.c (digest_init_r): Array copy.
733         * pt.c (get_template_info): Don't touch typedefs.
734         (instantiate_decl): Don't resubstitute artificial decls.
735         (tsubst_decl, tsubst, tsubst_copy_and_build): Handle lambdas.
736         (lookup_template_class): Don't fall back on name lookup.
737         * name-lookup.c (make_lambda_name): New.
738         (pushdecl_class_level): Handle default capture for lambda expressions.
739         (qualify_lookup): Handle decltypes within lambda expressions.
740         (pushtag): Handle ts_within_enclosing_non_class in function scope.
741
742 2009-09-28  Janis Johnson  <janis187@us.ibm.com>
743
744         * mangle.c (write_builtin_type): Support decimal float types.
745
746 2009-09-28  Richard Henderson  <rth@redhat.com>
747
748         * cp-objcp-common.h (LANG_HOOKS_EH_USE_CXA_END_CLEANUP): New.
749
750 2009-09-24  Jakub Jelinek  <jakub@redhat.com>
751
752         * method.c (make_thunk, make_alias_for): Don't set
753         DECL_NO_STATIC_CHAIN.
754         * decl.c (builtin_function_1, grokfndecl): Likewise.
755         * lex.c (build_lang_decl): Likewise.
756
757 2009-09-23  Dodji Seketeli  <dodji@redhat.com>
758
759         PR debug/41065
760         * decl.c (cp_finish_decl): Record the types used by the global
761         variable declaration we've just parsed.
762
763 2009-09-22  Dodji Seketeli  <dodji@redhat.com>
764
765         * cp-lang.c (LANG_HOOKS_FUNCTION_PARAMETER_PACK_P,
766         LANG_HOOKS_FUNCTION_PARM_EXPANDED_FROM_PACK_P,
767         LANG_HOOKS_GET_GENERIC_FUNCTION_DECL): Initialize these
768         hooks for the c++ FE.
769         * cp-tree.h (function_parameter_pack_p, get_function_template_decl,
770         function_parameter_expanded_from_pack_p): Declare ...
771         * pt.c (function_parameter_pack_p, get_function_template_decl,
772         function_parameter_expanded_from_pack_p): ... new hooks.
773         (get_template_info): Make this more robust.
774         (template_args_variadic_p, make_ith_pack_parameter_name): Add a new
775         line between comment and function.
776         (get_template_argument_pack_elems): Fix comment.
777         (tsubst_decl): Arguments of function parameter packs are not
778         parameter packs themselves.
779
780 2009-09-21  Jason Merrill  <jason@redhat.com>
781
782         PR c++/41421
783         * tree.c (trivial_type_p): Fix logic.
784
785 2009-09-21  Jason Merrill  <jason@redhat.com>
786
787         * name-lookup.c (push_class_level_binding): Sanity check.
788
789 2009-09-18  Jason Merrill  <jason@redhat.com>
790
791         * decl2.c (determine_visibility): Make anonymous types internal.
792         (mark_used): Complain about types without linkage used in
793         decls with internal linkage.
794         (vague_linkage_fn_p): Split out from...
795         * decl.c (maybe_commonize_var): ...here.
796         (grokdeclarator): Adjust linkage when a typedef gives linkage name.
797         * tree.c (no_linkage_check): Check the enclosing class and template
798         arguments.
799
800         * cp-tree.h (TYPE_NAMESPACE_SCOPE_P): New.
801
802         * pt.c (get_pattern_parm): New.
803         (listify): Split out from...
804         (listify_autos): ...here.
805         (unify): Deduce std::initializer_list for T.
806         * call.c (build_over_call): Warn about it.
807
808 2009-09-17  Andrew Pinski  <pinskia@gcc.gnu.org>
809
810         PR c++/39365
811         * typeck.c (cp_build_unary_op): Check TREE_CODE for bools instead of
812         using same_type_p.
813         (convert_for_assignment): Likewise.
814         * cvt.c (type_promotes_to): Likewise.
815
816 2009-09-14  Richard Henderson  <rth@redhat.com>
817             Jakub Jelinek  <jakub@redhat.com>
818
819         * cp-tree.h (finish_asm_stmt): Update decl.
820         * parser.c (cp_parser_asm_definition): Parse asm goto.
821         (cp_parser_asm_label_list): New.
822         * pt.c (tsubst_copy_asm_operands): Don't recurse on labels.
823         (tsubst_expr): Handle asm labels.
824         * semantics.c (finish_asm_stmt): Add and use labels parameter.
825
826 2009-09-14  Richard Henderson  <rth@redhat.com>
827
828         * except.c (init_exception_processing): Don't call
829         default_init_unwind_resume_libfunc.
830         (cp_protect_cleanup_actions): Return the decl to call.
831         (build_exc_ptr): Use __builtin_eh_pointer.
832         * optimize.c (clone_body): Set eh_lp_nr, not eh_region.
833
834 2009-09-13  Richard Guenther  <rguenther@suse.de>
835         Rafael Avila de Espindola  <espindola@google.com>
836
837         * except.c (init_exception_processing): Do not set
838         lang_eh_runtime_type.
839         (choose_personality_routine): Do not set eh_personality_decl,
840         set pragma_java_exceptions.
841         * cp-lang.c (LANG_HOOKS_EH_RUNTIME_TYPE): Define.
842         (LANG_HOOKS_EH_PERSONALITY): Likewise.
843         (cp_eh_personality_decl): New.
844         (cp_eh_personality): Likewise.
845         * Make-lang.in (cp-lang.o): Add $(EXPR_H) and $(EXCEPT_H)
846         dependencies.
847
848 2009-09-13  Wei Guozhi  <carrot@google.com>
849
850         PR c++/3187
851         * cp/optimize.c (build_delete_destructor_body): New function.
852         (maybe_clone_body): Call build_delete_destructor_body for
853         deleting destructor.
854
855 2009-09-10  Jason Merrill  <jason@redhat.com>
856
857         * repo.c (extract_string, get_base_filename, init_repo): constify.
858
859 2009-09-09  Jason Merrill  <jason@redhat.com>
860
861         * error.c (find_typenames_r): Also add decltypes.
862
863 2009-09-09  Paolo Carlini  <paolo.carlini@oracle.com>
864
865         PR c++/28293
866         * decl2.c (grokfield): Check for explicit template argument lists.
867
868 2009-09-09  Jack Howarth  <howarth@bromo.med.uc.edu>
869
870         PR bootstrap/41180
871         * Make-lang.in: Remove redundant code from linkage for darwin10.
872
873 2009-09-08  Paolo Carlini  <paolo.carlini@oracle.com>
874
875         PR c++/39923
876         * decl.c (build_init_list_var_init): Check return value of
877         perform_implicit_conversion.
878
879 2009-09-08  Jason Merrill  <jason@redhat.com>
880
881         * class.c (currently_open_class): Make sure we're dealing with the
882         main variant.
883
884         * cp-tree.h (enum overload_flags): Remove OP_FLAG.
885         * method.c (lazily_declare_fn): Check for dtorness in ABI warning.
886
887         * name-lookup.c (is_class_level): Remove.
888         (push_binding_level, leave_scope, resume_scope): Adjust.
889         (pushlevel_class): Adjust.
890         (poplevel_class): Make sure we're on class_binding_level.
891
892         * decl.c (grokmethod): Rename from start_method.
893         (finish_method): Remove.
894         * cp-tree.h: Adjust.
895         * parser.c (cp_parser_save_member_function_body): Adjust.
896
897 2009-09-03  Doug Kwan  <dougkwan@google.com>
898
899         * tree.c (cp_fix_function_decl_p): New.
900         (cp_free_lang_data): New.
901
902 2009-09-03  Diego Novillo  <dnovillo@google.com>
903
904         * Make-lang.in (decl2.o): Add dependency on $(POINTER_SET_H).
905         * decl2.c: Include pointer-set.h.
906         (collect_candidates_for_java_method_aliases): New.
907         (cp_write_global_declarations): Call it.
908         Add local variable CANDIDATES.  If set, call
909         build_java_method_aliases.
910         (build_java_method_aliases): Add argument CANDIDATES.
911         Use it to determine if FNDECL should get a hidden alias.
912         * cp-objcp-common.h (LANG_HOOKS_FREE_LANG_DATA): Define.
913         * cp-tree.h (cp_free_lang_data): Declare.
914
915 2009-09-03  Richard Guenther  <rguenther@suse.de>
916
917         * method.c (use_thunk): Use cgraph_finalize_function to hand
918         off thunks to the cgraph.
919         * semantics.c (emit_associated_thunks): Do not emit thunks
920         for really extern functions.
921
922 2009-09-03  Diego Novillo  <dnovillo@google.com>
923
924         * cp-lang.c (lang_hooks): Remove const qualifier.
925
926 2009-09-02  Jason Merrill  <jason@redhat.com>
927
928         * semantics.c (describable_type): Don't pretend to be in a template.
929
930         * ptree.c (cxx_print_type) [DECLTYPE_TYPE]: Print the expression.
931
932 2009-09-01  Alexandre Oliva  <aoliva@redhat.com>
933
934         * cp-tree.h (TFF_NO_OMIT_DEFAULT_TEMPLATE_ARGUMENTS): New.
935         * cp-lang.c (cxx_dwarf_name): Pass it.
936         * error.c (count_non_default_template_args): Take flags as
937         argument.  Adjust all callers.  Skip counting of default
938         arguments if the new flag is given.
939
940 2009-09-01  Dodji Seketeli  <dodji@redhat.com>
941
942         PR bootstrap/41205
943         * pt.c (make_ith_pack_parameter_name): Don't use strnlen that is a
944         GNU extension.
945
946 2009-09-01  Richard Guenther  <rguenther@suse.de>
947
948         * cp-objcp-common.c (cp_expr_size): Use tree_expr_size.
949         * cp-objcp-common.h (LANG_HOOKS_EXPR_SIZE): Do not define.
950
951 2009-09-01  Richard Guenther  <rguenther@suse.de>
952
953         * cp-objcp-common.h (LANG_HOOKS_MARK_ADDRESSABLE): Remove.
954
955 2009-08-31  Dodji Seketeli  <dodji@redhat.com>
956
957         PR debug/30161
958         * cp-tree.h (get_template_info): Parameter should be const.
959         (CLASSTYPE_SPECIALIZATION_OF_PRIMARY_TEMPLATE_P): Fix typo.
960         (get_template_argument_pack_elems,
961         get_primary_template_innermost_parameters,
962         get_template_innermost_arguments, template_template_parameter_p):
963         Declare ...
964         * pt.c (get_template_argument_pack_elems,
965         get_template_innermost_parameters, get_template_innermost_arguments,
966         template_template_parameter_p):
967         ... New C++ front end implementation of new language hooks.
968         (primary_template_instantiation_p): New private helper.
969         (make_ith_pack_parameter_name): Use snprintf and strnlen instead of
970         printf and strlen.
971         (get_template_info): Const-ify parameter.
972         * cp-lang.c (LANG_HOOKS_GET_INNERMOST_GENERIC_PARMS,
973         LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS,
974         LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS,
975         LANG_HOOKS_GENERIC_TYPE_PARAMETER_DECL_P): Initialize these
976         interfaces for the C++ front-end.
977
978 2009-08-31  Jason Merrill  <jason@redhat.com>
979
980         PR c++/41127
981         * parser.c (cp_parser_enum_specifier): Make sure the : is followed by a
982         type-specifier-seq before we commit.
983
984 2009-08-28  Richard Guenther  <rguenther@suse.de>
985
986         PR lto/41058
987         * cp-gimplify.c (cp_genericize_r): Do not leak zero-sized stores
988         into the generic IL.
989
990 2009-08-27  Richard Guenther  <rguenther@suse.de>
991
992         * class.c (build_vtbl_ref_1): Remove excess vertical space.
993         * Make-lang.in (CXX_TREE_H): Remove c-common.def dependency
994         tracked by $(TREE_H).
995         * semantics.c (expand_or_defer_fn): Zero DECL_SAVED_TREE.
996
997 2009-08-26  Jason Merrill  <jason@redhat.com>
998
999         * call.c (build_builtin_candidate): Don't set LOOKUP_ONLYCONVERTING
1000         if we're contextually converting to bool.
1001         (build_conditional_expr): Likewise.
1002         * typeck.c (condition_conversion): Likewise.
1003
1004         * call.c (build_conditional_expr): Fix logic errors.
1005         (build_new_op): Remove dead COND_EXPR handling.
1006
1007 2009-08-24  Jason Merrill  <jason@redhat.com>
1008
1009         * cp-tree.h (DECL_DEFERRED_FN): Remove.
1010         (struct lang_decl_fn): Remove deferred flag.
1011         * class.c (build_clone): Don't set it.
1012         * decl2.c (note_vague_linkage_fn): Don't check or set it.
1013         (mark_used): Don't check it.
1014         * method.c (make_thunk, make_alias_for): Don't set it.
1015
1016         * decl2.c (mark_used): Streamline logic.
1017
1018         PR c++/41109
1019         PR c++/41110
1020         PR c++/41134
1021         * cp-tree.h (DECL_ODR_USED): New macro.
1022         (struct lang_decl_base): Add odr_used flag.
1023         * decl.c (duplicate_decls): Propagate it.  Use it for error.
1024         * pt.c (register_specialization): Use it for error.
1025         * decl2.c (mark_used): Use it as gating flag rather than TREE_USED.
1026         (cp_write_global_declarations): Use it for error.
1027         (tree_used_ok): Remove.
1028         * cp-tree.h: Remove tree_used_ok.
1029         * call.c (build_call_a): Don't call it.
1030         * init.c (build_offset_ref): Likewise.
1031
1032 2009-08-21  Jakub Jelinek  <jakub@redhat.com>
1033
1034         PR c++/41131
1035         * tree.c (lvalue_p_1) <case CONST_DECL>: Return clk_none if
1036         not TREE_STATIC.
1037
1038 2009-08-19  Jason Merrill  <jason@redhat.com>
1039
1040         PR c++/41119
1041         PR c++/41120
1042         * decl2.c (mark_used): Increment function_depth during synthesis.
1043         * parser.c (cp_parser_default_argument): Not here.
1044
1045 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
1046
1047         * method.c (use_thunk): Call free_after_compilation after
1048         assemble_end_function.
1049
1050 2009-08-17  Richard Guenther  <rguenther@suse.de>
1051
1052         * decl.c (build_ptrmemfunc_type): Keep variant chain intact.
1053         Avoid useless copy.
1054         (finish_enum): Keep variant chain intact.
1055         * tree.c (cp_build_reference_type): Likewise.
1056
1057 2009-08-16  Jason Merrill  <jason@redhat.com>
1058
1059         Make TREE_USED match the [basic.def.odr] concept for FUNCTION_DECL
1060         and VAR_DECL, so mark_used only has effect the first time.
1061         * decl2.c (mark_used): Just return if TREE_USED is already set.
1062         Don't set TREE_USED if cp_unevaluated_operand is set.
1063         (tree_used_ok): New fn.
1064         * init.c (build_offset_ref): Check it instead of TREE_USED.
1065         * call.c (build_call_a): Likewise.
1066         * cp-tree.h: Declare it.
1067         (DECL_NO_LINKAGE_CHECKED): No longer needed.
1068         (struct lang_decl_base): Remove no_linkage_checked bitfield.
1069
1070         * decl2.c (finish_static_data_member_decl): Don't set TREE_USED.
1071
1072         * decl2.c (mark_used): It's ok to synthesize for default args now.
1073
1074 2009-08-10  Jason Merrill  <jason@redhat.com>
1075
1076         Implement DR 757: It's OK for a decl to use a type without linkage
1077         so long as the decl is defined in the current translation unit.
1078         * decl2.c (no_linkage_decls): New vector.
1079         (mark_used): Add decls that use types with no linkage.
1080         (cp_write_global_declarations): Check that they are defined.
1081         (decl_defined_p, no_linkage_error): New fns.
1082         * cp-tree.h (DECL_NO_LINKAGE_CHECKED): New macro.
1083         (struct lang_decl_base): Add flag.
1084         * decl.c (grokfndecl): Don't check type linkage.
1085         (grokvardecl): If the type has no linkage, just make sure
1086         DECL_LANG_SPECIFIC is set.
1087         * pt.c (check_instantiated_arg): Don't check type linkage.
1088         * name-lookup.c (is_local_extern): New fn.
1089         * name-lookup.h: Declare it.
1090
1091 2009-08-05  Jason Merrill  <jason@redhat.com>
1092
1093         PR c++/40948
1094         * init.c (build_vec_init): Evaluate the initializer before
1095         starting the initialization try block.
1096
1097 2009-08-05  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1098
1099         PR c++/36069
1100         * typeck.c (convert_for_assignment): Do not warn for any boolean
1101         variant. Use explicit location.
1102
1103 2009-08-04  Dodji Seketeli  <dodji@redhat.com>
1104
1105         PR c++/39987
1106         * pt.c (tsubst_default_argument): Let access checks of the
1107         default argument happen in the context of the current function.
1108
1109 2009-08-04  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1110
1111         PR c++/16696
1112         * call.c (build_new_op): Only try prefix operator if -fpermissive,
1113         otherwise just error.
1114
1115 2009-08-04  Dodji Seketeli  <dodji@redhat.com>
1116
1117         PR debug/39706
1118         * error.c (lang_decl_name): Print qualified names for decls
1119         in  namespace scope.
1120
1121 2009-08-03  Jason Merrill  <jason@redhat.com>
1122             Jakub Jelinek  <jakub@redhat.com>
1123
1124         PR c++/40948
1125         * init.c (build_vec_init): Look through a TARGET_EXPR around a
1126         CONSTRUCTOR.
1127
1128 2009-07-31  Jason Merrill  <jason@redhat.com>
1129             Douglas Gregor  <doug.gregor@gmail.com>
1130
1131         Remove implicit binding of lvalues to rvalue references (N2831)
1132         * call.c (convert_class_to_reference): Binding an lvalue to an
1133         rvalue reference is bad.  If the user-defined conversion is bad,
1134         set bad_p before merging conversions.
1135         (maybe_handle_ref_bind): Don't push down bad_p.
1136         (reference_binding): Binding an lvalue to an rvalue reference is bad.
1137         (convert_like_real): Give a helpful error about binding lvalue
1138         to rvalue reference.
1139         (reference_related_p): No longer static.
1140         * typeck.c (build_typed_address): New.
1141         (build_static_cast_1): Add static_cast from lvalue to &&.
1142         * cp-tree.h: Adjust.
1143
1144 2009-07-31  Jason Merrill  <jason@redhat.com>
1145
1146         * call.c (reference_binding): Rename lvalue_p to is_lvalue.
1147         Do direct binding of "rvalues" in memory to rvalue references.
1148         * tree.c (lvalue_p_1): Can't be both non-addressable lvalue and
1149         "rvalue" in memory.
1150         * typeck.c (build_static_cast_1): Do direct binding of memory
1151         "rvalues" to rvalue references.
1152         * cvt.c (cp_fold_convert): New.
1153         * cp-tree.h: Declare it.
1154
1155 2009-07-31  Jason Merrill  <jason@redhat.com>
1156
1157         * typeck.c (build_address): Do fold away ADDR_EXPR of INDIRECT_REF.
1158         * tree.c (rvalue): Use cp_build_qualified_type, not TYPE_MAIN_VARIANT.
1159
1160 2009-07-29  Jason Merrill  <jason@redhat.com>
1161
1162         PR c++/14912
1163         * cp-tree.h (enum tsubst_flags): Add tf_no_class_instantiations.
1164         * error.c (count_non_default_template_args): Pass it.
1165         * pt.c (tsubst) [TYPENAME_TYPE]: Don't complete type if it's set.
1166
1167 2009-07-29  Richard Guenther  <rguenther@suse.de>
1168
1169         PR c++/40834
1170         * cp-gimplify.c (cp_genericize_r): Properly walk the BIND_EXPR
1171         vars.
1172
1173 2009-07-26  Simon Martin  <simartin@users.sourceforge.net>
1174
1175         PR c++/40749
1176         * decl.c (grokdeclarator): Do not set TREE_NO_WARNING for functions
1177         with a qualified return type.
1178
1179 2009-07-24  Jason Merrill  <jason@redhat.com>
1180
1181         Core issue 901
1182         * call.c (build_op_delete_call): If this is for a new-expression
1183         and the op delete is deleted, do nothing.
1184
1185         Core issue 702
1186         * call.c (compare_ics): Give list-initialization of std::init_list
1187         priority over conversion to scalar, too.
1188
1189 2009-07-22  Jason Merrill  <jason@redhat.com>
1190
1191         * mangle.c (mangle_type_string_for_rtti): Rename to be clearer.
1192         (needs_fake_anon): New.
1193         (write_name): Check it.
1194         (write_nested_name): Add a fake anonymous namespace scope if true.
1195         * name-lookup.c (get_anonymous_namespace_name): No longer static.
1196         * rtti.c, cp-tree.h: Adjust.
1197
1198 2009-07-22  Richard Guenther  <rguenther@suse.de>
1199
1200         PR c++/40799
1201         * cp-gimplify.c (cp_gimplify_expr): Move handling of using
1202         related exprs to ...
1203         (cp_genericize_r): ... genericization stage.
1204         (cp_genericize): Adjust.
1205
1206 2009-07-21  Jason Merrill  <jason@redhat.com>
1207
1208         Core issue 934
1209         * call.c (reference_binding): Implement binding to { }.
1210         (initialize_reference): Binding temporary to non-const && is fine.
1211         * decl.c (grok_reference_init): Remove error for CONSTRUCTOR.
1212
1213         * decl.c (reshape_init_r): { T } is not an aggregate initializer
1214         for class T.
1215
1216 2009-07-17  Richard Guenther  <rguenther@suse.de>
1217
1218         PR c/40401
1219         * decl.c (finish_function): Do not emit unused result warnings
1220         from here.
1221         * cp-objcp-common.h (LANG_HOOKS_POST_GIMPLIFY_PASS): Use
1222         c_warn_unused_result_pass.
1223         * semantics.c (expand_or_defer_fn): Adjust assertion about IL status.
1224         * optimize.c (clone_body): Clone in GENERIC.
1225         (maybe_clone_body): Do not clear DECL_SAVED_TREE.
1226         * decl2.c (cp_write_global_declarations): Fix body test.
1227         Do not call cgraph_optimize.
1228         * Make-lang.in (optimize.o): Add tree-iterator.h dependency.
1229         * method.c (use_thunk): Register thunk with
1230         cgraph_finalize_function.
1231         * error.c (function_category): Guard access of DECL_LANG_SPECIFIC.
1232
1233 2009-07-17  Richard Guenther  <rguenther@suse.de>
1234
1235         * init.c (build_vec_delete_1): Do not set DECL_REGISTER on the
1236         temporary pointer.
1237
1238 2009-07-17  Aldy Hernandez  <aldyh@redhat.com>
1239             Manuel López-Ibáñez  <manu@gcc.gnu.org>
1240
1241         PR 40435 
1242         * typeck.c, init.c, class.c, method.c, rtti.c, except.c, error.c,
1243         tree.c, cp-gimplify.c, cxx-pretty-print.c, pt.c, semantics.c,
1244         call.c, cvt.c, mangle.c: Add location argument to
1245         fold_{unary,binary,ternary}, fold_build[123], build_call_expr,
1246         build_size_arg, build_fold_addr_expr, build_call_array,
1247         non_lvalue, size_diffop, fold_build1_initializer,
1248         fold_build2_initializer, fold_build3_initializer,
1249         fold_build_call_array, fold_build_call_array_initializer,
1250         fold_single_bit_test, omit_one_operand, omit_two_operands,
1251         invert_truthvalue, fold_truth_not_expr, build_fold_indirect_ref,
1252         fold_indirect_ref, combine_comparisons, fold_builtin_*,
1253         fold_call_expr, build_range_check, maybe_fold_offset_to_address,
1254         round_up, round_down.
1255
1256 2009-07-16  Jason Merrill  <jason@redhat.com>
1257
1258         PR libstdc++/37907
1259         Split POD into "standard-layout" and "trivial" as per N2230,
1260         Support std::is_standard_layout and std::is_trivial traits.
1261         * cp-tree.h (enum cp_trait_kind): Add CPTK_IS_STD_LAYOUT,
1262         CPTK_IS_TRIVIAL.
1263         (struct lang_type_class): Add non_std_layout.
1264         (CLASSTYPE_NON_STD_LAYOUT): New.
1265         * class.c (check_bases): Set it.
1266         (check_field_decls): Likewise.
1267         (check_bases_and_members): Likewise.
1268         * parser.c (cp_parser_primary_expression): Handle RID_IS_STD_LAYOUT,
1269         RID_IS_TRIVIAL.
1270         (cp_parser_trait_expr): Likewise.
1271         * semantics.c (trait_expr_value): Handle CPTK_IS_STD_LAYOUT,
1272         CPTK_IS_TRIVIAL.
1273         (finish_trait_expr): Likewise.
1274         * tree.c (scalarish_type_p, trivial_type_p, std_layout_type_p): New.
1275         (pod_type_p): Use them.
1276         (type_has_nontrivial_copy_init, type_has_nontrivial_default_init): New.
1277
1278         Adjust bits of the language that no longer refer to POD types.
1279         * call.c (convert_arg_to_ellipsis): Use type_has_nontrivial_copy_init
1280         and TYPE_HAS_NONTRIVIAL_DESTRUCTOR rather than pod_type_p.
1281         (build_x_va_arg): Likewise.
1282         (call_builtin_trap): Remove.
1283         * decl.c (declare_local_label): Use type_has_nontrivial_default_init
1284         and TYPE_HAS_NONTRIVIAL_DESTRUCTOR rather than pod_type_p.
1285         (cp_finish_decl): Likewise.
1286         (check_previous_goto_1, check_goto): Adjust error.
1287         * typeck.c (build_class_member_access_expr): Check
1288         CLASSTYPE_NON_STD_LAYOUT rather than CLASSTYPE_NON_POD_P.
1289
1290 2009-07-14  Taras Glek  <tglek@mozilla.com>
1291             Rafael Espindola  <espindola@google.com>
1292
1293         * Make-lang.in: Added CP_PLUGIN_HEADERS and
1294         c.install-target to export cp-tree.h cxx-pretty-print.h
1295         name-lookup.h headers for plugins.
1296
1297 2009-07-14  Jason Merrill  <jason@redhat.com>
1298
1299         PR c++/37276
1300         * decl.c (decls_match): A non-extern-C declaration doesn't match
1301         a builtin extern-C declaration.
1302
1303         PR c++/40746
1304         * name-lookup.c (qualified_lookup_using_namespace): Don't stop
1305         looking in used namespaces just because we found something on
1306         another branch.
1307
1308         PR c++/40740
1309         * semantics.c (perform_koenig_lookup): Handle empty template args.
1310
1311         * call.c (build_over_call): Use can_trust_pointer_alignment.
1312
1313 2009-07-14  Dodji Seketeli  <dodji@redhat.com>
1314
1315         PR debug/40705
1316         PR c++/403057
1317         * decl2.c (grokfield): Don't call set_underlying_type on typedef
1318         decls that are type names.
1319
1320 2009-07-13  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1321
1322         PR C++/22154
1323         * parser.c (cp_parser_elaborated_type_specifier): Accept typename in
1324         front of qualified names.
1325
1326 2009-07-12  Jason Merrill  <jason@redhat.com>
1327
1328         PR c++/36628
1329         * tree.c (rvalue): Use lvalue_or_rvalue_with_address_p.
1330
1331         PR c++/37206
1332         * cp-tree.h (enum cp_lvalue_kind_flags): Add clk_rvalueref.
1333         * tree.c (lvalue_p_1): Return it.  Remove
1334         treat_class_rvalues_as_lvalues parm.
1335         (real_lvalue_p): Disallow pseudo-lvalues here.
1336         (lvalue_or_rvalue_with_address_p): New fn.
1337         * call.c (initialize_reference): Use it instead of real_lvalue_p.
1338
1339         PR c++/40689
1340         * init.c (build_new_1): Handle initializer list as array initializer.
1341         (build_vec_init): Likewise.
1342         * typeck.c (cp_build_modify_expr): Likewise.
1343         * typeck2.c (process_init_constructor_array): Error rather than abort
1344         if too many initializers.
1345
1346 2009-07-10  Jakub Jelinek  <jakub@redhat.com>
1347
1348         PR c++/40502
1349         * error.c (cp_print_error_function): Check for NULL block.
1350
1351 2008-07-09  Simon Martin  <simartin@users.sourceforge.net>
1352             Jason Merrill  <jason@redhat.com>
1353
1354         * pt.c (perform_typedefs_access_check, get_types_needing_access_check,
1355         append_type_to_template_for_access_check_1): Use CLASS_TYPE_P.
1356
1357 2009-07-09  Dodji Seketeli  <dodji@redhat.com>
1358
1359         PR c++/40684
1360         * pt.c (type_unification_real): Use tsubst_template_arg instead
1361         of tsubst to substitute default template arguments.
1362
1363 2009-07-08  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1364
1365         PR c++/31246
1366         * init.c (build_new_1): Set TREE_NO_WARNING for compiler-generated
1367         code.
1368         * cp-gimplify.c (genericize_eh_spec_block): Likewise.
1369         
1370
1371 2009-07-07  Jason Merrill  <jason@redhat.com>
1372
1373         PR c++/35828
1374         * pt.c (tsubst_decl): Don't abort if we didn't change anything
1375         in a TEMPLATE_DECL's args.
1376
1377 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1378
1379         * semantics.c (finalize_nrv_r): Replace EXPR_LOCUS by
1380         EXPR_LOCATION.
1381         
1382 2009-07-07  Jason Merrill  <jason@redhat.com>
1383
1384         PR c++/37816
1385         * decl.c (build_enumerator): Don't add enumerators for a
1386         scoped enum to the enclosing class.
1387
1388         PR c++/40639
1389         * decl.c (start_enum): Allow dependent underlying type.
1390
1391         PR c++/40633
1392         * decl.c (finish_enum): Finish scope even in a template.
1393
1394 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1395
1396         * init.c: Replace %J by an explicit location. Update all calls.
1397         * decl.c: Likewise.
1398         * typeck2.c: Likewise.
1399         * pt.c: Likewise.
1400         * name-lookup.c: Likewise.
1401         
1402 2009-07-06  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1403
1404         * decl.c: Replace %H by an explicit location. Update all calls.
1405         * except.c: Likewise.
1406         * semantics.c: Likewise.
1407         * parser.c: Likewise.
1408
1409 2009-07-06  Simon Martin  <simartin@users.sourceforge.net>
1410
1411         PR c++/40557
1412         * pt.c (perform_typedefs_access_check, get_types_needing_access_check,
1413         append_type_to_template_for_access_check_1): Use
1414         RECORD_OR_UNION_CODE_P.
1415
1416 2009-07-04  Jason Merrill  <jason@redhat.com>
1417
1418         * pt.c (retrieve_specialization): Don't get confused by a
1419         using-declaration that brings in another instance of this template
1420         from a base class.
1421
1422         * ptree.c (cxx_print_type): Fix logic.
1423
1424         * cp-tree.h (LANG_DECL_FN_CHECK): Fix non-checking version.
1425
1426         PR c++/40619
1427         * cp-tree.h (struct lang_decl_parm): New.
1428         (struct lang_decl): Add it.
1429         (LANG_DECL_PARM_CHECK): New.
1430         (DECL_PARM_INDEX): New.
1431         * decl2.c (parm_index): Remove.
1432         * lex.c (retrofit_lang_decl): Handle parms.
1433         (cxx_dup_lang_specific_decl): Likewise.
1434         * mangle.c (write_expression): Adjust.
1435         * tree.c (cp_tree_equal): Adjust.
1436         (decl_linkage): Only check DECL_COMDAT for functions and variables.
1437         * parser.c (cp_parser_parameter_declaration_list): Set
1438         DECL_PARM_INDEX.
1439         * pt.c (iterative_hash_template_arg): Hash it.
1440
1441 2009-07-03  Jason Merrill  <jason@redhat.com>
1442
1443         * cp-tree.h (struct lang_decl): Overhaul.
1444         (struct lang_decl_flags): Remove.
1445         (struct lang_decl_base): New.
1446         (struct lang_decl_min): New.
1447         (struct lang_decl_fn): New.
1448         (struct lang_decl_ns): New.
1449         (CAN_HAVE_FULL_LANG_DECL_P): Replace with LANG_DECL_HAS_MIN.
1450         (LANG_DECL_MIN_CHECK): New.
1451         (LANG_DECL_FN_CHECK): New.
1452         (LANG_DECL_NS_CHECK): New.
1453         (STRIP_TEMPLATE): New.
1454         (NON_THUNK_FUNCTION_CHECK): Remove.
1455         (DECL_DECLARES_FUNCTION_P): New.
1456         (lots): Adjust.
1457         * lex.c (retrofit_lang_decl, cxx_dup_lang_specific_decl): Adjust.
1458         * decl.c (push_local_name, duplicate_decls): Adjust.
1459         * decl2.c (start_objects): Don't set u2sel.
1460         * semantics.c (finish_omp_threadprivate): Adjust.
1461         * class.c (build_clone): Don't do much on TEMPLATE_DECLs.
1462         (decl_cloned_function_p): Out-of-line implementation of macros.
1463         (clone_function_decl, adjust_clone_args): Use DECL_CLONED_FUNCTION_P.
1464         * mangle.c (write_unqualified_name): Don't check function flags
1465         on non-functions.
1466         * method.c (make_alias_for): Don't set DECL_CLONED_FUNCTION.
1467         * pt.c (build_template_decl): Don't set function flags.
1468         (check_default_tmpl_args): Check that it's a function.
1469         (instantiate_template): Use DECL_ABSTRACT_ORIGIN to find the
1470         cloned template.
1471
1472         * pt.c (tsubst_decl) [FUNCTION_DECL]: Don't tsubst
1473         DECL_CLONED_FUNCTION.
1474
1475         * cp-tree.h (struct lang_type_class): Move sorted_fields here.
1476         * class.c (finish_struct_1): Adjust.
1477         * ptree.c (cxx_print_decl, cxx_print_type): Adjust.
1478         * search.c (lookup_field_1): Adjust.
1479
1480         * cp-tree.h (CLASSTYPE_INLINE_FRIENDS): Remove.
1481         * decl.c (finish_method): Don't add to it.
1482         * class.c (fixup_pending_inline): Remove.
1483         (fixup_inline_methods): Remove.
1484         (finish_struct_1): Don't call it.
1485
1486         * error.c (dump_function_name): Handle null name.
1487
1488 2009-07-02  Mark Mitchell  <mark@codesourcery.com>
1489
1490         * typeck.c (cp_build_binary_op): Move warnings about use of NULL
1491         in arithmetic earlier and allow comparisions of NULL with
1492         pointers-to-members.
1493
1494 2009-07-02  Jason Merrill  <jason@redhat.com>
1495
1496         Use hash tables for template specialization lookup.
1497         * pt.c (struct spec_entry): New type.
1498         (decl_specializations, type_specializations): New hash tables.
1499         (register_specialization, retrieve_specialization): Use them.
1500         (reregister_specialization, lookup_template_class): Use them.
1501         (eq_specializations, hash_tmpl_and_args, hash_specialization): New.
1502         (iterative_hash_template_arg): New.
1503         (init_template_processing): New
1504         (process_partial_specialization): Don't look to see if we already
1505         have this partial specialization.
1506         (maybe_process_partial_specialization): Handle reassigning
1507         full specializations when we get an explicit specialization
1508         of the partial instantiation.
1509         (tsubst_friend_function): Adjust specialization reassignment code.
1510         (instantiate_template): Only do one lookup.
1511         (instantiate_decl): Don't do any lookup.
1512         * cp-tree.h: Declare init_template_processing.
1513         * decl.c (duplicate_decls): Pass args to reregister_specialization.
1514
1515 2009-07-01  Jason Merrill  <jason@redhat.com>
1516
1517         * cp-tree.h (DECL_CLASS_TEMPLATE_P): Use DECL_IMPLICIT_TYPEDEF_P.
1518
1519         * pt.c (register_specialization): Use duplicate_decls to merge
1520         the argument with a previous specialization.
1521         (check_explicit_specialization): Call register_specialization to
1522         merge the TEMPLATE_DECL with a previous version.
1523         (determine_specialization): Return the args even if fn is a template.
1524
1525 2009-07-01  Ian Lance Taylor  <iant@google.com>
1526
1527         * g++spec.c (lang_specific_driver): Bump num_args by 1.
1528
1529 2009-06-30  Jason Merrill  <jason@redhat.com>
1530
1531         PR c++/40595
1532         * pt.c (tsubst_pack_expansion): Handle unexpanded packs in an
1533         EXPR_PACK_EXPANSION.
1534
1535 2009-06-29  Jason Merrill  <jason@redhat.com>
1536
1537         PR c++/40274
1538         * error.c (dump_template_parms): Pass all args to
1539         count_non_default_template_args.
1540         (count_non_default_template_args): Pull out the inner ones.
1541
1542 2009-06-26  H.J. Lu  <hongjiu.lu@intel.com>
1543
1544         * decl.c (duplicate_decls): Re-indent.
1545
1546 2009-06-25  Ian Lance Taylor  <iant@google.com>
1547
1548         * call.c (avoid_sign_compare_warnings): New static function.
1549         (build_new_op): Call it.
1550         * typeck.c (cp_build_binary_op): Don't call warn_sign_compare if
1551         TREE_NO_WARNING is set on either operand.
1552
1553 2009-06-25  Ian Lance Taylor  <iant@google.com>
1554
1555         * g++spec.c (SKIPOPT): define.
1556         (lang_specific_driver): Handle -static-libstdc++.  Only add
1557         LIBSTDCXX_STATIC if we add LIBSTDCXX.
1558
1559 2009-06-25  Ian Lance Taylor  <iant@google.com>
1560
1561         * cvt.c (convert_to_void): Only warn about COND_EXPR if neither
1562         the second nor third operand has side effects.
1563
1564 2009-06-25  Ian Lance Taylor  <iant@google.com>
1565
1566         * parser.c (cp_parser_binary_expression): Increment
1567         c_inhibit_evaluation_warnings while parsing the right hand side of
1568         "true || x" or "false && x".
1569         * typeck.c (cp_build_binary_op): Only call warn_for_sign_compare
1570         if c_inhibit_evaluation_warnings is zero.
1571
1572 2009-06-24  Jason Merrill  <jason@redhat.com>
1573
1574         * error.c (dump_decl): Do say "typedef" for the injected class name.
1575
1576         * pt.c (lookup_template_class): Use currently_open_class,
1577         compare template args later.
1578
1579         PR c++/40342
1580         * decl.c (decls_match): Check DECL_TI_TEMPLATE too.
1581         * class.c (resolve_address_of_overloaded_function): Fix typo.
1582
1583 2009-06-18  Aldy Hernandez  <aldyh@redhat.com>
1584
1585         * class.c (get_vtable_decl): Replace finish_decl with cp_finish_decl.
1586         * decl.c (finish_decl): Remove.
1587         (declare_global_var): Replace finish_decl with cp_finish_decl.
1588         (start_method): Same.
1589         * rtti.c (emit_tinfo_decl): Same.
1590         * pt.c (tsubst_expr): Same.
1591         (instantiate_decl): Same.
1592         * decl2.c (grokbitfield): Same.
1593         * name-lookup.c (pushdecl_top_level_1): Same.
1594         * cp-tree.h: Remove finish_decl.
1595
1596 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
1597
1598         * g++-spec.c (LIBSTDCXX_STATIC): Default to NULL.
1599         (lang_specific_driver): Always allocate extra argument.
1600         Add LIBSTDCXX_STATIC to arglist if defined and linking
1601         statically.
1602
1603 2009-06-16  Ian Lance Taylor  <iant@google.com>
1604
1605         * Make-lang.in (cp/class.o): Depend upon gt-cp-class.h.
1606         (cp/semantics.o): Depend upon gt-cp-semantics.h.
1607
1608 2009-06-16  Ian Lance Taylor  <iant@google.com>
1609
1610         * parser.c (cp_unevaluated_operand): Define global variable.
1611         (cp_parser_question_colon_clause): Increment
1612         c_inhibit_evaluation_warnings when evaluating an expression which
1613         will never be executed.
1614         (cp_parser_decltype): Increment cp_unevaluated_operand and
1615         c_inhibit_evaluation_warnings, not skip_evaluation.
1616         (cp_parser_sizeof_operand): Likewise.
1617         (cp_parser_enclosed_template_argument_list): Save
1618         cp_unevaluated_operand and c_inhibit_evaluation_warnings, not
1619         skip_evaluation.
1620         * cp-tree.h (struct saved_scope): Remove skip_evaluation field.
1621         Add unevaluated_operand and inhibit_evaluation_warnings fields.
1622         (cp_unevaluated_operand): Declare.
1623         * name-lookup.c (push_to_top_level): Save cp_unevaluated_operand
1624         and c_inhibit_evaluation_warnings rather than skip_evaluation.
1625         (pop_from_top_level): Restore cp_unevaluated_operand and
1626         c_inhibit_evaluation_warnings rather than skip_evaluation.
1627         * class.c (build_base_path): Check cp_unevaluated_operand rather
1628         than skip_evaluation.
1629         * typeck.c (build_class_member_access_expr): Likewise.
1630         (cp_build_binary_op): Don't warn about bad shift counts if
1631         c_inhibit_evaluation_warnings is non-zero.
1632         * pt.c (coerce_template_parms): Save state of
1633         cp_unevaluated_operand and c_inhibit_evaluation_warnings, not
1634         skip_evaluation.
1635         (tsubst_aggr_type): Likewise.
1636         (tsubst_pack_expansion): Check cp_unevaluated_operand rather than
1637         skip_evaluation.
1638         (tsubst_copy): Likewise.
1639         (tsubst): Set cp_unevaluated_operand and
1640         c_inhibit_evaluation_warnings, not skip_evaluation.
1641         (tsubst_copy_and_build): Likewise.
1642         * call.c (convert_arg_to_ellipsis): Check cp_unevaluated_operand
1643         rather than skip_evaluation.
1644         * decl2.c (mark_used): Likewise.
1645         * semantics.c (finish_non_static_data_member): Likewise.
1646         * cvt.c (cp_convert_and_check): Check
1647         c_inhibit_evaluation_warnings rather than skip_evaluation.
1648         * mangle.c (write_type): Set cp_unevaluated_operand rather than
1649         skip_evaluation.
1650
1651 2009-06-15  Ian Lance Taylor  <iant@google.com>
1652
1653         * parser.c (cp_parser_direct_declarator): Add braces around
1654         variables declared before label.
1655
1656 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
1657
1658         * cp-objcp-common.h (LANG_HOOKS_COMDAT_GROUP): Remove.
1659         * cp-tree.h (cxx_comdat_group): Change signature.
1660         * decl.c (duplicate_decls): Use DECL_COMDAT_GROUP.
1661         (cxx_comdat_group): Change signature.
1662         * decl2.c (comdat_linkage, maybe_make_one_only): Update call to
1663         make_decl_one_only.
1664         (constrain_visibility, get_guard): Use DECL_COMDAT_GROUP.
1665         * method.c (use_thunk): Update call to make_decl_one_only.
1666         * optimize.c (maybe_clone_body): Use DECL_COMDAT_GROUP
1667
1668 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
1669
1670         * typeck.c (cp_build_binary_op): Pass location to overflow_warning.
1671         (build_modify_expr): New arg.
1672         * semantics.c (finish_unary_op_expr): Pass location to
1673         overflow_warning.
1674         (handle_omp_for_class_iterator): Pass location to build_modify_expr.
1675         * typeck.c (cxx_sizeof_or_alignof_type): Pass location to
1676         c_sizeof_or_alignof_type.
1677         (build_array_ref): New argument.
1678         (build_compound_expr): Same.
1679         (build_const_cast): Same.
1680         (build_ptrmemfunc): Pass location to build_c_cast.
1681         * init.c (avoid_placement_new_aliasing): Pass location to
1682         build_stmt.
1683         (build_vec_delete_1): Pass location to cp_build_modify_expr,
1684         build_compound_expr.
1685         * class.c (build_vtbl_ref_1): Pass location to build_array_ref.
1686         * decl.c (poplevel): Pass location to c_build_bind_expr.
1687         (finish_case_label): Pass location to build_case_label.
1688         (finish_constructor_body): Same.
1689         (finish_destructor_body): Pass location to build_stmt.
1690         (cxx_maybe_build_cleanup): Same, but to build_compound_expr.
1691         * call.c (build_new_op): Pass location to build_array_ref.
1692         (build_x_va_arg): Pass location to build_va_arg.
1693         * except.c (expand_end_catch_block): Pass location to
1694         build_stmt.
1695         * cp-tree.h (build_array_ref): New argument.
1696         (build_compound_expr): Same.
1697         (build_c_cast): Same.
1698         * cp-gimplify.c (gimplify_if_stmt): Pass location on down.
1699         (gimplify_switch_stmt): Same.
1700         * typeck2.c (split_nonconstant_init_1): Same.
1701         * pt.c (tsubst_copy): Same.
1702         * semantics.c (add_decl_expr): Same.
1703         (do_poplevel): Same.
1704         (push_cleanup): Same.
1705         (finish_goto_stmt): Same.
1706         (finish_expr_stmt): Same.
1707         (begin_if_stmt): Same.
1708         (begin_while_stmt): Same.
1709         (begin_do_stmt): Same.
1710         (finish_return_stmt): Same.
1711         (begin_for_stmt): Same.
1712         (finish_break_stmt): Same.
1713         (finish_continue_stmt): Same.
1714         (begin_switch_stmt): Same.
1715         (begin_try_block): Same.
1716         (begin_handler): Same.
1717         (finish_asm_stmt): Same.
1718         (finish_label_stmt): Same.
1719         (finish_stmt_expr_expr): Same.
1720         (finalize_nrv_r): Same.
1721         (finish_omp_atomic): Same.
1722         * name-lookup.c (do_using_directive): Same.
1723         * decl2.c (grok_array_decl): Same.
1724         * parser.c (cp_parser_cast_expression): Same.
1725         (cp_parser_selection_statement): Same.
1726         (cp_parser_implicitly_scoped_statement): Same.
1727         (cp_parser_objc_selector_expression): Same.
1728         (cp_parser_objc_synchronized_statement): Same.
1729         (cp_parser_objc_throw_statement): Same.
1730         (cp_parser_omp_critical): Same.
1731         (cp_parser_omp_master): Same.
1732         * typeck.c (build_function_call): Add location argument.
1733         * init.c: Add location argument to all build_decl calls.
1734         * class.c: Same.
1735         * method.c: Same.
1736         * rtti.c: Same.
1737         * tree.c: Same.
1738         * pt.c: Same.
1739         * semantics.c: Same.
1740         * lex.c: Same.
1741         * decl2.c: Same.
1742         * cp-gimplify.c: Same.
1743         * decl.c: Same.
1744         (cp_make_fname_decl): Add location argument.  Pass location ot
1745         build_decl.
1746         (finish_case_label): Same.
1747         * cp-tree.h (finish_case_label): Add location argument.
1748         * parser.c (cp_parser_label_for_labeled_statement): Pass location to
1749         finish_case_label.
1750         
1751 2009-06-09  Jason Merrill  <jason@redhat.com>
1752
1753         PR c++/40381
1754         * decl2.c (mark_used): Return after complaining about deleted fn.
1755
1756 2009-06-08  Jason Merrill  <jason@redhat.com>
1757
1758         * parser.c (cp_parser_type_id_1): 'auto' type is ok with a
1759         late-specified return type.
1760
1761 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
1762
1763         PR c++/40373
1764         * call.c (check_dtor_name): Return false even if
1765         get_type_value (name) is error_mark_node.
1766
1767         PR c++/40370
1768         PR c++/40372
1769         * parser.c (cp_parser_direct_declarator): Don't set TREE_SIDE_EFFECTS
1770         on error_mark_node.  Check for VLAs outside of function context
1771         before check whether to wrap bounds into a NOP_EXPR with
1772         TREE_SIDE_EFFECTS.
1773
1774 2009-06-08  Alexandre Oliva  <aoliva@redhat.com>
1775
1776         * repo.c (get_base_filename): Use aux_base_name rather than
1777         alternate temporary file during second compare debug compilation.
1778         (finish_repo): Skip during -fcompare-debug-second.
1779
1780 2009-06-06  Ian Lance Taylor  <iant@google.com>
1781
1782         * parser.c (cp_parser_label_for_labeled_statement): Support
1783         attribute on labels if immediately followed by semicolon.
1784         * semantics.c (finish_label_stmt): Return new label.
1785         * pt.c (tsubst_expr): Handle attributes for LABEL_EXPR.
1786
1787 2009-06-03  Ian Lance Taylor  <iant@google.com>
1788
1789         * Make-lang.in (cc1plus-checksum.o): Depend upon $(CONFIG_H) and
1790         $(SYSTEM_H).
1791
1792 2009-06-02  Mark Mitchell  <mark@codesourcery.com>
1793
1794         * decl.c (maybe_deduce_size_from_array_init): Use relayout_decl.
1795
1796 2009-06-02  Jason Merrill  <jason@redhat.com>
1797
1798         PR c++/40308
1799         PR c++/40311
1800         * typeck.c (cp_build_modify_expr): Always pass init-lists to the
1801         conversion code.
1802         * call.c (implicit_conversion): Allow init-list conversion to scalar
1803         during direct-initialization, too.  Mark the conversion bad if it
1804         has too many levels of braces.
1805         (convert_like_real): And give a helpful error.
1806
1807         PR c++/40306
1808         PR c++/40307
1809         * decl.c (cp_finish_decl): Handle auto deduction from ().
1810         * typeck.c (build_x_indirect_ref): Handle dereferencing an operand
1811         with dependent type that is known to be a pointer.
1812
1813 2009-06-02  Simon Martin  <simartin@users.sourceforge.net>
1814
1815         PR c++/38089
1816         * pt.c (register_specialization): Properly setup DECL_CONTEXT for
1817         specializations in an invalid namespace.
1818
1819 2009-06-01  Aldy Hernandez  <aldyh@redhat.com>
1820
1821         * error.c (print_instantiation_partial_context): Print column
1822         numbers.
1823
1824 2009-05-29  Ian Lance Taylor  <iant@google.com>
1825
1826         * error.c (cp_printer): Don't use va_arg with enum type.
1827
1828 2009-05-28  Dodji Seketeli  <dodji@redhat.com>
1829
1830         PR c++/39754
1831         * cp-tree.h (canonical_type_variant): Remove this function declaration.
1832         (strip_typedefs): New function declaration.
1833         * tree.c (strip_typedefs): New function definition.
1834         (canonical_type_variant): Remove function definition.
1835         * cvt.c (convert_from_reference): No need to use
1836         canonical_type_variant.
1837         * typeck.c (cp_build_indirect_ref): Likewise.
1838         * error.c (dump_template_bindings): Use strip_typedefs instead of
1839         canonical_type_variant.
1840         * pt.c (convert_template_argument, unify): Likewise.
1841         * mangle.c (canonicalize_for_substitution): Don't use
1842         canonical_type_variant.
1843
1844 2009-05-27  Jason Merrill  <jason@redhat.com>
1845
1846         * call.c (implicit_conversion): Handle conversion from
1847         initializer-list to scalar.
1848         (convert_like_real): Likewise.  Avoid crashing on list
1849         initialization with bad conversions.
1850         (can_convert): Use LOOKUP_EXPLICIT.
1851         (can_convert_arg_bad): Add flags parm.
1852         * cp-tree.h: Adjust.
1853         * typeck.c (convert_for_assignment): Pass flags.
1854
1855 2009-05-27  Ian Lance Taylor  <iant@google.com>
1856
1857         * Make-lang.in (g++$(exeext)): Change $(COMPILER) to $(LINKER).
1858         (cc1plus-dummy$(exeext), cc1plus$(exeext)): Likewise.
1859
1860 2009-05-26  Ian Lance Taylor  <iant@google.com>
1861
1862         * Make-lang.in (g++spec.o): Use $(COMPILER).
1863         (g++$(exeext), cc1plus-dummy$(exeext)): Likewise.
1864         (cc1plus$(exeext)): Likewise.
1865
1866 2009-05-26  Dodji Seketeli  <dodji@redhat.com>
1867
1868         PR c++/40007
1869         * cp-tree.h (MEMBER_TYPES_NEEDING_ACCESS_CHECK): Remove this accessor.
1870         (TI_TYPEDEFS_NEEDING_ACCESS_CHECKING): New accessor.
1871         (get_types_needing_access_check): Declare new entry point.
1872         * pt.c (append_type_to_template_for_access_check_1,
1873         get_types_needing_access_check): New functions.
1874         (perform_typedefs_access_check): Accept FUNCTION_DECLs and
1875         RECORD_TYPEs rather than TEMPLATE_DECLs. Use the new
1876         get_types_needing_access_check, no more
1877         MEMBER_TYPES_NEEDING_ACCESS_CHECK.
1878         (instantiate_class_template): Set input_location to the source
1879         location of the most specialized template definition.
1880         Perform access check using the RECORD_TYPE of the template, not its
1881         associated most generic TEMPLATE_DECL.
1882         (append_type_to_template_for_access_check): Augment function
1883         comments. Use the new get_types_needing_access_check, not
1884         MEMBER_TYPE_NEEDING_ACCESS_CHECK. Use the new
1885         append_type_to_template_for_access_check_1 subroutine.
1886
1887 2009-05-22  Jason Merrill  <jason@redhat.com>
1888
1889         PR c++/38064
1890         * typeck.c (cp_build_binary_op): Allow ENUMERAL_TYPE in
1891         arithmetic comparisons.
1892         (cp_common_type): Handle scoped enums.
1893
1894         * call.c (promoted_arithmetic_type_p): Don't use INTEGRAL_TYPE_P.
1895         (add_builtin_candidate, add_builtin_candidates): Likewise.
1896         (convert_like_real): Likewise.
1897         * class.c (check_bitfield_decl): Likewise.
1898         * decl.c (check_static_variable_definition): Likewise.
1899         (compute_array_index_type): Likewise.
1900         * decl2.c (grokbitfield): Likewise.
1901         * init.c (build_new_1): Likewise.
1902         * pt.c (convert_nontype_argument): Likewise.
1903         (current_instantiation): Likewise.
1904         * tree.c (pod_type_p): Likewise.
1905         * typeck.c (build_static_cast_1): Likewise.
1906         (build_reinterpret_cast_1): Likewise.
1907
1908 2009-05-22  Richard Guenther  <rguenther@suse.de>
1909
1910         PR middle-end/38964
1911         * init.c (avoid_placement_new_aliasing): Remove.
1912         (build_new_1): Do not call it.
1913
1914 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
1915
1916         * decl2.c (decl_needed_p): Consider dllexport'd functions needed.
1917         * semantics.c (expand_or_defer_fn): Similarly.
1918
1919 2009-05-20  Ian Lance Taylor  <iant@google.com>
1920
1921         * parser.c (cp_parser_postfix_expression): Change args to a vec.
1922         Release it when done.
1923         (tree_vector): Define typedef.  Define VEC functions.
1924         (cp_parser_parenthesized_expression_list): Change return type to
1925         vec.  Change all callers.
1926         (cp_parser_new_expression): Change placement and initializer to
1927         vecs.  Release them when done.
1928         (cp_parser_new_placement): Change return type to vec.  Change all
1929         callers.
1930         (cp_parser_new_initializer): Likewise.
1931         * typeck.c (build_function_call_vec): Just call
1932         cp_build_function_call_vec.
1933         (cp_build_function_call): Just build a vec and call
1934         cp_build_function_call_vec.
1935         (cp_build_function_call_vec): New function based on old
1936         cp_build_function_call.
1937         (convert_arguments): Remove nargs and argarray parameters.  Change
1938         values to a vec.  Change caller.
1939         (build_x_compound_expr_from_vec): New function.
1940         (cp_build_modify_expr): Build vec to pass to
1941         build_special_member_call.
1942         * call.c (struct z_candidate): Add first_arg field.  Change args
1943         field to vec.
1944         (convert_class_to_reference): Handle first argument separately.
1945         (add_candidate): Add first_arg parameter.  Change args parameter
1946         to vec.  Change all callers.
1947         (add_function_candidate, add_conv_candidate): Likewise.
1948         (add_template_candidate_real, add_template_candidate): Likewise.
1949         (add_template_conv_candidate): Likewise.
1950         (build_user_type_conversion_1): Handle first argument separately.
1951         (resolve_args): Change return type and parameter type to vecs.
1952         Change all callers.
1953         (perform_overload_resolution): Change args parameter to vec.
1954         Change all callers.
1955         (build_new_function_call, build_operator_new_call): Likewise.
1956         (add_candidates): Likewise.
1957         (build_op_call): New globally visible function, built from and
1958         replacing static function build_object_call.
1959         (build_new_op): Don't handle CALL_EXPR.  Build vec, not tree_list,
1960         of arguments.
1961         (build_op_delete_call): Build vec to pass to
1962         cp_build_function_call_vec.
1963         (build_temp): Build vec to pass to build_special_member_call.
1964         (convert_like_real): Likewise.
1965         (perform_direct_initialization_if_possible): Likewise.
1966         (build_over_call): Handle first_arg field.  Use build_call_array
1967         rather than build_call_list.
1968         (build_special_member_call): Change args parameter to vec.  Change
1969         all callers.
1970         (build_new_method_call): Likewise.
1971         * init.c (expand_default_init): Change parms to vec.
1972         (build_raw_new_expr): Change placement and init to vecs.  Change
1973         all callers.
1974         (build_new_1, build_new): Likewise.
1975         * class.c (resolve_address_of_overloaded_function): Build array to
1976         pass to fn_type_unification.
1977         * pt.c (tsubst_copy_and_build): For NEW_EXPR build vecs to pass to
1978         build_new.  For CALL_EXPR create a vec rather than a tree_list;
1979         expand a pack if necessary.
1980         (fn_type_unification): Change args parameter to const tree *.  Add
1981         nargs parameter.  Change all callers.
1982         (type_unification_real): Likewise.
1983         (unify): Build array to pass to type_unification_real.
1984         (get_bindings): Build array to pass to fn_type_unification.
1985         (any_type_dependent_arguments_p): Change args parameter to a vec.
1986         Change all callers.
1987         (make_args_non_dependent): Renamed from build_non_dependent_args.
1988         Change return type to void.  Change parameter type to vec.  Change
1989         all callers.
1990         (do_auto_deduction): Pass an array to type_unification_real.
1991         * semantics.c (perform_koenig_lookup): Change args to vec.  Change
1992         all callers.
1993         (finish_call_expr): Change args to vec.  Change all callers.  Call
1994         build_op_call instead of passing CALL_EXPR to build_new_op.
1995         (cxx_omp_create_clause_info): Allocate vec to pass to
1996         build_special_member_call.
1997         * decl2.c (build_offset_ref_call_from_tree): Change args parameter
1998         to vec.  Change all callers.
1999         * name-lookup.c (lookup_function_nonclass): Likewise.
2000         (struct arg_lookup): Change args to vec.
2001         (arg_assoc_namespace): Handle args as a vec.
2002         (arg_assoc_args_vec): New static function.
2003         (lookup_arg_dependent): Change args parameter to vec.  Change all
2004         callers.
2005         * method.c (do_build_assign_ref): Allocate vec to pass to
2006         build_special_member_call.
2007         * except.c (build_throw): Likewise.
2008         * typeck2.c (build_functional_cast): Likewise.
2009         * cvt.c (ocp_convert): Likewise.
2010         * tree.c (build_min_non_dep_call_vec): Change last parameter to
2011         vec.  Change all callers.
2012         * cp-tree.h: Update declarations.
2013         * name-lookup.h: Update declarations.
2014
2015 2009-05-20  Sandra Loosemore  <sandra@codesourcery.com>
2016
2017         * typeck.c (default_conversion): Check targetm.promoted_type.
2018         * decl.c (grokdeclarator): Check targetm.invalid_return_type.
2019         (grokparms): Check targetm.invalid_parameter_type.
2020         * cvt.c (ocp_convert): Check targetm.convert_to_type.
2021         (build_expr_type_conversion): Check targetm.promoted_type.
2022
2023 2009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2024
2025         * typeck.c (build_binary_op): Allow % on integal vectors.
2026
2027 2009-05-18  Jason Merrill  <jason@redhat.com>
2028
2029         Implement explicit conversions ops as specified in N2437.
2030         * decl.c (grokdeclarator): Handle explicit conversion ops.
2031         (check_initializer): Pass flags to store_init_value.
2032         * decl2.c (maybe_emit_vtables): Likewise.
2033         * init.c (expand_aggr_init_1): Likewise.
2034         * call.c (convert_class_to_reference): Take flags parm,
2035         check DECL_NONCONVERTING_P.
2036         (build_user_type_conversion_1): Check DECL_NONCONVERTING_P.
2037         (add_builtin_candidates): Simplify getting type of conversion.
2038         (build_object_call): Likewise.  Check DECL_NONCONVERTING_P.
2039         (implicit_conversion): Pass through LOOKUP_ONLYCONVERTING.
2040         (reference_binding): Take flags parm.  Direct-initialize copy parm.
2041         (add_function_candidate): Direct-initialize the copy parm.
2042         (add_conv_candidate): Use LOOKUP_IMPLICIT, not LOOKUP_NORMAL.
2043         (build_builtin_candidate): Add LOOKUP_ONLYCONVERTING.
2044         (conditional_conversion): Likewise.
2045         (convert_like_real): Only complain about DECL_NONCONVERTING_P
2046         constructors.
2047         (perform_implicit_conversion_flags): Add flags parm to
2048         perform_implicit_conversion.  Improve diagnostics.
2049         * cp-tree.h (LOOKUP_IMPLICIT): New macro.
2050         (LOOKUP_COPY_PARM): New bit macro.
2051         * cvt.c (build_expr_type_conversion): Check DECL_NONCONVERTING_P.
2052         * typeck.c (convert_for_assignment): Take flags parm, pass it to
2053         perform_implicit_conversion_flags.
2054         (cp_build_modify_expr): Pass flags to convert_for_assignment.
2055         (convert_for_initialization): Likewise.
2056         * typeck2.c (store_init_value): Take flags parm, pass to
2057         digest_init_flags.
2058         (digest_init_flags): Add flags parm to digest_init.
2059         (digest_init_r): Take flags parm, pass to convert_for_initialization.
2060         (process_init_constructor_array): Pass it.
2061         (process_init_constructor_record): Likewise.
2062         (process_init_constructor_union): Likewise.
2063
2064 2009-05-16  Jason Merrill  <jason@redhat.com>
2065
2066         PR c++/40139
2067         * pt.c (tsubst_qualified_id): Retain the type if we aren't dealing
2068         with a dependent type.  Actually look up the destructor.
2069         * semantics.c (finish_id_expression): Fix logic.
2070         (finish_qualified_id_expr): Don't try to use 'this' if we aren't in
2071         a function.
2072         * typeck.c (build_x_unary_op): Diagnose taking the address of a
2073         constructor or destructor.
2074         * tree.c (get_first_fn): Handle OFFSET_REF.
2075
2076 2009-05-17  Joseph Myers  <joseph@codesourcery.com>
2077
2078         * tree.c (cxx_printable_name_internal): Allow consecutive
2079         translated and untranslated cached copies of the name of the
2080         current function.
2081
2082 2009-05-15  Ian Lance Taylor  <iant@google.com>
2083
2084         * cp-tree.h (enum cp_lvalue_kind_flags): Rename from
2085         cp_lvalue_kind.  Change all uses.
2086         (enum base_access_flags): Rename from enum base_access.  Change
2087         all uses.
2088         * parser.c (enum cp_parser_flags): Remove enum tag.
2089
2090 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2091
2092         PR 16302
2093         * call.c (build_new_op): Update calls to warn_logical_operator.
2094
2095 2009-05-14  Ian Lance Taylor  <iant@google.com>
2096
2097         * class.c (layout_class_type): Change itk to unsigned int.
2098         * decl.c (finish_enum): Change itk to unsigned int.
2099         * parser.c (cp_parser_check_decl_spec): Change ds to int.  Remove
2100         casts.
2101
2102 2009-05-13  David Mandelin <dmandelin@mozilla.com>:
2103
2104         * decl.c (duplicate_decls): Preserve parameter attributes.
2105
2106 2009-05-10  Jan Hubicka  <jh@suse.cz>
2107
2108         * decl2.c (cxx_callgraph_analyze_expr): Use
2109         cgraph_mark_address_taken.
2110
2111 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
2112
2113         * call.c (name_as_c_string): Call type_as_string_translate.
2114         Translate identifiers to locale character set.
2115         * cp-tree.h (lang_decl_name): Update prototype.
2116         (type_as_string_translate, decl_as_string_translate,
2117         cxx_printable_name_translate): Declare.
2118         * cxx-pretty-print.c (M_): Define.
2119         (pp_cxx_unqualified_id, pp_cxx_canonical_template_parameter): Mark
2120         English fragments for conditional translation with M_.
2121         * decl.c (grokdeclarator): Translate identifiers to locale
2122         character set for diagnostics.
2123         * error.c (M_): Define.
2124         (dump_template_bindings, dump_type, dump_aggr_type,
2125         dump_type_prefix, dump_global_iord, dump_simple_decl, dump_decl,
2126         dump_function_decl, dump_template_parms, dump_expr,
2127         dump_binary_op, op_to_string, assop_to_string): Mark English
2128         fragments for conditional translation with M_.
2129         (type_as_string): Disable translation of identifiers.
2130         (type_as_string_translate): New.
2131         (expr_as_string): Disable translation of identifiers.
2132         (decl_as_string): Disable translation of identifiers.
2133         (decl_as_string_translate): New.
2134         (lang_decl_name): Add parameter translate.
2135         (args_to_string): Call type_as_string_translate.
2136         (cp_print_error_function): Call cxx_printable_name_translate.
2137         (print_instantiation_full_context,
2138         print_instantiation_partial_context): Call
2139         decl_as_string_translate.
2140         * parser.c (cp_lexer_get_preprocessor_token): Use %qE for
2141         identifier in diagnostic.
2142         * tree.c (cxx_printable_name): Change to
2143         cxx_printable_name_internal.  Add parameter translate.
2144         (cxx_printable_name, cxx_printable_name_translate): New wrappers
2145         round cxx_printable_name_internal.
2146
2147 2009-05-08  H.J. Lu  <hongjiu.lu@intel.com>
2148
2149         PR c/36892
2150         * call.c (build_call_a): Updated warn_deprecated_use call.
2151         (build_over_call): Likewise.
2152         * decl.c (grokdeclarator): Likewise.
2153         (grokparms): Likewise.
2154         * semantics.c (finish_id_expression): Likewise.
2155         * typeck.c (build_class_member_access_expr): Likewise.
2156         (finish_class_member_access_expr): Likewise.
2157
2158 2009-05-06  Dodji Seketeli  <dodji@redhat.com>
2159
2160         PR c++/17395
2161         * pt.c (tsubst_copy) <case PARM_DECL>: We don't want to tsubst the
2162         whole list of PARM_DECLs, just the current one.
2163
2164 2009-05-05  Shujing Zhao  <pearly.zhao@oracle.com>
2165
2166         * cp-tree.h:
2167         (opname_tab, assignop_tab, update_member_visibility, yyerror, yyhook,
2168         mangle_compound_literal): Remove unused declarations.
2169         (build_vfield_ref, cxx_print_statistics, clone_function_decl,
2170         adjust_clone_args, maybe_push_cleanup_level, pushtag, make_anon_name,
2171         pushdecl_top_level_maybe_friend, pushdecl_top_level_and_finish,
2172         check_for_out_of_scope_variable, print_other_binding_stack,
2173         maybe_push_decl, cxx_mark_addressable, force_target_expr,
2174         build_target_expr_with_type, finish_case_label,
2175         cxx_maybe_build_cleanup, begin_eh_spec_block, finish_eh_spec_block,
2176         check_template_keyword, cxx_omp_predetermined_sharing,
2177         cxx_omp_clause_default_ctor, cxx_omp_clause_copy_ctor,
2178         cxx_omp_clause_assign_op, cxx_omp_clause_dtor, cxx_omp_finish_clause,
2179         cxx_omp_privatize_by_reference): Rearrange the declarations line to
2180         match the comment that indicates the .c file which the functions are
2181         defined.
2182         (cxx_print_xnode, cxx_print_decl, cxx_print_type,
2183         cxx_print_identifier, cxx_print_error_function, pushdecl): Add comment.
2184
2185 2009-05-05  Nathan Sidwell  <nathan@codesourcery.com>
2186
2187         * typeck.c (cp_build_compound_expr): Require RHS to have a known
2188         type.
2189         * class.c (resolve_address_of_overloaded_function): Use
2190         OVL_CURRENT for error message.
2191         (instantiate_type): Forbid COMPOUND_EXPRs and remove code dealing
2192         with them.  Do not copy the node.
2193
2194 2009-05-05  Jakub Jelinek  <jakub@redhat.com>
2195
2196         PR c++/40013
2197         * pt.c (tsubst): If magic NOP_EXPR with side-effects has no type,
2198         set it from its operand's type after tsubst_expr.
2199
2200 2009-05-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2201
2202         PR c++/28152
2203         * parser.c (cp_lexer_get_preprocessor_token):  Do not store the
2204         canonical spelling for keywords.
2205         (cp_parser_attribute_list): Use the canonical spelling for
2206         keywords in attributes.
2207
2208 2009-05-01  Joseph Myers  <joseph@codesourcery.com>
2209
2210         * cxx-pretty-print.c (is_destructor_name, pp_cxx_unqualified_id,
2211         pp_cxx_template_keyword_if_needed, pp_cxx_postfix_expression,
2212         pp_cxx_new_expression, pp_cxx_delete_expression,
2213         pp_cxx_unary_expression, pp_cxx_assignment_operator,
2214         pp_cxx_assignment_expression, pp_cxx_expression,
2215         pp_cxx_function_specifier, pp_cxx_decl_specifier_seq,
2216         pp_cxx_simple_type_specifier, pp_cxx_type_specifier_seq,
2217         pp_cxx_exception_specification, pp_cxx_direct_declarator,
2218         pp_cxx_ctor_initializer, pp_cxx_type_id, pp_cxx_statement,
2219         pp_cxx_namespace_alias_definition, pp_cxx_template_parameter,
2220         pp_cxx_canonical_template_parameter, pp_cxx_template_declaration,
2221         pp_cxx_declaration, pp_cxx_typeid_expression,
2222         pp_cxx_va_arg_expression, pp_cxx_offsetof_expression,
2223         pp_cxx_trait_expression): Mostly use pp_string and
2224         pp_cxx_ws_string in place of pp_identifier and pp_cxx_identifier
2225         for non-identifiers.  Mark English strings for translation.
2226         * cxx-pretty-print.h (pp_cxx_ws_string): Define.
2227         * error.c (dump_template_parameter, dump_template_bindings,
2228         dump_type, dump_aggr_type, dump_type_prefix, dump_simple_decl,
2229         dump_decl, dump_template_decl, dump_function_decl,
2230         dump_parameters, dump_exception_spec, dump_template_parms,
2231         dump_expr, dump_binary_op, dump_unary_op, op_to_string,
2232         assop_to_string, args_to_string, cp_print_error_function,
2233         print_instantiation_full_context,
2234         print_instantiation_partial_context): Mostly use pp_string and
2235         pp_cxx_ws_string in place of pp_identifier and pp_cxx_identifier
2236         for non-identifiers.  Mark English strings for translation.
2237         (dump_global_iord): Mark strings for translation; use longer
2238         strings instead of substituting single words.
2239         (function_category): Return a format string marked for
2240         translation, not a single word or phrase to substitute in a longer
2241         phrase.
2242
2243 2009-04-28  Ben Elliston  <bje@au.ibm.com>
2244
2245         PR c++/35652
2246         Revert:
2247
2248         2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2249
2250         * typeck.c (cp_pointer_sum): Adjust call to pointer_int_sum.
2251
2252 2009-04-27  Ian Lance Taylor  <iant@google.com>
2253
2254         * semantics.c (finish_omp_clauses): Change type of c_kind to enum
2255         omp_clause_code.
2256
2257 2009-04-27  Jakub Jelinek  <jakub@redhat.com>
2258
2259         PR c++/39875
2260         * cvt.c (convert_to_void) <case INDIRECT_REF>: Only warn about
2261         -Wunused-value if implicit.
2262
2263 2009-04-24  Ian Lance Taylor  <iant@google.com>
2264
2265         * call.c (build_temp): Change 0 to enum constant.
2266         * cp-tree.h (cp_lvalue_kind): Typedef to int rather than enum
2267         type.
2268         * cp-gimplify.c (cp_gimplify_expr): Add cast to enum type.
2269         * decl2.c (constrain_visibility): Likewise.
2270         * parser.c (cp_lexer_get_preprocessor_token): Likewise.
2271         (cp_parser_flags): Typedef to int rather than enum type.
2272         (cp_parser_expression_stack_entry): Change prec field to enum
2273         cp_parser_prec.
2274
2275         * typeck.c (build_modify_expr): Add lhs_origtype parameter.
2276         Change all callers.
2277
2278 2009-04-22  Dodji Seketeli  <dodji@redhat.com>
2279
2280         PR c++/39639
2281         * parser.c (cp_parser_template_argument_list): Display an error
2282         when an ellipsis is not preceded by a parameter pack. Also, warn
2283         about variadic templates usage without -std=c++0x.
2284
2285 2009-04-21  Taras Glek <tglek@mozilla.com>
2286
2287         * cp-tree.h: Update GTY annotations to new syntax.
2288         * decl.c: Likewise.
2289         * mangle.c: Likewise.
2290         * name-lookup.c: Likewise.
2291         * name-lookup.h: Likewise.
2292         * parser.c: Likewise.
2293         * pt.c: Likewise.
2294         * rtti.c: Likewise.
2295         * semantics.c: Likewise.
2296         * typeck2.c: Likewise.
2297
2298 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2299
2300         PR c++/14875
2301         * parser.c (cp_parser_error): Pass token->flags to c_parse_error.
2302
2303 2009-04-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2304
2305         PR c++/35711
2306         * typeck.c (check_for_casting_away_constness): We diagnose casting
2307         away any qualifiers not just constness.
2308         (casts_away_constness): Mention that it handles more than just
2309         constness.
2310         
2311 2009-04-21  Joseph Myers  <joseph@codesourcery.com>
2312
2313         * ChangeLog, ChangeLog-1993, ChangeLog-1994, ChangeLog-1995,
2314         ChangeLog-1996, ChangeLog-1997, ChangeLog-1998, ChangeLog-1999,
2315         ChangeLog-2000, ChangeLog-2001, ChangeLog-2002, ChangeLog-2003,
2316         ChangeLog-2004, ChangeLog-2005, ChangeLog-2006, ChangeLog-2007,
2317         ChangeLog-2008, ChangeLog.ptr, ChangeLog.tree-ssa, NEWS,
2318         cfns.gperf: Add copyright and license notices.
2319         * cfns.h: Regenerate.
2320         * ChangeLog, ChangeLog-2004: Correct dates.
2321
2322 2009-04-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2323
2324         PR 16202
2325         * tree.c (lvalue_p_1): Use const_tree.
2326         Use CONST_CAST_TREE to avoid warning.
2327         (lvalue_p): Returns bool, receives const_tree.
2328
2329 2009-04-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2330
2331         PR c++/13358
2332         * parser.c (cp_parser_check_decl_spec): Drop redundant flags.
2333         * error.c (pedwarn_cxx98): New.
2334         * cp-tree.h (pedwarn_cxx98): Declare.
2335
2336 2009-04-20  Le-Chun Wu  <lcwu@google.com>
2337
2338         PR c++/39803
2339         * init.c (build_vec_init): Set TREE_NO_WARNING on the
2340         compiler-generated INDIRECT_REF expression.
2341
2342 2009-04-20  Ian Lance Taylor  <iant@google.com>
2343
2344         * typeck.c (build_function_call_vec): New function.
2345         (cp_build_function_call): Only pass first parameter to
2346         objc_rewrite_function_call.
2347         (build_modify_expr): Add rhs_origtype parameter.  Change all
2348         callers.
2349         * decl.c (finish_decl): Add origtype parameter.  Change all
2350         callers.
2351         * semantics.c (finish_call_expr): Pass VEC to
2352         resolve_overloaded_builtin.
2353
2354 2009-04-20  Ian Lance Taylor  <iant@google.com>
2355
2356         * cp-tree.h (base_access): Change typedef to int.
2357         * parser.c (cp_parser_omp_flush): Change 0 to OMP_CLAUSE_ERROR.
2358         (cp_parser_omp_threadprivate): Likewise.
2359         * pt.c (unify_pack_expansion): Add casts to enum type.
2360
2361 2009-04-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2362
2363         PR c/32061
2364         PR c++/36954
2365         * call.c (build_new_op): Save the original codes of operands
2366         before folding.
2367
2368 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
2369
2370         * cp-tree.h: Remove the prototype for insert_block.
2371         * decl.c (insert_block): Remove.
2372
2373 2009-04-16  Ian Lance Taylor  <iant@google.com>
2374
2375         * cp-tree.h (enum tsubst_flags): Rename from enum tsubst_flags_t.
2376         (tsubst_flags_t): Change typedef from enum type to int.
2377
2378 2009-04-16  Paolo Bonzini  <bonzini@gnu.org>
2379
2380         * decl.c (check_initializer): Use TYPE_VECTOR_OPAQUE
2381         instead of targetm.vector_opaque_p.
2382
2383 2009-04-15  Le-Chun Wu  <lcwu@google.com>
2384
2385         PR c++/39551
2386         * call.c (build_over_call): Set TREE_NO_WARNING on the
2387         compiler-generated INDIRECT_REF expression.
2388         * cvt.c (convert_to_void): Emit warning when stripping off
2389         INDIRECT_REF.
2390
2391 2009-04-14  Diego Novillo  <dnovillo@google.com>
2392
2393         * parser.c (cp_parser_type_specifier_seq): Move call to
2394         invoke_plugin_callbacks ...
2395         (cp_parser_type_specifier_seq): ... here.
2396
2397 2009-04-14  Le-Chun Wu  <lcwu@google.com>
2398
2399         * Make-lang.in: Modify dependencies of files including plugin.h.
2400         * decl.c (finish_function): Call invoke_plugin_callbacks.
2401         * parser.c (cp_parser_type_specifier): Call invoke_plugin_callbacks.
2402
2403 2009-04-14  Jason Merrill  <jason@redhat.com>
2404
2405         PR c++/39763
2406         * name-lookup.c (pushdecl_maybe_friend): Avoid all warnings
2407         about shadowing by tentative parms.
2408
2409 2009-04-13  Jason Merrill  <jason@redhat.com>
2410
2411         PR c++/39480
2412         * call.c (build_over_call): Don't call memcpy if the target is
2413         the same as the source.
2414
2415 2009-04-13  Jason Merrill  <jason@redhat.com>
2416
2417         PR c++/39750
2418         * pt.c (uses_template_parms): Handle CONSTRUCTOR.
2419
2420 2009-04-12  Jason Merrill  <jason@redhat.com>
2421
2422         PR c++/39742
2423         * call.c (joust): Don't crash on variadic fn.
2424
2425 2009-04-10  Jason Merrill  <jason@redhat.com>
2426
2427         PR c++/28301
2428         * parser.c (cp_parser_skip_to_end_of_block_or_statement): Return
2429         if we see a close brace without an open brace.
2430
2431 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
2432
2433         * parser.c (cp_parser_class_specifier): Remove the unused
2434         has_trailing_semicolon.
2435
2436 2009-04-10  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2437
2438         PR  c++/20118
2439         * parser.c (cp_parser_check_template_parameters): Take a
2440         cp_declarator parameter.
2441         (cp_parser_elaborated_type_specifier): Update to
2442         cp_parser_check_template_parameters.
2443         (cp_parser_class_head): Likewise.
2444         (cp_parser_check_declarator_template_parameters): Likewise.
2445         (cp_parser_check_template_parameters): Handle first the non-error
2446         conditions. Give more accurate diagnostics if a declarator is
2447         given. 
2448
2449 2009-04-08  Jason Merrill  <jason@redhat.com>
2450
2451         PR c++/25185
2452         * error.c (dump_aggr_type): Chase template typedefs if
2453         -fno-pretty-templates.
2454
2455 2009-04-08  Dodji Seketeli  <dodji@redhat.com>
2456
2457         PR c++/39637
2458         * parser.c (cp_parser_enumerator_definition): Make sure the
2459         initializer of the enumerator doesn't contain any bare parameter pack.
2460
2461 2009-04-07  Jason Merrill  <jason@redhat.com>
2462
2463         PR c++/34691
2464         * name-lookup.c (merge_functions): Keep multiple extern "C" functions.
2465         * call.c (joust): Complain about mismatched default arguments
2466         in extern "C" functions.
2467         * class.c (resolve_address_of_overloaded_function): Handle multiple
2468         extern "C" functions.
2469         * pt.c (resolve_overloaded_unification): Likewise.
2470
2471 2009-04-07  Jason Merrill  <jason@redhat.com>
2472
2473         PR c++/25185
2474         * error.c (dump_function_decl): Don't pretty-print templates
2475         if -fno-pretty-templates.
2476         (count_non_default_template_args): Print all args if
2477         -fno-pretty-templates.
2478
2479 2009-04-06  Jason Merrill  <jason@redhat.com>
2480
2481         PR c++/35146
2482         * pt.c (fn_type_unification): For DEDUCE_EXACT check that
2483         the deduced template arguments give us the parameter types
2484         we're looking for.
2485
2486 2009-04-05  Giovanni Bajo <giovannibajo@libero.it>
2487             Jason Merrill  <jason@redhat.com>
2488
2489         PR c++/14912
2490         * error.c (count_non_default_template_args): New fn.
2491         (dump_template_parms): Call it.
2492         (dump_template_argument_list): Call it.  Add parms parm.
2493         (dump_template_argument): Adjust call to dump_template_argument_list.
2494         (dump_type, dump_decl): Likewise.
2495         (dump_template_bindings): Refactor logic.
2496
2497 2009-04-03  Jason Merrill  <jason@redhat.com>
2498
2499         PR c++/25185
2500         * error.c (dump_template_bindings): Look through typedefs in
2501         typename results.
2502         (dump_type) [TYPENAME_TYPE]: Print the typedef name if any.
2503         (find_typenames_r): Also collect typedefs.
2504         * pt.c (unify): Strip typedefs.
2505
2506         PR c++/39608
2507         * semantics.c (finish_id_expression): Don't assume a dependent
2508         member of the current instantiation isn't a valid integral
2509         constant expression.  Check dependent_scope_p.
2510         * pt.c (dependent_scope_p): Check TYPE_P.
2511         (tsubst_copy): If args is null, just return.
2512
2513 2009-04-02  Jason Merrill  <jason@redhat.com>
2514
2515         PR c++/25185
2516         * error.c (find_typenames, find_typenames_r): New fns.
2517         (dump_function_decl): Call find_typenames.
2518         (dump_template_bindings): Print typenames as well.
2519         * pt.c (tsubst): Non-static.
2520         * cp-tree.h: Declare it.
2521
2522 2009-04-02  Dodji Seketeli  <dodji@redhat.com>
2523
2524         PR c++/26693
2525         * decl2.c (grokfield): when a typedef appears in a
2526         class, create the typedef variant type node for it.
2527         (save_template_attributes): Creating typedef variant type node
2528          here is now useless.
2529         * decl.c (grokdeclarator): If the typedef'ed struct/class was
2530         anonymous, set the proper type name to all its type variants.
2531         (xref_basetypes) : Fixup the variant types after setting
2532         TYPE_BINFO on REF.
2533         * name-lookup.c (pushdecl_maybe_friend): Reuse the
2534         set_underlying_type function to install typedef variant types.
2535         * cp-tree.h (MEMBER_TYPES_NEEDING_ACCESS_CHECK): New template accessor
2536         macro.
2537         (append_type_to_template_for_access_check): New entry points.
2538         * semantics.c (check_accessibility_of_qualified_id):
2539         When a typedef that is a member of a class appears in a template,
2540         add it to the template. It will be ...
2541         * class.c (finish_struct_bits): Split type variant fixup into ...
2542         (fixup_type_variants): A new entry point.
2543         * pt.c (instantiate_class_template, instantiate_template ): ... access
2544         checked at template instantiation time.
2545         (resolve_type_name_type): The type name should be the name of the
2546         main type variant.
2547         (retrieve_specialization): Specializations of template typedefs aren't
2548         to looked up in DECL_TEMPLATE_INSTANTIATIONS (tmpl).
2549         (append_type_to_template_for_access_check): New entry point.
2550         (tsubst_decl): For typedefs, build the variant type from the correct
2551         original type.
2552         (get_class_bindings): Fix function comment.
2553         (perform_typedefs_access_check): New entry point.
2554
2555 2009-03-31  Jason Merrill  <jason@redhat.com>
2556
2557         PR c++/34691
2558         * name-lookup.c (pushdecl_maybe_friend): Diagnose mismatched
2559         extern "C" declarations.
2560
2561         C++ DR 613
2562         * semantics.c (finish_non_static_data_member): Allow such references
2563         without an associated object in sizeof/decltype/alignof.
2564
2565         * ptree.c (cxx_print_decl): Pretty-print full name of
2566         function/template.
2567         (cxx_print_type): Pretty-print full name of class.
2568
2569         * decl.c (grokdeclarator): Reject pointer to qualified function
2570         type.
2571
2572         PR c++/37806, core issue 547
2573         * typeck.c (cp_apply_type_quals_to_decl): Don't apply any quals
2574         to a typedef.
2575         * tree.c (cp_build_qualified_type_real): Don't apply restrict to a 
2576         function type.
2577         * decl.h (enum decl_context): Add TEMPLATE_TYPE_ARG.
2578         * decl.c (groktypename): Add is_template_arg parameter.
2579         (grokdeclarator): Allow function cv-quals on a template type arg.
2580         * parser.c (cp_parser_new_type_id, cp_parser_type_id): Add
2581         is_template_arg argument in calls to groktypename.
2582         * cp-tree.h: Adjust prototype.
2583         * error.c (dump_type_prefix, dump_type_suffix): Fix plain 
2584         FUNCTION_TYPE printing.
2585         
2586         * mangle.c (write_expression): Mangle dependent name as
2587         source-name.
2588
2589         PR c++/38030, 38850, 39070
2590         * pt.c (type_dependent_expression_p_push): New fn.
2591         (tsubst_copy_and_build) [CALL_EXPR]: Only do arg-dep lookup when the
2592         substitution makes the call non-dependent.  Preserve koenig_p.
2593         * parser.c (cp_parser_postfix_expression): Only do arg-dep lookup
2594         for non-dependent calls.
2595         * semantics.c (finish_call_expr): Revert earlier changes.
2596         * cp-tree.h: Revert change to finish_call_expr prototype.
2597
2598 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
2599
2600         PR preprocessor/34695
2601         * cp-tree.h (cp_cpp_error): Remove.
2602         * error.c (cp_cpp_error): Remove.
2603         * parser.c (cp_lexer_new_main): Set done_lexing instead of
2604         client_diagnostic and error callback.
2605
2606 2009-03-28  Paolo Bonzini  <bonzini@gnu.org>
2607
2608         * cp/cp-objcp-common.h (LANG_HOOKS_STATICP): Remove.
2609         * cp/cp-objcp-common.c (cxx_staticp): Remove.
2610         * cp/cp-tree.h (cxx_staticp): Remove.
2611
2612 2009-03-28  Jakub Jelinek  <jakub@redhat.com>
2613
2614         PR c++/39554
2615         * parser.c (cp_parser_postfix_expression): Don't call
2616         warning_if_disallowed_function_p.
2617
2618 2009-03-27  Jan Hubicka  <jh@suse.cz>
2619
2620         * except.c (choose_personality_routine): Set terminate_node to abort
2621         for java exceptions.
2622
2623 2009-03-27  Dodji Seketeli  <dodji@redhat.com>
2624             Jakub Jelinek  <jakub@redhat.com>
2625
2626         PR debug/37959
2627         * cp-objcp-common.h (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Define.
2628         (cp_function_decl_explicit_p): New prototype.
2629         * cp-objcp-common.c (cp_function_decl_explicit_p): New function.
2630
2631 2009-03-27  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2632
2633         PR c++/38638
2634         * parser.c (cp_parser_elaborated_type_specifier): If we have a
2635         typename tag and don't have either a TYPE_DECL or a
2636         TEMPLATE_ID_EXPR, set the type to NULL.
2637
2638 2009-03-27  Simon Martin  <simartin@users.sourceforge.net>
2639
2640         PR c++/37647
2641         * decl.c (grokdeclarator): Reject [con|de]stuctors in a non-class
2642         scope.
2643
2644 2009-03-27  Simon Martin  <simartin@users.sourceforge.net>
2645
2646         PR c++/29727
2647         * decl.c (check_array_designated_initializer): Handle error_mark_node.
2648
2649 2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2650
2651         PR c++/35652
2652         * typeck.c (cp_pointer_sum): Adjust call to pointer_int_sum.
2653
2654 2009-03-26  Andrew Haley  <aph@redhat.com>
2655
2656         PR C++/39380
2657         * decl2.c (possibly_inlined_p): If java exceptions are in use
2658         don't inline a decl unless it is explicitly marked inline.
2659         * lex.c: (pragma_java_exceptions): New variable.
2660         (handle_pragma_java_exceptions): Set pragma_java_exceptions.
2661         * cp-tree.h (pragma_java_exceptions): Declare new variable.
2662
2663 2009-03-24  Jason Merrill  <jason@redhat.com>
2664
2665         PR c++/28274
2666         * name-lookup.c (pushdecl_maybe_friend): Check default args later.
2667
2668 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
2669
2670         PR c/39495
2671         * semantics.c (handle_omp_for_class_iterator): Swap cond operands and
2672         code if iter is the second operand.
2673         * parser.c (cp_parser_binary_expression): Add no_toplevel_fold_p
2674         argument.  If it is set, don't build the toplevel expression with
2675         build_x_binary_op, but build2.
2676         (cp_parser_assignment_expression,  cp_parser_omp_for_incr): Adjust
2677         callers.
2678         (cp_parser_omp_for_cond): Don't assume the first operand of the
2679         comparison must be decl.
2680
2681 2009-03-23  Jason Merrill  <jason@redhat.com>
2682
2683         PR c++/37729
2684         * pt.c (make_fnparm_pack): Split out from...
2685         (instantiate_decl): ...here.
2686         (tsubst_pack_expansion): Handle being called in a late-specified
2687         return type.
2688
2689         PR c++/39526
2690         * name-lookup.c (pushdecl_maybe_friend): Don't warn about shadowing
2691         a parm with a parm.
2692
2693 2009-03-20  Jason Merrill  <jason@redhat.com>
2694
2695         PR c++/28879
2696         * parser.c (cp_parser_direct_declarator): In a template, wrap 
2697         non-constant expression in NOP_EXPR with TREE_SIDE_EFFECTS set.
2698         * pt.c (tsubst): Preserve it in a partial instantiation.
2699         (dependent_type_p_r): Don't check value_dependent_expression_p.
2700         * decl.c (compute_array_index_type): Don't check
2701         value_dependent_expression_p if TREE_SIDE_EFFECTS.
2702
2703         C++ core issue 703
2704         * typeck2.c (check_narrowing): Don't complain about loss of 
2705         precision when converting a floating-point constant.
2706
2707 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
2708
2709         PR c/39495
2710         * parser.c (cp_parser_omp_for_cond): Don't check lhs if decl is NULL.
2711         (cp_parser_omp_for_loop): Always use cp_parser_omp_for_cond.
2712
2713 2009-03-18  Jakub Jelinek  <jakub@redhat.com>
2714
2715         * parser.c (struct cp_token): Reorder fields for 64-bit hosts.
2716         (eof_token): Adjust.
2717
2718 2009-03-18  H.J. Lu  <hongjiu.lu@intel.com>
2719
2720         PR c++/39425
2721         * parser.c (cp_parser_explicit_specialization): Don't skip the
2722         rest of the specialization when begin_specialization returns
2723         false.
2724
2725 2009-03-17  Jason Merrill  <jason@redhat.com>
2726
2727         * decl.c (grokfndecl): Set DECL_CONTEXT on parms.
2728         (duplicate_decls): Adjust DECL_CONTEXT of newdecl's parms.
2729         * pt.c (check_explicit_specialization): Likewise.
2730         (tsubst_copy) [PARM_DECL]: Return a dummy parm if we don't have a
2731         local specialization.
2732         * tree.c (cp_tree_equal) [PARM_DECL]: Check type and index, not name.
2733         * decl2.c (parm_index): New fn.
2734         * semantics.c (finish_decltype_type): Don't use describable_type.
2735         * mangle.c (write_expression): Likewise.  Mangle ALIGNOF_EXPR.
2736         Give a sorry for unsupported codes rather than crash.  Mangle
2737         conversions with other than 1 operand.  New mangling for PARM_DECL.
2738         * operators.def (ALIGNOF_EXPR): Mangle as "az".
2739
2740 2009-03-17  Jing Yu  <jingyu@google.com>
2741
2742         PR middle-end/39378
2743         * method.c (use_thunk): Change is_thunk from crtl to cfun.
2744
2745 2009-03-17  Paolo Carlini  <paolo.carlini@oracle.com>
2746
2747         PR c++/39475
2748         * semantics.c (check_trait_type): New.
2749         (finish_trait_expr): Use it.
2750
2751 2009-03-17  Jakub Jelinek  <jakub@redhat.com>
2752
2753         * name-lookup.c (cp_emit_debug_info_for_using): Emit USING_STMTs
2754         instead of calling imported_module_or_decl debug hook if
2755         building_stmt_tree ().
2756         * cp-gimplify.c (cp_gimplify_expr): Don't assert the first operand
2757         is a NAMESPACE_DECL.
2758
2759         PR debug/37890
2760         * name-lookup.c (do_namespace_alias): Don't call global_decl debug
2761         hook at function scope.
2762
2763         PR debug/39471
2764         * cp-gimplify.c (cp_gimplify_expr): Don't set DECL_NAME
2765         on IMPORTED_DECL.
2766
2767 2009-03-09  Jakub Jelinek  <jakub@redhat.com>
2768
2769         PR c++/39371
2770         * semantics.c (finish_switch_cond): Don't call get_unwidened.
2771         * decl.c (finish_case_label): Pass SWITCH_STMT_TYPE as 3rd argument
2772         instead of TREE_TYPE (cond).
2773
2774 2009-03-08  H.J. Lu  <hongjiu.lu@intel.com>
2775
2776         PR c++/39060
2777         * parser.c (cp_parser_late_parsing_default_args): Continue
2778         the loop when cp_parser_assignment_expression returns
2779         error_mark_node.
2780
2781 2009-03-07  Jason Merrill  <jason@redhat.com>
2782
2783         PR c++/39367
2784         * init.c (build_new_1): Don't use a VLA type.
2785         (build_vec_init): Handle getting a pointer for BASE.
2786
2787 2009-03-06  H.J. Lu  <hongjiu.lu@intel.com>
2788
2789         PR c++/37520
2790         * cp-tree.h: Check NO_DOT_IN_LABEL before NO_DOLLAR_IN_LABEL
2791         when mangling symbols.
2792
2793 2009-03-06  Paolo Carlini  <paolo.carlini@oracle.com>
2794
2795         PR c++/33492
2796         * error.c (dump_expr): Don't try to print THROW_EXPRs in full.
2797
2798 2009-03-06  Alexandre Oliva  <aoliva@redhat.com>
2799
2800         * decl.c (record_builtin_java_type): Use canonicalized integer
2801         types.
2802
2803 2009-03-04  Jason Merrill  <jason@redhat.com>
2804
2805         PR c++/38908
2806         * class.c (is_really_empty_class): New fn.
2807         * cp-tree.h: Declare it.
2808         * cp-objcp-common.c (cp_expr_size): Use it.
2809
2810         PR c++/13549
2811         * semantics.c (perform_koenig_lookup): Handle TEMPLATE_ID_EXPR.
2812         * parser.c (cp_parser_postfix_expression): Call it for 
2813         TEMPLATE_ID_EXPR.
2814         * tree.c (is_overloaded_fn): Look through TEMPLATE_ID_EXPR.
2815         (get_first_fn): Likewise.
2816
2817         PR c++/9634
2818         PR c++/29469
2819         PR c++/29607
2820         Implement DR 224.
2821         * decl.c (make_typename_type): Do look inside currently open classes.
2822         * parser.c (cp_parser_lookup_name): Likewise.
2823         (cp_parser_template_name): Likewise.
2824         * pt.c (dependent_scope_p): New function.
2825         * cp-tree.h: Declare it.
2826         * class.c (currently_open_class): Return fast if T isn't a class.
2827
2828 2009-02-26  H.J. Lu  <hongjiu.lu@intel.com>
2829
2830         PR c++/37789
2831         * parser.c (cp_parser_mem_initializer): Return error_mark_node
2832         if cp_parser_mem_initializer_id returns error_mark_node.
2833
2834 2009-02-24  Richard Guenther  <rguenther@suse.de>
2835
2836         PR c++/39242
2837         * pt.c (instantiate_decl): Do not instantiate extern, non-inline
2838         declared functions.
2839
2840 2009-02-23  H.J. Lu  <hongjiu.lu@intel.com>
2841
2842         PR c++/36411
2843         * pt.c (coerce_template_template_parms): Return 0 if parameter
2844         is error_mark_node.
2845
2846 2009-02-23  Jason Merrill  <jason@redhat.com>
2847
2848         * pt.c (unify): Call maybe_adjust_types_for_deduction when
2849         deducing from an initializer list.
2850
2851 2009-02-20  Jason Merrill  <jason@redhat.com>
2852
2853         PR c++/39225
2854         * decl.c (grokdeclarator): Handle ~identifier.
2855
2856 2009-02-19  Jakub Jelinek  <jakub@redhat.com>
2857
2858         PR target/39175
2859         * decl2.c (determine_visibility): If visibility changed and
2860         DECL_RTL has been already set, call make_decl_rtl to update symbol
2861         flags.
2862
2863 2009-02-19  H.J. Lu  <hongjiu.lu@intel.com>
2864
2865         PR c++/39188
2866         * cp-tree.h (maybe_commonize_var): New.
2867
2868         * decl.c (maybe_commonize_var): Make it extern.
2869
2870         * decl2.c (finish_anon_union): Call maybe_commonize_var.
2871
2872 2009-02-18  H.J. Lu  <hongjiu.lu@intel.com>
2873
2874         PR c++/39219
2875         * parser.c (cp_parser_enum_specifier): Apply all attributes.
2876
2877 2009-02-18  Jason Merrill  <jason@redhat.com>
2878
2879         * cfns.h: Tweak pathname for cfns.gperf.
2880
2881 2009-02-13  Jason Merrill  <jason@redhat.com>
2882
2883         PR c++/39070
2884         * semantics.c (finish_call_expr): Change koenig_p parm to int.
2885         If -1, don't set KOENIG_LOOKUP_P but do keep hidden candidates.
2886         * cp-tree.h: Adjust prototype.
2887         * pt.c (tsubst_copy_and_build) [CALL_EXPR]: Pass -1.
2888
2889 2009-02-12  Jason Merrill  <jason@redhat.com>
2890
2891         PR c++/38950
2892         * pt.c (unify)[TEMPLATE_PARM_INDEX]: Convert to the tsubsted type.
2893
2894 2009-02-11  Jason Merrill  <jason@redhat.com>
2895
2896         PR c++/39153
2897         * decl2.c (cp_write_global_declarations): 
2898         Check DECL_DEFAULTED_FN, not DECL_ARTIFICIAL.
2899
2900         PR c++/30111
2901         * init.c (build_value_init_noctor): Split out from...
2902         (build_value_init): ...here.
2903         (expand_aggr_init_1): Handle value-initialization.
2904         * cp-tree.h: Add declaration.
2905         * class.c (type_has_user_provided_constructor): 
2906         Handle non-class arguments.
2907
2908 2009-02-10  Jason Merrill  <jason@redhat.com>
2909
2910         PR c++/38649
2911         * class.c (defaultable_fn_p): Handle ... properly.
2912
2913         PR c++/36744
2914         * tree.c (lvalue_p_1): Condition rvalue ref handling on
2915         treat_class_rvalues_as_lvalues, too.
2916
2917 2009-02-10  Paolo Carlini  <paolo.carlini@oracle.com>
2918
2919         PR c++/34397
2920         * typeck.c (build_x_array_ref): New.
2921         * cp-tree.h: Declare it.
2922         * pt.c (tsubst_copy_and_build): Use it for case ARRAY_REF.
2923
2924 2009-02-09  Jason Merrill  <jason@redhat.com>
2925
2926         PR c++/39109
2927         * semantics.c (simplify_aggr_init_expr): Do zero-initialization here.
2928         * init.c (build_value_init): Not here. Don't build a TARGET_EXPR.
2929         * tree.c (get_target_expr): Handle AGGR_INIT_EXPR.
2930         * cp-gimplify.c (cp_gimplify_init_expr): Remove special handling
2931         for build_value_init TARGET_EXPR.
2932         * cp-tree.h (AGGR_INIT_ZERO_FIRST): New macro.
2933
2934 2009-02-06  Paolo Carlini  <paolo.carlini@oracle.com>
2935
2936         PR c++/35147
2937         PR c++/37737
2938         * cp-tree.h (TMPL_ARGS_HAVE_MULTIPLE_LEVELS): Check TREE_VEC_LENGTH.
2939
2940 2009-02-04  Jakub Jelinek  <jakub@redhat.com>
2941
2942         PR c++/39095
2943         * operators.def: Use COMPONENT_REF code for ->/pt operator again,
2944         remove ./dt operator.
2945         * mangle.c (write_expression): Handle COMPONENT_REF after handling
2946         ADDR_EXPR, for COMPONENT_REF without ARROW_EXPR inside of it
2947         write_string ("dt") instead of using operators.def.
2948
2949 2009-02-03  Jason Merrill  <jason@redhat.com>
2950
2951         * typeck.c (cp_build_unary_op): Only complain about taking address
2952         of main if pedantic.
2953
2954 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
2955
2956         PR inline-asm/39059
2957         * parser.c (cp_parser_primary_expression): Reject FIXED_CSTs.
2958
2959         PR c++/39056
2960         * typeck2.c (digest_init_r): Don't call process_init_constructor
2961         for COMPLEX_TYPE.
2962
2963 2009-02-03  Paolo Bonzini  <bonzini@gnu.org>
2964
2965         PR c++/36897
2966         * pt.c (convert_nontype_argument_function): Expect expr to be an
2967         ADDR_EXPR.
2968
2969         PR c++/37314
2970         * typeck.c (merge_types): Call resolve_typename_type if only
2971         one type is a typename.
2972
2973 2009-02-02  Jason Merrill  <jason@redhat.com>
2974
2975         PR c++/39054
2976         * parser.c (cp_parser_unqualified_id): Don't wrap error_mark_node 
2977         in BIT_NOT_EXPR.
2978
2979 2009-02-01  Paolo Carlini  <paolo.carlini@oracle.com>
2980
2981         PR c++/39053
2982         * parser.c (cp_parser_pure_specifier): If there are no tokens left
2983         do not call cp_lexer_consume_token.
2984
2985 2009-01-30  Jakub Jelinek  <jakub@redhat.com>
2986
2987         PR c++/39028
2988         * parser.c (cp_parser_already_scoped_statement): Handle __label__
2989         declarations.
2990
2991 2009-01-30  Paolo Carlini  <paolo.carlini@oracle.com>
2992
2993         PR c++/33465
2994         * error.c (dump_expr): Handle FIX_TRUNC_EXPR and FLOAT_EXPR.
2995
2996 2009-01-30  Paolo Carlini  <paolo.carlini@oracle.com>
2997
2998         PR c++/38655
2999         * error.c (dump_type_prefix, dump_type_suffix): Handle FIXED_POINT_TYPE.
3000
3001 2009-01-29  Paolo Carlini  <paolo.carlini@oracle.com>
3002
3003         * typeck.c (invalid_nonstatic_memfn_p): Use
3004         DECL_NONSTATIC_MEMBER_FUNCTION_P.
3005
3006 2009-01-27  Paolo Carlini  <paolo.carlini@oracle.com>
3007
3008         PR c++/37554
3009         * call.c (build_over_call): If convert_for_arg_passing returns
3010         error_mark_node unconditionally return it.
3011
3012 2009-01-22  Adam Nemet  <anemet@caviumnetworks.com>
3013
3014         * class.c (check_field_decls): Also inherit packed for bitfields
3015         regardless of their type.
3016
3017 2009-01-22  Dodji Seketeli  <dodji@redhat.com>
3018
3019         PR c++/38930
3020         * decl2.c (grokfield): Reverting changes of PR c++/26693
3021         (save_template_attributes): Likewise.
3022         * decl.c (grokdeclarator): Likewise.
3023         * name-lookup.c (pushdecl_maybe_friend): Likewise.
3024         * cp-tree.h (MEMBER_TYPES_NEEDING_ACCESS_CHECK): Likewise.
3025         (append_type_to_template_for_access_check): Likewise.
3026         * semantics.c (check_accessibility_of_qualified_id): Likewise.
3027         * pt.c (instantiate_class_template, instantiate_template ): Likewise.
3028         (tsubst): Likewise.
3029         (resolve_type_name_type): Likewise.
3030         (append_type_to_template_for_access_check): Likewise.
3031
3032 2009-01-21  Dodji Seketeli  <dodji@redhat.com>
3033
3034         PR c++/26693
3035         * decl2.c (grokfield): when a typedef appears in a
3036         class, create the typedef variant type node for it.
3037         (save_template_attributes): Creating typedef variant type node
3038          here is now useless.
3039         * decl.c (grokdeclarator): If the typedef'ed struct/class was
3040         anonymous, set the proper type name to all its type variants.
3041         * name-lookup.c (pushdecl_maybe_friend): Reuse the
3042         set_underlying_type function to install typedef variant types.
3043         * cp-tree.h (MEMBER_TYPES_NEEDING_ACCESS_CHECK): New template accessor
3044         macro.
3045         (append_type_to_template_for_access_check): New entry points.
3046         * semantics.c (check_accessibility_of_qualified_id):
3047         When a typedef that is a member of a class appears in a template,
3048         add it to the template. It will be ...
3049         * pt.c (instantiate_class_template, instantiate_template ): ... access
3050         checked at template instantiation time.
3051         (tsubst): Handle the case of being called with NULL args.
3052         (resolve_type_name_type): The type name should be the name of the
3053         main type variant.
3054         (append_type_to_template_for_access_check): New entry point.
3055
3056 2009-01-19  Jason Merrill  <jason@redhat.com>
3057
3058         PR c++/23287
3059         * parser.c (cp_parser_unqualified_id): In a template,
3060         accept ~identifier.
3061         * typeck.c (lookup_destructor): Handle IDENTIFIER_NODE.
3062
3063 2009-01-16  Jason Merrill  <jason@redhat.com>
3064
3065         PR c++/38877
3066         * tree.c (lvalue_p_1): Allow non-fields in COMPONENT_REF.
3067         * init.c (build_new): Don't call describable_type unless we
3068         have an auto.
3069
3070         PR c++/29470
3071         * pt.c (tsubst_decl) [USING_DECL]: Propagate access flags.
3072
3073         PR c++/38579
3074         * search.c (protected_accessible_p): N doesn't vary.
3075
3076 2009-01-15  Jason Merrill  <jason@redhat.com>
3077
3078         PR c++/38850
3079         * pt.c (tsubst_copy_and_build): Tell finish_call_expr to
3080         accept hidden friends.
3081
3082 2009-01-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3083
3084         PR C++/29388
3085         * decl.c (grokdeclarator): Check for a non namespace/class context.
3086
3087 2009-01-15  Jason Merrill  <jason@redhat.com>
3088
3089         PR c++/36334
3090         PR c++/37646
3091         * tree.c (lvalue_p_1): Handle BASELINK.  A COMPONENT_REF to
3092         a function isn't necessarily an lvalue. Take tree, not const_tree.
3093         (lvalue_p, real_lvalue_p): Take tree, not const_tree.
3094         * typeck.c (lvalue_or_else): Likewise.
3095         * cp-tree.h: Adjust prototypes.
3096
3097 2009-01-15  Steve Ellcey  <sje@cup.hp.com>
3098
3099         PR c++/38357
3100         * pt.c (tsubst): Check for NULL args.
3101
3102 2009-01-15  Dodji Seketeli  <dodji@redhat.com>
3103
3104         PR c++/38636
3105         * name-lookup.c (pushtag): Don't create members to types that are not
3106         being created.
3107
3108 2009-01-14  Nick Clifton  <nickc@redhat.com>
3109
3110         PR c++/37862
3111         * parser.c: Pass cp_id_kind computed in
3112         cp_parser_postfix_dot_deref_expression to
3113         cp_parser_primary_expression.
3114
3115 2009-01-13  Jakub Jelinek  <jakub@redhat.com>
3116
3117         PR c++/38795
3118         * tree.c (cp_walk_subtrees): Handle REINTERPRET_CAST_EXPR,
3119         STATIC_CAST_EXPR, CONST_CAST_EXPR and DYNAMIC_CAST_EXPR the same
3120         as CAST_EXPR.
3121
3122 2009-01-12  Jason Merrill  <jason@redhat.com>
3123             Steve Ellcey  <sje@cup.hp.com>
3124
3125         PR c++/35109
3126         * name-lookup.c (lookup_name_real): Keep looking past a hidden 
3127         binding.
3128
3129 2009-01-12  Dodji Seketeli  <dodji@redhat.com>
3130
3131         PR c++/36019
3132         * pt.c (parameter_of_template_p): New function.
3133         * cp-tree.h: Declare it.
3134         * name-lookup.c (binding_to_template_parms_of_scope_p): New
3135         function.
3136         (outer_binding): Take template parameters in account when looking for
3137         a name binding.
3138
3139 2009-01-12  Jason Merrill  <jason@redhat.com>
3140
3141         PR c++/31488
3142         * tree.c (pod_type_p): Return 1 for structs created by the back end.
3143
3144 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
3145
3146         PR c/32041
3147         * parser.c (cp_parser_builtin_offsetof): Allow `->' in
3148         offsetof member-designator, handle it as `[0].'.
3149
3150         PR c++/38794
3151         * decl.c (start_function): If grokdeclarator hasn't returned
3152         FUNCTION_DECL nor error_mark_node, issue diagnostics.
3153
3154 2009-01-11  Jakub Jelinek  <jakub@redhat.com>
3155
3156         PR c++/36254
3157         * cp-gimplify.c (genericize_if_stmt): Renamed from ...
3158         (gimplify_if_stmt): ... this.
3159         (cp_gimplify_expr): Don't handle IF_STMT here.
3160         (cp_genericize_r): Call genericize_if_stmt for IF_STMT.
3161
3162 2009-01-10  Andrew Pinski  <pinskia@gmail.com>
3163
3164         PR c++/38648
3165         * typeck.c (cp_build_modify_expr): Check for NULL current_function_decl.
3166
3167         PR c++/36695
3168         * typeck2.c (build_functional_cast): Check for reference type and NULL
3169         PARMS.
3170
3171 2009-01-09  Steve Ellcey  <sje@cup.hp.com>
3172
3173         * typeck.c (cp_build_unary_op): Check for ERROR_MARK.
3174
3175 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
3176
3177         PR c++/35335
3178         * error.c (dump_expr): Handle EXPR_STMT like BIND_EXPR.
3179
3180 2009-01-09  John F. Carr  <jfc@mit.edu>
3181
3182         PR c++/37877
3183         * parser.c (cp_parser_class_specifier): Clear
3184         parser->in_unbraced_linkage_specification_p while parsing class
3185         specifiers.
3186
3187 2009-01-07  Jakub Jelinek  <jakub@redhat.com>
3188
3189         PR c++/38725
3190         * semantics.c (finish_goto_stmt): Convert destination to
3191         void *.
3192
3193 2009-01-06  Jason Merrill  <jason@redhat.com>
3194
3195         PR c++/35297
3196         PR c++/35477
3197         PR c++/35784
3198         PR c++/36846
3199         PR c++/38276
3200         * pt.c (check_default_tmpl_args): Don't complain about
3201         out-of-order parameter packs in the enclosing class
3202         or parameter packs after default args.
3203         (coerce_template_parms): If we have more than one
3204         parameter pack, don't flatten argument packs.
3205         (template_args_equal): Handle argument packs.
3206         (comp_template_args): Don't flatten argument packs.
3207         (check_instantiated_arg): Split out from...
3208         (check_instantiated_args): Here.  Handle arg packs.
3209         (convert_template_argument): Just check that nontype argument
3210         packs have the right type.
3211
3212 2009-01-05  Dodji Seketeli  <dodji@redhat.com>
3213
3214         PR c++/38472
3215         * typeck.c (type_after_usual_arithmetic_conversions): Fix a typo.
3216
3217 2009-01-05  Jason Merrill  <jason@redhat.com>
3218
3219         PR c++/38698
3220         * typeck2.c (process_init_constructor_union): Handle union with
3221         no fields.
3222
3223         * mangle.c (write_expression): Remove mangling for zero-operand
3224         casts.
3225
3226         PR c++/38701
3227         * decl.c (cp_finish_decl): Clear DECL_INITIAL for invalid
3228         defaulting.
3229
3230         PR c++/38702
3231         * class.c (defaultable_fn_p): Only operator== can be a copy
3232         assignment operator.
3233
3234 2009-01-02  Jason Merrill  <jason@redhat.com>
3235
3236         PR c++/38698
3237         * typeck2.c (process_init_constructor_union): Handle excess
3238         initializers.
3239         (process_init_constructor_record): Likewise.
3240
3241         PR c++/38684
3242         * typeck2.c (digest_init_r): Don't use process_init_constructor
3243         for non-aggregate classes.
3244
3245 \f
3246 Copyright (C) 2009 Free Software Foundation, Inc.
3247
3248 Copying and distribution of this file, with or without modification,
3249 are permitted in any medium without royalty provided the copyright
3250 notice and this notice are preserved.