OSDN Git Service

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