OSDN Git Service

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