OSDN Git Service

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