OSDN Git Service

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