OSDN Git Service

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