OSDN Git Service

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