OSDN Git Service

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