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,
3453 are permitted in any medium without royalty provided the copyright
3454 notice and this notice are preserved.