OSDN Git Service

2009-07-17 Aldy Hernandez <aldyh@redhat.com>
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
1 2009-07-17  Aldy Hernandez  <aldyh@redhat.com>
2             Manuel López-Ibáñez  <manu@gcc.gnu.org>
3
4         PR 40435 
5         * typeck.c, init.c, class.c, method.c, rtti.c, except.c, error.c,
6         tree.c, cp-gimplify.c, cxx-pretty-print.c, pt.c, semantics.c,
7         call.c, cvt.c, mangle.c: Add location argument to
8         fold_{unary,binary,ternary}, fold_build[123], build_call_expr,
9         build_size_arg, build_fold_addr_expr, build_call_array,
10         non_lvalue, size_diffop, fold_build1_initializer,
11         fold_build2_initializer, fold_build3_initializer,
12         fold_build_call_array, fold_build_call_array_initializer,
13         fold_single_bit_test, omit_one_operand, omit_two_operands,
14         invert_truthvalue, fold_truth_not_expr, build_fold_indirect_ref,
15         fold_indirect_ref, combine_comparisons, fold_builtin_*,
16         fold_call_expr, build_range_check, maybe_fold_offset_to_address,
17         round_up, round_down.
18
19 2009-07-16  Jason Merrill  <jason@redhat.com>
20
21         PR libstdc++/37907
22         Split POD into "standard-layout" and "trivial" as per N2230,
23         Support std::is_standard_layout and std::is_trivial traits.
24         * cp-tree.h (enum cp_trait_kind): Add CPTK_IS_STD_LAYOUT,
25         CPTK_IS_TRIVIAL.
26         (struct lang_type_class): Add non_std_layout.
27         (CLASSTYPE_NON_STD_LAYOUT): New.
28         * class.c (check_bases): Set it.
29         (check_field_decls): Likewise.
30         (check_bases_and_members): Likewise.
31         * parser.c (cp_parser_primary_expression): Handle RID_IS_STD_LAYOUT,
32         RID_IS_TRIVIAL.
33         (cp_parser_trait_expr): Likewise.
34         * semantics.c (trait_expr_value): Handle CPTK_IS_STD_LAYOUT,
35         CPTK_IS_TRIVIAL.
36         (finish_trait_expr): Likewise.
37         * tree.c (scalarish_type_p, trivial_type_p, std_layout_type_p): New.
38         (pod_type_p): Use them.
39         (type_has_nontrivial_copy_init, type_has_nontrivial_default_init): New.
40
41         Adjust bits of the language that no longer refer to POD types.
42         * call.c (convert_arg_to_ellipsis): Use type_has_nontrivial_copy_init
43         and TYPE_HAS_NONTRIVIAL_DESTRUCTOR rather than pod_type_p.
44         (build_x_va_arg): Likewise.
45         (call_builtin_trap): Remove.
46         * decl.c (declare_local_label): Use type_has_nontrivial_default_init
47         and TYPE_HAS_NONTRIVIAL_DESTRUCTOR rather than pod_type_p.
48         (cp_finish_decl): Likewise.
49         (check_previous_goto_1, check_goto): Adjust error.
50         * typeck.c (build_class_member_access_expr): Check
51         CLASSTYPE_NON_STD_LAYOUT rather than CLASSTYPE_NON_POD_P.
52
53 2009-07-14  Taras Glek  <tglek@mozilla.com>
54             Rafael Espindola  <espindola@google.com>
55
56         * Make-lang.in: Added CP_PLUGIN_HEADERS and
57         c.install-target to export cp-tree.h cxx-pretty-print.h
58         name-lookup.h headers for plugins.
59
60 2009-07-14  Jason Merrill  <jason@redhat.com>
61
62         PR c++/37276
63         * decl.c (decls_match): A non-extern-C declaration doesn't match
64         a builtin extern-C declaration.
65
66         PR c++/40746
67         * name-lookup.c (qualified_lookup_using_namespace): Don't stop
68         looking in used namespaces just because we found something on
69         another branch.
70
71         PR c++/40740
72         * semantics.c (perform_koenig_lookup): Handle empty template args.
73
74         * call.c (build_over_call): Use can_trust_pointer_alignment.
75
76 2009-07-14  Dodji Seketeli  <dodji@redhat.com>
77
78         PR debug/40705
79         PR c++/403057
80         * decl2.c (grokfield): Don't call set_underlying_type on typedef
81         decls that are type names.
82
83 2009-07-13  Andrew Pinski  <andrew_pinski@playstation.sony.com>
84
85         PR C++/22154
86         * parser.c (cp_parser_elaborated_type_specifier): Accept typename in
87         front of qualified names.
88
89 2009-07-12  Jason Merrill  <jason@redhat.com>
90
91         PR c++/36628
92         * tree.c (rvalue): Use lvalue_or_rvalue_with_address_p.
93
94         PR c++/37206
95         * cp-tree.h (enum cp_lvalue_kind_flags): Add clk_rvalueref.
96         * tree.c (lvalue_p_1): Return it.  Remove
97         treat_class_rvalues_as_lvalues parm.
98         (real_lvalue_p): Disallow pseudo-lvalues here.
99         (lvalue_or_rvalue_with_address_p): New fn.
100         * call.c (initialize_reference): Use it instead of real_lvalue_p.
101
102         PR c++/40689
103         * init.c (build_new_1): Handle initializer list as array initializer.
104         (build_vec_init): Likewise.
105         * typeck.c (cp_build_modify_expr): Likewise.
106         * typeck2.c (process_init_constructor_array): Error rather than abort
107         if too many initializers.
108
109 2009-07-10  Jakub Jelinek  <jakub@redhat.com>
110
111         PR c++/40502
112         * error.c (cp_print_error_function): Check for NULL block.
113
114 2008-07-09  Simon Martin  <simartin@users.sourceforge.net>
115             Jason Merrill  <jason@redhat.com>
116
117         * pt.c (perform_typedefs_access_check, get_types_needing_access_check,
118         append_type_to_template_for_access_check_1): Use CLASS_TYPE_P.
119
120 2009-07-09  Dodji Seketeli  <dodji@redhat.com>
121
122         PR c++/40684
123         * pt.c (type_unification_real): Use tsubst_template_arg instead
124         of tsubst to substitute default template arguments.
125
126 2009-07-08  Manuel López-Ibáñez  <manu@gcc.gnu.org>
127
128         PR c++/31246
129         * init.c (build_new_1): Set TREE_NO_WARNING for compiler-generated
130         code.
131         * cp-gimplify.c (genericize_eh_spec_block): Likewise.
132         
133
134 2009-07-07  Jason Merrill  <jason@redhat.com>
135
136         PR c++/35828
137         * pt.c (tsubst_decl): Don't abort if we didn't change anything
138         in a TEMPLATE_DECL's args.
139
140 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
141
142         * semantics.c (finalize_nrv_r): Replace EXPR_LOCUS by
143         EXPR_LOCATION.
144         
145 2009-07-07  Jason Merrill  <jason@redhat.com>
146
147         PR c++/37816
148         * decl.c (build_enumerator): Don't add enumerators for a
149         scoped enum to the enclosing class.
150
151         PR c++/40639
152         * decl.c (start_enum): Allow dependent underlying type.
153
154         PR c++/40633
155         * decl.c (finish_enum): Finish scope even in a template.
156
157 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
158
159         * init.c: Replace %J by an explicit location. Update all calls.
160         * decl.c: Likewise.
161         * typeck2.c: Likewise.
162         * pt.c: Likewise.
163         * name-lookup.c: Likewise.
164         
165 2009-07-06  Manuel López-Ibáñez  <manu@gcc.gnu.org>
166
167         * decl.c: Replace %H by an explicit location. Update all calls.
168         * except.c: Likewise.
169         * semantics.c: Likewise.
170         * parser.c: Likewise.
171
172 2009-07-06  Simon Martin  <simartin@users.sourceforge.net>
173
174         PR c++/40557
175         * pt.c (perform_typedefs_access_check, get_types_needing_access_check,
176         append_type_to_template_for_access_check_1): Use
177         RECORD_OR_UNION_CODE_P.
178
179 2009-07-04  Jason Merrill  <jason@redhat.com>
180
181         * pt.c (retrieve_specialization): Don't get confused by a
182         using-declaration that brings in another instance of this template
183         from a base class.
184
185         * ptree.c (cxx_print_type): Fix logic.
186
187         * cp-tree.h (LANG_DECL_FN_CHECK): Fix non-checking version.
188
189         PR c++/40619
190         * cp-tree.h (struct lang_decl_parm): New.
191         (struct lang_decl): Add it.
192         (LANG_DECL_PARM_CHECK): New.
193         (DECL_PARM_INDEX): New.
194         * decl2.c (parm_index): Remove.
195         * lex.c (retrofit_lang_decl): Handle parms.
196         (cxx_dup_lang_specific_decl): Likewise.
197         * mangle.c (write_expression): Adjust.
198         * tree.c (cp_tree_equal): Adjust.
199         (decl_linkage): Only check DECL_COMDAT for functions and variables.
200         * parser.c (cp_parser_parameter_declaration_list): Set
201         DECL_PARM_INDEX.
202         * pt.c (iterative_hash_template_arg): Hash it.
203
204 2009-07-03  Jason Merrill  <jason@redhat.com>
205
206         * cp-tree.h (struct lang_decl): Overhaul.
207         (struct lang_decl_flags): Remove.
208         (struct lang_decl_base): New.
209         (struct lang_decl_min): New.
210         (struct lang_decl_fn): New.
211         (struct lang_decl_ns): New.
212         (CAN_HAVE_FULL_LANG_DECL_P): Replace with LANG_DECL_HAS_MIN.
213         (LANG_DECL_MIN_CHECK): New.
214         (LANG_DECL_FN_CHECK): New.
215         (LANG_DECL_NS_CHECK): New.
216         (STRIP_TEMPLATE): New.
217         (NON_THUNK_FUNCTION_CHECK): Remove.
218         (DECL_DECLARES_FUNCTION_P): New.
219         (lots): Adjust.
220         * lex.c (retrofit_lang_decl, cxx_dup_lang_specific_decl): Adjust.
221         * decl.c (push_local_name, duplicate_decls): Adjust.
222         * decl2.c (start_objects): Don't set u2sel.
223         * semantics.c (finish_omp_threadprivate): Adjust.
224         * class.c (build_clone): Don't do much on TEMPLATE_DECLs.
225         (decl_cloned_function_p): Out-of-line implementation of macros.
226         (clone_function_decl, adjust_clone_args): Use DECL_CLONED_FUNCTION_P.
227         * mangle.c (write_unqualified_name): Don't check function flags
228         on non-functions.
229         * method.c (make_alias_for): Don't set DECL_CLONED_FUNCTION.
230         * pt.c (build_template_decl): Don't set function flags.
231         (check_default_tmpl_args): Check that it's a function.
232         (instantiate_template): Use DECL_ABSTRACT_ORIGIN to find the
233         cloned template.
234
235         * pt.c (tsubst_decl) [FUNCTION_DECL]: Don't tsubst
236         DECL_CLONED_FUNCTION.
237
238         * cp-tree.h (struct lang_type_class): Move sorted_fields here.
239         * class.c (finish_struct_1): Adjust.
240         * ptree.c (cxx_print_decl, cxx_print_type): Adjust.
241         * search.c (lookup_field_1): Adjust.
242
243         * cp-tree.h (CLASSTYPE_INLINE_FRIENDS): Remove.
244         * decl.c (finish_method): Don't add to it.
245         * class.c (fixup_pending_inline): Remove.
246         (fixup_inline_methods): Remove.
247         (finish_struct_1): Don't call it.
248
249         * error.c (dump_function_name): Handle null name.
250
251 2009-07-02  Mark Mitchell  <mark@codesourcery.com>
252
253         * typeck.c (cp_build_binary_op): Move warnings about use of NULL
254         in arithmetic earlier and allow comparisions of NULL with
255         pointers-to-members.
256
257 2009-07-02  Jason Merrill  <jason@redhat.com>
258
259         Use hash tables for template specialization lookup.
260         * pt.c (struct spec_entry): New type.
261         (decl_specializations, type_specializations): New hash tables.
262         (register_specialization, retrieve_specialization): Use them.
263         (reregister_specialization, lookup_template_class): Use them.
264         (eq_specializations, hash_tmpl_and_args, hash_specialization): New.
265         (iterative_hash_template_arg): New.
266         (init_template_processing): New
267         (process_partial_specialization): Don't look to see if we already
268         have this partial specialization.
269         (maybe_process_partial_specialization): Handle reassigning
270         full specializations when we get an explicit specialization
271         of the partial instantiation.
272         (tsubst_friend_function): Adjust specialization reassignment code.
273         (instantiate_template): Only do one lookup.
274         (instantiate_decl): Don't do any lookup.
275         * cp-tree.h: Declare init_template_processing.
276         * decl.c (duplicate_decls): Pass args to reregister_specialization.
277
278 2009-07-01  Jason Merrill  <jason@redhat.com>
279
280         * cp-tree.h (DECL_CLASS_TEMPLATE_P): Use DECL_IMPLICIT_TYPEDEF_P.
281
282         * pt.c (register_specialization): Use duplicate_decls to merge
283         the argument with a previous specialization.
284         (check_explicit_specialization): Call register_specialization to
285         merge the TEMPLATE_DECL with a previous version.
286         (determine_specialization): Return the args even if fn is a template.
287
288 2009-07-01  Ian Lance Taylor  <iant@google.com>
289
290         * g++spec.c (lang_specific_driver): Bump num_args by 1.
291
292 2009-06-30  Jason Merrill  <jason@redhat.com>
293
294         PR c++/40595
295         * pt.c (tsubst_pack_expansion): Handle unexpanded packs in an
296         EXPR_PACK_EXPANSION.
297
298 2009-06-29  Jason Merrill  <jason@redhat.com>
299
300         PR c++/40274
301         * error.c (dump_template_parms): Pass all args to
302         count_non_default_template_args.
303         (count_non_default_template_args): Pull out the inner ones.
304
305 2009-06-26  H.J. Lu  <hongjiu.lu@intel.com>
306
307         * decl.c (duplicate_decls): Re-indent.
308
309 2009-06-25  Ian Lance Taylor  <iant@google.com>
310
311         * call.c (avoid_sign_compare_warnings): New static function.
312         (build_new_op): Call it.
313         * typeck.c (cp_build_binary_op): Don't call warn_sign_compare if
314         TREE_NO_WARNING is set on either operand.
315
316 2009-06-25  Ian Lance Taylor  <iant@google.com>
317
318         * g++spec.c (SKIPOPT): define.
319         (lang_specific_driver): Handle -static-libstdc++.  Only add
320         LIBSTDCXX_STATIC if we add LIBSTDCXX.
321
322 2009-06-25  Ian Lance Taylor  <iant@google.com>
323
324         * cvt.c (convert_to_void): Only warn about COND_EXPR if neither
325         the second nor third operand has side effects.
326
327 2009-06-25  Ian Lance Taylor  <iant@google.com>
328
329         * parser.c (cp_parser_binary_expression): Increment
330         c_inhibit_evaluation_warnings while parsing the right hand side of
331         "true || x" or "false && x".
332         * typeck.c (cp_build_binary_op): Only call warn_for_sign_compare
333         if c_inhibit_evaluation_warnings is zero.
334
335 2009-06-24  Jason Merrill  <jason@redhat.com>
336
337         * error.c (dump_decl): Do say "typedef" for the injected class name.
338
339         * pt.c (lookup_template_class): Use currently_open_class,
340         compare template args later.
341
342         PR c++/40342
343         * decl.c (decls_match): Check DECL_TI_TEMPLATE too.
344         * class.c (resolve_address_of_overloaded_function): Fix typo.
345
346 2009-06-18  Aldy Hernandez  <aldyh@redhat.com>
347
348         * class.c (get_vtable_decl): Replace finish_decl with cp_finish_decl.
349         * decl.c (finish_decl): Remove.
350         (declare_global_var): Replace finish_decl with cp_finish_decl.
351         (start_method): Same.
352         * rtti.c (emit_tinfo_decl): Same.
353         * pt.c (tsubst_expr): Same.
354         (instantiate_decl): Same.
355         * decl2.c (grokbitfield): Same.
356         * name-lookup.c (pushdecl_top_level_1): Same.
357         * cp-tree.h: Remove finish_decl.
358
359 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
360
361         * g++-spec.c (LIBSTDCXX_STATIC): Default to NULL.
362         (lang_specific_driver): Always allocate extra argument.
363         Add LIBSTDCXX_STATIC to arglist if defined and linking
364         statically.
365
366 2009-06-16  Ian Lance Taylor  <iant@google.com>
367
368         * Make-lang.in (cp/class.o): Depend upon gt-cp-class.h.
369         (cp/semantics.o): Depend upon gt-cp-semantics.h.
370
371 2009-06-16  Ian Lance Taylor  <iant@google.com>
372
373         * parser.c (cp_unevaluated_operand): Define global variable.
374         (cp_parser_question_colon_clause): Increment
375         c_inhibit_evaluation_warnings when evaluating an expression which
376         will never be executed.
377         (cp_parser_decltype): Increment cp_unevaluated_operand and
378         c_inhibit_evaluation_warnings, not skip_evaluation.
379         (cp_parser_sizeof_operand): Likewise.
380         (cp_parser_enclosed_template_argument_list): Save
381         cp_unevaluated_operand and c_inhibit_evaluation_warnings, not
382         skip_evaluation.
383         * cp-tree.h (struct saved_scope): Remove skip_evaluation field.
384         Add unevaluated_operand and inhibit_evaluation_warnings fields.
385         (cp_unevaluated_operand): Declare.
386         * name-lookup.c (push_to_top_level): Save cp_unevaluated_operand
387         and c_inhibit_evaluation_warnings rather than skip_evaluation.
388         (pop_from_top_level): Restore cp_unevaluated_operand and
389         c_inhibit_evaluation_warnings rather than skip_evaluation.
390         * class.c (build_base_path): Check cp_unevaluated_operand rather
391         than skip_evaluation.
392         * typeck.c (build_class_member_access_expr): Likewise.
393         (cp_build_binary_op): Don't warn about bad shift counts if
394         c_inhibit_evaluation_warnings is non-zero.
395         * pt.c (coerce_template_parms): Save state of
396         cp_unevaluated_operand and c_inhibit_evaluation_warnings, not
397         skip_evaluation.
398         (tsubst_aggr_type): Likewise.
399         (tsubst_pack_expansion): Check cp_unevaluated_operand rather than
400         skip_evaluation.
401         (tsubst_copy): Likewise.
402         (tsubst): Set cp_unevaluated_operand and
403         c_inhibit_evaluation_warnings, not skip_evaluation.
404         (tsubst_copy_and_build): Likewise.
405         * call.c (convert_arg_to_ellipsis): Check cp_unevaluated_operand
406         rather than skip_evaluation.
407         * decl2.c (mark_used): Likewise.
408         * semantics.c (finish_non_static_data_member): Likewise.
409         * cvt.c (cp_convert_and_check): Check
410         c_inhibit_evaluation_warnings rather than skip_evaluation.
411         * mangle.c (write_type): Set cp_unevaluated_operand rather than
412         skip_evaluation.
413
414 2009-06-15  Ian Lance Taylor  <iant@google.com>
415
416         * parser.c (cp_parser_direct_declarator): Add braces around
417         variables declared before label.
418
419 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
420
421         * cp-objcp-common.h (LANG_HOOKS_COMDAT_GROUP): Remove.
422         * cp-tree.h (cxx_comdat_group): Change signature.
423         * decl.c (duplicate_decls): Use DECL_COMDAT_GROUP.
424         (cxx_comdat_group): Change signature.
425         * decl2.c (comdat_linkage, maybe_make_one_only): Update call to
426         make_decl_one_only.
427         (constrain_visibility, get_guard): Use DECL_COMDAT_GROUP.
428         * method.c (use_thunk): Update call to make_decl_one_only.
429         * optimize.c (maybe_clone_body): Use DECL_COMDAT_GROUP
430
431 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
432
433         * typeck.c (cp_build_binary_op): Pass location to overflow_warning.
434         (build_modify_expr): New arg.
435         * semantics.c (finish_unary_op_expr): Pass location to
436         overflow_warning.
437         (handle_omp_for_class_iterator): Pass location to build_modify_expr.
438         * typeck.c (cxx_sizeof_or_alignof_type): Pass location to
439         c_sizeof_or_alignof_type.
440         (build_array_ref): New argument.
441         (build_compound_expr): Same.
442         (build_const_cast): Same.
443         (build_ptrmemfunc): Pass location to build_c_cast.
444         * init.c (avoid_placement_new_aliasing): Pass location to
445         build_stmt.
446         (build_vec_delete_1): Pass location to cp_build_modify_expr,
447         build_compound_expr.
448         * class.c (build_vtbl_ref_1): Pass location to build_array_ref.
449         * decl.c (poplevel): Pass location to c_build_bind_expr.
450         (finish_case_label): Pass location to build_case_label.
451         (finish_constructor_body): Same.
452         (finish_destructor_body): Pass location to build_stmt.
453         (cxx_maybe_build_cleanup): Same, but to build_compound_expr.
454         * call.c (build_new_op): Pass location to build_array_ref.
455         (build_x_va_arg): Pass location to build_va_arg.
456         * except.c (expand_end_catch_block): Pass location to
457         build_stmt.
458         * cp-tree.h (build_array_ref): New argument.
459         (build_compound_expr): Same.
460         (build_c_cast): Same.
461         * cp-gimplify.c (gimplify_if_stmt): Pass location on down.
462         (gimplify_switch_stmt): Same.
463         * typeck2.c (split_nonconstant_init_1): Same.
464         * pt.c (tsubst_copy): Same.
465         * semantics.c (add_decl_expr): Same.
466         (do_poplevel): Same.
467         (push_cleanup): Same.
468         (finish_goto_stmt): Same.
469         (finish_expr_stmt): Same.
470         (begin_if_stmt): Same.
471         (begin_while_stmt): Same.
472         (begin_do_stmt): Same.
473         (finish_return_stmt): Same.
474         (begin_for_stmt): Same.
475         (finish_break_stmt): Same.
476         (finish_continue_stmt): Same.
477         (begin_switch_stmt): Same.
478         (begin_try_block): Same.
479         (begin_handler): Same.
480         (finish_asm_stmt): Same.
481         (finish_label_stmt): Same.
482         (finish_stmt_expr_expr): Same.
483         (finalize_nrv_r): Same.
484         (finish_omp_atomic): Same.
485         * name-lookup.c (do_using_directive): Same.
486         * decl2.c (grok_array_decl): Same.
487         * parser.c (cp_parser_cast_expression): Same.
488         (cp_parser_selection_statement): Same.
489         (cp_parser_implicitly_scoped_statement): Same.
490         (cp_parser_objc_selector_expression): Same.
491         (cp_parser_objc_synchronized_statement): Same.
492         (cp_parser_objc_throw_statement): Same.
493         (cp_parser_omp_critical): Same.
494         (cp_parser_omp_master): Same.
495         * typeck.c (build_function_call): Add location argument.
496         * init.c: Add location argument to all build_decl calls.
497         * class.c: Same.
498         * method.c: Same.
499         * rtti.c: Same.
500         * tree.c: Same.
501         * pt.c: Same.
502         * semantics.c: Same.
503         * lex.c: Same.
504         * decl2.c: Same.
505         * cp-gimplify.c: Same.
506         * decl.c: Same.
507         (cp_make_fname_decl): Add location argument.  Pass location ot
508         build_decl.
509         (finish_case_label): Same.
510         * cp-tree.h (finish_case_label): Add location argument.
511         * parser.c (cp_parser_label_for_labeled_statement): Pass location to
512         finish_case_label.
513         
514 2009-06-09  Jason Merrill  <jason@redhat.com>
515
516         PR c++/40381
517         * decl2.c (mark_used): Return after complaining about deleted fn.
518
519 2009-06-08  Jason Merrill  <jason@redhat.com>
520
521         * parser.c (cp_parser_type_id_1): 'auto' type is ok with a
522         late-specified return type.
523
524 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
525
526         PR c++/40373
527         * call.c (check_dtor_name): Return false even if
528         get_type_value (name) is error_mark_node.
529
530         PR c++/40370
531         PR c++/40372
532         * parser.c (cp_parser_direct_declarator): Don't set TREE_SIDE_EFFECTS
533         on error_mark_node.  Check for VLAs outside of function context
534         before check whether to wrap bounds into a NOP_EXPR with
535         TREE_SIDE_EFFECTS.
536
537 2009-06-08  Alexandre Oliva  <aoliva@redhat.com>
538
539         * repo.c (get_base_filename): Use aux_base_name rather than
540         alternate temporary file during second compare debug compilation.
541         (finish_repo): Skip during -fcompare-debug-second.
542
543 2009-06-06  Ian Lance Taylor  <iant@google.com>
544
545         * parser.c (cp_parser_label_for_labeled_statement): Support
546         attribute on labels if immediately followed by semicolon.
547         * semantics.c (finish_label_stmt): Return new label.
548         * pt.c (tsubst_expr): Handle attributes for LABEL_EXPR.
549
550 2009-06-03  Ian Lance Taylor  <iant@google.com>
551
552         * Make-lang.in (cc1plus-checksum.o): Depend upon $(CONFIG_H) and
553         $(SYSTEM_H).
554
555 2009-06-02  Mark Mitchell  <mark@codesourcery.com>
556
557         * decl.c (maybe_deduce_size_from_array_init): Use relayout_decl.
558
559 2009-06-02  Jason Merrill  <jason@redhat.com>
560
561         PR c++/40308
562         PR c++/40311
563         * typeck.c (cp_build_modify_expr): Always pass init-lists to the
564         conversion code.
565         * call.c (implicit_conversion): Allow init-list conversion to scalar
566         during direct-initialization, too.  Mark the conversion bad if it
567         has too many levels of braces.
568         (convert_like_real): And give a helpful error.
569
570         PR c++/40306
571         PR c++/40307
572         * decl.c (cp_finish_decl): Handle auto deduction from ().
573         * typeck.c (build_x_indirect_ref): Handle dereferencing an operand
574         with dependent type that is known to be a pointer.
575
576 2009-06-02  Simon Martin  <simartin@users.sourceforge.net>
577
578         PR c++/38089
579         * pt.c (register_specialization): Properly setup DECL_CONTEXT for
580         specializations in an invalid namespace.
581
582 2009-06-01  Aldy Hernandez  <aldyh@redhat.com>
583
584         * error.c (print_instantiation_partial_context): Print column
585         numbers.
586
587 2009-05-29  Ian Lance Taylor  <iant@google.com>
588
589         * error.c (cp_printer): Don't use va_arg with enum type.
590
591 2009-05-28  Dodji Seketeli  <dodji@redhat.com>
592
593         PR c++/39754
594         * cp-tree.h (canonical_type_variant): Remove this function declaration.
595         (strip_typedefs): New function declaration.
596         * tree.c (strip_typedefs): New function definition.
597         (canonical_type_variant): Remove function definition.
598         * cvt.c (convert_from_reference): No need to use
599         canonical_type_variant.
600         * typeck.c (cp_build_indirect_ref): Likewise.
601         * error.c (dump_template_bindings): Use strip_typedefs instead of
602         canonical_type_variant.
603         * pt.c (convert_template_argument, unify): Likewise.
604         * mangle.c (canonicalize_for_substitution): Don't use
605         canonical_type_variant.
606
607 2009-05-27  Jason Merrill  <jason@redhat.com>
608
609         * call.c (implicit_conversion): Handle conversion from
610         initializer-list to scalar.
611         (convert_like_real): Likewise.  Avoid crashing on list
612         initialization with bad conversions.
613         (can_convert): Use LOOKUP_EXPLICIT.
614         (can_convert_arg_bad): Add flags parm.
615         * cp-tree.h: Adjust.
616         * typeck.c (convert_for_assignment): Pass flags.
617
618 2009-05-27  Ian Lance Taylor  <iant@google.com>
619
620         * Make-lang.in (g++$(exeext)): Change $(COMPILER) to $(LINKER).
621         (cc1plus-dummy$(exeext), cc1plus$(exeext)): Likewise.
622
623 2009-05-26  Ian Lance Taylor  <iant@google.com>
624
625         * Make-lang.in (g++spec.o): Use $(COMPILER).
626         (g++$(exeext), cc1plus-dummy$(exeext)): Likewise.
627         (cc1plus$(exeext)): Likewise.
628
629 2009-05-26  Dodji Seketeli  <dodji@redhat.com>
630
631         PR c++/40007
632         * cp-tree.h (MEMBER_TYPES_NEEDING_ACCESS_CHECK): Remove this accessor.
633         (TI_TYPEDEFS_NEEDING_ACCESS_CHECKING): New accessor.
634         (get_types_needing_access_check): Declare new entry point.
635         * pt.c (append_type_to_template_for_access_check_1,
636         get_types_needing_access_check): New functions.
637         (perform_typedefs_access_check): Accept FUNCTION_DECLs and
638         RECORD_TYPEs rather than TEMPLATE_DECLs. Use the new
639         get_types_needing_access_check, no more
640         MEMBER_TYPES_NEEDING_ACCESS_CHECK.
641         (instantiate_class_template): Set input_location to the source
642         location of the most specialized template definition.
643         Perform access check using the RECORD_TYPE of the template, not its
644         associated most generic TEMPLATE_DECL.
645         (append_type_to_template_for_access_check): Augment function
646         comments. Use the new get_types_needing_access_check, not
647         MEMBER_TYPE_NEEDING_ACCESS_CHECK. Use the new
648         append_type_to_template_for_access_check_1 subroutine.
649
650 2009-05-22  Jason Merrill  <jason@redhat.com>
651
652         PR c++/38064
653         * typeck.c (cp_build_binary_op): Allow ENUMERAL_TYPE in
654         arithmetic comparisons.
655         (cp_common_type): Handle scoped enums.
656
657         * call.c (promoted_arithmetic_type_p): Don't use INTEGRAL_TYPE_P.
658         (add_builtin_candidate, add_builtin_candidates): Likewise.
659         (convert_like_real): Likewise.
660         * class.c (check_bitfield_decl): Likewise.
661         * decl.c (check_static_variable_definition): Likewise.
662         (compute_array_index_type): Likewise.
663         * decl2.c (grokbitfield): Likewise.
664         * init.c (build_new_1): Likewise.
665         * pt.c (convert_nontype_argument): Likewise.
666         (current_instantiation): Likewise.
667         * tree.c (pod_type_p): Likewise.
668         * typeck.c (build_static_cast_1): Likewise.
669         (build_reinterpret_cast_1): Likewise.
670
671 2009-05-22  Richard Guenther  <rguenther@suse.de>
672
673         PR middle-end/38964
674         * init.c (avoid_placement_new_aliasing): Remove.
675         (build_new_1): Do not call it.
676
677 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
678
679         * decl2.c (decl_needed_p): Consider dllexport'd functions needed.
680         * semantics.c (expand_or_defer_fn): Similarly.
681
682 2009-05-20  Ian Lance Taylor  <iant@google.com>
683
684         * parser.c (cp_parser_postfix_expression): Change args to a vec.
685         Release it when done.
686         (tree_vector): Define typedef.  Define VEC functions.
687         (cp_parser_parenthesized_expression_list): Change return type to
688         vec.  Change all callers.
689         (cp_parser_new_expression): Change placement and initializer to
690         vecs.  Release them when done.
691         (cp_parser_new_placement): Change return type to vec.  Change all
692         callers.
693         (cp_parser_new_initializer): Likewise.
694         * typeck.c (build_function_call_vec): Just call
695         cp_build_function_call_vec.
696         (cp_build_function_call): Just build a vec and call
697         cp_build_function_call_vec.
698         (cp_build_function_call_vec): New function based on old
699         cp_build_function_call.
700         (convert_arguments): Remove nargs and argarray parameters.  Change
701         values to a vec.  Change caller.
702         (build_x_compound_expr_from_vec): New function.
703         (cp_build_modify_expr): Build vec to pass to
704         build_special_member_call.
705         * call.c (struct z_candidate): Add first_arg field.  Change args
706         field to vec.
707         (convert_class_to_reference): Handle first argument separately.
708         (add_candidate): Add first_arg parameter.  Change args parameter
709         to vec.  Change all callers.
710         (add_function_candidate, add_conv_candidate): Likewise.
711         (add_template_candidate_real, add_template_candidate): Likewise.
712         (add_template_conv_candidate): Likewise.
713         (build_user_type_conversion_1): Handle first argument separately.
714         (resolve_args): Change return type and parameter type to vecs.
715         Change all callers.
716         (perform_overload_resolution): Change args parameter to vec.
717         Change all callers.
718         (build_new_function_call, build_operator_new_call): Likewise.
719         (add_candidates): Likewise.
720         (build_op_call): New globally visible function, built from and
721         replacing static function build_object_call.
722         (build_new_op): Don't handle CALL_EXPR.  Build vec, not tree_list,
723         of arguments.
724         (build_op_delete_call): Build vec to pass to
725         cp_build_function_call_vec.
726         (build_temp): Build vec to pass to build_special_member_call.
727         (convert_like_real): Likewise.
728         (perform_direct_initialization_if_possible): Likewise.
729         (build_over_call): Handle first_arg field.  Use build_call_array
730         rather than build_call_list.
731         (build_special_member_call): Change args parameter to vec.  Change
732         all callers.
733         (build_new_method_call): Likewise.
734         * init.c (expand_default_init): Change parms to vec.
735         (build_raw_new_expr): Change placement and init to vecs.  Change
736         all callers.
737         (build_new_1, build_new): Likewise.
738         * class.c (resolve_address_of_overloaded_function): Build array to
739         pass to fn_type_unification.
740         * pt.c (tsubst_copy_and_build): For NEW_EXPR build vecs to pass to
741         build_new.  For CALL_EXPR create a vec rather than a tree_list;
742         expand a pack if necessary.
743         (fn_type_unification): Change args parameter to const tree *.  Add
744         nargs parameter.  Change all callers.
745         (type_unification_real): Likewise.
746         (unify): Build array to pass to type_unification_real.
747         (get_bindings): Build array to pass to fn_type_unification.
748         (any_type_dependent_arguments_p): Change args parameter to a vec.
749         Change all callers.
750         (make_args_non_dependent): Renamed from build_non_dependent_args.
751         Change return type to void.  Change parameter type to vec.  Change
752         all callers.
753         (do_auto_deduction): Pass an array to type_unification_real.
754         * semantics.c (perform_koenig_lookup): Change args to vec.  Change
755         all callers.
756         (finish_call_expr): Change args to vec.  Change all callers.  Call
757         build_op_call instead of passing CALL_EXPR to build_new_op.
758         (cxx_omp_create_clause_info): Allocate vec to pass to
759         build_special_member_call.
760         * decl2.c (build_offset_ref_call_from_tree): Change args parameter
761         to vec.  Change all callers.
762         * name-lookup.c (lookup_function_nonclass): Likewise.
763         (struct arg_lookup): Change args to vec.
764         (arg_assoc_namespace): Handle args as a vec.
765         (arg_assoc_args_vec): New static function.
766         (lookup_arg_dependent): Change args parameter to vec.  Change all
767         callers.
768         * method.c (do_build_assign_ref): Allocate vec to pass to
769         build_special_member_call.
770         * except.c (build_throw): Likewise.
771         * typeck2.c (build_functional_cast): Likewise.
772         * cvt.c (ocp_convert): Likewise.
773         * tree.c (build_min_non_dep_call_vec): Change last parameter to
774         vec.  Change all callers.
775         * cp-tree.h: Update declarations.
776         * name-lookup.h: Update declarations.
777
778 2009-05-20  Sandra Loosemore  <sandra@codesourcery.com>
779
780         * typeck.c (default_conversion): Check targetm.promoted_type.
781         * decl.c (grokdeclarator): Check targetm.invalid_return_type.
782         (grokparms): Check targetm.invalid_parameter_type.
783         * cvt.c (ocp_convert): Check targetm.convert_to_type.
784         (build_expr_type_conversion): Check targetm.promoted_type.
785
786 2009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
787
788         * typeck.c (build_binary_op): Allow % on integal vectors.
789
790 2009-05-18  Jason Merrill  <jason@redhat.com>
791
792         Implement explicit conversions ops as specified in N2437.
793         * decl.c (grokdeclarator): Handle explicit conversion ops.
794         (check_initializer): Pass flags to store_init_value.
795         * decl2.c (maybe_emit_vtables): Likewise.
796         * init.c (expand_aggr_init_1): Likewise.
797         * call.c (convert_class_to_reference): Take flags parm,
798         check DECL_NONCONVERTING_P.
799         (build_user_type_conversion_1): Check DECL_NONCONVERTING_P.
800         (add_builtin_candidates): Simplify getting type of conversion.
801         (build_object_call): Likewise.  Check DECL_NONCONVERTING_P.
802         (implicit_conversion): Pass through LOOKUP_ONLYCONVERTING.
803         (reference_binding): Take flags parm.  Direct-initialize copy parm.
804         (add_function_candidate): Direct-initialize the copy parm.
805         (add_conv_candidate): Use LOOKUP_IMPLICIT, not LOOKUP_NORMAL.
806         (build_builtin_candidate): Add LOOKUP_ONLYCONVERTING.
807         (conditional_conversion): Likewise.
808         (convert_like_real): Only complain about DECL_NONCONVERTING_P
809         constructors.
810         (perform_implicit_conversion_flags): Add flags parm to
811         perform_implicit_conversion.  Improve diagnostics.
812         * cp-tree.h (LOOKUP_IMPLICIT): New macro.
813         (LOOKUP_COPY_PARM): New bit macro.
814         * cvt.c (build_expr_type_conversion): Check DECL_NONCONVERTING_P.
815         * typeck.c (convert_for_assignment): Take flags parm, pass it to
816         perform_implicit_conversion_flags.
817         (cp_build_modify_expr): Pass flags to convert_for_assignment.
818         (convert_for_initialization): Likewise.
819         * typeck2.c (store_init_value): Take flags parm, pass to
820         digest_init_flags.
821         (digest_init_flags): Add flags parm to digest_init.
822         (digest_init_r): Take flags parm, pass to convert_for_initialization.
823         (process_init_constructor_array): Pass it.
824         (process_init_constructor_record): Likewise.
825         (process_init_constructor_union): Likewise.
826
827 2009-05-16  Jason Merrill  <jason@redhat.com>
828
829         PR c++/40139
830         * pt.c (tsubst_qualified_id): Retain the type if we aren't dealing
831         with a dependent type.  Actually look up the destructor.
832         * semantics.c (finish_id_expression): Fix logic.
833         (finish_qualified_id_expr): Don't try to use 'this' if we aren't in
834         a function.
835         * typeck.c (build_x_unary_op): Diagnose taking the address of a
836         constructor or destructor.
837         * tree.c (get_first_fn): Handle OFFSET_REF.
838
839 2009-05-17  Joseph Myers  <joseph@codesourcery.com>
840
841         * tree.c (cxx_printable_name_internal): Allow consecutive
842         translated and untranslated cached copies of the name of the
843         current function.
844
845 2009-05-15  Ian Lance Taylor  <iant@google.com>
846
847         * cp-tree.h (enum cp_lvalue_kind_flags): Rename from
848         cp_lvalue_kind.  Change all uses.
849         (enum base_access_flags): Rename from enum base_access.  Change
850         all uses.
851         * parser.c (enum cp_parser_flags): Remove enum tag.
852
853 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
854
855         PR 16302
856         * call.c (build_new_op): Update calls to warn_logical_operator.
857
858 2009-05-14  Ian Lance Taylor  <iant@google.com>
859
860         * class.c (layout_class_type): Change itk to unsigned int.
861         * decl.c (finish_enum): Change itk to unsigned int.
862         * parser.c (cp_parser_check_decl_spec): Change ds to int.  Remove
863         casts.
864
865 2009-05-13  David Mandelin <dmandelin@mozilla.com>:
866
867         * decl.c (duplicate_decls): Preserve parameter attributes.
868
869 2009-05-10  Jan Hubicka  <jh@suse.cz>
870
871         * decl2.c (cxx_callgraph_analyze_expr): Use
872         cgraph_mark_address_taken.
873
874 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
875
876         * call.c (name_as_c_string): Call type_as_string_translate.
877         Translate identifiers to locale character set.
878         * cp-tree.h (lang_decl_name): Update prototype.
879         (type_as_string_translate, decl_as_string_translate,
880         cxx_printable_name_translate): Declare.
881         * cxx-pretty-print.c (M_): Define.
882         (pp_cxx_unqualified_id, pp_cxx_canonical_template_parameter): Mark
883         English fragments for conditional translation with M_.
884         * decl.c (grokdeclarator): Translate identifiers to locale
885         character set for diagnostics.
886         * error.c (M_): Define.
887         (dump_template_bindings, dump_type, dump_aggr_type,
888         dump_type_prefix, dump_global_iord, dump_simple_decl, dump_decl,
889         dump_function_decl, dump_template_parms, dump_expr,
890         dump_binary_op, op_to_string, assop_to_string): Mark English
891         fragments for conditional translation with M_.
892         (type_as_string): Disable translation of identifiers.
893         (type_as_string_translate): New.
894         (expr_as_string): Disable translation of identifiers.
895         (decl_as_string): Disable translation of identifiers.
896         (decl_as_string_translate): New.
897         (lang_decl_name): Add parameter translate.
898         (args_to_string): Call type_as_string_translate.
899         (cp_print_error_function): Call cxx_printable_name_translate.
900         (print_instantiation_full_context,
901         print_instantiation_partial_context): Call
902         decl_as_string_translate.
903         * parser.c (cp_lexer_get_preprocessor_token): Use %qE for
904         identifier in diagnostic.
905         * tree.c (cxx_printable_name): Change to
906         cxx_printable_name_internal.  Add parameter translate.
907         (cxx_printable_name, cxx_printable_name_translate): New wrappers
908         round cxx_printable_name_internal.
909
910 2009-05-08  H.J. Lu  <hongjiu.lu@intel.com>
911
912         PR c/36892
913         * call.c (build_call_a): Updated warn_deprecated_use call.
914         (build_over_call): Likewise.
915         * decl.c (grokdeclarator): Likewise.
916         (grokparms): Likewise.
917         * semantics.c (finish_id_expression): Likewise.
918         * typeck.c (build_class_member_access_expr): Likewise.
919         (finish_class_member_access_expr): Likewise.
920
921 2009-05-06  Dodji Seketeli  <dodji@redhat.com>
922
923         PR c++/17395
924         * pt.c (tsubst_copy) <case PARM_DECL>: We don't want to tsubst the
925         whole list of PARM_DECLs, just the current one.
926
927 2009-05-05  Shujing Zhao  <pearly.zhao@oracle.com>
928
929         * cp-tree.h:
930         (opname_tab, assignop_tab, update_member_visibility, yyerror, yyhook,
931         mangle_compound_literal): Remove unused declarations.
932         (build_vfield_ref, cxx_print_statistics, clone_function_decl,
933         adjust_clone_args, maybe_push_cleanup_level, pushtag, make_anon_name,
934         pushdecl_top_level_maybe_friend, pushdecl_top_level_and_finish,
935         check_for_out_of_scope_variable, print_other_binding_stack,
936         maybe_push_decl, cxx_mark_addressable, force_target_expr,
937         build_target_expr_with_type, finish_case_label,
938         cxx_maybe_build_cleanup, begin_eh_spec_block, finish_eh_spec_block,
939         check_template_keyword, cxx_omp_predetermined_sharing,
940         cxx_omp_clause_default_ctor, cxx_omp_clause_copy_ctor,
941         cxx_omp_clause_assign_op, cxx_omp_clause_dtor, cxx_omp_finish_clause,
942         cxx_omp_privatize_by_reference): Rearrange the declarations line to
943         match the comment that indicates the .c file which the functions are
944         defined.
945         (cxx_print_xnode, cxx_print_decl, cxx_print_type,
946         cxx_print_identifier, cxx_print_error_function, pushdecl): Add comment.
947
948 2009-05-05  Nathan Sidwell  <nathan@codesourcery.com>
949
950         * typeck.c (cp_build_compound_expr): Require RHS to have a known
951         type.
952         * class.c (resolve_address_of_overloaded_function): Use
953         OVL_CURRENT for error message.
954         (instantiate_type): Forbid COMPOUND_EXPRs and remove code dealing
955         with them.  Do not copy the node.
956
957 2009-05-05  Jakub Jelinek  <jakub@redhat.com>
958
959         PR c++/40013
960         * pt.c (tsubst): If magic NOP_EXPR with side-effects has no type,
961         set it from its operand's type after tsubst_expr.
962
963 2009-05-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
964
965         PR c++/28152
966         * parser.c (cp_lexer_get_preprocessor_token):  Do not store the
967         canonical spelling for keywords.
968         (cp_parser_attribute_list): Use the canonical spelling for
969         keywords in attributes.
970
971 2009-05-01  Joseph Myers  <joseph@codesourcery.com>
972
973         * cxx-pretty-print.c (is_destructor_name, pp_cxx_unqualified_id,
974         pp_cxx_template_keyword_if_needed, pp_cxx_postfix_expression,
975         pp_cxx_new_expression, pp_cxx_delete_expression,
976         pp_cxx_unary_expression, pp_cxx_assignment_operator,
977         pp_cxx_assignment_expression, pp_cxx_expression,
978         pp_cxx_function_specifier, pp_cxx_decl_specifier_seq,
979         pp_cxx_simple_type_specifier, pp_cxx_type_specifier_seq,
980         pp_cxx_exception_specification, pp_cxx_direct_declarator,
981         pp_cxx_ctor_initializer, pp_cxx_type_id, pp_cxx_statement,
982         pp_cxx_namespace_alias_definition, pp_cxx_template_parameter,
983         pp_cxx_canonical_template_parameter, pp_cxx_template_declaration,
984         pp_cxx_declaration, pp_cxx_typeid_expression,
985         pp_cxx_va_arg_expression, pp_cxx_offsetof_expression,
986         pp_cxx_trait_expression): Mostly use pp_string and
987         pp_cxx_ws_string in place of pp_identifier and pp_cxx_identifier
988         for non-identifiers.  Mark English strings for translation.
989         * cxx-pretty-print.h (pp_cxx_ws_string): Define.
990         * error.c (dump_template_parameter, dump_template_bindings,
991         dump_type, dump_aggr_type, dump_type_prefix, dump_simple_decl,
992         dump_decl, dump_template_decl, dump_function_decl,
993         dump_parameters, dump_exception_spec, dump_template_parms,
994         dump_expr, dump_binary_op, dump_unary_op, op_to_string,
995         assop_to_string, args_to_string, cp_print_error_function,
996         print_instantiation_full_context,
997         print_instantiation_partial_context): Mostly use pp_string and
998         pp_cxx_ws_string in place of pp_identifier and pp_cxx_identifier
999         for non-identifiers.  Mark English strings for translation.
1000         (dump_global_iord): Mark strings for translation; use longer
1001         strings instead of substituting single words.
1002         (function_category): Return a format string marked for
1003         translation, not a single word or phrase to substitute in a longer
1004         phrase.
1005
1006 2009-04-28  Ben Elliston  <bje@au.ibm.com>
1007
1008         PR c++/35652
1009         Revert:
1010
1011         2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1012
1013         * typeck.c (cp_pointer_sum): Adjust call to pointer_int_sum.
1014
1015 2009-04-27  Ian Lance Taylor  <iant@google.com>
1016
1017         * semantics.c (finish_omp_clauses): Change type of c_kind to enum
1018         omp_clause_code.
1019
1020 2009-04-27  Jakub Jelinek  <jakub@redhat.com>
1021
1022         PR c++/39875
1023         * cvt.c (convert_to_void) <case INDIRECT_REF>: Only warn about
1024         -Wunused-value if implicit.
1025
1026 2009-04-24  Ian Lance Taylor  <iant@google.com>
1027
1028         * call.c (build_temp): Change 0 to enum constant.
1029         * cp-tree.h (cp_lvalue_kind): Typedef to int rather than enum
1030         type.
1031         * cp-gimplify.c (cp_gimplify_expr): Add cast to enum type.
1032         * decl2.c (constrain_visibility): Likewise.
1033         * parser.c (cp_lexer_get_preprocessor_token): Likewise.
1034         (cp_parser_flags): Typedef to int rather than enum type.
1035         (cp_parser_expression_stack_entry): Change prec field to enum
1036         cp_parser_prec.
1037
1038         * typeck.c (build_modify_expr): Add lhs_origtype parameter.
1039         Change all callers.
1040
1041 2009-04-22  Dodji Seketeli  <dodji@redhat.com>
1042
1043         PR c++/39639
1044         * parser.c (cp_parser_template_argument_list): Display an error
1045         when an ellipsis is not preceded by a parameter pack. Also, warn
1046         about variadic templates usage without -std=c++0x.
1047
1048 2009-04-21  Taras Glek <tglek@mozilla.com>
1049
1050         * cp-tree.h: Update GTY annotations to new syntax.
1051         * decl.c: Likewise.
1052         * mangle.c: Likewise.
1053         * name-lookup.c: Likewise.
1054         * name-lookup.h: Likewise.
1055         * parser.c: Likewise.
1056         * pt.c: Likewise.
1057         * rtti.c: Likewise.
1058         * semantics.c: Likewise.
1059         * typeck2.c: Likewise.
1060
1061 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1062
1063         PR c++/14875
1064         * parser.c (cp_parser_error): Pass token->flags to c_parse_error.
1065
1066 2009-04-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1067
1068         PR c++/35711
1069         * typeck.c (check_for_casting_away_constness): We diagnose casting
1070         away any qualifiers not just constness.
1071         (casts_away_constness): Mention that it handles more than just
1072         constness.
1073         
1074 2009-04-21  Joseph Myers  <joseph@codesourcery.com>
1075
1076         * ChangeLog, ChangeLog-1993, ChangeLog-1994, ChangeLog-1995,
1077         ChangeLog-1996, ChangeLog-1997, ChangeLog-1998, ChangeLog-1999,
1078         ChangeLog-2000, ChangeLog-2001, ChangeLog-2002, ChangeLog-2003,
1079         ChangeLog-2004, ChangeLog-2005, ChangeLog-2006, ChangeLog-2007,
1080         ChangeLog-2008, ChangeLog.ptr, ChangeLog.tree-ssa, NEWS,
1081         cfns.gperf: Add copyright and license notices.
1082         * cfns.h: Regenerate.
1083         * ChangeLog, ChangeLog-2004: Correct dates.
1084
1085 2009-04-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1086
1087         PR 16202
1088         * tree.c (lvalue_p_1): Use const_tree.
1089         Use CONST_CAST_TREE to avoid warning.
1090         (lvalue_p): Returns bool, receives const_tree.
1091
1092 2009-04-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1093
1094         PR c++/13358
1095         * parser.c (cp_parser_check_decl_spec): Drop redundant flags.
1096         * error.c (pedwarn_cxx98): New.
1097         * cp-tree.h (pedwarn_cxx98): Declare.
1098
1099 2009-04-20  Le-Chun Wu  <lcwu@google.com>
1100
1101         PR c++/39803
1102         * init.c (build_vec_init): Set TREE_NO_WARNING on the
1103         compiler-generated INDIRECT_REF expression.
1104
1105 2009-04-20  Ian Lance Taylor  <iant@google.com>
1106
1107         * typeck.c (build_function_call_vec): New function.
1108         (cp_build_function_call): Only pass first parameter to
1109         objc_rewrite_function_call.
1110         (build_modify_expr): Add rhs_origtype parameter.  Change all
1111         callers.
1112         * decl.c (finish_decl): Add origtype parameter.  Change all
1113         callers.
1114         * semantics.c (finish_call_expr): Pass VEC to
1115         resolve_overloaded_builtin.
1116
1117 2009-04-20  Ian Lance Taylor  <iant@google.com>
1118
1119         * cp-tree.h (base_access): Change typedef to int.
1120         * parser.c (cp_parser_omp_flush): Change 0 to OMP_CLAUSE_ERROR.
1121         (cp_parser_omp_threadprivate): Likewise.
1122         * pt.c (unify_pack_expansion): Add casts to enum type.
1123
1124 2009-04-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1125
1126         PR c/32061
1127         PR c++/36954
1128         * call.c (build_new_op): Save the original codes of operands
1129         before folding.
1130
1131 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
1132
1133         * cp-tree.h: Remove the prototype for insert_block.
1134         * decl.c (insert_block): Remove.
1135
1136 2009-04-16  Ian Lance Taylor  <iant@google.com>
1137
1138         * cp-tree.h (enum tsubst_flags): Rename from enum tsubst_flags_t.
1139         (tsubst_flags_t): Change typedef from enum type to int.
1140
1141 2009-04-16  Paolo Bonzini  <bonzini@gnu.org>
1142
1143         * decl.c (check_initializer): Use TYPE_VECTOR_OPAQUE
1144         instead of targetm.vector_opaque_p.
1145
1146 2009-04-15  Le-Chun Wu  <lcwu@google.com>
1147
1148         PR c++/39551
1149         * call.c (build_over_call): Set TREE_NO_WARNING on the
1150         compiler-generated INDIRECT_REF expression.
1151         * cvt.c (convert_to_void): Emit warning when stripping off
1152         INDIRECT_REF.
1153
1154 2009-04-14  Diego Novillo  <dnovillo@google.com>
1155
1156         * parser.c (cp_parser_type_specifier_seq): Move call to
1157         invoke_plugin_callbacks ...
1158         (cp_parser_type_specifier_seq): ... here.
1159
1160 2009-04-14  Le-Chun Wu  <lcwu@google.com>
1161
1162         * Make-lang.in: Modify dependencies of files including plugin.h.
1163         * decl.c (finish_function): Call invoke_plugin_callbacks.
1164         * parser.c (cp_parser_type_specifier): Call invoke_plugin_callbacks.
1165
1166 2009-04-14  Jason Merrill  <jason@redhat.com>
1167
1168         PR c++/39763
1169         * name-lookup.c (pushdecl_maybe_friend): Avoid all warnings
1170         about shadowing by tentative parms.
1171
1172 2009-04-13  Jason Merrill  <jason@redhat.com>
1173
1174         PR c++/39480
1175         * call.c (build_over_call): Don't call memcpy if the target is
1176         the same as the source.
1177
1178 2009-04-13  Jason Merrill  <jason@redhat.com>
1179
1180         PR c++/39750
1181         * pt.c (uses_template_parms): Handle CONSTRUCTOR.
1182
1183 2009-04-12  Jason Merrill  <jason@redhat.com>
1184
1185         PR c++/39742
1186         * call.c (joust): Don't crash on variadic fn.
1187
1188 2009-04-10  Jason Merrill  <jason@redhat.com>
1189
1190         PR c++/28301
1191         * parser.c (cp_parser_skip_to_end_of_block_or_statement): Return
1192         if we see a close brace without an open brace.
1193
1194 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
1195
1196         * parser.c (cp_parser_class_specifier): Remove the unused
1197         has_trailing_semicolon.
1198
1199 2009-04-10  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1200
1201         PR  c++/20118
1202         * parser.c (cp_parser_check_template_parameters): Take a
1203         cp_declarator parameter.
1204         (cp_parser_elaborated_type_specifier): Update to
1205         cp_parser_check_template_parameters.
1206         (cp_parser_class_head): Likewise.
1207         (cp_parser_check_declarator_template_parameters): Likewise.
1208         (cp_parser_check_template_parameters): Handle first the non-error
1209         conditions. Give more accurate diagnostics if a declarator is
1210         given. 
1211
1212 2009-04-08  Jason Merrill  <jason@redhat.com>
1213
1214         PR c++/25185
1215         * error.c (dump_aggr_type): Chase template typedefs if
1216         -fno-pretty-templates.
1217
1218 2009-04-08  Dodji Seketeli  <dodji@redhat.com>
1219
1220         PR c++/39637
1221         * parser.c (cp_parser_enumerator_definition): Make sure the
1222         initializer of the enumerator doesn't contain any bare parameter pack.
1223
1224 2009-04-07  Jason Merrill  <jason@redhat.com>
1225
1226         PR c++/34691
1227         * name-lookup.c (merge_functions): Keep multiple extern "C" functions.
1228         * call.c (joust): Complain about mismatched default arguments
1229         in extern "C" functions.
1230         * class.c (resolve_address_of_overloaded_function): Handle multiple
1231         extern "C" functions.
1232         * pt.c (resolve_overloaded_unification): Likewise.
1233
1234 2009-04-07  Jason Merrill  <jason@redhat.com>
1235
1236         PR c++/25185
1237         * error.c (dump_function_decl): Don't pretty-print templates
1238         if -fno-pretty-templates.
1239         (count_non_default_template_args): Print all args if
1240         -fno-pretty-templates.
1241
1242 2009-04-06  Jason Merrill  <jason@redhat.com>
1243
1244         PR c++/35146
1245         * pt.c (fn_type_unification): For DEDUCE_EXACT check that
1246         the deduced template arguments give us the parameter types
1247         we're looking for.
1248
1249 2009-04-05  Giovanni Bajo <giovannibajo@libero.it>
1250             Jason Merrill  <jason@redhat.com>
1251
1252         PR c++/14912
1253         * error.c (count_non_default_template_args): New fn.
1254         (dump_template_parms): Call it.
1255         (dump_template_argument_list): Call it.  Add parms parm.
1256         (dump_template_argument): Adjust call to dump_template_argument_list.
1257         (dump_type, dump_decl): Likewise.
1258         (dump_template_bindings): Refactor logic.
1259
1260 2009-04-03  Jason Merrill  <jason@redhat.com>
1261
1262         PR c++/25185
1263         * error.c (dump_template_bindings): Look through typedefs in
1264         typename results.
1265         (dump_type) [TYPENAME_TYPE]: Print the typedef name if any.
1266         (find_typenames_r): Also collect typedefs.
1267         * pt.c (unify): Strip typedefs.
1268
1269         PR c++/39608
1270         * semantics.c (finish_id_expression): Don't assume a dependent
1271         member of the current instantiation isn't a valid integral
1272         constant expression.  Check dependent_scope_p.
1273         * pt.c (dependent_scope_p): Check TYPE_P.
1274         (tsubst_copy): If args is null, just return.
1275
1276 2009-04-02  Jason Merrill  <jason@redhat.com>
1277
1278         PR c++/25185
1279         * error.c (find_typenames, find_typenames_r): New fns.
1280         (dump_function_decl): Call find_typenames.
1281         (dump_template_bindings): Print typenames as well.
1282         * pt.c (tsubst): Non-static.
1283         * cp-tree.h: Declare it.
1284
1285 2009-04-02  Dodji Seketeli  <dodji@redhat.com>
1286
1287         PR c++/26693
1288         * decl2.c (grokfield): when a typedef appears in a
1289         class, create the typedef variant type node for it.
1290         (save_template_attributes): Creating typedef variant type node
1291          here is now useless.
1292         * decl.c (grokdeclarator): If the typedef'ed struct/class was
1293         anonymous, set the proper type name to all its type variants.
1294         (xref_basetypes) : Fixup the variant types after setting
1295         TYPE_BINFO on REF.
1296         * name-lookup.c (pushdecl_maybe_friend): Reuse the
1297         set_underlying_type function to install typedef variant types.
1298         * cp-tree.h (MEMBER_TYPES_NEEDING_ACCESS_CHECK): New template accessor
1299         macro.
1300         (append_type_to_template_for_access_check): New entry points.
1301         * semantics.c (check_accessibility_of_qualified_id):
1302         When a typedef that is a member of a class appears in a template,
1303         add it to the template. It will be ...
1304         * class.c (finish_struct_bits): Split type variant fixup into ...
1305         (fixup_type_variants): A new entry point.
1306         * pt.c (instantiate_class_template, instantiate_template ): ... access
1307         checked at template instantiation time.
1308         (resolve_type_name_type): The type name should be the name of the
1309         main type variant.
1310         (retrieve_specialization): Specializations of template typedefs aren't
1311         to looked up in DECL_TEMPLATE_INSTANTIATIONS (tmpl).
1312         (append_type_to_template_for_access_check): New entry point.
1313         (tsubst_decl): For typedefs, build the variant type from the correct
1314         original type.
1315         (get_class_bindings): Fix function comment.
1316         (perform_typedefs_access_check): New entry point.
1317
1318 2009-03-31  Jason Merrill  <jason@redhat.com>
1319
1320         PR c++/34691
1321         * name-lookup.c (pushdecl_maybe_friend): Diagnose mismatched
1322         extern "C" declarations.
1323
1324         C++ DR 613
1325         * semantics.c (finish_non_static_data_member): Allow such references
1326         without an associated object in sizeof/decltype/alignof.
1327
1328         * ptree.c (cxx_print_decl): Pretty-print full name of
1329         function/template.
1330         (cxx_print_type): Pretty-print full name of class.
1331
1332         * decl.c (grokdeclarator): Reject pointer to qualified function
1333         type.
1334
1335         PR c++/37806, core issue 547
1336         * typeck.c (cp_apply_type_quals_to_decl): Don't apply any quals
1337         to a typedef.
1338         * tree.c (cp_build_qualified_type_real): Don't apply restrict to a 
1339         function type.
1340         * decl.h (enum decl_context): Add TEMPLATE_TYPE_ARG.
1341         * decl.c (groktypename): Add is_template_arg parameter.
1342         (grokdeclarator): Allow function cv-quals on a template type arg.
1343         * parser.c (cp_parser_new_type_id, cp_parser_type_id): Add
1344         is_template_arg argument in calls to groktypename.
1345         * cp-tree.h: Adjust prototype.
1346         * error.c (dump_type_prefix, dump_type_suffix): Fix plain 
1347         FUNCTION_TYPE printing.
1348         
1349         * mangle.c (write_expression): Mangle dependent name as
1350         source-name.
1351
1352         PR c++/38030, 38850, 39070
1353         * pt.c (type_dependent_expression_p_push): New fn.
1354         (tsubst_copy_and_build) [CALL_EXPR]: Only do arg-dep lookup when the
1355         substitution makes the call non-dependent.  Preserve koenig_p.
1356         * parser.c (cp_parser_postfix_expression): Only do arg-dep lookup
1357         for non-dependent calls.
1358         * semantics.c (finish_call_expr): Revert earlier changes.
1359         * cp-tree.h: Revert change to finish_call_expr prototype.
1360
1361 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
1362
1363         PR preprocessor/34695
1364         * cp-tree.h (cp_cpp_error): Remove.
1365         * error.c (cp_cpp_error): Remove.
1366         * parser.c (cp_lexer_new_main): Set done_lexing instead of
1367         client_diagnostic and error callback.
1368
1369 2009-03-28  Paolo Bonzini  <bonzini@gnu.org>
1370
1371         * cp/cp-objcp-common.h (LANG_HOOKS_STATICP): Remove.
1372         * cp/cp-objcp-common.c (cxx_staticp): Remove.
1373         * cp/cp-tree.h (cxx_staticp): Remove.
1374
1375 2009-03-28  Jakub Jelinek  <jakub@redhat.com>
1376
1377         PR c++/39554
1378         * parser.c (cp_parser_postfix_expression): Don't call
1379         warning_if_disallowed_function_p.
1380
1381 2009-03-27  Jan Hubicka  <jh@suse.cz>
1382
1383         * except.c (choose_personality_routine): Set terminate_node to abort
1384         for java exceptions.
1385
1386 2009-03-27  Dodji Seketeli  <dodji@redhat.com>
1387             Jakub Jelinek  <jakub@redhat.com>
1388
1389         PR debug/37959
1390         * cp-objcp-common.h (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Define.
1391         (cp_function_decl_explicit_p): New prototype.
1392         * cp-objcp-common.c (cp_function_decl_explicit_p): New function.
1393
1394 2009-03-27  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1395
1396         PR c++/38638
1397         * parser.c (cp_parser_elaborated_type_specifier): If we have a
1398         typename tag and don't have either a TYPE_DECL or a
1399         TEMPLATE_ID_EXPR, set the type to NULL.
1400
1401 2009-03-27  Simon Martin  <simartin@users.sourceforge.net>
1402
1403         PR c++/37647
1404         * decl.c (grokdeclarator): Reject [con|de]stuctors in a non-class
1405         scope.
1406
1407 2009-03-27  Simon Martin  <simartin@users.sourceforge.net>
1408
1409         PR c++/29727
1410         * decl.c (check_array_designated_initializer): Handle error_mark_node.
1411
1412 2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1413
1414         PR c++/35652
1415         * typeck.c (cp_pointer_sum): Adjust call to pointer_int_sum.
1416
1417 2009-03-26  Andrew Haley  <aph@redhat.com>
1418
1419         PR C++/39380
1420         * decl2.c (possibly_inlined_p): If java exceptions are in use
1421         don't inline a decl unless it is explicitly marked inline.
1422         * lex.c: (pragma_java_exceptions): New variable.
1423         (handle_pragma_java_exceptions): Set pragma_java_exceptions.
1424         * cp-tree.h (pragma_java_exceptions): Declare new variable.
1425
1426 2009-03-24  Jason Merrill  <jason@redhat.com>
1427
1428         PR c++/28274
1429         * name-lookup.c (pushdecl_maybe_friend): Check default args later.
1430
1431 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
1432
1433         PR c/39495
1434         * semantics.c (handle_omp_for_class_iterator): Swap cond operands and
1435         code if iter is the second operand.
1436         * parser.c (cp_parser_binary_expression): Add no_toplevel_fold_p
1437         argument.  If it is set, don't build the toplevel expression with
1438         build_x_binary_op, but build2.
1439         (cp_parser_assignment_expression,  cp_parser_omp_for_incr): Adjust
1440         callers.
1441         (cp_parser_omp_for_cond): Don't assume the first operand of the
1442         comparison must be decl.
1443
1444 2009-03-23  Jason Merrill  <jason@redhat.com>
1445
1446         PR c++/37729
1447         * pt.c (make_fnparm_pack): Split out from...
1448         (instantiate_decl): ...here.
1449         (tsubst_pack_expansion): Handle being called in a late-specified
1450         return type.
1451
1452         PR c++/39526
1453         * name-lookup.c (pushdecl_maybe_friend): Don't warn about shadowing
1454         a parm with a parm.
1455
1456 2009-03-20  Jason Merrill  <jason@redhat.com>
1457
1458         PR c++/28879
1459         * parser.c (cp_parser_direct_declarator): In a template, wrap 
1460         non-constant expression in NOP_EXPR with TREE_SIDE_EFFECTS set.
1461         * pt.c (tsubst): Preserve it in a partial instantiation.
1462         (dependent_type_p_r): Don't check value_dependent_expression_p.
1463         * decl.c (compute_array_index_type): Don't check
1464         value_dependent_expression_p if TREE_SIDE_EFFECTS.
1465
1466         C++ core issue 703
1467         * typeck2.c (check_narrowing): Don't complain about loss of 
1468         precision when converting a floating-point constant.
1469
1470 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
1471
1472         PR c/39495
1473         * parser.c (cp_parser_omp_for_cond): Don't check lhs if decl is NULL.
1474         (cp_parser_omp_for_loop): Always use cp_parser_omp_for_cond.
1475
1476 2009-03-18  Jakub Jelinek  <jakub@redhat.com>
1477
1478         * parser.c (struct cp_token): Reorder fields for 64-bit hosts.
1479         (eof_token): Adjust.
1480
1481 2009-03-18  H.J. Lu  <hongjiu.lu@intel.com>
1482
1483         PR c++/39425
1484         * parser.c (cp_parser_explicit_specialization): Don't skip the
1485         rest of the specialization when begin_specialization returns
1486         false.
1487
1488 2009-03-17  Jason Merrill  <jason@redhat.com>
1489
1490         * decl.c (grokfndecl): Set DECL_CONTEXT on parms.
1491         (duplicate_decls): Adjust DECL_CONTEXT of newdecl's parms.
1492         * pt.c (check_explicit_specialization): Likewise.
1493         (tsubst_copy) [PARM_DECL]: Return a dummy parm if we don't have a
1494         local specialization.
1495         * tree.c (cp_tree_equal) [PARM_DECL]: Check type and index, not name.
1496         * decl2.c (parm_index): New fn.
1497         * semantics.c (finish_decltype_type): Don't use describable_type.
1498         * mangle.c (write_expression): Likewise.  Mangle ALIGNOF_EXPR.
1499         Give a sorry for unsupported codes rather than crash.  Mangle
1500         conversions with other than 1 operand.  New mangling for PARM_DECL.
1501         * operators.def (ALIGNOF_EXPR): Mangle as "az".
1502
1503 2009-03-17  Jing Yu  <jingyu@google.com>
1504
1505         PR middle-end/39378
1506         * method.c (use_thunk): Change is_thunk from crtl to cfun.
1507
1508 2009-03-17  Paolo Carlini  <paolo.carlini@oracle.com>
1509
1510         PR c++/39475
1511         * semantics.c (check_trait_type): New.
1512         (finish_trait_expr): Use it.
1513
1514 2009-03-17  Jakub Jelinek  <jakub@redhat.com>
1515
1516         * name-lookup.c (cp_emit_debug_info_for_using): Emit USING_STMTs
1517         instead of calling imported_module_or_decl debug hook if
1518         building_stmt_tree ().
1519         * cp-gimplify.c (cp_gimplify_expr): Don't assert the first operand
1520         is a NAMESPACE_DECL.
1521
1522         PR debug/37890
1523         * name-lookup.c (do_namespace_alias): Don't call global_decl debug
1524         hook at function scope.
1525
1526         PR debug/39471
1527         * cp-gimplify.c (cp_gimplify_expr): Don't set DECL_NAME
1528         on IMPORTED_DECL.
1529
1530 2009-03-09  Jakub Jelinek  <jakub@redhat.com>
1531
1532         PR c++/39371
1533         * semantics.c (finish_switch_cond): Don't call get_unwidened.
1534         * decl.c (finish_case_label): Pass SWITCH_STMT_TYPE as 3rd argument
1535         instead of TREE_TYPE (cond).
1536
1537 2009-03-08  H.J. Lu  <hongjiu.lu@intel.com>
1538
1539         PR c++/39060
1540         * parser.c (cp_parser_late_parsing_default_args): Continue
1541         the loop when cp_parser_assignment_expression returns
1542         error_mark_node.
1543
1544 2009-03-07  Jason Merrill  <jason@redhat.com>
1545
1546         PR c++/39367
1547         * init.c (build_new_1): Don't use a VLA type.
1548         (build_vec_init): Handle getting a pointer for BASE.
1549
1550 2009-03-06  H.J. Lu  <hongjiu.lu@intel.com>
1551
1552         PR c++/37520
1553         * cp-tree.h: Check NO_DOT_IN_LABEL before NO_DOLLAR_IN_LABEL
1554         when mangling symbols.
1555
1556 2009-03-06  Paolo Carlini  <paolo.carlini@oracle.com>
1557
1558         PR c++/33492
1559         * error.c (dump_expr): Don't try to print THROW_EXPRs in full.
1560
1561 2009-03-06  Alexandre Oliva  <aoliva@redhat.com>
1562
1563         * decl.c (record_builtin_java_type): Use canonicalized integer
1564         types.
1565
1566 2009-03-04  Jason Merrill  <jason@redhat.com>
1567
1568         PR c++/38908
1569         * class.c (is_really_empty_class): New fn.
1570         * cp-tree.h: Declare it.
1571         * cp-objcp-common.c (cp_expr_size): Use it.
1572
1573         PR c++/13549
1574         * semantics.c (perform_koenig_lookup): Handle TEMPLATE_ID_EXPR.
1575         * parser.c (cp_parser_postfix_expression): Call it for 
1576         TEMPLATE_ID_EXPR.
1577         * tree.c (is_overloaded_fn): Look through TEMPLATE_ID_EXPR.
1578         (get_first_fn): Likewise.
1579
1580         PR c++/9634
1581         PR c++/29469
1582         PR c++/29607
1583         Implement DR 224.
1584         * decl.c (make_typename_type): Do look inside currently open classes.
1585         * parser.c (cp_parser_lookup_name): Likewise.
1586         (cp_parser_template_name): Likewise.
1587         * pt.c (dependent_scope_p): New function.
1588         * cp-tree.h: Declare it.
1589         * class.c (currently_open_class): Return fast if T isn't a class.
1590
1591 2009-02-26  H.J. Lu  <hongjiu.lu@intel.com>
1592
1593         PR c++/37789
1594         * parser.c (cp_parser_mem_initializer): Return error_mark_node
1595         if cp_parser_mem_initializer_id returns error_mark_node.
1596
1597 2009-02-24  Richard Guenther  <rguenther@suse.de>
1598
1599         PR c++/39242
1600         * pt.c (instantiate_decl): Do not instantiate extern, non-inline
1601         declared functions.
1602
1603 2009-02-23  H.J. Lu  <hongjiu.lu@intel.com>
1604
1605         PR c++/36411
1606         * pt.c (coerce_template_template_parms): Return 0 if parameter
1607         is error_mark_node.
1608
1609 2009-02-23  Jason Merrill  <jason@redhat.com>
1610
1611         * pt.c (unify): Call maybe_adjust_types_for_deduction when
1612         deducing from an initializer list.
1613
1614 2009-02-20  Jason Merrill  <jason@redhat.com>
1615
1616         PR c++/39225
1617         * decl.c (grokdeclarator): Handle ~identifier.
1618
1619 2009-02-19  Jakub Jelinek  <jakub@redhat.com>
1620
1621         PR target/39175
1622         * decl2.c (determine_visibility): If visibility changed and
1623         DECL_RTL has been already set, call make_decl_rtl to update symbol
1624         flags.
1625
1626 2009-02-19  H.J. Lu  <hongjiu.lu@intel.com>
1627
1628         PR c++/39188
1629         * cp-tree.h (maybe_commonize_var): New.
1630
1631         * decl.c (maybe_commonize_var): Make it extern.
1632
1633         * decl2.c (finish_anon_union): Call maybe_commonize_var.
1634
1635 2009-02-18  H.J. Lu  <hongjiu.lu@intel.com>
1636
1637         PR c++/39219
1638         * parser.c (cp_parser_enum_specifier): Apply all attributes.
1639
1640 2009-02-18  Jason Merrill  <jason@redhat.com>
1641
1642         * cfns.h: Tweak pathname for cfns.gperf.
1643
1644 2009-02-13  Jason Merrill  <jason@redhat.com>
1645
1646         PR c++/39070
1647         * semantics.c (finish_call_expr): Change koenig_p parm to int.
1648         If -1, don't set KOENIG_LOOKUP_P but do keep hidden candidates.
1649         * cp-tree.h: Adjust prototype.
1650         * pt.c (tsubst_copy_and_build) [CALL_EXPR]: Pass -1.
1651
1652 2009-02-12  Jason Merrill  <jason@redhat.com>
1653
1654         PR c++/38950
1655         * pt.c (unify)[TEMPLATE_PARM_INDEX]: Convert to the tsubsted type.
1656
1657 2009-02-11  Jason Merrill  <jason@redhat.com>
1658
1659         PR c++/39153
1660         * decl2.c (cp_write_global_declarations): 
1661         Check DECL_DEFAULTED_FN, not DECL_ARTIFICIAL.
1662
1663         PR c++/30111
1664         * init.c (build_value_init_noctor): Split out from...
1665         (build_value_init): ...here.
1666         (expand_aggr_init_1): Handle value-initialization.
1667         * cp-tree.h: Add declaration.
1668         * class.c (type_has_user_provided_constructor): 
1669         Handle non-class arguments.
1670
1671 2009-02-10  Jason Merrill  <jason@redhat.com>
1672
1673         PR c++/38649
1674         * class.c (defaultable_fn_p): Handle ... properly.
1675
1676         PR c++/36744
1677         * tree.c (lvalue_p_1): Condition rvalue ref handling on
1678         treat_class_rvalues_as_lvalues, too.
1679
1680 2009-02-10  Paolo Carlini  <paolo.carlini@oracle.com>
1681
1682         PR c++/34397
1683         * typeck.c (build_x_array_ref): New.
1684         * cp-tree.h: Declare it.
1685         * pt.c (tsubst_copy_and_build): Use it for case ARRAY_REF.
1686
1687 2009-02-09  Jason Merrill  <jason@redhat.com>
1688
1689         PR c++/39109
1690         * semantics.c (simplify_aggr_init_expr): Do zero-initialization here.
1691         * init.c (build_value_init): Not here. Don't build a TARGET_EXPR.
1692         * tree.c (get_target_expr): Handle AGGR_INIT_EXPR.
1693         * cp-gimplify.c (cp_gimplify_init_expr): Remove special handling
1694         for build_value_init TARGET_EXPR.
1695         * cp-tree.h (AGGR_INIT_ZERO_FIRST): New macro.
1696
1697 2009-02-06  Paolo Carlini  <paolo.carlini@oracle.com>
1698
1699         PR c++/35147
1700         PR c++/37737
1701         * cp-tree.h (TMPL_ARGS_HAVE_MULTIPLE_LEVELS): Check TREE_VEC_LENGTH.
1702
1703 2009-02-04  Jakub Jelinek  <jakub@redhat.com>
1704
1705         PR c++/39095
1706         * operators.def: Use COMPONENT_REF code for ->/pt operator again,
1707         remove ./dt operator.
1708         * mangle.c (write_expression): Handle COMPONENT_REF after handling
1709         ADDR_EXPR, for COMPONENT_REF without ARROW_EXPR inside of it
1710         write_string ("dt") instead of using operators.def.
1711
1712 2009-02-03  Jason Merrill  <jason@redhat.com>
1713
1714         * typeck.c (cp_build_unary_op): Only complain about taking address
1715         of main if pedantic.
1716
1717 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
1718
1719         PR inline-asm/39059
1720         * parser.c (cp_parser_primary_expression): Reject FIXED_CSTs.
1721
1722         PR c++/39056
1723         * typeck2.c (digest_init_r): Don't call process_init_constructor
1724         for COMPLEX_TYPE.
1725
1726 2009-02-03  Paolo Bonzini  <bonzini@gnu.org>
1727
1728         PR c++/36897
1729         * pt.c (convert_nontype_argument_function): Expect expr to be an
1730         ADDR_EXPR.
1731
1732         PR c++/37314
1733         * typeck.c (merge_types): Call resolve_typename_type if only
1734         one type is a typename.
1735
1736 2009-02-02  Jason Merrill  <jason@redhat.com>
1737
1738         PR c++/39054
1739         * parser.c (cp_parser_unqualified_id): Don't wrap error_mark_node 
1740         in BIT_NOT_EXPR.
1741
1742 2009-02-01  Paolo Carlini  <paolo.carlini@oracle.com>
1743
1744         PR c++/39053
1745         * parser.c (cp_parser_pure_specifier): If there are no tokens left
1746         do not call cp_lexer_consume_token.
1747
1748 2009-01-30  Jakub Jelinek  <jakub@redhat.com>
1749
1750         PR c++/39028
1751         * parser.c (cp_parser_already_scoped_statement): Handle __label__
1752         declarations.
1753
1754 2009-01-30  Paolo Carlini  <paolo.carlini@oracle.com>
1755
1756         PR c++/33465
1757         * error.c (dump_expr): Handle FIX_TRUNC_EXPR and FLOAT_EXPR.
1758
1759 2009-01-30  Paolo Carlini  <paolo.carlini@oracle.com>
1760
1761         PR c++/38655
1762         * error.c (dump_type_prefix, dump_type_suffix): Handle FIXED_POINT_TYPE.
1763
1764 2009-01-29  Paolo Carlini  <paolo.carlini@oracle.com>
1765
1766         * typeck.c (invalid_nonstatic_memfn_p): Use
1767         DECL_NONSTATIC_MEMBER_FUNCTION_P.
1768
1769 2009-01-27  Paolo Carlini  <paolo.carlini@oracle.com>
1770
1771         PR c++/37554
1772         * call.c (build_over_call): If convert_for_arg_passing returns
1773         error_mark_node unconditionally return it.
1774
1775 2009-01-22  Adam Nemet  <anemet@caviumnetworks.com>
1776
1777         * class.c (check_field_decls): Also inherit packed for bitfields
1778         regardless of their type.
1779
1780 2009-01-22  Dodji Seketeli  <dodji@redhat.com>
1781
1782         PR c++/38930
1783         * decl2.c (grokfield): Reverting changes of PR c++/26693
1784         (save_template_attributes): Likewise.
1785         * decl.c (grokdeclarator): Likewise.
1786         * name-lookup.c (pushdecl_maybe_friend): Likewise.
1787         * cp-tree.h (MEMBER_TYPES_NEEDING_ACCESS_CHECK): Likewise.
1788         (append_type_to_template_for_access_check): Likewise.
1789         * semantics.c (check_accessibility_of_qualified_id): Likewise.
1790         * pt.c (instantiate_class_template, instantiate_template ): Likewise.
1791         (tsubst): Likewise.
1792         (resolve_type_name_type): Likewise.
1793         (append_type_to_template_for_access_check): Likewise.
1794
1795 2009-01-21  Dodji Seketeli  <dodji@redhat.com>
1796
1797         PR c++/26693
1798         * decl2.c (grokfield): when a typedef appears in a
1799         class, create the typedef variant type node for it.
1800         (save_template_attributes): Creating typedef variant type node
1801          here is now useless.
1802         * decl.c (grokdeclarator): If the typedef'ed struct/class was
1803         anonymous, set the proper type name to all its type variants.
1804         * name-lookup.c (pushdecl_maybe_friend): Reuse the
1805         set_underlying_type function to install typedef variant types.
1806         * cp-tree.h (MEMBER_TYPES_NEEDING_ACCESS_CHECK): New template accessor
1807         macro.
1808         (append_type_to_template_for_access_check): New entry points.
1809         * semantics.c (check_accessibility_of_qualified_id):
1810         When a typedef that is a member of a class appears in a template,
1811         add it to the template. It will be ...
1812         * pt.c (instantiate_class_template, instantiate_template ): ... access
1813         checked at template instantiation time.
1814         (tsubst): Handle the case of being called with NULL args.
1815         (resolve_type_name_type): The type name should be the name of the
1816         main type variant.
1817         (append_type_to_template_for_access_check): New entry point.
1818
1819 2009-01-19  Jason Merrill  <jason@redhat.com>
1820
1821         PR c++/23287
1822         * parser.c (cp_parser_unqualified_id): In a template,
1823         accept ~identifier.
1824         * typeck.c (lookup_destructor): Handle IDENTIFIER_NODE.
1825
1826 2009-01-16  Jason Merrill  <jason@redhat.com>
1827
1828         PR c++/38877
1829         * tree.c (lvalue_p_1): Allow non-fields in COMPONENT_REF.
1830         * init.c (build_new): Don't call describable_type unless we
1831         have an auto.
1832
1833         PR c++/29470
1834         * pt.c (tsubst_decl) [USING_DECL]: Propagate access flags.
1835
1836         PR c++/38579
1837         * search.c (protected_accessible_p): N doesn't vary.
1838
1839 2009-01-15  Jason Merrill  <jason@redhat.com>
1840
1841         PR c++/38850
1842         * pt.c (tsubst_copy_and_build): Tell finish_call_expr to
1843         accept hidden friends.
1844
1845 2009-01-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1846
1847         PR C++/29388
1848         * decl.c (grokdeclarator): Check for a non namespace/class context.
1849
1850 2009-01-15  Jason Merrill  <jason@redhat.com>
1851
1852         PR c++/36334
1853         PR c++/37646
1854         * tree.c (lvalue_p_1): Handle BASELINK.  A COMPONENT_REF to
1855         a function isn't necessarily an lvalue. Take tree, not const_tree.
1856         (lvalue_p, real_lvalue_p): Take tree, not const_tree.
1857         * typeck.c (lvalue_or_else): Likewise.
1858         * cp-tree.h: Adjust prototypes.
1859
1860 2009-01-15  Steve Ellcey  <sje@cup.hp.com>
1861
1862         PR c++/38357
1863         * pt.c (tsubst): Check for NULL args.
1864
1865 2009-01-15  Dodji Seketeli  <dodji@redhat.com>
1866
1867         PR c++/38636
1868         * name-lookup.c (pushtag): Don't create members to types that are not
1869         being created.
1870
1871 2009-01-14  Nick Clifton  <nickc@redhat.com>
1872
1873         PR c++/37862
1874         * parser.c: Pass cp_id_kind computed in
1875         cp_parser_postfix_dot_deref_expression to
1876         cp_parser_primary_expression.
1877
1878 2009-01-13  Jakub Jelinek  <jakub@redhat.com>
1879
1880         PR c++/38795
1881         * tree.c (cp_walk_subtrees): Handle REINTERPRET_CAST_EXPR,
1882         STATIC_CAST_EXPR, CONST_CAST_EXPR and DYNAMIC_CAST_EXPR the same
1883         as CAST_EXPR.
1884
1885 2009-01-12  Jason Merrill  <jason@redhat.com>
1886             Steve Ellcey  <sje@cup.hp.com>
1887
1888         PR c++/35109
1889         * name-lookup.c (lookup_name_real): Keep looking past a hidden 
1890         binding.
1891
1892 2009-01-12  Dodji Seketeli  <dodji@redhat.com>
1893
1894         PR c++/36019
1895         * pt.c (parameter_of_template_p): New function.
1896         * cp-tree.h: Declare it.
1897         * name-lookup.c (binding_to_template_parms_of_scope_p): New
1898         function.
1899         (outer_binding): Take template parameters in account when looking for
1900         a name binding.
1901
1902 2009-01-12  Jason Merrill  <jason@redhat.com>
1903
1904         PR c++/31488
1905         * tree.c (pod_type_p): Return 1 for structs created by the back end.
1906
1907 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
1908
1909         PR c/32041
1910         * parser.c (cp_parser_builtin_offsetof): Allow `->' in
1911         offsetof member-designator, handle it as `[0].'.
1912
1913         PR c++/38794
1914         * decl.c (start_function): If grokdeclarator hasn't returned
1915         FUNCTION_DECL nor error_mark_node, issue diagnostics.
1916
1917 2009-01-11  Jakub Jelinek  <jakub@redhat.com>
1918
1919         PR c++/36254
1920         * cp-gimplify.c (genericize_if_stmt): Renamed from ...
1921         (gimplify_if_stmt): ... this.
1922         (cp_gimplify_expr): Don't handle IF_STMT here.
1923         (cp_genericize_r): Call genericize_if_stmt for IF_STMT.
1924
1925 2009-01-10  Andrew Pinski  <pinskia@gmail.com>
1926
1927         PR c++/38648
1928         * typeck.c (cp_build_modify_expr): Check for NULL current_function_decl.
1929
1930         PR c++/36695
1931         * typeck2.c (build_functional_cast): Check for reference type and NULL
1932         PARMS.
1933
1934 2009-01-09  Steve Ellcey  <sje@cup.hp.com>
1935
1936         * typeck.c (cp_build_unary_op): Check for ERROR_MARK.
1937
1938 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
1939
1940         PR c++/35335
1941         * error.c (dump_expr): Handle EXPR_STMT like BIND_EXPR.
1942
1943 2009-01-09  John F. Carr  <jfc@mit.edu>
1944
1945         PR c++/37877
1946         * parser.c (cp_parser_class_specifier): Clear
1947         parser->in_unbraced_linkage_specification_p while parsing class
1948         specifiers.
1949
1950 2009-01-07  Jakub Jelinek  <jakub@redhat.com>
1951
1952         PR c++/38725
1953         * semantics.c (finish_goto_stmt): Convert destination to
1954         void *.
1955
1956 2009-01-06  Jason Merrill  <jason@redhat.com>
1957
1958         PR c++/35297
1959         PR c++/35477
1960         PR c++/35784
1961         PR c++/36846
1962         PR c++/38276
1963         * pt.c (check_default_tmpl_args): Don't complain about
1964         out-of-order parameter packs in the enclosing class
1965         or parameter packs after default args.
1966         (coerce_template_parms): If we have more than one
1967         parameter pack, don't flatten argument packs.
1968         (template_args_equal): Handle argument packs.
1969         (comp_template_args): Don't flatten argument packs.
1970         (check_instantiated_arg): Split out from...
1971         (check_instantiated_args): Here.  Handle arg packs.
1972         (convert_template_argument): Just check that nontype argument
1973         packs have the right type.
1974
1975 2009-01-05  Dodji Seketeli  <dodji@redhat.com>
1976
1977         PR c++/38472
1978         * typeck.c (type_after_usual_arithmetic_conversions): Fix a typo.
1979
1980 2009-01-05  Jason Merrill  <jason@redhat.com>
1981
1982         PR c++/38698
1983         * typeck2.c (process_init_constructor_union): Handle union with
1984         no fields.
1985
1986         * mangle.c (write_expression): Remove mangling for zero-operand
1987         casts.
1988
1989         PR c++/38701
1990         * decl.c (cp_finish_decl): Clear DECL_INITIAL for invalid
1991         defaulting.
1992
1993         PR c++/38702
1994         * class.c (defaultable_fn_p): Only operator== can be a copy
1995         assignment operator.
1996
1997 2009-01-02  Jason Merrill  <jason@redhat.com>
1998
1999         PR c++/38698
2000         * typeck2.c (process_init_constructor_union): Handle excess
2001         initializers.
2002         (process_init_constructor_record): Likewise.
2003
2004         PR c++/38684
2005         * typeck2.c (digest_init_r): Don't use process_init_constructor
2006         for non-aggregate classes.
2007
2008 \f
2009 Copyright (C) 2009 Free Software Foundation, Inc.
2010
2011 Copying and distribution of this file, with or without modification,
2012 are permitted in any medium without royalty provided the copyright
2013 notice and this notice are preserved.