OSDN Git Service

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