OSDN Git Service

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