OSDN Git Service

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