OSDN Git Service

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