OSDN Git Service

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