OSDN Git Service

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