OSDN Git Service

PR middle-end/45388
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
1 2010-12-13  Jan Hubicka  <jh@suse.cz>
2
3         PR middle-end/45388
4         * decl2.c (start_objects): Do not generate collect2 recognicable name
5         for static ctor.
6
7 2010-12-12  Paolo Carlini  <paolo.carlini@oracle.com>
8
9         PR c++/46901
10         * typeck.c (convert_for_assignment): Fix typo in warning message.
11
12 2010-12-10  Jakub Jelinek  <jakub@redhat.com>
13
14         PR c++/46001
15         * decl.c (record_builtin_java_type): Call build_distinct_type_copy
16         on build_nonstandard_integer_type result for __java_* types.
17
18 2010-12-10  Nathan Froyd  <froydnj@codesourcery.com>
19
20         * decl.c (grokmethod): Test DECL_CLASS_SCOPE_P.
21         * error.c (dump_decl): Test DECL_FILE_SCOPE_P.
22
23 2010-12-10  Nathan Froyd  <froydnj@codesourcery.com>
24
25         * cp-tree.h (readonly_error_kind): Delete.
26         (readonly_error): Rename to...
27         (cxx_readonly_error): ...this.  Change second argument to be an
28         enum lvalue_use.
29         * semantics.c (finish_asm_stmt): Call cxx_readonly_error.
30         * typeck.c (cp_build_unary_op): Likewise.
31         (cp_build_modify_expr): Likewise.
32         * typeck2.c (readonly_error): Rename to...
33         (cxx_readonly_error): ...this.  Delegate to readonly_error for
34         most cases.
35
36 2010-12-10  Nicola Pero  <nicola.pero@meta-innovation.com>
37
38         * parser.c (cp_parser_objc_superclass_or_category): Recognize
39         Objective-C 2.0 class extensions.  Added iface_p and
40         is_class_extension arguments.
41         (cp_parser_objc_class_interface): Updated call to
42         cp_parser_objc_superclass_or_category.
43         (cp_parser_objc_class_implementation): Same change.
44
45 2010-12-09  Nathan Froyd  <froydnj@codesourcery.com>
46
47         * call.c (print_conversion_rejection): Indent messages two spaces.
48
49 2010-12-09  Nathan Froyd  <froydnj@codesourcery.com>
50
51         * typeck.c (cp_build_indirect_ref): Call invalid_indirection_error.
52
53 2010-12-09  Nathan Froyd  <froydnj@codesourcery.com>
54
55         * typeck.c (composite_pointer_error): New function.
56         (composite_pointer_type_r, composite_pointer_type): Call it.
57
58 2010-12-08  Jason Merrill  <jason@redhat.com>
59
60         PR c++/46348
61         * semantics.c (cxx_eval_vec_init_1): Handle value-init.
62         (cxx_eval_vec_init): Pass value_init arg.
63
64 2010-12-08  Nathan Froyd  <froydnj@codesourcery.com>
65
66         PR c++/45329
67         * call.c (struct conversion): Document bad_p field.
68         (enum rejection_reason_code): Define.
69         (struct conversion_info): Define.
70         (struct rejection_reason): Define.
71         (struct z_candidate): Add `reason' field.
72         (add_candidate): Add `reason' parameter.  Store it in CAND.
73         (alloc_rejection, arity_rejection, arg_conversion_rejection):
74         New functions.
75         (bad_arg_conversion_rejection): New function.
76         (convert_class_to_reference): Add comment.
77         (remaining_arguments): New function.
78         (add_function_candidate): Record rejection reason and pass it to
79         add_candidate.
80         (add_conv_candidate, build_builtin_candidate): Likewise.
81         (add_template_candidate_real): Likewise.
82         (print_conversion_rejection): New function.
83         (print_z_candidate): Print CAND->REASON if it exists.  Adjust
84         diagnostic strings.
85         (print_z_candidates): Add location_t argument.  Adjust calling
86         sequence for print_z_candidate. Print header line directly.
87         (build_user_type_conversion_1): Add reason for rejection to
88         CAND.  Adjust call to print_z_candidates.
89         (print_error_for_call_failure): New function.
90         (build_new_function_call): Call it.  Adjust call to
91         print_z_candidates.
92         (build_operator_new_call): Likewise.
93         (build_op_call): Likewise.
94         (build_conditional_expr): Likewise.
95         (build_new_op): Likewise.
96         (build_new_method_call): Likewise.
97
98 2010-12-08  Jason Merrill  <jason@redhat.com>
99
100         PR c++/45822
101         * cp-tree.h (LOOKUP_DEFAULTED): New.
102         * call.c (add_function_candidate): Check it.
103         * method.c (synthesized_method_walk): Set it.
104         (do_build_copy_assign): Likewise.
105         * init.c (perform_member_init): Likewise.
106         (emit_mem_initializers): Likewise.
107
108         PR c++/46736
109         * decl.c (cp_finish_decl): Complain about an implicitly deleted
110         method defaulted outside the class.
111         * method.c (maybe_explain_implicit_delete): Don't check DECL_INITIAL.
112
113 2010-12-07  Joseph Myers  <joseph@codesourcery.com>
114
115         * rtti.c: Don't include assert.h.
116
117 2010-12-07  Nathan Froyd  <froydnj@codesourcery.com>
118
119         PR c++/45330
120         * cp-tree.h (suggest_alternatives_for, location_of): Declare.
121         * error.c (dump_expr): Handle TYPE_DECL.
122         (location_of): Unstaticize.
123         * name-lookup.c (suggest_alternatives_for): New function.
124         * lex.c (unqualified_name_lookup_error): Call it.
125
126 2010-12-06  Nicola Pero  <nicola.pero@meta-innovation.com>
127
128         * call.c: Include c-family/c-objc.h.
129         * decl.c: Same change.
130         * decl2.c: Same change.
131         * error.c: Same change.
132         * lex.c: Same change.
133         * parser.c: Same change.
134         * pt.c: Same change.
135         * semantics.c: Same change.
136         * typeck.c: Same change.
137         * Make-lang.in (cp/decl.o): Depend on c-family/c-objc.h.
138         (cp/decl2.o): Same change.
139         (cp/call.o): Same change.
140         (cp/error.o): Same change.
141         (cp/lex.o): Same change.
142         (cp/parser.o): Same change.
143         (cp/pt.o): Same change.
144         (cp/semantics.o): Same change.
145         (cp/typeck.o): Same change.
146         * config-lang.in (gtfiles): Added c-family/c-objc.h.
147
148 2010-12-03  Jason Merrill  <jason@redhat.com>
149
150         PR c++/46645
151         * semantics.c (build_data_member_initialization): Remove assert.
152
153         PR c++/46058
154         * tree.c (lvalue_kind) [SCOPE_REF]: Handle non-dependent case.
155
156 2010-12-03  Richard Guenther  <rguenther@suse.de>
157
158         PR c/46745
159         * error.c (dump_expr): Handle MEM_REF.
160
161 2010-12-03  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
162
163         * cp-tree.h (struct aggr_init_expr_arg_iterator_d): Remove GTY
164         tag.
165
166 2010-12-02  Nicola Pero  <nicola.pero@meta-innovation.com>
167
168         * parser.c (cp_parser_objc_throw_statement): Use
169         cp_parser_expression, not cp_parser_assignment_expression, to
170         parse the argument of a @throw.
171
172 2010-12-01  Joseph Myers  <joseph@codesourcery.com>
173
174         * cp-objcp-common.c, lex.c, typeck.c: Don't include toplev.h.
175         * Make-lang.in (cp/lex.o, cp/cp-objcp-common.o, cp/typeck2.o):
176         Update dependencies.
177
178 2010-11-30  Nicola Pero  <nicola.pero@meta-innovation.com>
179
180         * decl.c (finish_function): Call objc_finish_function when
181         compiling Objective-C++.
182         * call.c (standard_conversion): Do not call
183         objc_non_volatilized_type().
184         (implicit_conversion): Same change.
185         * typeck.c (comp_ptr_ttypes_real): Same change.
186
187 2010-11-30  Joseph Myers  <joseph@codesourcery.com>
188
189         * cp-gimplify.c, cp-lang.c, cvt.c, cxx-pretty-print.c, error.c,
190         except.c, expr.c, friend.c, init.c, mangle.c, name-lookup.c,
191         optimize.c, parser.c, rtti.c, tree.c, typeck2.c: Don't include
192         toplev.h.
193         * Make-lang.in: Dependencies for above files changed to remove
194         toplev.h.
195
196 2010-11-29  Dodji Seketeli  <dodji@redhat.com>
197
198         PR c++/42260
199         * call.c (add_builtin_candidate): At this point the resulting type
200         of an indirection operator should be complete.
201
202 2010-11-29  Dodji Seketeli  <dodji@redhat.com>
203
204         PR c++/45383
205         Reverted patch for PR c++/42260
206         * cp-tree.h (lookup_conversions): Reverted "Add new bool parameter to
207         declarationE."
208         * search.c (lookup_conversion): Reverted "Use new bool parameter in
209         definition".
210         * call.c (add_builtin_candidates): Reverted "Don't lookup template
211         conversion"
212         (convert_class_to_reference, build_user_type_conversion_1,
213          build_op_call): Reverted "Adjust".
214         * cvt.c (build_expr_type_conversion): Reverted "Likewise".
215
216 2010-11-29  Nicola Pero  <nicola.pero@meta-innovation.com>
217
218         * parser.c (cp_parser_objc_try_catch_finally_statement): Parse
219         @catch(...)  and pass NULL_TREE to objc_begin_catch_clause() in
220         that case.  Improved error recovery.  Reorganized code to be
221         almost identical to c_parser_objc_try_catch_finally_statement.
222
223 2010-11-27  Nicola Pero  <nicola.pero@meta-innovation.com>
224
225         PR objc++/46222
226         * decl.c (grokdeclarator): Replaced an assert (for a case that can
227         never happen in C++, but could happen in ObjC++ for invalid code)
228         with a check that prints an error message and returns
229         error_mark_node.
230
231 2010-11-23  Jeffrey Yasskin <jyasskin@google.com>
232
233         PR c++/46527
234         * pt.c (instantiate_decl): Propagate the template's location to
235         its instance.
236
237 2010-11-20  Joseph Myers  <joseph@codesourcery.com>
238
239         * name-lookup.c (handle_namespace_attrs): Don't check
240         HANDLE_PRAGMA_VISIBILITY.
241         * parser.c (cp_parser_namespace_definition): Don't check
242         HANDLE_PRAGMA_VISIBILITY.
243
244 2010-11-20  Nathan Froyd  <froydnj@codesourcery.com>
245
246         PR c++/16189
247         PR c++/36888
248         PR c++/45331
249         * parser.c (cp_lexer_set_token_position): New function.
250         (cp_lexer_previous_token_position): New function.
251         (cp_lexer_previous_token): Call it.
252         (cp_parser_class_specifier): Try to gracefully handle a missing
253         semicolon.
254
255 2010-11-20  Jakub Jelinek  <jakub@redhat.com>
256
257         PR c++/46538
258         * decl.c (cp_make_fname_decl): Return error_mark_node if
259         current_binding_level has already sk_function_parms kind.
260
261         PR c++/46526
262         * semantics.c (cxx_eval_call_expression): Unshare the result.
263
264 2010-11-19  Nicola Pero  <nicola.pero@meta-innovation.com>
265
266         * parser.c (cp_parser_objc_protocol_declaration): Pass attributes
267         to objc_declare_protocols.
268
269 2010-11-18  Nathan Froyd  <froydnj@codesourcery.com>
270
271         PR c/33193
272         * typeck.c (cp_build_unary_op): Call build_real_imag_expr for
273         REALPART_EXPR and IMAGPART_EXPR.
274
275 2010-11-16  Jason Merrill  <jason@redhat.com>
276
277         * call.c (convert_like_real): Don't make a temp for copy-list-init.
278         (build_over_call): Don't handle that here.
279         (build_new_method_call): Use COMPLETE_OR_OPEN_TYPE_P for error.
280
281         PR c++/46497
282         * call.c (build_over_call): Check for =delete even when trivial.
283
284         DR 1004
285         * decl.c (make_unbound_class_template): Handle using
286         injected-type-name as template.
287
288 2010-11-15  Nicola Pero  <nicola.pero@meta-innovation.com>
289
290         * typeck.c (cp_build_unary_op): Use
291         objc_build_incr_expr_for_property_ref to build the pre/post
292         increment/decrement of an Objective-C property ref.
293
294 2010-11-13  Jason Merrill  <jason@redhat.com>
295
296         * decl.c (cp_finish_decl): Use resolve_nondeduced_context for auto.
297         * init.c (build_new): Likewise.
298         * pt.c (tsubst_decl): Likewise.
299         (do_auto_deduction): Likewise.
300         (resolve_nondeduced_context): Use build_offset_ref and
301         cp_build_addr_expr.
302
303 2010-11-12  Joseph Myers  <joseph@codesourcery.com>
304
305         * Make-lang.in (g++spec.o): Use $(OPTS_H).
306
307 2010-11-13  Ville Voutilainen <ville.voutilainen@gmail.com> <ville.voutilainen@symbio.com>
308
309         Core 1135, 1136, 1145, 1149
310         * method.c (defaultable_fn_check): Do not disallow defaulting a
311         non-public or explicit special member function on its first
312         declaration.
313
314 2010-11-12  James Dennett <jdennett@google.com>
315
316         PR/39415
317         * typeck.c (build_static_cast_1): Convert to the target type
318         when doing static_cast<cv Derived*>(Base*).
319
320 2010-11-10  Jason Merrill  <jason@redhat.com>
321
322         PR c++/46420
323         * pt.c (tsubst_copy_and_build) [TARGET_EXPR]: New case.
324         [CONSTRUCTOR]: Use the tsubsted type.
325
326         PR c++/46369
327         * semantics.c (cxx_eval_bit_field_ref): New.
328         (cxx_eval_constant_expression): Call it.
329
330 2010-11-10  Joseph Myers  <joseph@codesourcery.com>
331
332         * cvt.c (cp_convert_to_pointer): Use %' in diagnostic.
333         * decl.c (layout_var_decl, maybe_commonize_var, grokdeclarator):
334         Use %' in diagnostics.
335         * decl2.c (check_classfn): Use %' in diagnostic.
336         * init.c (build_java_class_ref): Use %' in diagnostic.
337         (build_delete): Remove trailing '.' from diagnostic.
338         * method.c (do_build_copy_assign, walk_field_subobs): Use %' in
339         diagnostics.
340         * name-lookup.c (pushdecl_maybe_friend): Use %' in diagnostic.
341         * parser.c (cp_parser_exception_specification_opt): Remove
342         trailing '.' from diagnostic.
343         (cp_parser_objc_interstitial_code): Use %qs for quoting in
344         diagnostic.
345         * pt.c (check_valid_ptrmem_cst_expr): Use %< and %> for quoting in
346         diagnostic.
347         * repo.c (reopen_repo_file_for_write): Use %' in diagnostic.
348
349 2010-11-10  Nathan Froyd  <froydnj@codesourcery.com>
350
351         PR c++/46065
352         * decl.c (poplevel_named_label_1): Use TREE_CHAIN if necessary.
353
354 2010-11-09  Jakub Jelinek  <jakub@redhat.com>
355
356         PR c++/45894
357         * tree.c (lvalue_kind): Don't crash if ref has NULL type.
358
359 2010-11-08  Jason Merrill  <jason@redhat.com>
360
361         PR c++/46382
362         * semantics.c (check_constexpr_ctor_body): New fn.
363         * parser.c (cp_parser_ctor_initializer_opt_and_function_body): Call it.
364         * cp-tree.h: Declare it.
365
366         PR c++/46335
367         * tree.c (bot_manip): Check TREE_SIDE_EFFECTS as well.
368
369         Correct conversion/overflow behavior.
370         * cvt.c (ignore_overflows): Move here from typeck.c.
371         (ocp_convert): Use it.
372         (cp_fold_convert): Use it.  Don't call rvalue.
373         * typeck.c (build_static_cast_1): Don't use it.  Do call rvalue.
374         * error.c (location_of): Handle expressions, too.
375         * class.c (check_bitfield_decl): Set input_location around call to
376         cxx_constant_value.
377         * semantics.c (cxx_eval_outermost_constant_expr): Don't
378         print the expression if it already had TREE_OVERFLOW set.
379         (reduced_constant_expression_p): Check TREE_OVERFLOW_P for C++98, too.
380         (verify_constant): Allow overflow with a permerror if we're
381         enforcing.
382         (cxx_eval_outermost_constant_expr): Use verify_constant.
383         (adjust_temp_type): Use cp_fold_convert.
384         * decl.c (build_enumerator): Don't call constant_expression_warning.
385         * decl2.c (grokbitfield): Likewise.
386
387 2010-11-06  Jason Merrill  <jason@redhat.com>
388
389         PR c++/46348
390         * init.c (perform_member_init): Use build_vec_init_expr for
391         value-init of arrays, too.
392         * cp-gimplify.c (cp_gimplify_expr): Use VEC_INIT_EXPR_VALUE_INIT.
393         * cp-tree.h (VEC_INIT_EXPR_IS_CONSTEXPR): New macro.
394         (VEC_INIT_EXPR_VALUE_INIT): New macro.
395         * semantics.c (potential_constant_expression): No longer static.
396         Check VEC_INIT_EXPR_IS_CONSTEXPR.
397         * tree.c (build_vec_init_expr): Handle value-init.  Set
398         VEC_INIT_EXPR_IS_CONSTEXPR and VEC_INIT_EXPR_VALUE_INIT.
399
400 2010-11-06  Nathan Froyd  <froydnj@codesourcery.com>
401
402         PR c++/45332
403         * parser.c (cp_lexer_previous_token): New function.
404         (cp_parser_member_declaration): Use previous token for error
405         messages.  Assume semicolon presence rather than grovelling for
406         the next one.
407
408 2010-11-06  Joern Rennecke  <amylaar@spamcop.net>
409
410         PR middle-end/46314
411         * method.c (make_alias_for_thunk):
412         Use targetm.asm_out.generate_internal_label.
413
414 2010-11-05  Jason Merrill  <jason@redhat.com>
415
416         PR c++/45473
417         * search.c (look_for_overrides): A constructor is never virtual.
418
419 2010-11-05  Jakub Jelinek  <jakub@redhat.com>
420
421         PR c++/46160
422         * cp-gimplify.c (cp_gimplify_expr): Drop volatile MEM_REFs
423         on the RHS to avoid infinite recursion with gimplify_expr.
424
425 2010-11-05  Jason Merrill  <jason@redhat.com>
426
427         PR c++/46304
428         * pt.c (tsubst_copy): Handle COMPLEX_CST.
429
430 2010-11-04  Nicola Pero  <nicola.pero@meta-innovation.com>
431
432         Fixed using the Objective-C 2.0 dot-syntax with class names.
433         * parser.c (cp_parser_primary_expression): Recognize Objective-C
434         2.0 dot-syntax with class names and process it.
435         (cp_parser_nonclass_name): Recognize Objective-C 2.0 dot-syntax
436         with class names.
437         (cp_parser_class_name): Same change.
438         (cp_parser_simple_type_specifier): Tidied comments.
439
440 2010-11-04  Jason Merrill  <jason@redhat.com>
441
442         PR c++/46298
443         * semantics.c (build_constexpr_constructor_member_initializers):
444         Handle an enclosing STATEMENT_LIST.
445
446         * semantics.c (speculative_access_check): New.
447         * cp-tree.h: Declare it.
448         * call.c (build_over_call): Use it.
449         * class.c (type_has_constexpr_default_constructor): Use locate_ctor.
450         * method.c (locate_ctor): Use push/pop_deferring_access_checks.
451
452 2010-11-03  Jason Merrill  <jason@redhat.com>
453
454         PR c++/46293
455         * semantics.c (build_data_member_initialization): Handle
456         value-init of aggregate empty base.
457
458         PR c++/46289
459         * call.c (can_convert_array): New fn.
460         (build_aggr_conv): Use it.
461
462         PR c++/46289
463         * semantics.c (build_constexpr_constructor_member_initializers):
464         Avoid ICE on error.
465
466 2010-11-02  Dodji Seketeli  <dodji@redhat.com>
467
468         * cp-tree.h (enum tsubst_flags)<tf_no_class_instantiations>:
469         Remove.
470         * pt.c (tsubst): Remove the use of tf_no_class_instantiations.
471
472 2010-11-03  Jason Merrill  <jason@redhat.com>
473
474         PR c++/46277
475         * init.c (expand_default_init): Avoid ICE if we can't figure out
476         which function is being called.
477
478 2010-11-02  Nathan Froyd  <froydnj@codesourcery.com>
479
480         * class.c (build_base_path, add_vcall_offset): Use build_zero_cst
481         instead of fold_convert.
482         * init.c (build_zero_init): Likewise.
483         * typeck.c (cp_build_binary_op): Likewise.
484
485 2010-11-02  Dodji Seketeli  <dodji@redhat.com>
486
487         PR c++/46170
488         PR c++/46162
489         * pt.c (check_valid_ptrmem_cst_expr): Add a complain parameter to
490          control diagnostic.
491         (convert_nontype_argument, convert_nontype_argument): Pass the
492         complain parameter down to check_valid_ptrmem_cst_expr.
493
494 2010-11-02  Dodji Seketeli  <dodji@redhat.com>
495
496         PR c++/45606
497         * cp-tree.h (TEMPLATE_TYPE_PARM_SIBLING_PARMS): Remove.
498         (struct template_parm_index_s)<num_siblings>: New field.
499         (TEMPLATE_PARM_NUM_SIBLINGS): New accessor.
500         (process_template_parm): Extend the API to accept the number of
501         template parms in argument.
502         (cp_set_underlying_type): Remove this.
503         * class.c (build_self_reference): Require canonical type equality
504         back on the self reference of class.
505         * decl2.c (grokfield): Require canonical type equality back on
506         typedef class fields.
507         * name-lookup.c (pushdecl_maybe_friend): Require canonical type
508         equality back on typedefs.
509         * parser.c (cp_parser_template_parameter_list): Do not require
510         canonical type equality on dependent types created during template
511         parameters parsing.
512         * pt.c (fixup_template_type_parm_type, fixup_template_parm_index)
513         (fixup_template_parm, fixup_template_parms): New private
514         functions.
515         (current_template_args): Declare this.
516         (process_template_parm): Pass the total number of template parms
517         to canonical_type_parameter.
518         (build_template_parm_index): Add a new argument to carry the total
519         number of template parms.
520         (reduce_template_parm_level, process_template_parm, make_auto):
521         Adjust.
522         (current_template_args): Fix this for template template
523         parameters.
524         (tsubst_template_parm): Split out of ...
525         (tsubst_template_parms): ... this.
526         (reduce_template_parm_level): Don't loose
527         TEMPLATE_PARM_NUM_SIBLINGS when cloning a TEMPLATE_PARM_INDEX.
528         (template_parm_to_arg): Extracted this function from
529         current_template_args. Make it represent invalid template parms
530         with an error_mark_node instead of a LIST_TREE containing an
531         error_mark_node.
532         (current_template_args): Use template_parm_to_arg.
533         (dependent_template_arg_p): Consider an invalid template argument
534         as dependent.
535         (end_template_parm_list): Do not update template sibling parms
536         here anymore. Use fixup_template_parms instead.
537         (process_template_parm): Pass the number of template parms to
538         canonical_type_parameter.
539         (make_auto): Require structural equality on auto
540         TEMPLATE_TYPE_PARM for now.
541         (unify)<BOUND_TEMPLATE_TEMPLATE_PARM>: Coerce template parameters
542         using all the arguments deduced so far.
543         (tsubst)<TEMPLATE_TYPE_PARM>: Pass the number of sibling parms to
544         canonical_type_parameter.
545         * tree.c (cp_set_underlying_type): Remove.
546         * typeck.c (get_template_parms_of_dependent_type)
547         (incompatible_dependent_types_p): Remove.
548         (structural_comptypes): Do not call incompatible_dependent_types_p
549         anymore.
550         (comp_template_parms_position): Re-organized. Take the length of
551         template parms list in account.
552
553 2010-11-01  Jason Merrill  <jason@redhat.com>
554
555         * semantics.c (call_stack, call_stack_tick, cx_error_context): New.
556         (last_cx_error_tick, push_cx_call_context, pop_cx_call_context): New.
557         (cxx_eval_call_expression): Call push/pop_cx_call_context instead
558         of giving follow-on errors.
559         * error.c (maybe_print_constexpr_context): New.
560         (cp_diagnostic_starter): Call it.
561         * cp-tree.h: Declare cx_error_context.
562
563         * semantics.c (cxx_eval_constant_expression): Explain
564         unacceptable use of variable better.
565
566 2010-11-01  Gabriel Dos Reis  <gdr@cse.tamu.edu>
567             Jason Merrill  <jason@redhat.com>
568
569         * call.c (null_ptr_cst_p): Use maybe_constant_value.
570         (set_up_extended_ref_temp): Support constant initialization.
571         (initialize_reference): Adjust.
572         * class.c (check_bitfield_decl): Use cxx_constant_value.
573         * cvt.c (ocp_convert): Don't use integral_constant_value when
574         converting to class type.
575         * decl.c (finish_case_label): Use maybe_constant_value.
576         (build_init_list_var_init): Support constant initialization.
577         (check_initializer): Likewise.  Reorganize.
578         (cp_finish_decl): Likewise.
579         (expand_static_init): Likewise.
580         (compute_array_index_type): Use maybe_constant_value.
581         Add complain parm.
582         (create_array_type_for_decl, grokdeclarator): Pass it.
583         (build_enumerator): Use cxx_constant_value.
584         * decl2.c (grokfield): Use maybe_constant_init.
585         * except.c (check_noexcept_r): Handle constexpr.
586         (build_noexcept_spec): Use maybe_constant_value.
587         * init.c (expand_default_init): Support constant initialization.
588         (build_vec_init): Likewise.
589         (constant_value_1): Adjust.
590         (build_new_1): Adjust.
591         * parser.c (cp_parser_constant_expression): Allow non-integral
592         in C++0x mode.
593         (cp_parser_direct_declarator): Don't fold yet in C++0x mode.
594         (cp_parser_initializer_clause): Toss folded result if non-constant.
595         * pt.c (fold_decl_constant_value): Remove.
596         (convert_nontype_argument): Use maybe_constant_value.  Give clearer
597         error about overflow.
598         (tsubst): Move array bounds handling into compute_array_index_type.
599         (value_dependent_expression_p): Handle constant CALL_EXPR.
600         (tsubst_decl): Don't set
601         DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P yet.
602         (tsubst_expr) [DECL_EXPR]: Pass it into cp_finish_decl.
603         (instantiate_decl): Here too.
604         * semantics.c (finish_static_assert): Use maybe_constant_value.
605         (ensure_literal_type_for_constexpr_object): Make sure type is complete.
606         (potential_constant_expression): Use maybe_constant_value.
607         * tree.c (cast_valid_in_integral_constant_expression_p): Any cast
608         is potentially valid in C++0x.
609         * typeck2.c (store_init_value): Handle constant init.
610         (check_narrowing): Use maybe_constant_value.
611         (build_functional_cast): Set TREE_CONSTANT on literal T().
612         * cp-tree.h (DECL_INTEGRAL_CONSTANT_VAR_P): Remove.
613         (LOOKUP_ALREADY_DIGESTED): New.
614         (compute_array_index_type): Adjust prototype.
615
616         * semantics.c (constexpr_call): New datatype.
617         (constexpr_call_table): New global table.
618         (constexpr_call_hash): New.
619         (constexpr_call_equal): Likewise.
620         (maybe_initialize_constexpr_call_table): Likewise.
621         (lookup_parameter_binding): Likewise.
622         (cxx_eval_builtin_function_call): Likewise.
623         (cxx_bind_parameters_in_call): Likewise.
624         (cxx_eval_call_expression): Likewise.
625         (cxx_eval_unary_expression): Likewise.
626         (cxx_eval_binary_expression): Likewise.
627         (cxx_eval_conditional_expression): Likewise.
628         (cxx_eval_array_reference): Likewise.
629         (cxx_eval_component_reference): Likewise.
630         (cxx_eval_logical_expression): Likewise.
631         (cxx_eval_object_construction): Likewise.
632         (cxx_eval_constant_expression): Likewise.
633         (cxx_eval_indirect_ref): Likewise.
634         (cxx_constant_value): Likewise.
635         (cxx_eval_bare_aggregate): Likewise.
636         (adjust_temp_type): New.
637         (reduced_constant_expression_p): New.
638         (verify_constant): New.
639         (cxx_eval_vec_init, cxx_eval_vec_init_1): New.
640         (cxx_eval_outermost_constant_expr): New.
641         (maybe_constant_value, maybe_constant_init): New.
642         (cxx_eval_constant_expression): Use them.
643         * pt.c (iterative_hash_template_arg): No longer static.
644         * cp-tree.h: Declare fns.
645
646         * cp-tree.h (register_constexpr_fundef): Declare.
647         * decl.c (maybe_save_function_definition): New.
648         (finish_function): Use it.
649         * semantics.c (constexpr_fundef): New datatype.
650         (constexpr_fundef_table): New global table.
651         (constexpr_fundef_equal): New.
652         (constexpr_fundef_hash): Likewise.
653         (retrieve_constexpr_fundef): Likewise.
654         (validate_constexpr_fundecl): Store in the table.
655         (build_data_member_initialization): New fn.
656         (build_constexpr_constructor_member_initializers): New.
657         (register_constexpr_fundef): Define.
658         (is_this_parameter): New.
659         (get_function_named_in_call): Likewise.
660         (get_nth_callarg): Likewise.
661         (check_automatic_or_tls): New.
662         (morally_constexpr_builtin_function_p): New.
663         (potential_constant_expression): New.
664
665 2010-11-01  Jason Merrill  <jason@redhat.com>
666
667         * decl2.c (decl_constant_var_p): New fn.
668         (decl_maybe_constant_var_p): New fn.
669         (mark_used): Rework instantiation of things needed for constant
670         expressions.
671         * cp-tree.h: Declare new fns.
672         * pt.c (instantiate_decl): Handle cp_unevaluated_operand.
673         (always_instantiate_p): Use decl_maybe_constant_var_p.
674         (instantiate_decl): Don't defer constexpr functions.
675         * repo.c (repo_emit_p): Use decl_maybe_constant_var_p.
676         * semantics.c (finish_id_expression): Use decl_constant_var_p.
677         Check for valid name in constant expr after mark_used.
678
679 2010-10-31  Jason Merrill  <jason@redhat.com>
680
681         * class.c (is_really_empty_class): Work when type is not complete.
682         (synthesized_default_constructor_is_constexpr): New.
683         (add_implicitly_declared_members): Use it.
684         (type_has_constexpr_default_constructor): Likewise.
685         * cp-tree.h: Declare it.
686         * method.c (synthesized_method_walk): Use it.
687
688         * decl.c (pop_switch): Use EXPR_LOC_OR_HERE.
689         * typeck.c (convert_for_assignment): Likewise.
690
691         * parser.c (cp_parser_diagnose_invalid_type_name): Give helpful
692         message about constexpr without -std=c++0x.
693
694         * decl.c (grokdeclarator): Don't ICE on constexpr non-static data
695         member.
696
697 2010-10-30  Nathan Froyd  <froydnj@codesourcery.com>
698
699         * class.c (layout_vtable_decl): Call build_array_of_n_type.
700         (build_vtt, build_ctor_vtabl_group): Likewise.
701
702 2010-10-30  Nicola Pero  <nicola.pero@meta-innovation.com>
703
704         Implemented Objective-C 2.0 @property, @synthesize and @dynamic.
705         * parser.c (cp_parser_objc_at_property_declaration): Removed
706         parsing of RID_COPIES and RID_IVAR.  Updated call to
707         objc_add_property_declaration.
708         * typecheck.c (finish_class_member_access_expr): Call
709         objc_maybe_build_component_ref instead of objc_build_setter_call.
710         (cp_build_modify_expr): Call objc_maybe_build_modify_expr instead
711         of objc_build_getter_call.
712
713 2010-10-27  Jason Merrill  <jason@redhat.com>
714
715         * cp-tree.h (cp_trait_kind): Add CPTK_IS_LITERAL_TYPE.
716         * cxx-pretty-print.c (pp_cxx_trait_expression): Handle it.
717         * semantics.c (trait_expr_value, finish_trait_expr): Likewise.
718         * parser.c (cp_parser_primary_expression): Handle RID_IS_LITERAL_TYPE.
719         (cp_parser_trait_expr): Likewise.
720
721 2010-10-27  Gabriel Dos Reis  <gdr@cse.tamu.edu>
722             Jason Merrill  <jason@redhat.com>
723
724         * decl.c (finish_case_label): Use decl_constant_value.
725
726         * method.c (synthesized_method_walk): Track constexprness too.
727         (process_subob_fn, walk_field_subobs): Likewise.
728         (implicitly_declare_fn): Set DECL_DECLARED_CONSTEXPR_P.
729         (defaulted_late_check): Handle DECL_DECLARED_CONSTEXPR_P.
730         * class.c (add_implicitly_declared_members): Handle
731         constexpr default ctor.
732
733         * parser.c (cp_parser_ctor_initializer_opt_and_function_body):
734         Make sure a constexpr ctor has an empty body.
735         * class.c (type_has_constexpr_default_constructor): New.
736         * cp-tree.h: Declare it.
737         * init.c (perform_member_init): Complain about uninitialized
738         member in constexpr ctor.
739         (emit_mem_initializers): And uninitialized base.
740         * decl.c (check_tag_decl): Fix typo.
741
742         * semantics.c (valid_type_in_constexpr_fundecl_p): New fn.
743         (is_valid_constexpr_fn): New fn.
744         (validate_constexpr_fundecl): Use it.
745         * decl.c (validate_constexpr_redeclaration): New.
746         (duplicate_decls): Use it.
747         (cp_finish_decl): Call validate_constexpr_fundecl and
748         ensure_literal_type_for_constexpr_object here.
749         (start_decl): Not here.  Don't ICE on constexpr reference.
750         (check_for_uninitialized_const_var): Don't handle constexpr specially.
751         (grokfndecl): Set DECL_DECLARED_CONSTEXPR_P.
752         (check_static_variable_definition): Give friendly message about
753         missing constexpr.
754         (grokdeclarator): Complain about typedef and volatile with constexpr.
755         Reorganize.  Give sorry about non-static data members in C++0x mode.
756         (start_preparsed_function): Check validate_constexpr_fundecl here.
757         (check_function_type): Not here.
758         * decl2.c (finish_static_data_member_decl): Don't complain about
759         in-class init.
760         * parser.c (CP_PARSER_FLAGS_ONLY_TYPE_OR_CONSTEXPR): New.
761         (cp_parser_condition): Pass it to cp_parser_decl_specifier_seq.
762         (cp_parser_decl_specifier_seq): Handle it.
763         (cp_parser_explicit_instantiation): Diagnose inline and constexpr.
764
765         * class.c (check_bases): Propagate non-literality.
766         (check_field_decls): Likewise.
767         (finalize_literal_type_property): New.
768         (check_bases_and_members): Call it.
769         * cp-tree.h (TYPE_HAS_CONSTEXPR_CTOR): New.
770         (lang_type_class): Add has_constexpr_ctor field.
771         (DECL_DECLARED_CONSTEXPR_P): Strip template.
772         * decl.c (grok_special_member_properties): Set
773         TYPE_HAS_CONSTEXPR_CTOR.
774
775 2010-10-27  Jason Merrill  <jason@redhat.com>
776
777         * call.c (build_integral_nontype_arg_conv): New.
778         * cp-tree.h: Declare it.
779         * pt.c (convert_nontype_argument): Use it.
780
781         * error.c (dump_simple_decl): Print constexpr.
782
783         * cvt.c (build_up_reference): Use target_type for the temporary var.
784
785         * except.c (build_throw): Set EXPR_LOCATION.
786
787         * tree.c (build_cplus_new): Handle CONSTRUCTOR.
788
789         * semantics.c (finish_compound_stmt): Avoid creating an
790         unnecessary BIND_EXPR.
791
792         * call.c (convert_like_real): Don't check narrowing if the element
793         is also an initializer-list.
794
795 2010-10-27  Nicola Pero  <nicola.pero@meta-innovation.com>
796
797         * parser.c (cp_parser_objc_at_property_declaration): Recognize
798         RID_ASSIGN, RID_COPY, RID_RETAIN, RID_READWRITE and RID_NONATOMIC.
799         Do not use objc_set_property_attr, but use local variables
800         instead.  Detect repeated usage of setter, getter and ivar
801         attributes.  Improved error processing when a setter name does not
802         end in ':'.  Do not check for CPP_CLOSE_PAREN after we determined
803         that the token is a keyword.  Updated call to
804         objc_add_property_declaration.
805
806 2010-10-27  Nicola Pero  <nicola.pero@meta-innovation.com>
807
808         * parser.c (cp_parser_objc_property_decl): Renamed to
809         cp_parser_objc_struct_declaration.  Return the parsed trees
810         instead of calling objc_add_property_variable directly.  Detect
811         missing or invalid declspecs.  Implemented attributes.  Do not eat
812         the ';' at the end.  Exit loop whenever a non-comma is parsed, not
813         just EOF.
814         (cp_parser_objc_at_property): Renamed to
815         cp_parser_objc_at_property_declaration.  Updated calls to
816         objc_add_property_variable, now objc_add_property_declaration, and
817         to cp_parser_objc_property_decl, now
818         cp_parser_objc_struct_declaration.  Rewritten all code to be more
819         robust in dealing with syntax errors, and almost identical to the
820         one in c_parser_objc_at_property_declaration.
821         (cp_parser_objc_property_attrlist): Removed.
822         (cp_parser_objc_method_prototype_list): Updated call to
823         cp_parser_objc_at_property.
824         (cp_parser_objc_method_definition_list): Same change.
825         (cp_parser_objc_class_ivars): Detect a number of invalid
826         declarations of instance variables and produce errors when they
827         are found.
828         
829 2010-10-26  Jason Merrill  <jason@redhat.com>
830
831         * tree.c (build_vec_init_expr): Split out from...
832         (build_array_copy): ...here.
833         * init.c (perform_member_init): Use it.
834         * cp-tree.h: Declare it.
835         * cp-gimplify.c (cp_gimplify_init_expr): Don't gimplify the slot for
836         VEC_INIT_EXPR and AGGR_INIT_EXPR here.  Drop pre/post parameters.
837         (cp_gimplify_expr): Handle array default-initialization via
838         VEC_INIT_EXPR.
839
840         * tree.c (stabilize_expr): Handle xvalues properly.
841
842         * call.c (build_over_call): Use argarray[0] for 'this' argument.
843
844         * decl.c (finish_function): Don't look at function_depth.
845
846 2010-10-25  Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
847
848         Implement opaque-enum-specifiers for C++0x.
849         * cp-tree.h (SET_OPAQUE_ENUM_P): New.
850         (OPAQUE_ENUM_P): New.
851         (ENUM_FIXED_UNDERLYING_TYPE_P): New.
852         (start_enum): Update prototype.
853         (finish_enum_value_list): New prototype.
854         * parser.c (cp_parser_elaborated_type_specifier): Issue a pedwarn if
855         "enum class" is used in an elaborated-type-specifier.
856         (cp_parser_enum_specifier): Rewrite to parse opaque-enum-specifiers.
857         * decl.c (copy_type_enum): New.
858         (finish_enum_value_list): New, with code from finish_enum.
859         (finish_enum): A lot of code removed. Added a gcc_assert.
860         (start_enum): Add parameters enumtype and is_new.
861         Rewrite to work with opaque-enum-specifiers.
862         * pt.c (maybe_process_partial_specialization): Allow for template
863         specialization of enumerations, with a pedwarn.
864         (lookup_template_class): Update call to start_enum. Call to
865         SET_OPAQUE_ENUM_P.
866         (tsubst_enum): Call to begin_scope, finish_scope and
867         finish_enum_value_list.
868
869 2010-10-24  Nicola Pero  <nicola.pero@meta-innovation.com>
870
871         Removed Objective-C++ specific replacement of cxx_printable_name.
872         * cp-objcp-common.h: Added LANG_HOOKS_DECL_PRINTABLE_NAME, set
873         to cxx_printable_name for both C++ and Objective-C++.
874         * cp-lang.h: Removed LANG_HOOKS_DECL_PRINTABLE_NAME.
875
876         * error.c (dump_decl): For Objective-C++, call
877         objc_maybe_printable_name here ...
878         * tree.c (cxx_printable_name_internal): ... instead of here.
879         
880 2010-10-23  Nicola Pero  <nicola.pero@meta-innovation.com>
881
882         * tree.c (cxx_printable_name_internal): In Objective-C++, call
883         objc_maybe_printable_name.
884
885 2010-10-22  Jason Merrill  <jason@redhat.com>
886
887         PR c++/46129
888         * pt.c (instantiate_class_template): Don't instantiate default
889         arguments.
890
891         PR c++/46103
892         * init.c (build_vec_init): Handle memberwise move.
893
894 2010-10-21  Paolo Carlini  <paolo.carlini@oracle.com>
895
896         PR c++/46117
897         * call.c (add_function_candidate): Don't use TREE_VALUE on null
898         parmnode.
899
900 2010-10-20  Nicola Pero  <nicola.pero@meta-innovation.com>
901
902         * parser.c (cp_parser_objc_method_type): Mark inline.  Return a
903         bool instead of calling objc_set_method_type.
904         (cp_parser_objc_method_signature): Updated calls to
905         cp_parser_objc_method_type and to objc_build_method_signature.
906         (cp_parser_objc_method_prototype_list): Updated calls to
907         objc_add_method_declaration.  Use token->type to determine if it
908         is a class method or not.
909         (cp_parser_objc_method_definition_list): Same change.
910
911 2010-10-20  Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
912
913         PR c++/46056
914         * parser.c (cp_convert_range_for): Call cp_finish_decl
915         instead of finish_expr_stmt.
916
917 2010-10-20  Nicola Pero  <nicola.pero@meta-innovation.com>
918
919         * cp-lang.c (finish_file): Removed.
920         * decl2.c (cp_write_global_declarations): Call
921         objc_write_global_declarations when compiling Objective-C++.
922
923 2010-10-19  Paolo Carlini  <paolo.carlini@oracle.com>
924
925         PR c++/46046
926         * pt.c (add_to_template_args): Check extra_args for error_mark_node.
927         (coerce_template_parms): Likewise for args.
928
929 2010-10-18  Nicola Pero  <nicola.pero@meta-innovation.com>
930
931         Implemented parsing @synthesize and @dynamic for Objective-C++.
932         * parser.c (cp_parser_objc_method_definition_list): Recognize
933         RID_AT_SYNTHESIZE and RID_AT_DYNAMIC.
934         (cp_parser_objc_at_dynamic_declaration): New.
935         (cp_parser_objc_at_synthesize_declaration): New.
936
937 2010-10-18  Nicola Pero  <nicola.pero@meta-innovation.com>
938
939         * parser.c (cp_parser_objc_identifier_list): Check the return
940         value of cp_parser_identifier and react if it is error_mark_node.
941
942 2010-10-18  Nicola Pero  <nicola.pero@meta-innovation.com>
943
944         Merge from apple/trunk branch on FSF servers.
945
946         2005-03-01 Fariborz Jahanian <fjahanian@apple.com>
947
948         Radar 4451818
949         * call.c (standard_conversion, implicit_conversion): Ignore
950         'volatile' attribute of artificially volatized type in objc when
951         evaluating various conversion weights.
952
953         2005-11-08  Fariborz Jahanian <fjahanian@apple.com>
954
955         Radar 4330422
956         * typeck.c (comp_ptr_ttypes_real): Remove the hack. un-volatize the
957         artiificially 'volatized' type before doing pointer comparison.
958
959 2010-10-18  Jakub Jelinek  <jakub@redhat.com>
960
961         PR c/46015
962         * semantics.c (finish_goto_stmt): Call mark_rvalue_use on computed
963         goto destination.
964
965 2010-10-17  Nicola Pero  <nicola.pero@meta-innovation.com>
966
967         Merge from apple/trunk branch on FSF servers.
968
969         2006-04-19 Fariborz Jahanian <fjahanian@apple.com>
970
971         Radar 4516785
972         * parser.c (cp_parser_simple_type_specifier): Don't lookup for
973         objc object types if type is scope qualified.
974
975 2010-10-17  Nicola Pero  <nicola.pero@meta-innovation.com>
976
977         Merge from apple/trunk branch on FSF servers.
978
979         2006-03-27 Fariborz Jahanian <fjahanian@apple.com>
980
981         Radar 4133425
982         * lex.c (unqualified_name_lookup_error): Issue diagnostic
983         for private 'ivar' access.
984
985 2010-10-17  Iain Sandoe  <iains@gcc.gnu.org>
986
987         * parser.c (cp_parser_objc_visibility_spec): Update to use visibility
988         enum, and handle @package.
989
990 2010-10-15  Jason Merrill  <jason@redhat.com>
991
992         PR c++/45983
993         * tree.c (cp_build_qualified_type_real): Don't reuse a variant
994         with a different typedef variant of the element type.
995
996 2010-10-14  Iain Sandoe  <iains@gcc.gnu.org>
997
998         merge from FSF apple 'trunk' branch.
999         2006 Fariborz Jahanian <fjahanian@apple.com>
1000
1001         Radars 4436866, 4505126, 4506903, 4517826
1002         * typeck.c (finish_class_member_access_expr): Handle CLASS.property
1003         syntax.
1004         (cp_build_modify_expr): Likewise.
1005         * parser.c (cp_parser_objc_method_prototype_list): Handle @property.
1006         (cp_parser_objc_method_definition_list): Likewise.
1007         (cp_parser_objc_property_decl): New.
1008         (cp_parser_objc_property_attrlist): New.
1009         (cp_parser_objc_at_property): New.
1010
1011 2010-10-14  Richard Guenther  <rguenther@suse.de>
1012
1013         PR lto/44561
1014         * cp-tree.h (NULLPTR_TYPE_P): Adjust.
1015         * decl.c (cxx_init_decl_processing): Build a NULLPTR_TYPE node,
1016         use build_int_cst.
1017         * error.c (dump_type): Handle NULLPTR_TYPE.
1018         (dump_type_prefix): Likewise.
1019         (dump_type_suffix): Likewise.
1020         * mangle.c (write_type): Likewise.
1021         * name-lookup.c (arg_assoc_type): Likewise.
1022         * rtti.c (typeinfo_in_lib_p): Likewise.
1023         * pt.c (tsubst): Likewise.
1024
1025 2010-10-13  Jason Merrill  <jason@redhat.com>
1026
1027         PR c++/45984
1028         * class.c (fixup_attribute_variants): New fn.
1029         * cp-tree.h: Declare it.
1030         * pt.c (instantiate_class_template): Call it.
1031         * semantics.c (begin_class_definition): Call it.
1032
1033 2010-10-13  Richard Henderson  <rth@redhat.com>
1034
1035         * cp-lang.c (cp_eh_personality): Update call to
1036         build_personality_function.
1037         * except.c (choose_personality_routine): Update function comment.
1038
1039 2010-10-13  Richard Guenther  <rguenther@suse.de>
1040
1041         * tree.c (cp_free_lang_data): Free DECL_NAMESPACE_USERS and
1042         clear DECL_CHAIN of NAMESPACE_DECLs.
1043
1044 2010-10-11  Martin Jambor  <mjambor@suse.cz>
1045
1046         PR c++/45562
1047         * cp-tree.h (current_class_ref): Check that cp_function_chain is
1048         non-NULL.
1049         * call.c (build_cxx_call): Likewise.
1050
1051 2010-10-10  Jason Merrill  <jason@redhat.com>
1052
1053         * pt.c (tsubst_default_argument): Handle DEFAULT_ARG.
1054         (tsubst_default_arguments): Only do this once for cloned fns.
1055         (tsubst): Use typedef_variant_p.  Handle LANG_TYPE.  Don't
1056         handle expressions.
1057         (tsubst_expr): Avoid calling tsubst_expr for non-expressions.
1058         (tsubst_copy_and_build): Likewise.
1059         (tsubst_initializer_list): Likewise.
1060         (tsubst_copy): Change default to gcc_unreachable.  Handle
1061         OVERLOAD and PTRMEM_CST.
1062
1063 2010-10-10  Jason Merrill  <jason@redhat.com>
1064
1065         PR lto/45959
1066         PR lto/45960
1067         * pt.c (tsubst_copy) [INTEGER_CST]: Instantiate the type.
1068
1069 2010-10-07  Andi Kleen  <ak@linux.intel.com>
1070
1071         * Make-lang.in (c++_OBJS): Remove dummy-checksum.o.
1072         (cc1plus-dummy): Remove.
1073         (cc1plus-checksum): Change to run checksum over object files
1074         and options only.
1075
1076 2010-10-08  Joseph Myers  <joseph@codesourcery.com>
1077
1078         * cp-objcp-common.h (LANG_HOOKS_INIT_OPTIONS_STRUCT): Define.
1079
1080 2010-10-07  Nicola Pero  <nicola.pero@meta-innovation.com>
1081
1082         * cp-tree.def: Changed type of AT_ENCODE_EXPR from tcc_unary to
1083         tcc_expression.
1084         * cxx-pretty-print.c (pp_cxx_unary_expression): Added case for
1085         AT_ENCODE_EXPR.
1086         * error.c (dump_expr): Added case for AT_ENCODE_EXPR.
1087         * pt.c (tsubst_copy): Added case for AT_ENCODE_EXPR.
1088         (value_dependent_expression_p): Added case for AT_ENCODE_EXPR.
1089         (type_dependent_expression_p): Added case for AT_ENCODE_EXPR.
1090         * parser.c (cp_parser_objc_encode_expression): Updated comment.
1091
1092 2010-10-07  Nicola Pero  <nicola.pero@meta-innovation.com>
1093
1094         Merge from apple/trunk branch on FSF servers.
1095
1096         2006-04-26  Fariborz Jahanian <fjahanian@apple.com>
1097
1098         Radar 4508851
1099         * parser.c (cp_parser_objc_interstitial_code): Recognize
1100         and parse RID_NAMESPACE keyword.
1101
1102 2010-10-07  Iain Sandoe  <iains@gcc.gnu.org>
1103
1104         * parser.c (cp_parser_objc_method_tail_params_opt): Peek new token after
1105         finding ellipsis, before checking for attributes.
1106
1107 2010-10-06  Nicola Pero  <nicola.pero@meta-innovation.com>
1108
1109         Merge from apple/trunk branch on FSF servers.
1110         * cp-tree.def: Added AT_ENCODE_EXPR here instead of to the no
1111         longer existing gcc/c-common.def.
1112
1113         2005-12-14  Fariborz Jahanian <fjahanian@apple.com>
1114
1115         Radar 4278774
1116         * pt.c (tsubst_copy_and_build): Instantiate @endcode(T).
1117         * parser.c (cp_parser_objc_encode_expression): Build a templatized
1118         parse tree for @encode(T).
1119
1120         2005-12-14  Fariborz Jahanian <fjahanian@apple.com>
1121
1122         Radar 4278774
1123         * c-common.def: Add new expression code AT_ENCODE_EXPR.
1124
1125 2010-10-06  Eric Botcazou  <ebotcazou@adacore.com>
1126
1127         PR c++/45908
1128         * typeck.c (cp_build_addr_expr_1): Add check for incomplete types in
1129         code folding offsetof-like computations.
1130
1131 2010-10-05  Nicola Pero  <nicola.pero@meta-innovation.com>
1132
1133         PR objc++/31125
1134         * parser.c (cp_parser_objc_class_interface): If no identifier
1135         follows an @interface token, stop parsing the interface after
1136         printing an error.
1137         (cp_parser_objc_class_implementation): If no identifier follows an
1138         @implementation token, stop parsing the implementation after
1139         printing an error.
1140
1141 2010-10-05  Nicola Pero  <nicola.pero@meta-innovation.com>
1142
1143         PR objc++/23707
1144         * parser.c (cp_parser_objc_method_keyword_params): If the required
1145         colon is not found while parsing parameters, stop parsing them.
1146
1147 2010-10-05  Nicola Pero  <nicola.pero@meta-innovation.com>
1148
1149         PR objc++/31126
1150         * parser.c (cp_parser_objc_class_ivars): Do not eat the EOF or
1151         @end after detecting it.  Print an error if @end is found without
1152         a '}'.
1153         (cp_parser_objc_method_prototype_list): Do not eat the EOF after
1154         detecting it.  Fixed reading the next token when continuing
1155         because of an error in a method signature.  Print an error if EOF
1156         is found without an '@end'.
1157         (cp_parser_objc_method_definition_list): Same change.
1158
1159 2010-10-05  Nicola Pero  <nicola.pero@meta-innovation.com>
1160
1161         Merge from apple/trunk branch on FSF servers:
1162
1163         2005-10-17  Fariborz Jahanian <fjahanian@apple.com>
1164
1165         Radar 4290840
1166         * parser.c (cp_parser_objc_method_keyword_params): Check for valid
1167         method parameters and issue error.
1168         (cp_parser_objc_method_definition_list): Check for invalid tokens
1169         which cannot start a function definition.
1170
1171         2005-10-14  Fariborz Jahanian <fjahanian@apple.com>
1172
1173         Radar 4294425
1174         * parser.c (cp_parser_objc_message_args): Check for missing message
1175         arguments and syntax error.
1176
1177         2005-10-13  Fariborz Jahanian <fjahanian@apple.com>
1178
1179         Radar 4261146
1180         * parser.c (cp_parser_objc_class_ivars): Check for @end/eof while
1181         looking for '}'.
1182
1183         2005-08-15  Ziemowit Laski  <zlaski@apple.com>
1184
1185         Radar 4093475
1186         * parser.c (cp_parser_objc_interstitial_code): Catch stray
1187         '{' and '}' tokens and issue appropriate errors.
1188
1189         2005-08-02  Ziemowit Laski  <zlaski@apple.com>
1190
1191         Radar 4185810
1192         (cp_parser_statement_seq_opt): In addition to '}' and
1193         end-of-file, a statement sequence may also be terminated
1194         by a stray '@end'.
1195
1196 2010-10-05  Joseph Myers  <joseph@codesourcery.com>
1197
1198         * cp-tree.h (cxx_print_error_function,
1199         cxx_initialize_diagnostics): Declare using diagnostic_context
1200         typedef.
1201
1202 2010-10-04  Andi Kleen <ak@linux.intel.com>
1203
1204         * Make-lang.in (g++, cc1plus): Add + to build rule.
1205
1206 2010-10-04  Jason Merrill  <jason@redhat.com>
1207
1208         * tree.c (decl_storage_duration): New.
1209         * cp-tree.h: Declare it.
1210         (duration_kind): Return values.
1211
1212 2010-10-03  Jason Merrill  <jason@redhat.com>
1213
1214         * typeck.c (require_complete_type_sfinae): Add complain parm to...
1215         (require_complete_type): ...this function.
1216         (cp_build_array_ref, convert_arguments): Use it.
1217         (convert_for_initialization, cp_build_modify_expr): Likewise.
1218         * cp-tree.h: Declare it.
1219         * call.c (build_over_call): Use it.
1220
1221 2010-09-30  Iain Sandoe  <iains@gcc.gnu.org>
1222
1223         merge from FSF 'apple/trunk' branch.
1224         2006-01-30  Fariborz Jahanian <fjahanian@apple.com>
1225
1226         Radar 4386773
1227         * cp/parser.c (cp_parser_objc_interstitial_code): For
1228         @optional/@required set the optional/required flag.
1229
1230 2010-09-30  Nicola Pero  <nicola.pero@meta-innovation.com>
1231
1232         * parser.c (cp_lexer_get_preprocessor_token): Tidied up comments
1233         and indentation when finding an Objective-C++ CPP_AT_NAME token.
1234
1235 2010-09-29  Richard Guenther  <rguenther@suse.de>
1236
1237         * cp-tree.h (CP_DECL_CONTEXT): Check DECL_FILE_SCOPE_P.
1238         (CP_TYPE_CONTEXT): Similar.
1239         (FROB_CONTEXT): Frob global_namespace to the global
1240         TRANSLATION_UNIT_DECL.
1241         * decl.c (cxx_init_decl_processing): Build a TRANSLATION_UNIT_DECL,
1242         set DECL_CONTEXT of global_namespace to it.
1243         (start_decl): Use CP_DECL_CONTEXT and test TYPE_P
1244         instead of zeroing context.
1245         (cp_finish_decl): Use DECL_FILE_SCOPE_P.
1246         (grokfndecl): Likewise.
1247         (start_preparsed_function): Likewise.
1248         * name-lookup.c (maybe_push_decl): Use DECL_NAMESPACE_SCOPE_P.
1249         (namespace_binding): Use SCOPE_FILE_SCOPE_P.
1250         * pt.c (template_class_depth): Use CP_TYPE_CONTEXT.
1251         (is_specialization_of_friend): Use CP_DECL_CONTEXT.
1252         (push_template_decl_real): Likewise.
1253         (tsubst_friend_class): Likewise.  Adjust context comparisons.
1254         (instantiate_class_template): Use CP_TYPE_CONTEXT.
1255         (tsubst): Do not substitute into TRANSLATION_UNIT_DECL.
1256         * cxx-pretty-print.c (pp_cxx_nested_name_specifier): Use
1257         SCOPE_FILE_SCOPE_P.
1258
1259 2010-09-29  Yao Qi  <yao@codesourcery.com>
1260
1261         * decl.c (get_atexit_node): Fix typo.
1262
1263 2010-09-28  Jason Merrill  <jason@redhat.com>
1264
1265         * tree.c (lvalue_kind): Rename from lvalue_p_1, make nonstatic.
1266         (real_lvalue_p): Take const_tree.
1267         * cp-tree.h: Adjust.
1268         * typeck.c (lvalue_or_else): Make temporary arg a permerror.
1269         (cp_build_addr_expr_1): Likewise.
1270
1271 2010-09-28  Iain Sandoe  <iains@gcc.gnu.org>
1272
1273         Partially merged from apple/trunk branch on FSF servers:
1274         2006-04-26 Fariborz Jahanian <fjahanian@apple.com>
1275         Radar 3803157 (method attributes)
1276
1277         * parser.c (cp_parser_objc_method_keyword_params): Handle attributes.
1278         (cp_parser_objc_method_tail_params_opt): Likewise.
1279         (cp_parser_objc_method_signature): Likewise.
1280         (cp_parser_objc_method_maybe_bad_prefix_attributes): New.
1281         (cp_parser_objc_method_prototype_list): Handle attributes.
1282         (cp_parser_objc_method_definition_list): Likewise.
1283
1284 2010-09-28  Richard Henderson  <rth@redhat.com>
1285
1286         * cp-lang.c: Include "target.h".
1287         (cp_eh_personality): Use targetm.except_unwind_info.
1288         * Make-lang.in (cp-lang.o): Update deps.
1289
1290 2010-09-28  Iain Sandoe  <iains@gcc.gnu.org>
1291
1292         * parser.c (cp_parser_objc_valid_prefix_attributes): New.
1293         (cp_parser_declaration): Parse prefix attributes for ObjC++.
1294         (cp_parser_objc_protocol_declaration): Handle attributes.
1295         (cp_parser_objc_class_interface): Likewise.
1296         (cp_parser_objc_declaration): Likewise.
1297
1298 2010-09-27  Jason Merrill  <jason@redhat.com>
1299
1300         Require lvalues as specified by the standard.
1301         * typeck.c (lvalue_or_else): Use real_lvalue_p.
1302         (cp_build_addr_expr_1): Split out of cp_build_unary_op.
1303         (cp_build_addr_expr, cp_build_addr_expr_strict): Interfaces.
1304         (decay_conversion, get_member_function_from_ptrfunc): Adjust.
1305         (build_x_unary_op, build_reinterpret_cast_1): Adjust.
1306         (build_const_cast_1): Adjust.
1307         * cp-tree.h: Declare new fns.
1308         * call.c (build_this, convert_like_real, build_over_call): Adjust.
1309         (initialize_reference): Adjust.
1310         * class.c (build_base_path, convert_to_base_statically): Adjust.
1311         (build_vfn_ref, resolve_address_of_overloaded_function): Adjust.
1312         * cvt.c (build_up_reference, convert_to_reference): Adjust.
1313         * decl.c (register_dtor_fn): Adjust.
1314         * decl2.c (build_offset_ref_call_from_tree): Adjust.
1315         * except.c (initialize_handler_parm): Adjust.
1316         * init.c (build_offset_ref, build_delete, build_vec_delete): Adjust.
1317         * rtti.c (build_dynamic_cast_1, tinfo_base_init): Adjust.
1318         * tree.c (stabilize_expr): Adjust.
1319
1320 2010-09-27  Nicola Pero  <nicola.pero@meta-innovation.com>
1321
1322         Merge from apple/trunk branch on FSF servers:
1323
1324         2005-12-15  Fariborz Jahanian <fjahanian@apple.com>
1325
1326         Radar 4229905
1327         * typeck.c (composite_pointer_type): Call objc_have_common_type
1328         when comparing two objective-c pointer types.
1329
1330         2005-07-18  Ziemowit Laski  <zlaski@apple.com>
1331
1332         Radar 4175534
1333         * call.c (standard_conversion): Do not issue warnings when
1334         comparing ObjC pointer types.
1335
1336         2005-06-22  Ziemowit Laski  <zlaski@apple.com>
1337
1338         Radar 4154928
1339         * call.c (standard_conversion): Allow for a pointer conversion
1340         between any two ObjC pointer types.
1341         * typeck.c (composite_pointer_type): Determine common type
1342         for two ObjC pointer types.
1343
1344 2010-09-24  Jan Hubicka  <jh@suse.cz>
1345
1346         * decl.c (finish_function): Use decl_replaceable_p
1347         * method.c (make_alias_for_thunk): Update call of
1348         cgraph_same_body_alias.
1349
1350 2010-09-24  Jason Merrill  <jason@redhat.com>
1351
1352         * decl.c (compute_array_index_type): Remember type dependence of
1353         array bound.
1354         * pt.c (dependent_type_p_r): Don't recompute it here.
1355
1356         * error.c (dump_expr) [CASE_CONVERT]: Print conversion between
1357         reference and pointer to the same type as "*" or "&".
1358
1359 2010-09-24  Nicola Pero  <nicola.pero@meta-innovation.com>
1360
1361         * typeck.c (warn_args_num): Use warning 'too many arguments to
1362         method [methodname]' for an Objective-C method instead of the less
1363         satisfactory 'too many arguments to function' (with no method
1364         name).
1365
1366 2010-09-21  Jason Merrill  <jason@redhat.com>
1367
1368         * mangle.c (write_expression) [SCOPE_REF]: Only do -fabi-version=1
1369         special handling if we know the member.
1370
1371 2010-09-18  Jason Merrill  <jason@redhat.com>
1372
1373         * call.c (compare_ics): Do lvalue/rvalue reference binding
1374         comparison for ck_list, too.
1375
1376 2010-09-15  Jason Merrill  <jason@redhat.com>
1377
1378         * semantics.c (finish_id_expression): Diagnose use of function
1379         parms in evaluated context outside function body.
1380
1381         * decl2.c (grokbitfield): Diagnose non-integral width.
1382
1383         * call.c (convert_like_real): Use the underlying type of the
1384         reference for the temporary.
1385
1386 2010-09-15  Jakub Jelinek  <jakub@redhat.com>
1387
1388         PR c++/45635
1389         * class.c (build_vtbl_initializer): Use fn instead of init's operand
1390         as first argument to FDESC_EXPR.
1391
1392 2010-09-15  Paolo Carlini  <paolo.carlini@oracle.com>
1393
1394         PR c++/45665
1395         * decl.c (grokdeclarator): Check build_memfn_type return value
1396         for error_mark_node.
1397
1398 2010-09-13  Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
1399
1400         * semantics.c (finish_for_stmt): Always test flag_new_for_scope.
1401         (begin_range_for_stmt): Likewise.
1402
1403 2010-09-11  Rodrigo Rivas <rodrigorivascosta@gmail.com>
1404
1405         Implement range-based for-statements.
1406         * cp-tree.def (RANGE_FOR_STMT): New.
1407         * cp-tree.h (RANGE_FOR_DECL, RANGE_FOR_EXPR, RANGE_FOR_BODY): New.
1408         (cp_convert_range_for): Declare.
1409         * pt.c (tsubst_expr): Add RANGE_FOR_STMT.
1410         (tsubst_copy_and_build): perform_koenig_lookup takes extra argument.
1411         * semantics.c (begin_range_for_stmt): New.
1412         (finish_range_for_decl): New.
1413         (finish_for_stmt): Accept also RANGE_FOR_STMT.
1414         (perform_koenig_lookup): Add extra argument include_std.
1415         * parser.c (cp_parser_c_for): New with code from
1416         cp_parser_iteration_statement().
1417         (cp_parser_range_for): New.
1418         (cp_convert_range_for): New.
1419         (cp_parser_iteration_statement): Add range-for support.
1420         (cp_parser_condition): Adjust comment.
1421         (cp_parser_postfix_expression): perform_koenig_lookup takes extra
1422         argument.
1423         * dump.c (cp_dump_tree): Add RANGE_FOR_STMT.
1424         * cxx-pretty-print.c: Likewise.
1425         * lex.c (cxx_init): Likewise.
1426         * name-lookup.c (lookup_function_nonclass): Add extra argument
1427         include_std.
1428         (lookup_arg_dependent): Likewise.
1429         * name-lookup.h: Likewise.
1430
1431 2010-09-10  Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
1432
1433         PR c++/43824
1434         * error.c (maybe_warn_cpp0x): Add new warning
1435         CPP0X_INLINE_NAMESPACES.
1436         * parser.c (cp_parser_namespace_definition): Likewise.
1437         * cp-tree.h (cpp0x_warn_str): Likewise.
1438
1439 2010-09-10  Richard Guenther  <rguenther@suse.de>
1440
1441         * decl.c (reshape_init_vector): For VECTOR_TYPEs, use
1442         TYPE_VECTOR_SUBPARTS instead of TYPE_DEBUG_REPRESENTATION_TYPE.
1443
1444 2010-09-10  Jan Hubicka  <jh@suse.cz>
1445
1446         PR tree-optimization/45605
1447         * cp/class.c (build_vtbl_initializer): Avoid wrong type conversion in
1448         ADDR_EXPR.
1449
1450 2010-09-08  Jakub Jelinek  <jakub@redhat.com>
1451
1452         PR c++/45588
1453         * pt.c (tsubst) <case INTEGER_TYPE>: Call mark_rvalue_use
1454         before calling fold_decl_constant_value.
1455
1456 2010-09-07  Arnaud Charlet  <charlet@adacore.com>
1457
1458         * cp-tree.h (build_enumerator): Add new location_t parameter.
1459         (build_lang_decl_loc): New function.
1460         * decl.c (build_enumerator): New parameter loc. Use it when calling
1461         build_decl. Replace build_lang_decl with build_lang_decl_loc.
1462         * pt.c (tsubst_enum): Adjust call to build_enumerator.
1463         * parser.c (cp_parser_enumerator_definition): Ditto.
1464         * lex.c (build_lang_decl_loc): New function.
1465
1466 2010-09-06  Dodji Seketeli  <dodji@redhat.com>
1467
1468         PR c++/45200
1469         PR c++/45293
1470         PR c++/45558
1471         * tree.c (strip_typedefs): Strip typedefs from the context of
1472         TYPENAME_TYPEs.
1473
1474 2010-09-06  Mark Mitchell  <mark@codesourcery.com>
1475
1476         * typeck.c (cp_build_binary_op): Call do_warn_double_promotion.
1477         * call.c (build_conditional_expr): Likewise.
1478         (convert_arg_to_ellipsis): Likewise.
1479
1480 2010-09-06  Arnaud Charlet  <charlet@adacore.com>
1481
1482         * parser.c (make_pointer_declarator, make_reference_declarator,
1483         make_call_declarator, make_array_declarator): Set declarator->id_loc.
1484         (cp_parser_init_declarator): Adjust location of decl if appropriate.
1485
1486 2010-09-06  Jason Merrill  <jason@redhat.com>
1487
1488         * call.c (implicit_conversion): Fix value-init of enums.
1489         (convert_like_real): Likewise.
1490
1491         * decl.c (cp_finish_decl): Don't change init for auto deduction.
1492
1493         * pt.c (fold_non_dependent_expr_sfinae): Split out from...
1494         (fold_non_dependent_expr): ...here.
1495         (convert_nontype_argument): Use it.  Take complain parm.
1496         Use perform_implicit_conversion instead of ocp_convert.
1497         Allow cv-qual changes.
1498         (convert_template_argument): Pass complain down.
1499         (tsubst_template_arg): Suppress constant expression warnings.
1500         Don't fold here.
1501
1502         * method.c (synthesized_method_walk): In constructors, also check
1503         subobject destructors.
1504
1505         * semantics.c (finish_compound_literal): Always build a
1506         TARGET_EXPR.
1507
1508 2010-08-30  Paolo Carlini  <paolo.carlini@oracle.com>
1509
1510         PR c++/45043
1511         * decl.c (grokdeclarator): Use MAIN_NAME_P only on IDENTIFIER_NODEs.
1512
1513 2010-08-30  Jakub Jelinek  <jakub@redhat.com>
1514
1515         PR middle-end/45423
1516         * parser.c (cp_parser_omp_atomic): Handle boolean
1517         {PRE,POST}_INCREMENT.
1518
1519 2010-08-29  Jason Merrill  <jason@redhat.com>
1520
1521         PR c++/44991
1522         * parser.c (cp_parser_parameter_declaration): Pop parameter decls
1523         after tentative parsing.
1524
1525 2010-08-22  Joseph Myers  <joseph@codesourcery.com>
1526
1527         * Make-lang.in (g++spec.o): Update dependencies.
1528         * g++spec.c: Include opts.h
1529         (MATH_LIBRARY, LIBSTDCXX): Remove initial "-l".
1530         (lang_specific_driver): Use cl_decoded_option structures.
1531
1532 2010-08-20  Nathan Froyd  <froydnj@codesourcery.com>
1533
1534         * call.c: Use FOR_EACH_VEC_ELT.
1535         * class.c: Likewise.
1536         * decl.c: Likewise.
1537         * decl2.c: Likewise.
1538         * error.c: Likewise.
1539         * except.c: Likewise.
1540         * mangle.c: Likewise.
1541         * method.c: Likewise.
1542         * name-lookup.c: Likewise.
1543         * parser.c: Likewise.
1544         * pt.c: Likewise.
1545         * repo.c: Likewise.
1546         * semantics.c: Likewise.
1547         * typeck2.c: Likewise.
1548
1549 2010-08-19  Jason Merrill  <jason@redhat.com>
1550
1551         * call.c (reference_related_p): Check for error_mark_node.
1552         (add_function_candidate): Check it instead of
1553         same_type_ignoring_top_level_qualifiers_p.
1554
1555         PR c++/45315
1556         * init.c (build_new_1): Don't use build_value_init in a template.
1557         (build_value_init): Make sure we don't.
1558
1559         PR c++/45307
1560         * cp-gimplify.c (cp_gimplify_expr): Also remove assignment
1561         of empty class CONSTRUCTOR.
1562
1563         * except.c (pending_noexcept, pending_noexcept_checks): New.
1564         (perform_deferred_noexcept_checks): New.
1565         (maybe_noexcept_warning): Split from...
1566         (finish_noexcept_expr): ...here.  Adjust.
1567         * decl2.c (cp_write_global_declarations): Call
1568         perform_deferred_noexcept_checks.
1569         * cp-tree.h: And declare it.
1570
1571 2010-08-18  Nathan Froyd  <froydnj@codesourcery.com>
1572
1573         PR c++/45049
1574         * name-lookup.c (push_overloaded_decl): Change DECL_CHAIN to
1575         TREE_CHAIN.
1576
1577 2010-08-17  Kai Tietz  <kai.tietz@onevision.com>
1578
1579         * class.c (note_name_declared_in_class): Make in 'extern "C"' blocks,
1580         or if -fms-extensions is enabled check, check permissive.
1581
1582 2010-08-09  Jason Merrill  <jason@redhat.com>
1583
1584         PR c++/45236
1585         * pt.c (lookup_template_class): Don't re-coerce outer parms.
1586
1587 2010-08-09  Nathan Froyd  <froydnj@codesourcery.com>
1588
1589         * call.c (add_builtin_candidates): Use VECs for local variable
1590         `types'.  Adjust remainder of function accordingly.
1591
1592 2010-08-09  Nathan Froyd  <froydnj@codesourcery.com>
1593
1594         * name-lookup.c (is_associated_namespace): Convert local variables
1595         to be VECs instead of TREE_LISTs.
1596
1597 2010-08-09  Nathan Froyd  <froydnj@codesourcery.com>
1598
1599         * tree.c (varargs_function_p): Use stdarg_p.
1600
1601 2010-08-07  Nathan Froyd  <froydnj@codesourcery.com>
1602
1603         * parser.c (cp_default_arg_entry): Declare.  Declare a VEC of it.
1604         (cp_unparsed_functions_entry): Declare.  Declare a VEC of it.
1605         (cp_parser) [unparsed_functions_queues]: Rename to unparsed_queues.
1606         Change type to a VEC.
1607         (unparsed_funs_with_default_args): Define.
1608         (unparsed_funs_with_definitions): Define.
1609         (push_unparsed_function_queues): New function.
1610         (cp_parser_new): Call it.
1611         (pop_unparsed_function_queues): New function.
1612         (cp_parser_class_specifier): Adjust processing of unparsed functions.
1613         (cp_parser_template_declaration_after_export): Use VEC_safe_push.
1614         (cp_parser_save_member_function_body): Likewise.
1615         (cp_parser_late_parsing_for_member): Call push_unparsed_function_queues
1616         and pop_unparsed_function_queues.
1617         (cp_parser_late_parsing_default_args): Likewise.
1618         (cp_parser_save_default_args): Use VEC_safe_push.
1619
1620 2010-08-07  Nathan Froyd  <froydnj@codesourcery.com>
1621
1622         * name-lookup.h (cp_label_binding): Declare.  Declare a VEC type
1623         containing it.
1624         (cp_binding_level): Convert shadowed_labels and dead_vars_from_for
1625         fields to VECs.
1626         * decl.c (poplevel): Adjust for type changes.
1627         (declare_local_label): Likewise.
1628
1629 2010-08-06  Jason Merrill  <jason@redhat.com>
1630
1631         * typeck.c (complete_type_or_maybe_complain): Split out from...
1632         (complete_type_or_else): Here.
1633         (build_class_member_access_expr): Call it.
1634         (finish_class_member_access_expr): Likewise.
1635         * call.c (build_special_member_call): Likewise.
1636         * cvt.c (build_expr_type_conversion): Likewise.
1637         * init.c (build_new): Likewise.
1638         * typeck2.c (build_functional_cast): Likewise.
1639         * cp-tree.h: Declare it.
1640
1641         * init.c (build_value_init): Add complain parm.
1642         (build_value_init_noctor): Likewise.
1643         (perform_member_init): Pass it.
1644         (expand_aggr_init_1): Likewise.
1645         (build_new_1): Likewise.
1646         (build_vec_init): Likewise.
1647         * pt.c (tsubst_expr): Likewise.
1648         * typeck2.c (build_functional_cast): Likewise.
1649         * cp-tree.h: Adjust.
1650         * tree.c (build_target_expr_with_type): Handle error_mark_node.
1651
1652         * typeck.c (decay_conversion): Any expression with type nullptr_t
1653         decays to nullptr.
1654
1655 2010-07-30  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1656
1657         PR c++/45112
1658         * decl.c (duplicate_decls): Merge DECL_USER_ALIGN and DECL_PACKED.
1659
1660 2010-07-27  Jason Merrill  <jason@redhat.com>
1661
1662         * pt.c (tsubst_expr) [DECL_EXPR]: Handle getting an AGGR_INIT_EXPR
1663         from build_value_init.
1664         * init.c (build_value_init_noctor): Give error for unknown array
1665         bound.
1666
1667 2010-07-27  Joseph Myers  <joseph@codesourcery.com>
1668
1669         * cp-objcp-common.h (LANG_HOOKS_MISSING_ARGUMENT): Remove.
1670
1671 2010-07-27  Joseph Myers  <joseph@codesourcery.com>
1672
1673         * cp-objcp-common.c (cxx_initialize_diagnostics): First call
1674         c_common_initialize_diagnostics.
1675         * cp-objcp-common.h (LANG_HOOKS_OPTION_LANG_MASK,
1676         LANG_HOOKS_COMPLAIN_WRONG_LANG_P): Define.
1677
1678 2010-07-21  Jason Merrill  <jason@redhat.com>
1679
1680         * tree.c (cp_tree_equal): Fix CONSTRUCTOR handling.
1681
1682         * parser.c (cp_parser_init_declarator): Pass LOOKUP_NORMAL
1683         to cp_finish_decl.
1684
1685 2010-07-20  Jeffrey Yasskin  <jyasskin@google.com>
1686
1687         PR c++/44641
1688         * pt.c (instantiate_class_template): Propagate the template's
1689         location to its instance.
1690
1691 2010-07-20  Jason Merrill  <jason@redhat.com>
1692
1693         PR c++/44967
1694         * pt.c (tsubst_copy_and_build): Rework last change.
1695
1696         PR c++/44967
1697         * pt.c (tsubst_copy_and_build): Handle partial substitution of
1698         CALL_EXPR.
1699
1700 2010-07-19  Jason Merrill  <jason@redhat.com>
1701
1702         PR c++/44996
1703         * semantics.c (finish_decltype_type): Correct decltype
1704         of parenthesized rvalue reference variable.
1705
1706         PR c++/44969
1707         * tree.c (cp_tree_equal): Compare type of *CAST_EXPR.
1708         * pt.c (iterative_hash_template_arg): Hash type of *CAST_EXPR.
1709
1710 2010-07-19  Paolo Carlini  <paolo.carlini@oracle.com>
1711
1712         PR c++/44969
1713         * typeck.c (build_x_compound_expr_from_list): Add tsubst_flags_t
1714         parameter.
1715         * cp-tree.h: Adjust declaration.
1716         * init.c (perform_member_init): Adjust caller.
1717         * decl.c (grok_reference_init, cp_finish_decl): Likewise.
1718         * typeck2.c (store_init_value): Likewise.
1719         (build_functional_cast): Pass complain argument to
1720         build_x_compound_expr_from_list.
1721
1722 2010-07-16  Jason Merrill  <jason@redhat.com>
1723
1724         PR c++/32505
1725         * pt.c (process_partial_specialization): Diagnose partial
1726         specialization after instantiation.
1727         (most_specialized_class): Add complain parm.
1728
1729         * ptree.c (cxx_print_xnode): Handle TEMPLATE_INFO.
1730
1731 2010-07-15  Nathan Froyd  <froydnj@codesourcery.com>
1732
1733         * init.c (build_new_1): Use cp_build_function_call_nary instead of
1734         cp_build_function_call.
1735
1736 2010-07-15  Jason Merrill  <jason@redhat.com>
1737
1738         PR c++/44909
1739         * call.c (add_function_candidate): If we're working on an implicit
1740         declaration, don't consider candidates that won't match.
1741         * typeck.c (same_type_ignoring_top_level_qualifiers_p): Now a fn.
1742         * cp-tree.h (same_type_ignoring_top_level_qualifiers_p): Adjust.
1743
1744         Revert:
1745         * cp-tree.h (struct lang_type_class): Add has_user_opeq.
1746         (TYPE_HAS_USER_OPEQ): New.
1747         * decl.c (grok_special_member_properties): Set it.
1748         * class.c (add_implicitly_declared_members): Don't lazily declare
1749         constructors/operator= if a base or member has a user-declared one.
1750         (check_bases_and_members, check_bases): Adjust.
1751         (check_field_decls, check_field_decl): Adjust.
1752
1753 2010-07-15  Anatoly Sokolov  <aesok@post.ru>
1754
1755         * decl.c (integer_three_node): Remove.
1756         (cxx_init_decl_processing): Do not initialize the integer_three_node.
1757         * cp-tree.h (integer_three_node): Remove.
1758
1759 2010-07-15  Nathan Froyd  <froydnj@codesourcery.com>
1760
1761         * cp-tree.h: Carefully replace TREE_CHAIN with DECL_CHAIN.
1762         * call.c: Likewise.
1763         * class.c: Likewise.
1764         * cp-gimplify.c: Likewise.
1765         * decl.c: Likewise.
1766         * decl2.c: Likewise.
1767         * init.c: Likewise.
1768         * mangle.c: Likewise.
1769         * name-lookup.c: Likewise.
1770         * optimize.c: Likewise.
1771         * parser.c: Likewise.
1772         * pt.c: Likewise.
1773         * rtti.c: Likewise.
1774         * search.c: Likewise.
1775         * semantics.c: Likewise.
1776         * typeck.c: Likewise.
1777         * typeck2.c: Likewise.
1778
1779 2010-07-14  Jason Merrill  <jason@redhat.com>
1780
1781         * init.c (sort_mem_initializers): Rename "field_type" to "ctx".
1782         (build_field_list): Cache field type.
1783
1784         Implement C++0x unrestricted unions (N2544)
1785         * class.c (check_field_decl): Loosen union handling in C++0x.
1786         * method.c (walk_field_subobs): Split out from...
1787         (synthesized_method_walk): ...here.  Set msg before loops.
1788         (process_subob_fn): Check for triviality in union members.
1789         * init.c (sort_mem_initializers): Splice out uninitialized
1790         anonymous unions and union members.
1791         (push_base_cleanups): Don't automatically destroy anonymous unions
1792         and union members.
1793
1794 2010-07-13  Jason Merrill  <jason@redhat.com>
1795
1796         PR c++/44909
1797         * cp-tree.h (struct lang_type_class): Add has_user_opeq.
1798         (TYPE_HAS_USER_OPEQ): New.
1799         * decl.c (grok_special_member_properties): Set it.
1800         * class.c (add_implicitly_declared_members): Don't lazily declare
1801         constructors/operator= if a base or member has a user-declared one.
1802         (check_bases_and_members, check_bases): Adjust.
1803         (check_field_decls, check_field_decl): Adjust.
1804         * method.c (synthesized_method_walk): Initialize check_vdtor.
1805
1806         PR c++/44540
1807         * mangle.c (write_type): Canonicalize.
1808         (canonicalize_for_substitution): Retain cv-quals on FUNCTION_TYPE.
1809         (write_CV_qualifiers_for_type): Ignore them in abi>=5.
1810
1811 2010-07-13  Paolo Carlini  <paolo.carlini@oracle.com>
1812
1813         PR c++/44908
1814         * call.c (convert_like_real): Adjust convert_ptrmem call, pass
1815         complain argument.
1816         * typeck.c (get_delta_difference): Update prototype, add a
1817         tsubst_flags_t parameter; update get_delta_difference_1 calls and
1818         add checks for error_mark_node.
1819         (get_delta_difference_1): Update prototype, add a tsubst_flags_t
1820         parameter; update lookup_base call.
1821         (build_ptrmemfunc): Update prototype, add a tsubst_flags_t
1822         parameter; update get_delta_difference call and add check for
1823         error_mark_node.
1824         (convert_ptrmem): Update prototype, add a tsubst_flags_t
1825         parameter; update get_delta_difference call and add check for
1826         error_mark_node;  update build_ptrmemfunc call.
1827         (build_static_cast_1): Adjust convert_ptrmem call.
1828         (expand_ptrmemfunc_cst): Adjust get_delta_difference call.
1829         (cp_build_unary_op): Adjust build_ptrmemfunc call.
1830         * cvt.c (cp_convert_to_pointer, convert_force): Adjust convert_ptrmem
1831         and build_ptrmemfunc calls.
1832         * cp-tree.h: Update build_ptrmemfunc and convert_ptrmem prototypes.
1833
1834 2010-07-12  Paolo Carlini  <paolo.carlini@oracle.com>
1835
1836         PR c++/44907
1837         * call.c (build_temp): Add tsubst_flags_t complain parameter;
1838         adjust build_special_member_call call, pass complain.
1839         (convert_like_real): Adjust build_temp call, pass complain.
1840
1841 2010-07-09  Jason Merrill  <jason@redhat.com>
1842
1843         PR c++/43120
1844         * cp-tree.h (BV_LOST_PRIMARY): New macro.
1845         * class.c (update_vtable_entry_for_fn): Fix covariant thunk logic.
1846         Set BV_LOST_PRIMARY.
1847         (build_vtbl_initializer): Check BV_LOST_PRIMARY.
1848
1849 2010-07-08  Jason Merrill  <jason@redhat.com>
1850
1851         PR c++/43120
1852         * class.c (update_vtable_entry_for_fn): Fix handling of dummy
1853         virtual bases for covariant thunks.
1854
1855 2010-07-08  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1856
1857         * cp-tree.h: Do not include toplev.h.
1858
1859 2010-07-06  Jason Merrill  <jason@redhat.com>
1860
1861         PR c++/44703
1862         * call.c (is_std_init_list): Look through typedefs.
1863
1864         PR c++/44778
1865         * init.c (build_offset_ref): If scope isn't dependent,
1866         don't exit early.  Look at TYPE_MAIN_VARIANT.
1867         * pt.c (tsubst_copy) [OFFSET_REF]: Do substitution.
1868
1869         * error.c (dump_function_decl): Don't crash on null DECL_NAME.
1870
1871 2010-07-06  Shujing Zhao  <pearly.zhao@oracle.com>
1872
1873         * cp-tree.h (impl_conv_void): New type.
1874         (convert_to_void): Adjust prototype.
1875         * cvt.c (convert_to_void): Use impl_conv_void, emit and adjust the
1876         diagnostic for easy translation. Change caller.
1877         * typeck.c: Update call to convert_to_void.
1878         * semantics.c: Likewise.
1879         * init.c: Likewise.
1880
1881 2010-07-05  Nathan Froyd  <froydnj@codesourcery.com>
1882
1883         * decl.c (cp_finish_decl): Call add_local_decl.
1884         * optimize.c (clone_body): Adjust for new type of cfun->local_decls.
1885
1886 2010-07-05  Paolo Carlini  <paolo.carlini@oracle.com>
1887
1888         * pt.c (tsubst): Early declare code = TREE_CODE (t) and use it
1889         throughout.
1890
1891 2010-07-05  Shujing Zhao  <pearly.zhao@oracle.com>
1892
1893         PR c++/22138
1894         * parser.c (cp_parser_primary_expression): Error if local template is
1895         declared.
1896
1897 2010-07-02  Le-Chun Wu  <lcwu@google.com>
1898
1899         PR/44128
1900         * name-lookup.c (pushdecl_maybe_friend): Warn when a local decl
1901         (variable or type) shadows another type.
1902
1903 2010-07-02  Jakub Jelinek  <jakub@redhat.com>
1904
1905         PR c++/44780
1906         * typeck.c (convert_for_assignment): When converting a convertible
1907         vector type or objc++ types, call mark_rvalue_use.
1908         * typeck2.c (build_m_component_ref): Use return values from
1909         mark_rvalue_use or mark_lvalue_use.
1910         * class.c (build_base_path): Likewise.
1911         * call.c (build_conditional_expr): Likewise.
1912
1913 2010-07-02  Paolo Carlini  <paolo.carlini@oracle.com>
1914
1915         PR c++/44039
1916         * pt.c (tsubst_baselink): Return error_mark_node if lookup_fnfields
1917         returns NULL_TREE.
1918
1919 2010-07-01  Richard Guenther  <rguenther@suse.de>
1920
1921         * cp-gimplify.c (cp_gimplify_expr): Open-code the rhs
1922         predicate we are looking for, allow non-gimplified
1923         INDIRECT_REFs.
1924
1925 2010-06-30  Paolo Carlini  <paolo.carlini@oracle.com>
1926
1927         PR c++/44628
1928         * typeck.c (cp_build_unary_op): Early return error_mark_node when
1929         arg is NULL_TREE too.
1930         * call.c (convert_class_to_reference): Return error_mark_node when
1931         expr is NULL_TREE.
1932
1933 2010-06-30  Michael Matz  <matz@suse.de>
1934
1935         * repo.c (finish_repo): Fix typo.
1936
1937 2010-06-30  Nathan Froyd  <froydnj@codesourcery.com>
1938
1939         * parser.c (cp_parser_omp_for_loop): Use a VEC for for_block.
1940
1941 2010-06-30  Nathan Froyd  <froydnj@codesourcery.com>
1942
1943         * repo.c (pending_repo): Change type to a VEC.
1944         (finish_repo): Adjust for new type of pending_repo.
1945         (repo_emit_p): Likewise.
1946
1947 2010-06-30  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1948
1949         * tree.c: Include gimple.h. Do not include tree-flow.h
1950         * decl.c: Do not include tree-flow.h
1951         * Make-lang.in: Adjust dependencies.
1952
1953 2010-06-29  Nathan Froyd  <froydnj@codesourcery.com>
1954
1955         * decl.c (incomplete_var): Declare.  Declare VECs containing them.
1956         (incomplete_vars): Adjust comment.  Change type to a VEC.
1957         (maybe_register_incomplete_var): Adjust for new type.
1958         (complete_vars): Adjust iteration over incomplete_vars.
1959
1960 2010-06-29  Nathan Froyd  <froydnj@codesourcery.com>
1961
1962         * decl.c (struct named_label_entry): Change type of bad_decls field
1963         to a VEC.
1964         (poplevel_named_label_1): Adjust for new type of bad_decls.
1965         (check_goto): Likewise.
1966
1967 2010-06-29  Jason Merrill  <jason@redhat.com>
1968
1969         Enable implicitly declared move constructor/operator= (N3053).
1970         * class.c (add_implicitly_declared_members): A class with no
1971         explicitly declared copy or move constructor gets both declared
1972         implicitly, and similarly for operator=.
1973         (check_bases): A type with no copy ctor does not inhibit
1974         a const copy ctor in a derived class.  It does mean the derived
1975         one is non-trivial.
1976         (check_field_decl): Likewise.
1977         (check_bases_and_members): A nonexistent copy ctor/op= is non-trivial.
1978         * tree.c (type_has_nontrivial_copy_init): Adjust semantics.
1979         (trivially_copyable_p): Likewise.
1980         * call.c (convert_like_real): Use type_has_nontrivial_copy_init.
1981         * class.c (finish_struct_bits): Likewise.
1982         * tree.c (build_target_expr_with_type): Likewise.
1983         * typeck2.c (store_init_value): Likewise.
1984
1985         Enable implicitly deleted functions (N2346)
1986         * class.c (check_bases_and_members): Adjust lambda flags.
1987         * method.c (implicitly_declare_fn): Set DECL_DELETED_FN if appropriate.
1988
1989         * decl2.c (mark_used): Adjust error for use of deleted function.
1990
1991         Machinery to support implicit delete/move.
1992         * cp-tree.h: (struct lang_type_class): Add lazy_move_assign,
1993         has_complex_move_ctor, has_complex_move_assign bitfields.
1994         (CLASSTYPE_LAZY_MOVE_ASSIGN): New.
1995         (TYPE_HAS_COMPLEX_MOVE_ASSIGN): New.
1996         (TYPE_HAS_COMPLEX_MOVE_CTOR): New.
1997         (enum special_function_kind): Add sfk_move_assignment.
1998         (LOOKUP_SPECULATIVE): New.
1999         * call.c (build_over_call): Return early if it's set.
2000         (build_over_call): Use trivial_fn_p.
2001         * class.c (check_bases): If the base has no default constructor,
2002         the derived one is non-trivial.  Handle move ctor/op=.
2003         (check_field_decl): Likewise.
2004         (check_bases_and_members): Handle move ctor/op=.
2005         (add_implicitly_declared_members): Handle CLASSTYPE_LAZY_MOVE_ASSIGN.
2006         (type_has_move_constructor, type_has_move_assign): New.
2007         * decl.c (grok_special_member_properties): Handle move ctor/op=.
2008         * method.c (type_has_trivial_fn, type_set_nontrivial_flag): New.
2009         (trivial_fn_p): New.
2010         (do_build_copy_constructor): Use it.
2011         (do_build_assign_ref): Likewise.  Handle move assignment.
2012         (build_stub_type, build_stub_object, locate_fn_flags): New.
2013         (locate_ctor): Use locate_fn_flags.
2014         (locate_copy, locate_dtor): Remove.
2015         (get_dtor, get_default_ctor, get_copy_ctor, get_copy_assign): New.
2016         (process_subob_fn, synthesized_method_walk): New.
2017         (maybe_explain_implicit_delete): New.
2018         (implicitly_declare_fn): Use synthesized_method_walk,
2019         type_has_trivial_fn, and type_set_nontrivial_flag.
2020         (defaulted_late_check): Set DECL_DELETED_FN.
2021         (defaultable_fn_check): Handle sfk_move_assignment.
2022         (lazily_declare_fn): Clear CLASSTYPE_LAZY_* early.  Don't declare
2023         implicitly deleted move ctor/op=.
2024         * search.c (lookup_fnfields_1): Handle sfk_move_assignment.
2025         (lookup_fnfields_slot): New.
2026         * semantics.c (omp_clause_info_fndecl): Remove.
2027         (cxx_omp_create_clause_info): Use get_default_ctor, get_copy_ctor,
2028         get_copy_assign, trivial_fn_p.
2029         (trait_expr_value): Adjust call to locate_ctor.
2030         * tree.c (special_function_p): Handle sfk_move_assignment.
2031
2032         * class.c (type_has_virtual_destructor): New.
2033         * cp-tree.h: Declare it.
2034         * semantics.c (trait_expr_value): Use it.
2035
2036         * call.c (build_over_call): Only give warnings with tf_warning.
2037
2038         * name-lookup.c (pop_scope): Handle NULL_TREE.
2039
2040         * cp-tree.h (TYPE_HAS_ASSIGN_REF): Rename to TYPE_HAS_COPY_ASSIGN.
2041         (TYPE_HAS_CONST_ASSIGN_REF): Rename to TYPE_HAS_CONST_COPY_ASSIGN.
2042         (TYPE_HAS_INIT_REF): Rename to TYPE_HAS_COPY_CTOR.
2043         (TYPE_HAS_CONST_INIT_REF): Rename to TYPE_HAS_CONST_COPY_CTOR.
2044         (TYPE_HAS_COMPLEX_ASSIGN_REF): Rename to TYPE_HAS_COMPLEX_COPY_ASSIGN.
2045         (TYPE_HAS_COMPLEX_INIT_REF): Rename to TYPE_HAS_COMPLEX_COPY_CTOR.
2046         (TYPE_HAS_TRIVIAL_ASSIGN_REF): Rename to TYPE_HAS_TRIVIAL_COPY_ASSIGN.
2047         (TYPE_HAS_TRIVIAL_INIT_REF): Rename to TYPE_HAS_TRIVIAL_COPY_CTOR.
2048         (CLASSTYPE_LAZY_ASSIGNMENT_OP): Rename to CLASSTYPE_LAZY_COPY_ASSIGN.
2049         (sfk_assignment_operator): Rename to sfk_copy_assignment.
2050         * decl.c, call.c, class.c, init.c, method.c, pt.c, ptree.c: Adjust.
2051         * search.c, semantics.c, tree.c: Adjust.
2052
2053         * pt.c (dependent_scope_ref_p): Remove.
2054         (value_dependent_expression_p): Don't call it.
2055         (type_dependent_expression_p): Here either.
2056         * init.c (build_offset_ref): Set TREE_TYPE on a qualified-id
2057         if the scope isn't dependent.
2058
2059         * pt.c (convert_nontype_argument): Use mark_lvalue_use if we want
2060         a reference.
2061
2062         PR c++/44587
2063         * pt.c (has_value_dependent_address): New.
2064         (value_dependent_expression_p): Check it.
2065         (convert_nontype_argument): Likewise.  Call decay_conversion before
2066         folding if we want a pointer.
2067         * semantics.c (finish_id_expression): Don't add SCOPE_REF if the
2068         scope is the current instantiation.
2069
2070 2010-06-28  Jakub Jelinek  <jakub@redhat.com>
2071
2072         PR c++/44682
2073         * class.c (build_base_path): If want_pointer, call mark_rvalue_use
2074         on expr.
2075
2076 2010-06-28  Steven Bosscher  <steven@gcc.gnu.org>
2077
2078         * init.c: Do not include except.h.
2079         * decl.c: Likewise.
2080         * expr.c: Likewise.
2081         * cp-lang.c: Likewise.
2082         * pt.c: Likewise.
2083         * semantics.c: Likewise.
2084         * decl2.c: Likewise.
2085         * except.c: Likewise.
2086         (init_exception_processing): Do not set the removed
2087         lang_protect_cleanup_actions here.
2088         (cp_protect_cleanup_actions): Make non-static and remove prototype.
2089         (doing_eh): New, moved from except.c but removed the do_warning flag.
2090         (expand_start_catch_block): Update doing_eh call.
2091         (expand_end_catch_block): Likewise.
2092         (build_throw): Likewise.
2093         * cp-tree.h: Prototype cp_protect_cleanup_actions.
2094         * cp-objcp-common.h: Set LANG_HOOKS_EH_PROTECT_CLEANUP_ACTIONS to
2095         cp_protect_cleanup_actions.
2096         * Make-lang.in: Update dependencies.
2097
2098 2010-06-26  Jason Merrill  <jason@redhat.com>
2099
2100         * call.c (add_function_candidate): Set LOOKUP_COPY_PARM for any
2101         constructor called with a single argument that takes a reference
2102         to the constructor's class.
2103         (BAD_CONVERSION_RANK): New.
2104         (compare_ics): Use it to compare bad ICSes.
2105
2106 2010-06-25  Joseph Myers  <joseph@codesourcery.com>
2107
2108         * lang-specs.h: Remove +e handling.
2109
2110 2010-06-24  Andi Kleen  <ak@linux.intel.com>
2111
2112         * parser.c: (cp_parser_question_colon_clause):
2113         Switch to use cp_lexer_peek_token.
2114         Call warn_for_omitted_condop. Call pedwarn for omitted
2115         middle operand.
2116
2117 2010-06-22  Jakub Jelinek  <jakub@redhat.com>
2118
2119         PR c++/44619
2120         * typeck2.c (build_m_component_ref): Call mark_lvalue_use on
2121         datum and mark_rvalue_use on component.
2122
2123         PR c++/44627
2124         * error.c (dump_expr): Don't look at CALL_EXPR_ARG (t, 0) if
2125         the CALL_EXPR has no arguments.
2126
2127 2010-06-21  Jason Merrill  <jason@redhat.com>
2128
2129         * typeck.c (comp_except_specs): Fix ce_derived with noexcept.
2130
2131         * semantics.c (check_trait_type): Check COMPLETE_TYPE_P for array
2132         element type.
2133
2134 2010-06-17  Nathan Froyd  <froydnj@codesourcery.com>
2135
2136         * name-lookup.c (struct arg_lookup): Convert namespaces and
2137         classes fields to VEC.
2138         (arg_assoc_namespace): Adjust for new type of namespaces.
2139         (arg_assoc_class): Adjust for new type of classes.
2140         (lookup_arg_dependent): Use make_tree_vector and
2141         release_tree_vector.
2142         * typeck2.c (build_x_arrow): Use vec_member.
2143
2144 2010-06-17  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2145
2146         PR c++/44486
2147         * error.c (dump_decl): Better wording for anonymous namespace.
2148
2149 2010-06-16  Nathan Froyd  <froydnj@codesourcery.com>
2150
2151         * class.c (build_vtbl_initializer): Adjust computation of new_position
2152         and which entry to add padding for.
2153
2154 2010-06-16  Jason Merrill  <jason@redhat.com>
2155
2156         * except.c (check_noexcept_r): Return the problematic function.
2157         (finish_noexcept_expr): Give -Wnoexcept warning.  Add complain parm.
2158         * pt.c (tsubst_copy_and_build): Pass it.
2159         * parser.c (cp_parser_unary_expression): Likewise.
2160         * cp-tree.h: Adjust prototype.
2161
2162         * method.c (defaulted_late_check): Give the defaulted method
2163         the same exception specification as the implicit declaration.
2164
2165 2010-06-15  Jason Merrill  <jason@redhat.com>
2166
2167         * class.c (add_implicitly_declared_members): Implicit assignment
2168         operators can also be virtual overriders.
2169         * method.c (lazily_declare_fn): Likewise.
2170
2171         * call.c (convert_like_real): Give "initializing argument of"
2172         information for ambiguous conversion.  Give source position
2173         of function.
2174
2175         * call.c (print_z_candidates): Do print viable deleted candidates.
2176         (joust): Don't choose a deleted function just because its worst
2177         conversion is better than another candidate's worst.
2178
2179         * call.c (convert_like_real): Don't complain about
2180         list-value-initialization from an explicit constructor.
2181
2182         * decl.c (duplicate_decls): Use DECL_IS_BUILTIN rather than test
2183         DECL_SOURCE_LOCATION directly.
2184
2185         * class.c (type_has_user_provided_default_constructor): Use
2186         sufficient_parms_p.
2187
2188         * call.c (is_subseq): Handle ck_aggr, ck_list.
2189         (compare_ics): Treat an aggregate or ambiguous conversion to the
2190         same type as involving the same function.
2191
2192 2010-06-13  Shujing Zhao  <pearly.zhao@oracle.com>
2193
2194         * typeck.c (convert_for_assignment): Fix comment. Change message
2195         format from %d to %qP.
2196         (convert_for_initialization): Fix comment. 
2197
2198 2010-06-11  Shujing Zhao  <pearly.zhao@oracle.com>
2199
2200         * cp-tree.h (expr_list_kind): New type.
2201         (impl_conv_rhs): New type.
2202         (build_x_compound_expr_from_list, convert_for_initialization): Adjust
2203         prototype.
2204         (typeck.c (convert_arguments): Use impl_conv_rhs and emit the
2205         diagnostics for easy translation. Change caller.
2206         (convert_for_initialization): Use impl_conv_rhs and change caller.
2207         (build_x_compound_expr_from_list): Use expr_list_kind and emit the
2208         diagnostics for easy translation. Change caller.
2209         * decl.c (bad_spec_place): New enum.
2210         (bad_specifiers): Use it and emit the diagnostics for easy
2211         translation. Change caller.
2212         * pt.c (coerce_template_parms): Put the diagnostics in full sentence.
2213
2214 2010-06-09  Nathan Froyd  <froydnj@codesourcery.com>
2215
2216         * cp-tree.h (struct saved_scope): Change decl_ns_list field type
2217         to a VEC.
2218         * decl2.c (cp_write_global_declarations): Adjust for new type of
2219         decl_namespace_list.
2220         * name-lookup.c (current_decl_namespace): Likewise.
2221         (push_decl_namespace): Likewise.
2222         (pop_decl_namespace): Likewise.
2223
2224 2010-06-09  Nathan Froyd  <froydnj@codesourcery.com>
2225
2226         * call.c (build_java_interface_fn_ref): Call build_function_type_list
2227         instead of build_function_type.
2228         * decl.c (cxx_init_decl_processing): Likewise.
2229         (declare_global_var): Likewise.
2230         (get_atexit_node): Likewise.
2231         (expand_static_init): Likewise.
2232         * decl2.c (start_objects): Likewise.
2233         (start_static_storage_duration_function): Likewise.
2234         * except.c (init_exception_processing): Likewise.
2235         (build_exc_ptr): Likewise.
2236         (build_throw): Likewise.
2237         * rtti.c (throw_bad_cast): Likewise.
2238         (throw_bad_typeid): Likewise.
2239         (build_dynamic_cast_1): Likewise.
2240
2241 2010-06-09  Nathan Froyd  <froydnj@codesourcery.com>
2242
2243         * call.c (build_call_n): Call XALLOCAVEC instead of alloca.
2244         (build_op_delete_call): Likewise.
2245         (build_over_call): Likewise.
2246         * cp-gimplify.c (cxx_omp_clause_apply_fn): Likewise.
2247         * pt.c (process_partial_specialization): Likewise.
2248         (tsubst_template_args): Likewise.
2249         * semantics.c (finish_asm_stmt): Likewise.
2250
2251 2010-06-08  Nathan Sidwell  <nathan@codesourcery.com>
2252
2253         * decl.c (record_key_method_defined): New, broken out of ...
2254         (finish_function): ... here.  Call it.  
2255         (start_decl): Treat aliases as definitions.
2256
2257 2010-06-08  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
2258
2259         * typeck2.c (abstract_virtuals_error): Use typed GC allocation.
2260
2261         * pt.c (maybe_process_partial_specialization): Likewise.
2262         (register_specialization): Likewise.
2263         (add_pending_template): Likewise.
2264         (lookup_template_class): Likewise.
2265         (push_tinst_level): Likewise.
2266
2267         * parser.c (cp_lexer_new_main): Likewise.
2268         (cp_lexer_new_from_tokens): Likewise.
2269         (cp_token_cache_new): Likewise.
2270         (cp_parser_context_new): Likewise.
2271         (cp_parser_new): Likewise.
2272         (cp_parser_nested_name_specifier_opt): Likewise.
2273         (cp_parser_template_id): Likewise.
2274
2275         * name-lookup.c (binding_entry_make): Likewise.
2276         (binding_table_construct): Likewise.
2277         (binding_table_new): Likewise.
2278         (cxx_binding_make): Likewise.
2279         (pushdecl_maybe_friend): Likewise.
2280         (begin_scope): Likewise.
2281         (push_to_top_level): Likewise.
2282
2283         * lex.c (init_reswords): Likewise.
2284         (retrofit_lang_decl): Likewise.
2285         (cxx_dup_lang_specific_decl): Likewise.
2286         (copy_lang_type): Likewise.
2287         (cxx_make_type): Likewise.
2288
2289         * decl.c (make_label_decl): Likewise.
2290         (check_goto): Likewise.
2291         (start_preparsed_function): Likewise.
2292         (save_function_data): Likewise.
2293
2294         * cp-tree.h (TYPE_SET_PTRMEMFUNC_TYPE): Likewise.
2295
2296         * cp-objcp-common.c (decl_shadowed_for_var_insert): Likewise.
2297
2298         * class.c (finish_struct_1): Likewise.
2299
2300         * cp-tree.h (struct lang_type): Add variable_size GTY option.
2301         (struct lang_decl): Likewise.
2302
2303         * parser.c (cp_parser_new): Update comment to not reference
2304         ggc_alloc.
2305
2306 2010-06-07  Jason Merrill  <jason@redhat.com>
2307
2308         PR c++/44366
2309         * error.c (dump_parameters): Mask out TFF_SCOPE.
2310         (dump_simple_decl): Don't print the scope of a PARM_DECL.
2311         (dump_scope): Remove no-op mask.
2312
2313         PR c++/44401
2314         * parser.c (cp_parser_lookup_name): Fix naming the constructor.
2315
2316         * cp-tree.h (COMPLETE_OR_OPEN_TYPE_P): New macro.
2317         * init.c (build_offset_ref): Use it.
2318         * pt.c (maybe_process_partial_specialization): Use it.
2319         (instantiate_class_template): Use it.
2320         * search.c (lookup_base): Use it.
2321
2322 2010-06-07  Jakub Jelinek  <jakub@redhat.com>
2323
2324         PR c++/44444
2325         * expr.c (mark_exp_read): Handle INDIRECT_REF.
2326         * cvt.c (convert_to_void): Handle INDIRECT_REF like
2327         handled_component_p.
2328
2329         PR c++/44443
2330         * decl.c (initialize_local_var): If TREE_USED is set on the type,
2331         set also DECL_READ_P on the decl.
2332
2333 2010-05-25  Dodji Seketeli  <dodji@redhat.com>
2334
2335         PR c++/44188
2336         * cp-tree.h (typedef_variant_p): Move this declaration to
2337         gcc/tree.h.
2338         * tree.c (typedef_variant_p): Move this definition to gcc/tree.c.
2339         * decl.c (grokdeclarator): Do not rename debug info of an
2340         anonymous tagged type named by a typedef.
2341
2342 2010-06-05  Fabien Chêne  <fabien@gcc.gnu.org>
2343
2344         PR c++/44086
2345         * class.c (check_field_decls): Move the call to
2346         check_bitfield_decl before trying to set the
2347         CLASSTYPE_READONLY_FIELDS_NEED_INIT flag.
2348
2349 2010-06-05  Steven Bosscher  <steven@gcc.gnu.org>
2350
2351         * typeck.c: Update include path for moved files.
2352         * decl.c: Likewise.
2353         * rtti.c: Likewise.
2354         * cp-gimplify.c: Likewise.
2355         * cp-lang.c: Likewise.
2356         * pt.c: Likewise.
2357         * semantics.c: Likewise.
2358         * cxx-pretty-print.h: Likewise.
2359         * decl2.c: Likewise.
2360         * parser.c: Likewise.
2361         * cp-objcp-common.c: Likewise.
2362         * cp-tree.h: Likewise.
2363         * name-lookup.c: Likewise.
2364         * lex.c: Likewise.
2365         * name-lookup.h: Likewise.
2366         * config-lang.in: Update paths in gtfiles for files in c-family/.
2367         * Make-lang.in: Likewise.
2368
2369 2010-06-04  Magnus Fromreide  <magfr@lysator.liu.se>
2370
2371         * cvt.c (cp_convert_to_pointer): Use null_ptr_cst_p.
2372         * typeck.c (build_ptrmemfunc): Likewise.
2373
2374 2010-06-04  Jason Merrill  <jason@redhat.com>
2375
2376         * typeck2.c (merge_exception_specifiers): Adjust merging of
2377         throw() and noexcept(true).
2378
2379         * pt.c (value_dependent_expression_p) [NOEXCEPT_EXPR]: Avoid
2380         using an uninitialized variable.
2381
2382         * cxx-pretty-print.c (pp_cxx_unary_expression): Handle NOEXCEPT_EXPR.
2383         (pp_cxx_expression): Likewise.
2384
2385         Implement noexcept-specification (15.4)
2386         * parser.c (cp_parser_exception_specification_opt): Parse it.
2387         Give -Wdeprecated warning about throw() specs.
2388         * pt.c (tsubst_exception_specification): Handle it.
2389         * error.c (dump_exception_spec): Handle it.
2390         (dump_expr): Handle NOEXCEPT_EXPR.
2391         * cxx-pretty-print.c (pp_cxx_exception_specification): Likewise.
2392         * typeck.c (comp_except_specs): Handle compatibility rules.
2393         Change exact parm to take an enum.
2394         * typeck2.c (merge_exception_specifiers): Handle noexcept.
2395         * except.c (nothrow_spec_p, type_noexcept_p): New fns.
2396         (type_throw_all_p, build_noexcept_spec): New fns.
2397         * cp-tree.h (TYPE_NOTHROW_P, TYPE_NOEXCEPT_P): Use them.
2398         (comp_except_specs): Define ce_derived, ce_normal, ce_exact enums.
2399         (cp_tree_index): Add CPTI_NOEXCEPT_TRUE_SPEC, CPTI_NOEXCEPT_FALSE_SPEC.
2400         (noexcept_true_spec, noexcept_false_spec): New macros.
2401         * name-lookup.c (pushdecl_maybe_friend): Adjust.
2402         * search.c (check_final_overrider): Adjust.
2403         * decl.c (check_redeclaration_exception_specification): Adjust.
2404         (use_eh_spec_block): Use type_throw_all_p.
2405         (cxx_init_decl_processing): Set noexcept_false_spec,noexcept_true_spec.
2406         Give operator new a noexcept-specification in C++0x mode.
2407         * tree.c (build_exception_variant, cxx_type_hash_eq): Adjust.
2408         (cp_build_type_attribute_variant): Don't test TYPE_RAISES_EXCEPTIONS.
2409
2410         Implement noexcept operator (5.3.7)
2411         * cp-tree.def (NOEXCEPT_EXPR): New.
2412         * except.c (check_noexcept_r, finish_noexcept_expr): New.
2413         * cp-tree.h: Declare finish_noexcept_expr.
2414         * parser.c (cp_parser_unary_expression): Parse noexcept-expression.
2415         * pt.c (tsubst_copy_and_build): And tsubst it.
2416         (type_dependent_expression_p): Handle it.
2417         (value_dependent_expression_p): Handle it.
2418
2419         * call.c (build_conditional_expr): Never fold in unevaluated context.
2420         * tree.c (build_aggr_init_expr): Propagate TREE_NOTHROW.
2421         * semantics.c (simplify_aggr_init_expr): Likewise.
2422         * typeck.c (merge_types): Call merge_exception_specifiers.
2423         * decl.c (duplicate_decls): Check DECL_SOURCE_LOCATION rather than
2424         DECL_ANTICIPATED for preferring new type.
2425
2426 2010-06-04  Joseph Myers  <joseph@codesourcery.com>
2427
2428         * g++spec.c (lang_specific_driver): Use GCC-specific formats in
2429         diagnostics.
2430
2431 2010-06-04  Jakub Jelinek  <jakub@redhat.com>
2432
2433         PR c++/44412
2434         * typeck.c (build_class_member_access_expr): Call mark_exp_read
2435         on object for static data members.
2436
2437 2010-06-04  Jakub Jelinek  <jakub@redhat.com>
2438             Jason Merrill  <jason@redhat.com>
2439
2440         PR c++/44362
2441         * call.c (build_conditional_expr): If both arg2 and arg3 are lvalues
2442         with the same type, call mark_lvalue_use on both.
2443
2444 2010-06-03  Nathan Froyd  <froydnj@codesourcery.com>
2445
2446         * class.c (struct vtbl_init_data_s): Remove last_init field.
2447         (struct secondary_vptr_vtt_init_data_s): Change type of inits field
2448         to a VEC.
2449         (finish_vtbls): Use a VEC rather than a TREE_LIST for the accumulated
2450         initializers.
2451         (build_vtt): Likewise.
2452         (initialize_vtable): Take a VEC instead of a tree.
2453         (build_vtt_inits): Change return type to void.  Take a VEC **
2454         instead of a tree *; accumulate results into said VEC.
2455         (build_ctor_vtbl_group): Use a VEC rather than a TREE_LIST for the
2456         accumulated initializers.  Pass the vtable to accumulate_vtbl_inits.
2457         (accumulate_vtbl_inits): Add extra vtable tree parameter; take a VEC
2458         instead of a tree.
2459         (dfs_accumulate_vtbl_inits): Likewise.  Change return type to void.
2460         (build_vtbl_initializer): Add VEC parameter; accumulate initializers
2461         into it.
2462         (dfs_build_secondary_vptr_vtt_inits): Use CONSTRUCTOR_APPEND_ELT
2463         rather than tree_cons.
2464         (build_vbase_offset_vtbl_entries): Likewise.
2465         (add_vcall_offset): Likewise.
2466         (build_rtti_vtbl_entries): Likewise.
2467         * cp-tree.h (initialize_artificial_var): Take a VEC instead of a tree.
2468         * decl.c (initialize_artificial_var): Use build_constructor instead
2469         of build_constructor_from_list.
2470
2471 2010-06-03  H.J. Lu  <hongjiu.lu@intel.com>
2472
2473         PR c++/44294
2474         * class.c (layout_class_type): Check MAX_FIXED_MODE_SIZE on
2475         bit-field.
2476
2477 2010-06-02  Jonathan Wakely  <jwakely.gcc@gmail.com>
2478
2479         * parser.c (cp_parser_mem_initializer_list): Change error text.
2480
2481 2010-06-02  Jakub Jelinek  <jakub@redhat.com>
2482
2483         * cp-objcp-common.c (shadowed_var_for_decl): Change into
2484         tree_decl_map hashtab from tree_map.
2485         (decl_shadowed_for_var_lookup, decl_shadowed_for_var_insert): Adjust.
2486         (init_shadowed_var_for_decl): Adjust initialization.
2487
2488         PR c++/44361
2489         * cvt.c (convert_to_void): If implicit is NULL, call mark_rvalue_use
2490         instead of calling mark_exp_read only when not an assignment.
2491
2492         PR debug/44367
2493         * semantics.c (finalize_nrv): Don't copy DECL_ARTIFICIAL, DECL_IGNORED_P,
2494         DECL_SOURCE_LOCATION and DECL_ABSTRACT_ORIGIN from var to result.
2495         Set DECL_VALUE_EXPR on var.
2496
2497 2010-06-02  Jason Merrill  <jason@redhat.com>
2498
2499         * error.c (dump_type): Improve typedef handling.
2500
2501         PR c++/9726
2502         PR c++/23594
2503         PR c++/44333
2504         * name-lookup.c (same_entity_p): New.
2505         (ambiguous_decl): Multiple declarations of the same entity
2506         are not ambiguous.
2507
2508 2010-06-01  Jason Merrill  <jason@redhat.com>
2509
2510         DR 990
2511         * call.c (add_list_candidates): Prefer the default constructor.
2512         (build_aggr_conv): Treat missing initializers like { }.
2513         * typeck2.c (process_init_constructor_record): Likewise.
2514         * init.c (expand_default_init): Use digest_init for
2515         direct aggregate initialization, too.
2516
2517         * call.c (add_list_candidates): Split out...
2518         (build_user_type_conversion_1): ...from here.
2519         (build_new_method_call): And here.
2520         (implicit_conversion): Propagate LOOKUP_NO_NARROWING.
2521
2522         PR c++/44358
2523         * call.c (build_list_conv): Set list-initialization flags properly.
2524
2525 2010-06-01  Nathan Froyd  <froydnj@codesourcery.com>
2526
2527         * typeck2.c (build_x_arrow): Make types_memoized a VEC.
2528
2529 2010-06-01  Arnaud Charlet  <charlet@adacore.com>
2530             Matthew Gingell  <gingell@adacore.com>
2531
2532         * Make-lang.in (CXX_C_OBJS): Add c-ada-spec.o.
2533         * decl2.c: Include langhooks.h and c-ada-spec.h.
2534         (cpp_check, collect_source_refs, collect_ada_namespace,
2535         collect_all_refs): New functions.
2536         (cp_write_global_declarations): Add handling of -fdump-ada-spec.
2537         * lang-specs.h: Ditto.
2538
2539 2010-05-29  Nathan Froyd  <froydnj@codesourcery.com>
2540
2541         * cp-tree.h (cp_build_function_call_nary): Declare.
2542         * typeck.c (cp_build_function_call_nary): Define.
2543         * decl.c (register_dtor_fn): Use it instead of
2544         cp_build_function_call.
2545         (cxx_maybe_build_cleanup): Likewise.
2546         * decl2.c (generate_ctor_or_dtor_function): Likewise.
2547         * except.c (do_get_exception_ptr): Likewise.
2548         (do_begin_catch): Likewise.
2549         (do_allocate_exception): Likewise.
2550         (do_free_exception): Likewise.
2551         (build_throw): Likewise.  Use cp_build_function_call_vec instead
2552         of cp_build_function_call.
2553         (do_end_catch): Likewise.
2554
2555 2010-05-29  Nathan Froyd  <froydnj@codesourcery.com>
2556
2557         * cp-tree.h (struct cp_decl_specifier_seq): Move type_location field up.
2558         (struct cp_declarator): Move id_loc field up.
2559
2560 2010-05-29  Steven Bosscher  <steven@gcc.gnu.org>
2561
2562         * cp-tree.h (ATTRIBUTE_GCC_CXXDIAG): Remove.  Require that
2563         this file is included before c-common.h.  Define GCC_DIAG_STYLE
2564         before including diagnostic-core.h and toplev.h.
2565         (pedwarn_cxx98): Use ATTRIBUTE_GCC_DIAG.
2566         * pt.c: Include cp-tree.h before c-common.h.
2567
2568 2010-05-29  Steven Bosscher  <steven@gcc.gnu.org>
2569
2570         * tree.c (c_register_addr_space): Add stub.
2571
2572 2010-05-28  Joseph Myers  <joseph@codesourcery.com>
2573
2574         * g++spec.c (lang_specific_driver): Use fatal_error instead of
2575         fatal.
2576
2577 2010-05-28  Dodji Seketeli  <dodji@redhat.com>
2578
2579         Revert fix of PR c++/44188
2580         * cp-tree.h (typedef_variant_p): Revert moving this declaration to
2581         gcc/tree.h.
2582         * tree.c (typedef_variant_p): Revert moving this definition to
2583         gcc/tree.c.
2584         * decl.c (grokdeclarator): Revert naming typedef handling.
2585
2586 2010-05-27  Joseph Myers  <joseph@codesourcery.com>
2587
2588         * call.c: Include diagnostic-core.h instead of diagnostic.h.
2589         * cp-lang.c: Don't include diagnostic.h
2590         * name-lookup.c: Include diagnostic-core.h instead of
2591         diagnostic.h.
2592         (cp_emit_debug_info_for_using): Use seen_error.
2593         * optimize.c: Include diagnostic-core.h instead of diagnostic.h.
2594         * parser.c: Include diagnostic-core.h instead of diagnostic.h.
2595         * pt.c (iterative_hash_template_arg): Use seen_error.
2596         * repo.c: Include diagnostic-core.h instead of diagnostic.h.
2597         * typeck2.c: Include diagnostic-core.h instead of diagnostic.h.
2598         * Make-lang.in (cp/cp-lang.o, cp/typeck2.o, cp/call.o, cp/repo.o,
2599         cp/optimize.o, cp/parser.o, cp/name-lookup.o): Update
2600         dependencies.
2601
2602 2010-05-25  Dodji Seketeli  <dodji@redhat.com>
2603
2604         PR c++/44188
2605         * cp-tree.h (typedef_variant_p): Move this declaration to
2606         gcc/tree.h.
2607         * tree.c (typedef_variant_p): Move this definition to gcc/tree.c.
2608         * decl.c (grokdeclarator): Do not rename debug info of an
2609         anonymous tagged type named by a typedef.
2610
2611 2010-05-27  Jason Merrill  <jason@redhat.com>
2612
2613         PR c++/43555
2614         * decl.c (grokdeclarator) [cdk_pointer et al]: Force evaluation of
2615         anonymous VLA size.
2616
2617 2010-05-27  Kai Tietz  <kai.tietz@onevision.com>
2618
2619         PR bootstrap/44287
2620         * rtti.c (emit_support_tinfos): Check for NULL_TREE.
2621         * class.c (layout_class_type): Likewise.
2622         * decl.c (finish_enum): Likewise.
2623         * mangle.c (write_builitin_type): Likewise.
2624
2625 2010-05-26  Kai Tietz  <kai.tietz@onevision.com>
2626
2627         * cp-tree.h (cp_decl_specifier_seq): Add new bifield
2628         explicit_int128_p.
2629         * decl.c (grokdeclarator): Handle __int128.
2630         * parser.c (cp_lexer_next_token_is_decl_specifier_ke): Likewise.
2631         (cp_parser_simple_type_specifier): Likewise.
2632         * rtti.c (emit_support_tinfos): Add int128 nodes for rtti.
2633         * typeck.c (cp_common_type): Handle __int128.
2634         * mangle.c (integer_type_codes): Add itk_int128 and
2635         itk_unsigned_int128.
2636
2637 2010-05-26  Jason Merrill  <jason@redhat.com>
2638
2639         PR c++/43382
2640         * pt.c (tsubst_pack_expansion): Don't get confused by recursive
2641         unification.
2642
2643 2010-05-26  Steven Bosscher  <steven@gcc.gnu.org>
2644
2645         * cp-lang.c: Do not include expr.h.
2646
2647 2010-05-26  Steven Bosscher  <steven@gcc.gnu.org>
2648
2649         * decl.c: Do not include rtl.h
2650         * semantics.c: Likewise.
2651
2652 2010-05-25  Steven Bosscher  <steven@gcc.gnu.org>
2653
2654         * cp-tree.h: Do not include splay-tree.h.
2655         (struct prtmem_cst): Remove unused field and false comment.
2656         * typeck.c: Do not include rtl.h, expr.h, and tm_p.h.
2657         * optimize.c: Do not inclde rtl.h, insn-config.h, and integrate.h.
2658         * init.c: Do not include rtl.h and expr.h.
2659         * class.c: Do not include rtl.h.  Include splay-tree.h.
2660         (build_clone): Use plain NULL instead of NULL_RTX.
2661         * decl.c: Do not include expr.h.  Explain why rtl.h has to be
2662         included.  Include splay-tree.h.
2663         * method.c: Do not include rtl.h and expr.h.
2664         (use_thunk): Use plain NULL instead of NULL_RTX.
2665         * except.c: Do not include rtl.h, expr.h, and libfuncs.h.
2666         * tree.c: Do not include rtl.h, insn-config.h, integrate.h,
2667         and target.h.  Include splay-tree.h.
2668         * expr.c: Do not include rtl.h and expr.h.
2669         * pt.c: Do not include obstack.h and rtl.h.
2670         (tsubst_friend_function): Use plain NULL instead of NULL_RTX.
2671         (tsubst_decl): Likewise.
2672         (instantiate_decl): Likewise.
2673         * semantics.c: Do not include exprt.h and debug.h.  Explain why
2674         rtl.h has to be included.
2675         * decl2.c: Do not include rtl.h and expr.h.  Include splay-tree.h.
2676         * call.c: Do not include rtl.h and expr.h.
2677         * search.c: Do not include obstack.h and rtl.h.
2678         * friend.c: Do not include rtl.h and expr.h.
2679         * Make-lang.in: Update dependencies.
2680
2681 2010-05-25  Jakub Jelinek  <jakub@redhat.com>
2682
2683         PR c++/18249
2684         * parser.c (non_integral_constant): Add NIC_NONE.
2685         (required_token): Add RT_NONE.
2686         (cp_parser_unary_expression): Initialize non_constant_p
2687         to NIC_NONE.
2688         (cp_parser_asm_definition): Initialize missing to RT_NONE.
2689         (cp_parser_primary_expression, cp_parser_postfix_expression,
2690         cp_parser_cast_expression, cp_parser_binary_expression,
2691         cp_parser_functional_cast): Fix formatting.
2692
2693 2010-05-25  Shujing Zhao  <pearly.zhao@oracle.com>
2694         
2695         PR c++/18249
2696         * parser.c: Remove inclusion of dyn-string.h.
2697         (non_integral_constant): New enum.
2698         (name_lookup_error): New enum.
2699         (required_token): New enum.
2700         (cp_parser_required_error): New function.
2701         (cp_parser_require): Change the type of variable token_desc to
2702         required_token and use cp_parser_required_error.
2703         (cp_parser_require_keyword): Likewise.
2704         (cp_parser_error): Use gmsgid as parameter.
2705         (cp_parser_name_lookup_error): Change the type of variable desired to
2706         name_lookup_error and put the diagnostic in the full sentences. Change
2707         caller.
2708         (cp_parser_non_integral_constant_expression): Change the type of the
2709         variable thing to non_integral_constant and put the diagnostics in
2710         full sentences. Change caller.
2711
2712 2010-05-24  Eric Botcazou  <ebotcazou@adacore.com>
2713
2714         PR middle-end/44100
2715         * typeck.c (cp_build_unary_op): Fold offsetof-like computations.
2716
2717 2010-05-24  Joseph Myers  <joseph@codesourcery.com>
2718
2719         * error.c (cp_diagnostic_starter): Update call to
2720         diagnostic_build_prefix.
2721         (cp_print_error_function,
2722         print_instantiation_partial_context_line): Check show_column flag
2723         in context.
2724
2725 2010-05-24  Jason Merrill  <jason@redhat.com>
2726
2727         PR c++/41510
2728         * decl.c (check_initializer): Don't wrap an init-list in a
2729         TREE_LIST.
2730         * init.c (build_aggr_init): Don't assume copy-initialization if
2731         init has CONSTRUCTOR_IS_DIRECT_INIT.
2732         * call.c (build_new_method_call): Sanity check.
2733
2734 2010-05-24  Nathan Froyd  <froydnj@codesourcery.com>
2735
2736         * rtti.c (tinfo_base_init): Use build_constructor instead of
2737         build_constructor_from_list.  Don't cons a tree node for
2738         returning.
2739         (generic_initializer): Use build_constructor_single instead of
2740         build_constructor_from_list.
2741         (ptr_initializer): Use build_constructor instead of
2742         build_constructor_from_list
2743         (ptm_initializer): Likewise.
2744         (class_initializer): Likewise.  Take varargs instead of TRAIL.
2745         (get_pseudo_ti_init): Adjust calls to class_initializer.  Use
2746         build_constructor instead of build_constructor_from_list.
2747
2748 2010-05-22  Steven Bosscher  <steven@gcc.gnu.org>
2749
2750         * semantics.c: Include bitmap.h.
2751         * Make-lang.in: Update dependencies.
2752
2753 2010-05-22  Jan Hubicka  <jh@suse.cz>
2754
2755         * decl2.c (maybe_emit_vtables): Produce same comdat group when outputting
2756         comdat vtables.
2757         (cxx_callgraph_analyze_expr): Remove code marking vtables needed.
2758
2759 2010-05-21  Joseph Myers  <joseph@codesourcery.com>
2760
2761         * cxx-pretty-print.c: Correct merge error.
2762
2763 2010-05-21  Joseph Myers  <joseph@codesourcery.com>
2764
2765         * error.c: Include tree-diagnostic.h and tree-pretty-print.h.
2766         (cp_print_error_function): Use diagnostic_abstract_origin macro.
2767         (cp_printer): Handle %K here using percent_K_format.
2768         * cxx-pretty-print.c: Include tree-pretty-print.h.
2769         * Make-lang.in (cp/error.o, cp/cxx-pretty-print.o): Update
2770         dependencies.
2771
2772 2010-05-21  Steven Bosscher  <steven@gcc.gnu.org>
2773
2774         * error.c, tree.c, typeck2.c, cxx-pretty-print.c, mangle.c:
2775         Clean up redundant includes.
2776
2777 2010-05-20  Paolo Carlini  <paolo.carlini@oracle.com>
2778
2779         PR c++/30298
2780         * decl.c (xref_basetypes): Return false in case of ill-formed
2781         redefinition.
2782
2783 2010-05-19  Jason Merrill  <jason@redhat.com>
2784
2785         * call.c (reference_binding): Use cp_build_qualified_type_real
2786         and cp_type_quals consistently.
2787         (add_function_candidate): Likewise.
2788         (build_conditional_expr): Likewise.
2789         (convert_like_real): Likewise.
2790         (type_passed_as): Likewise.
2791         * class.c (add_method): Likewise.
2792         (same_signature_p): Likewise.
2793         (layout_class_type): Likewise.
2794         * decl.c (cxx_init_decl_processing): Likewise.
2795         (cp_fname_init): Likewise.
2796         (grokdeclarator): Likewise.
2797         * decl2.c (cp_reconstruct_complex_type): Likewise.
2798         * init.c (build_new_1): Likewise.
2799         * method.c (do_build_copy_constructor): Likewise.
2800         (implicitly_declare_fn): Likewise.
2801         * pt.c (tsubst_aggr_type): Likewise.
2802         (tsubst): Likewise.
2803         * rtti.c (init_rtti_processing): Likewise.
2804         (build_headof): Likewise.
2805         (build_dynamic_cast_1): Likewise.
2806         (tinfo_base_init): Likewise.
2807         (emit_support_tinfos): Likewise.
2808         * semantics.c (capture_decltype): Likewise.
2809         * tree.c (cv_unqualified): Likewise.
2810         * typeck.c (composite_pointer_type): Likewise.
2811         (string_conv_p): Likewise.
2812
2813         * mangle.c (write_CV_qualifiers_for_type): Tweak.
2814
2815         * call.c (initialize_reference): Use CP_TYPE_CONST_P.
2816         * decl.c (start_decl): Likewise.
2817         * semantics.c (finish_compound_literal): Likewise.
2818         * typeck.c (check_return_expr): Use CP_TYPE_VOLATILE_P.
2819         (cp_type_readonly): Remove.
2820         * cp-tree.h: Remove declaration.
2821
2822         * typeck.c (merge_types): Preserve memfn quals.
2823
2824         * decl.c (grokdeclarator): Don't check quals on fn type.
2825         * typeck.c (cp_apply_type_quals_to_decl): Likewise.
2826         * tree.c (cp_build_qualified_type_real): Simplify qualifier checking.
2827
2828         PR c++/44193
2829         * typeck.c (type_memfn_quals): New fn.
2830         (apply_memfn_quals): New fn.
2831         (cp_type_quals): Return TYPE_UNQUALIFIED for FUNCTION_TYPE.
2832         (cp_type_readonly): Use cp_type_quals.
2833         * cp-tree.h: Add declarations.
2834         * tree.c (cp_build_qualified_type_real): Don't set, but do
2835         preserve, quals on FUNCTION_TYPE.
2836         (strip_typedefs): Use apply_memfn_quals and type_memfn_quals.
2837         * decl.c (build_ptrmem_type): Likewise.
2838         (grokdeclarator): Likewise.
2839         (static_fn_type): Likewise.
2840         * decl2.c (change_return_type): Likewise.
2841         (cp_reconstruct_complex_type): Likewise.
2842         * pt.c (tsubst_function_type): Likewise.
2843         (unify): Likewise.
2844         (tsubst): Likewise.  Drop special FUNCTION_TYPE substitution code.
2845
2846 2010-05-18  Nathan Froyd  <froydnj@codesourcery.com>
2847
2848         * tree.c (build_min_non_dep_call_vec): Update comment.
2849
2850 2010-05-17  Jason Merrill  <jason@redhat.com>
2851
2852         * call.c (struct z_candidate): Add explicit_targs field.
2853         (add_template_candidate_real): Set it.
2854         (build_over_call): Use it to control init-list warning.
2855
2856         PR c++/44157
2857         * call.c (build_over_call): Limit init-list deduction warning to
2858         cases where the argument is actually an init-list.
2859
2860         PR c++/44158
2861         * call.c (build_over_call): Don't do bitwise copy for move ctor.
2862
2863 2010-05-17  Dodji Seketeli  <dodji@redhat.com>
2864             Jason Merrill  <jason@redhat.com>
2865
2866         PR c++/44108
2867         * decl.c (compute_array_index_type): Call mark_rvalue_use.
2868
2869 2010-05-15  Jason Merrill  <jason@redhat.com>
2870
2871         * cp-tree.h (TYPE_NOEXCEPT_P): New macro.
2872         * except.c (begin_eh_spec_block): Use MUST_NOT_THROW_EXPR if
2873         TYPE_NOEXCEPT_P.
2874         (finish_eh_spec_block): Adjust.
2875
2876 2010-05-15  Jakub Jelinek  <jakub@redhat.com>
2877
2878         PR c++/44148
2879         * pt.c (tsubst): Unshare template argument.
2880
2881 2010-05-15  Steven Bosscher  <steven@gcc.gnu.org>
2882
2883         * decl.c: Include tree-iterator.h, as fixup for tree-inline.h changes.
2884         * Make-lang.in: Fix dependencies accordingly.
2885
2886 2010-05-14  Jason Merrill  <jason@redhat.com>
2887
2888         C++ DR 475
2889         * except.c (build_throw): Simplify, adjust for DR 475.
2890
2891         PR c++/44127
2892         * except.c (dtor_nothrow): Return nonzero for type with
2893         trivial destructor.
2894
2895         PR c++/44127
2896         * cp-gimplify.c (gimplify_must_not_throw_expr): Use
2897         gimple_build_eh_must_not_throw.
2898
2899 2010-05-14  Martin Jambor  <mjambor@suse.cz>
2900
2901         * cp-lang.c (LANG_HOOKS_FOLD_OBJ_TYPE_REF): Remove both its undef
2902         and define.
2903
2904 2010-05-14  Jonathan Wakely  <jwakely.gcc@gmail.com>
2905
2906         * call.c (build_new_method_call): Change warning text.
2907         * typeck2.c (build_functional_cast): Change error text.
2908
2909 2010-05-14  Shujing Zhao  <pearly.zhao@oracle.com>
2910
2911         PR c++/30566
2912         * name-lookup.c (pushdecl_maybe_friend): Avoid the warnings about
2913         shadowing the outer parameter or variables by the declaration of
2914         nested function in nested structure or class. Warn the shadowing by
2915         the declaration of nested lambda expression.
2916
2917 2010-05-13  Jason Merrill  <jason@redhat.com>
2918
2919         * typeck.c (cp_build_array_ref): Factor out from...
2920         (build_array_ref): ...here.  Drop complain parm.
2921         (build_new_op): Adjust.
2922         * class.c (build_vtbl_ref_1): Adjust.
2923         * decl2.c (grok_array_decl): Adjust.
2924         * cp-tree.h: Adjust prototypes.
2925
2926 2010-05-13  Jan Hubicka  <jh@suse.cz>
2927
2928         * decl.c (cp_finish_decl): Do not worry about used attribute.
2929
2930 2010-05-12  Jason Merrill  <jason@redhat.com>
2931
2932         * typeck.c (build_array_ref): Take complain parm.
2933         * cp-tree.h: Add it to prototype.
2934         * call.c (build_new_op): Pass it.
2935         * class.c (build_vtbl_ref): Pass it.
2936         * decl2.c (grok_array_decl): Pass it.
2937
2938         PR bootstrap/44048
2939         PR target/44099
2940         * cp-tree.def (NULLPTR_TYPE): Remove.
2941         * cp-tree.h (NULLPTR_TYPE_P): New.
2942         (SCALAR_TYPE_P): Use it.
2943         (nullptr_type_node): New.
2944         (cp_tree_index): Add CPTI_NULLPTR_TYPE.
2945         * decl.c (cxx_init_decl_processing): Call record_builtin_type on
2946         nullptr_type_node.
2947         * cvt.c (ocp_convert): Use NULLPTR_TYPE_P instead of NULLPTR_TYPE.
2948         * cxx-pretty-print.c (pp_cxx_constant): Likewise.
2949         * error.c (dump_type, dump_type_prefix, dump_type_suffix): Likewise.
2950         * mangle.c (write_type): Likewise.
2951         * name-lookup.c (arg_assoc_type): Likewise.
2952         * typeck.c (build_reinterpret_cast_1): Likewise.
2953         * rtti.c (typeinfo_in_lib_p): Likewise.
2954         (emit_support_tinfos): Remove local nullptr_type_node.
2955
2956         * cp-tree.h (UNKNOWN_TYPE): Remove.
2957         * decl.c (cxx_init_decl_processing): Use LANG_TYPE instead.
2958         * error.c (dumy_type, dump_type_prefix, dump_type_suffix): Likewise.
2959         * typeck2.c (cxx_incomplete_type_diagnostic): Likewise.
2960         * class.c (instantiate_type): Check unknown_type_node rather than
2961         UNKNOWN_TYPE.
2962         * name-lookup.c (maybe_push_decl): Likewise.
2963         * rtti.c (get_tinfo_decl_dynamic): Likewise.
2964         (get_typeid): Likewise.
2965         * semantics.c (finish_offsetof): Likewise.
2966
2967         PR c++/20669
2968         * call.c (add_template_candidate_real): If deduction fails, still
2969         add the template as a non-viable candidate.
2970         (equal_functions): Handle template candidates.
2971         (print_z_candidate): Likewise.
2972         (print_z_candidates): Likewise.
2973         (build_new_function_call): Likewise.
2974
2975         * cp-tree.h (LOOKUP_LIST_ONLY): New.
2976         * call.c (add_candidates): Enforce it.
2977         (build_new_method_call): Try non-list ctor if no viable list ctor.
2978         (build_user_type_conversion_1): Likewise.
2979
2980         * call.c (add_candidates): Distinguish between type(x) and
2981         x.operator type().
2982         (convert_class_to_reference): Set LOOKUP_NO_CONVERSION.
2983         (build_new_method_call): Give better error for conversion op.
2984
2985         * call.c (add_candidates): Add first_arg and return_type parms.
2986         Add special constructor/conversion op handling.
2987         (convert_class_to_reference): Use it.
2988         (build_user_type_conversion_1): Likewise.
2989         (build_op_call): Likewise.
2990         (build_new_method_call): Likewise.
2991         (build_new_op): Adjust.
2992         (perform_overload_resolution): Adjust.
2993
2994 2010-05-11  Paolo Carlini  <paolo.carlini@oracle.com>
2995
2996         PR c++/34272
2997         PR c++/43630
2998         PR c++/34491
2999         * pt.c (process_partial_specialization): Return error_mark_node
3000         in case of unused template parameters in partial specialization.
3001
3002 2010-05-11  Jakub Jelinek  <jakub@redhat.com>
3003
3004         PR c++/44062
3005         * semantics.c (finish_expr_stmt): Don't call mark_exp_read here...
3006         * cvt.c (convert_to_void): ... but here.  If expr is a COMPOUND_EXPR,
3007         look at its second operand.
3008
3009 2010-05-10  Jason Merrill  <jason@redhat.com>
3010
3011         PR c++/44017
3012         * semantics.c (baselink_for_fns): Revert earlier change.
3013
3014         PR c++/44045
3015         * typeck.c (cp_build_modify_expr): Complain about assignment to
3016         array from init list.
3017
3018 2010-05-10  Fabien Chêne  <fabien.chene@gmail.com>
3019
3020         PR c++/43719
3021         * decl.c (check_initializer): strip array type before checking for
3022         uninitialized const or ref members.
3023
3024 2010-05-07  Fabien Chêne  <fabien.chene@gmail.com>
3025
3026         PR c++/43951
3027         * init.c (diagnose_uninitialized_cst_or_ref_member_1): Returns the
3028         error count. Emit errors only if compain is true.
3029         (build_new_1): Do not return error_mark_node if
3030         diagnose_uninitialized_cst_or_ref_member_1 does not diagnose any
3031         errors. Delay the check for user-provided constructor.
3032         (perform_member_init): Adjust.
3033         * cp-tree.h (diagnose_uninitialized_cst_or_ref_member): Change the
3034         prototype.
3035
3036 2010-05-06  Magnus Fromreide  <magfr@lysator.liu.se>
3037             Jason Merrill  <jason@redhat.com>
3038
3039         Add support for C++0x nullptr.
3040         * cp-tree.def: Add NULLPTR_TYPE.
3041         * cp-tree.h: Add nullptr_node.
3042         (cp_tree_index): Add CPTI_NULLPTR.
3043         (SCALAR_TYPE_P): Add NULLPTR_TYPE.
3044         * call.c (null_ptr_cst_p): Handle nullptr.
3045         (standard_conversion): Likewise.
3046         (convert_arg_to_ellipsis): Likewise.
3047         * mangle.c (write_type): Likewise.
3048         * name-lookup.c (arg_assoc_type): Likewise.
3049         * parser.c (cp_parser_primary_expression): Likewise.
3050         * typeck.c (cp_build_binary_op): Likewise.
3051         (build_reinterpret_cast_1): Likewise.
3052         * error.c (dump_type): Likewise.
3053         (dump_type_prefix, dump_type_suffix): Likewise.
3054         * decl.c (cxx_init_decl_processing): Likewise.
3055         * cxx-pretty-print.c (pp_cxx_constant): Likewise.
3056         * cvt.c (ocp_convert): Likewise.
3057         * rtti.c (typeinfo_in_lib_p, emit_support_tinfos): Put
3058         nullptr_t tinfo in libsupc++.
3059
3060 2010-05-06  Jason Merrill  <jason@redhat.com>
3061
3062         * semantics.c (simplify_aggr_init_expr): Use INIT_EXPR.
3063
3064 2010-04-22  Jakub Jelinek <jakub@redhat.com>
3065             Dodji Seketeli <dodji@redhat.com>
3066
3067         PR c/18624
3068         * cp-tree.h (mark_exp_read, rvalue_use, lvalue_use, type_use):
3069         Declare ...
3070         * expr.c (mark_exp_read, rvalue_use, lvalue_use, type_use): ... new fns.
3071         * typeck.c (cxx_sizeof_expr, cxx_alignof_expr): Call type_use.
3072         (decay_conversion, perform_integral_promotions): Call rvalue_use.
3073         (cp_build_unary_op): Call lvalue_use.
3074         * decl.c (unused_but_set_errorcount): New variable.
3075         (poplevel): Issue -Wunused-but-set-variable diagnostics.
3076         (duplicate_decls): Merge DECL_READ_P flags.
3077         (start_cleanup_fn): Set DECL_READ_P flag.
3078         (finish_function): Issue -Wunused-but-set-parameter diagnostics.
3079         * tree.c (rvalue): Call rvalue_use.
3080         * pt.c (convert_nontype_argument): Likewise.
3081         * semantics.c (finish_expr_stmt, finish_asm_stmt, finish_typeof,
3082         finish_decltype_type): Likewise.
3083         * call.c (convert_like_real) <ck_identity, ck_user>: Call rvalue use.
3084         (build_x_va_arg, build_new_method_call, build_over_call): Call lvalue_use
3085         or rvalue_use depending on the expr.
3086         * init.c (build_new, build_delete): Likewise.
3087         * rtti.c (build_typeid, build_dynamic_cast_1): Likewise.
3088
3089 2010-05-05  Jason Merrill  <jason@redhat.com>
3090
3091         PR c++/43787
3092         * cp-gimplify.c (cp_gimplify_expr): Remove copies of empty classes.
3093         * call.c (build_over_call): Don't try to avoid INIT_EXPR copies here.
3094
3095 2010-05-04  Paolo Carlini  <paolo.carlini@oracle.com>
3096
3097         PR c++/43028
3098         * pt.c (unify): Check each elt for error_mark_node.
3099
3100 2010-05-04  Jason Merrill  <jason@redhat.com>
3101
3102         PR c++/38064
3103         * typeck.c (cp_build_binary_op): Allow enums for <> as well.
3104
3105 2010-05-04  Paolo Carlini  <paolo.carlini@oracle.com>
3106
3107         PR c++/43705
3108         * call.c (build_new_method_call): Return error_mark_node if fns is
3109         NULL_TREE.
3110
3111 2010-05-03  Dodji Seketeli  <dodji@redhat.com>
3112
3113         PR c++/43953
3114         * pt.c (most_specialized_class): Pretend we are processing
3115         a template decl during the call to coerce_template_parms.
3116
3117 2010-05-03  Jason Merrill  <jason@redhat.com>
3118
3119         PR c++/42810
3120         PR c++/43680
3121         * decl.c (finish_enum): Use the TYPE_MIN_VALUE and TYPE_MAX_VALUE
3122         from the selected underlying type unless -fstrict-enums.  Set
3123         ENUM_UNDERLYING_TYPE to have the restricted range.
3124         * cvt.c (type_promotes_to): Use ENUM_UNDERLYING_TYPE.
3125         * class.c (check_bitfield_decl): Likewise.
3126
3127 2010-05-01  H.J. Lu  <hongjiu.lu@intel.com>
3128
3129         PR c++/43951
3130         * init.c (build_new_1): Revert the accidental checkin in
3131         revision 158918.
3132
3133 2010-04-30  Jason Merrill  <jason@redhat.com>
3134
3135         PR c++/43868
3136         * cxx-pretty-print.c (pp_cxx_decl_specifier_seq): Move pmf handling...
3137         (pp_cxx_type_specifier_seq): ...here.
3138
3139 2010-04-30  Steven Bosscher  <steven@gcc.gnu.org>
3140
3141         * optimize.c, parser.c, mangle.c, cp-tree.h: Do not include varray.h.
3142         * Make-lang.in: Don't include varray.h dependency in CXX_TREE_H.
3143
3144 2010-04-30  Shujing Zhao  <pearly.zhao@oracle.com>
3145
3146         PR c++/43779
3147         * typeck.c (warn_args_num): New function.
3148         (convert_arguments): Use warn_args_num to print the diagnostic
3149         messages. 
3150
3151 2010-04-29  Fabien Chêne  <fabien.chene@gmail.com>
3152
3153         PR c++/43890
3154         * init.c (diagnose_uninitialized_cst_or_ref_member): check for
3155         user-provided constructor while recursing.
3156
3157 2010-04-28  Manuel López-Ibáñez  <manu@gcc.gnu.org>
3158
3159         PR c++/9335
3160         * error.c (print_instantiation_partial_context_line): Handle
3161         recursive instantiation.
3162         (print_instantiation_partial_context): Likewise.
3163
3164 2010-04-27  Jason Merrill  <jason@redhat.com>
3165
3166         * init.c (perform_member_init): Check CLASS_TYPE_P.
3167
3168 2010-04-27  Fabien Chêne  <fabien.chene@gmail.com>
3169
3170         PR c++/29043
3171         * init.c (perform_member_init): check for uninitialized const or
3172         reference members, including array types.
3173
3174 2010-04-24  Jason Merrill  <jason@redhat.com>
3175
3176         * tree.c (get_fns): Split out from get_first_fn.
3177         * cp-tree.h: Declare it.
3178         * search.c (shared_member_p): Use it.
3179         * semantics.c (finish_qualified_id_expr): Simplify.
3180         (finish_id_expression): Simplify.
3181
3182         * semantics.c (finish_non_static_data_member): Call maybe_dummy_object
3183         whenever object is NULL_TREE.  Don't do 'this' capture here.
3184         (finish_qualified_id_expr): Pass NULL_TREE.
3185         (finish_id_expression): Likewise.
3186         (lambda_expr_this_capture): Likewise.
3187
3188         * semantics.c (finish_qualified_id_expr): Use maybe_dummy_object
3189         rather than checking current_class_ref directly.
3190         (finish_call_expr): Likewise.
3191
3192         PR c++/43856
3193         * name-lookup.c (qualify_lookup): Disqualify lambda op().
3194         * class.c (current_nonlambda_class_type): New fn.
3195         * semantics.c (nonlambda_method_basetype): New.
3196         * cp-tree.h: Declare them.
3197         * tree.c (maybe_dummy_object): Handle implicit 'this' capture.
3198
3199         * semantics.c (baselink_for_fns): Correct BASELINK_BINFO.
3200
3201         PR c++/43875
3202         * semantics.c (lambda_return_type): Complain about
3203         braced-init-list.
3204
3205         PR c++/43790
3206         * tree.c (cv_unqualified): Handle error_mark_node.
3207
3208         PR c++/41468
3209         * call.c (convert_like_real) [ck_ambig]: Just return error_mark_node
3210         if we don't want errors.
3211
3212         PR c++/41468
3213         * class.c (convert_to_base): Add complain parameter.  Pass
3214         ba_quiet to lookup_base if we don't want errors.
3215         (build_vfield_ref): Pass complain to convert_to_base.
3216         * call.c (convert_like_real): Likewise.
3217         (initialize_reference): Likewise.
3218         (perform_direct_initialization_if_possible): Pass complain to
3219         convert_like_real.
3220         * cp-tree.h: Adjust.
3221
3222 2010-04-27  Fabien Chêne  <fabien.chene@gmail.com>
3223             Jason Merrill  <jason@redhat.com>
3224
3225         PR c++/42844
3226         * decl.c (check_for_uninitialized_const_var): Handle classes that need
3227         constructing, too.
3228         (check_initializer): Call it for classes that need constructing, too.
3229         * class.c (in_class_defaulted_default_constructor): New.
3230         * cp-tree.h: Declare it.
3231
3232 2010-04-20  Jason Merrill  <jason@redhat.com>
3233
3234         PR c++/9335
3235         * init.c (constant_value_1): Treat error_mark_node as a constant
3236         if DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P is set.
3237         * cvt.c (ocp_convert): Handle getting error_mark_node from
3238         integral_constant_value.
3239         * decl.c (compute_array_index_type): Likewise.
3240
3241 2010-04-20  Dodji Seketeli  <dodji@redhat.com>
3242
3243         PR c++/43800
3244         PR c++/43704
3245         * typeck.c (incompatible_dependent_types_p): If one of the
3246         compared types if not a typedef then honour their main variant
3247         equivalence.
3248
3249 2010-04-20  Jakub Jelinek  <jakub@redhat.com>
3250
3251         * cp-tree.h (TYPE_REF_IS_RVALUE): Remove.
3252
3253 2010-04-19  Dodji Seketeli  <dodji@redhat.com>
3254
3255         PR c++/43704
3256         * typeck.c (structural_comptypes): Test dependent typedefs
3257         incompatibility before testing for their main variant based
3258         equivalence.
3259
3260 2010-04-19  Jakub Jelinek  <jakub@redhat.com>
3261
3262         * cp-tree.h (SCOPED_ENUM_P, UNSCOPED_ENUM_P, SET_SCOPED_ENUM_P): Use
3263         ENUM_IS_SCOPED bit instead of TYPE_LANG_FLAG_5.
3264
3265 2010-04-18  Eric Botcazou  <ebotcazou@adacore.com>
3266
3267         * decl.c (cxx_init_decl_processing): Remove second argument in call to
3268         build_common_tree_nodes.
3269
3270 2010-04-14  Jason Merrill  <jason@redhat.com>
3271
3272         PR c++/36625
3273         * parser.c (cp_parser_parenthesized_expression_list): Change
3274         is_attribute_list parm to int to indicate whether or not to
3275         handle initial identifier specially.
3276         (cp_parser_attribute_list): Use attribute_takes_identifier_p.
3277
3278 2010-04-13  Jason Merrill  <jason@redhat.com>
3279
3280         * call.c (type_decays_to): Check MAYBE_CLASS_TYPE_P instead of
3281         CLASS_TYPE_P.
3282         * parser.c (cp_parser_lambda_expression): Complain about lambda in
3283         unevaluated context.
3284         * pt.c (iterative_hash_template_arg): Don't crash on lambda.
3285
3286 2010-04-12  Jason Merrill  <jason@redhat.com>
3287
3288         PR c++/43641
3289         * semantics.c (maybe_add_lambda_conv_op): Use build_call_a and tweak
3290         return value directly.
3291
3292         * call.c (type_decays_to): Call cv_unqualified for non-class type.
3293
3294 2010-04-12  Fabien Chene  <fabien.chene@gmail.com>
3295
3296         PR c++/25811
3297         * cp-tree.h (diagnose_uninitialized_cst_or_ref_member): Declare.
3298         * init.c (build_new_1): Check for uninitialized const members and
3299         uninitialized reference members, when using new without
3300         new-initializer. Call diagnose_uninitialized_cst_or_ref_member.
3301         (diagnose_uninitialized_cst_or_ref_member): Define, call
3302         diagnose_uninitialized_cst_or_ref_member_1.
3303         (diagnose_uninitialized_cst_or_ref_member_1): New function.
3304
3305 2010-04-12  Richard Guenther  <rguenther@suse.de>
3306
3307         PR c++/43611
3308         * semantics.c (expand_or_defer_fn_1): Do not keep extern
3309         template inline functions.
3310
3311 2010-04-09  Manuel López-Ibáñez  <manu@gcc.gnu.org>
3312
3313         PR c++/28584
3314         * typeck.c (cp_build_c_cast): Warn for casting integer to larger
3315         pointer type.
3316
3317 2010-04-07  Jason Merrill  <jason@redhat.com>
3318
3319         PR c++/43016
3320         * decl.c (start_preparsed_function): Do defer nested functions.
3321
3322         PR c++/11094, DR 408
3323         * cp-tree.h (VAR_HAD_UNKNOWN_BOUND, SET_VAR_HAD_UNKNOWN_BOUND): New.
3324         * decl2.c (finish_static_data_member_decl): Set it.
3325         * decl.c (duplicate_decls): Propagate it.
3326         * pt.c (tsubst_decl): Don't substitute the domain of an array
3327         VAR_DECL if it's set.
3328         (regenerate_decl_from_template): Substitute it here.
3329         (type_dependent_expression_p): Return true if it's set.
3330         * semantics.c (finish_decltype_type): Instantiate such a variable.
3331         * typeck.c (cxx_sizeof_expr): Likewise.
3332         (strip_array_domain): New.
3333
3334         PR c++/43145
3335         * name-lookup.c (current_decl_namespace): Non-static.
3336         (pop_nested_namespace): Sanity check.
3337         * cp-tree.h: Declare current_decl_namespace.
3338         * decl.c (grokvardecl): Use it instead of current_namespace.
3339         (grokfndecl): Likewise.
3340
3341         PR c++/38392
3342         * pt.c (tsubst_friend_function): Instatiate a friend that has already
3343         been used.
3344
3345         * pt.c (print_template_statistics): New.
3346         * cp-tree.h: Declare it.
3347         * tree.c (cxx_print_statistics): Call it.
3348
3349         PR c++/41970
3350         * decl.c (grokvardecl): Tweak warning message.
3351         (grokfndecl): Likewise.
3352
3353 2010-04-07  Dodji Seketeli  <dodji@redhat.com>
3354
3355         PR c++/42697
3356         *pt.c (tsubst_decl): Get the arguments of a specialization from
3357         the specialization template, not from the most general template.
3358
3359 2010-04-07  Dodji Seketeli  <dodji@redhat.com>
3360
3361         PR c++/40239
3362         * typeck2.c (process_init_constructor_record):
3363         value-initialize members that are are not explicitely
3364         initialized.
3365
3366 2010-04-07  Jie Zhang  <jie@codesourcery.com>
3367
3368         PR c++/42556
3369         * typeck2.c (split_nonconstant_init_1): Drop empty CONSTRUCTOR
3370         when all of its elements are non-constant and have been split out.
3371
3372 2010-04-06  Taras Glek  <taras@mozilla.com>
3373             Jason Merrill  <jason@redhat.com>
3374
3375         * parser.c (cp_parser_class_specifier): Set class location to that
3376         of IDENTIFIER_NODE instead of '{' when possible.
3377         * semantics.c (begin_class_definition): Do not overide locations
3378         with less precise ones.
3379
3380 2010-04-06  Jason Merrill  <jason@redhat.com>
3381
3382         PR c++/43648
3383         * name-lookup.c (constructor_name_p): Allow X::~X even for typedefs.
3384
3385         PR c++/43621
3386         * pt.c (maybe_update_decl_type): Check the return value from
3387         push_scope.
3388
3389 2010-04-01  Jason Merrill  <jason@redhat.com>
3390
3391         * decl.c (next_initializable_field): No longer static.
3392         * cp-tree.h: Declare it.
3393         * call.c (build_aggr_conv): Fail if there are more initializers
3394         than initializable fields.
3395
3396         * semantics.c (maybe_add_lambda_conv_op): Use null_pointer_node
3397         instead of void_zero_node.
3398
3399 2010-03-31  Dodji Seketeli  <dodji@redhat.com>
3400
3401         PR c++/43558
3402         * cp-tree.h (TEMPLATE_TYPE_PARM_SIBLING_PARMS): New accessor macro.
3403         * pt.c (end_template_parm_list): Store sibling template parms of
3404         each TEMPLATE_TYPE_PARMs into its TEMPLATE_TYPE_PARM_SIBLING_PARMS.
3405         (push_template_decl_real): Don't store the containing template decl
3406         into the DECL_CONTEXT of TEMPLATE_TYPE_PARMs anymore.
3407         * typeck.c (get_template_parms_of_dependent_type): Get sibling parms
3408         of a TEMPLATE_TYPE_PARM from TEMPLATE_TYPE_PARM_SIBLING_PARMS.
3409         Simplify the logic.
3410
3411 2010-03-30  Jason Merrill  <jason@redhat.com>
3412
3413         PR c++/43076
3414         * pt.c (push_template_decl_real): Deal better with running out of
3415         scopes before running out of template parms.
3416
3417         PR c++/41185
3418         PR c++/41786
3419         * parser.c (cp_parser_direct_declarator): Don't allow VLAs in
3420         function parameter context.  Don't print an error if parsing
3421         tentatively.
3422
3423         PR c++/43559
3424         * pt.c (more_specialized_fn): Don't control cv-qualifier check
3425         with same_type_p.
3426
3427 2010-03-26  Jason Merrill  <jason@redhat.com>
3428
3429         PR c++/43509
3430         * parser.c (cp_parser_qualifying_entity): Do accept enum names in
3431         c++0x mode, but not other type-names.
3432
3433 2010-03-26  Dodji Seketeli  <dodji@redhat.com>
3434
3435         PR c++/43327
3436         * pt.c (add_to_template_args): Support NULL ARGS;
3437         (most_specialized_class): call coerce_template_parms on
3438         template arguments passed to get_class_bindings. Use
3439         add_to_template_args.
3440         (unify): Handle VAR_DECLs.
3441
3442 2010-03-26  Dodji Seketeli  <dodji@redhat.com>
3443
3444         * cp-tree.h (get_template_parms_at_level): Change unsigned parm
3445         into int.
3446         * pt.c (get_template_parms_at_level): Adjust.
3447
3448 2010-03-25  Dodji Seketeli  <dodji@redhat.com>
3449
3450         PR c++/43206
3451         * cp-tree.h (get_template_parms_at_level): Declare ...
3452         * pt.c (get_template_parms_at_level): ... new function.
3453         * typeck.c (get_template_parms_of_dependent_type): If a template
3454         type parm's DECL_CONTEXT isn't yet set, get its siblings from
3455         current_template_parms. Use get_template_parms_at_level. Remove
3456         useless test.
3457         (incompatible_dependent_types_p): If we get empty parms from just one
3458         of the template type parms we are comparing then the template parms are
3459         incompatible.
3460
3461 2010-03-24  Jason Merrill  <jason@redhat.com>
3462
3463         PR c++/43502
3464         * parser.c (make_declarator): Initialize id_loc.
3465         (cp_parser_lambda_declarator_opt): And set it.
3466
3467 2010-03-23  Jason Merrill  <jason@redhat.com>
3468
3469         Make lambda conversion op and op() non-static.
3470         * semantics.c (maybe_add_lambda_conv_op): Make non-static.
3471         Also add the thunk function returned by the conversion op.
3472         Mark the conversion deleted if the op() is variadic.
3473         * decl2.c (mark_used): Give helpful message about deleted conversion.
3474         * parser.c (cp_parser_lambda_declarator_opt): Don't make op() static.
3475         * semantics.c (finish_this_expr): Adjust.
3476         * mangle.c (write_closure_type_name): Adjust.
3477         * decl.c (grok_op_properties): Don't allow it.
3478         * call.c (build_user_type_conversion_1): No static conversion ops.
3479         (build_op_call): Or op().
3480
3481         * decl2.c (change_return_type): Fix 'this' quals.
3482
3483 2010-03-22  Jason Merrill  <jason@redhat.com>
3484
3485         PR c++/43333
3486         * tree.c (pod_type_p): Use old meaning in C++98 mode.
3487
3488         PR c++/43281
3489         * pt.c (contains_auto_r): New fn.
3490         (do_auto_deduction): Use it.
3491         (tsubst): Don't look at TREE_TYPE of a TEMPLATE_TYPE_PARM.
3492
3493 2010-03-20  Simon Martin  <simartin@users.sourceforge.net>
3494
3495         PR c++/43081:
3496         * decl2.c (grokfield): Handle invalid initializers for member
3497         functions.
3498
3499 2010-03-20  Dodji Seketeli  <dodji@redhat.com>
3500
3501         PR c++/43375
3502         * method.c (make_alias_for): Avoid crashing when DECL_LANG_SPECIFIC
3503         is NULL.
3504         * decl2.c (vague_linkage_p): Likewise.
3505
3506 2010-03-18  Paolo Carlini  <paolo.carlini@oracle.com>
3507
3508         PR c++/43418
3509         * parser.c (cp_parser_for_init_statement): Use NULL_TREE, not
3510         false, in the cp_parser_expression_statement call.
3511
3512 2010-03-05  Jason Merrill  <jason@redhat.com>
3513
3514         * mangle.c (mangle_decl): Give name collision error even without
3515         ASM_OUTPUT_DEF.
3516
3517 2010-03-04  Marco Poletti  <poletti.marco@gmail.com>
3518
3519         * pt.c (process_partial_specialization): Use error_n instead of
3520         error.
3521
3522 2010-03-03  Jason Merrill  <jason@redhat.com>
3523
3524         PR c++/12909
3525         * mangle.c (mangle_decl): Handle VAR_DECL, too.
3526
3527 2010-03-03  Jason Merrill  <jason@redhat.com>
3528
3529         PR c++/12909
3530         * mangle.c: Include cgraph.h.
3531         (mangle_decl): If the mangled name will change in a later
3532         ABI version, make the later mangled name an alias.
3533         * method.c (make_alias_for): Copy DECL_ARGUMENTS.
3534         * Make-lang.in (mangle.o): Depend on cgraph.h.
3535         * method.c (make_alias_for): Handle VAR_DECL, too.
3536         * decl2.c (vague_linkage_p): Rename from vague_linkage_fn_p.
3537         * tree.c (no_linkage_check): Adjust.
3538         * decl.c (maybe_commonize_var): Adjust.
3539         * cp-tree.h: Adjust.
3540
3541 2010-03-01  Marco Poletti  <poletti.marco@gmail.com>
3542
3543         * pt.c (redeclare_class_template): Use error_n and inform_n.
3544
3545 2010-02-27  Mark Mitchell  <mark@codesourcery.com>
3546
3547         PR c++/42748
3548         * cp-tree.h (push_tinst_level): Declare.
3549         (pop_tinst_level): Likewise.
3550         * pt.c (push_tinst_level): Give it external linkage.
3551         (pop_tinst_level): Likewise.
3552         * mangle.c (mangle_decl_string): Set the source location to that
3553         of the decl while mangling.
3554
3555 2010-02-27  Simon Martin  <simartin@users.sourceforge.net>
3556
3557         PR c++/42054
3558         * pt.c (redeclare_class_template): Return false if there are erroneous
3559         template parameters.
3560
3561 2010-02-24  Manuel López-Ibáñez  <manu@gcc.gnu.org>
3562
3563         * pt.c (push_tinst_level): Replace -ftemplate-depth- with 
3564         -ftemplate-depth=.
3565
3566 2010-02-24  Jason Merrill  <jason@redhat.com>
3567
3568         PR c++/12909
3569         * mangle.c (write_type): Give -Wabi warning for old vector mangling.
3570
3571         * class.c (layout_class_type): Don't give -Wabi warning for a bug
3572         in a previous ABI version.
3573
3574 2010-02-23  Jason Merrill  <jason@redhat.com>
3575
3576         PR c++/43143
3577         * typeck2.c (digest_init_r): Accept value init of array.
3578
3579 2010-02-22  Manuel López-Ibáñez  <manu@gcc.gnu.org>
3580
3581         PR c++/43126
3582         * typeck.c (convert_arguments): Update error message.
3583
3584 2010-02-22  Mike Stump  <mikestump@comcast.net>
3585
3586         PR c++/43125
3587         * decl.c (duplicate_decls): Merge DECL_PRESERVE_P.
3588
3589 2010-02-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
3590
3591         PR c++/23510
3592         * error.c (print_instantiation_partial_context_line): New.
3593         (print_instantiation_partial_context): Print at most 12 contexts,
3594         skip the rest with a message.
3595
3596 2010-02-21  Dodji Seketeli  <dodji@redhat.com>
3597
3598         PR c++/42824
3599         * pt.c (lookup_template_class): Better support of specialization
3600         of member of class template implicit instantiation.
3601
3602 2010-02-20  Manuel López-Ibáñez  <manu@gcc.gnu.org>
3603
3604         PR c++/35669
3605         * call.c (conversion_null_warnings): Replace -Wconversion with
3606         -Wconversion-null.
3607         * cvt.c (build_expr_type_conversion): Likewise.
3608
3609 2010-02-18  Jason Merrill  <jason@redhat.com>
3610
3611         PR c++/42837
3612         * class.c (create_vtable_ptr): Set DECL_PACKED if type is packed.
3613
3614         PR c++/43108
3615         * typeck.c (cp_build_binary_op): Adapt mixed complex/non handling from
3616         C build_binary_op.
3617         * cp-tree.h (WANT_VECTOR_OR_COMPLEX): Rename from WANT_VECTOR.
3618         * cvt.c (build_expr_type_conversion): Allow COMPLEX_TYPE.
3619
3620         PR c++/43070
3621         * semantics.c (finish_goto_stmt): Don't call decay_conversion.
3622
3623         PR c++/26261
3624         PR c++/43101
3625         * pt.c (tsubst_qualified_id): Do normal lookup in non-dependent scope.
3626         (maybe_update_decl_type): New fn.
3627         * parser.c (cp_parser_init_declarator): Use it.
3628
3629         PR c++/43109
3630         * semantics.c (begin_class_definition): Don't crash on unnamed ns.
3631
3632 2010-02-17  Jason Merrill  <jason@redhat.com>
3633
3634         PR c++/43075
3635         * call.c (build_over_call): Don't create zero-sized assignments.
3636         * cp-gimplify.c (cp_genericize_r): Don't remove them here.
3637         * cp-objcp-common.c (cp_expr_size): Remove.
3638         * cp-tree.h: Remove prototype.
3639
3640         PR c++/43069
3641         * name-lookup.c (set_decl_namespace): Don't copy DECL_CONTEXT if the
3642         decl we looked up doesn't match.
3643
3644         PR c++/43093
3645         * cp-gimplify.c (cp_gimplify_expr) [INIT_EXPR]: Return if we don't
3646         have an INIT_EXPR anymore.
3647
3648         PR c++/43079
3649         * pt.c (convert_nontype_argument): Change assert to test.
3650
3651 2010-02-16  Jason Merrill  <jason@redhat.com>
3652
3653         * cp-gimplify.c (cp_gimplify_expr): Fix error recovery.
3654
3655         PR c++/43031
3656         * cp-gimplify.c (cp_gimplify_expr) [MODIFY_EXPR]: Use
3657         VIEW_CONVERT_EXPR for conversions between structural equality types
3658         that the back end can't tell are the same.
3659
3660         PR c++/43036
3661         * tree.c (build_cplus_array_type): Set TYPE_MAIN_VARIANT to strip
3662         cv-quals from element here.
3663         (cp_build_qualified_type_real): Not here.  Preserve typedef name.
3664
3665 2010-02-14  Jason Merrill  <jason@redhat.com>
3666
3667         PR c++/41997
3668         * semantics.c (finish_compound_literal): Use
3669         cp_apply_type_quals_to_decl when creating a static variable.
3670
3671 2010-02-12  Jason Merrill  <jason@redhat.com>
3672
3673         PR c++/43024
3674         * name-lookup.h (current_binding_level): Check for null
3675         cp_function_chain.
3676
3677 2010-02-12  Jason Merrill  <jason@redhat.com>
3678
3679         PR c++/43054
3680         * tree.c (cp_tree_equal): Correct CALL_EXPR logic.
3681
3682 2010-02-12  Jakub Jelinek  <jakub@redhat.com>
3683
3684         PR c++/43033
3685         * name-lookup.c (pushdecl_maybe_friend): Check default args of t
3686         instead of x.
3687
3688 2010-02-10  Jason Merrill  <jason@redhat.com>
3689
3690         PR c++/41896
3691         * semantics.c (outer_lambda_capture_p): Revert.
3692         (add_capture): Only finish_member_declaration if
3693         we're in the lambda class.
3694         (register_capture_members): New.
3695         * cp-tree.h: Declare it.
3696         * parser.c (cp_parser_lambda_expression): Call it.
3697
3698 2010-02-10  Jason Merrill  <jason@redhat.com>
3699
3700         PR c++/41896
3701         * semantics.c (outer_lambda_capture_p): Use current_function_decl
3702         instead of current_class_type.
3703
3704 2010-02-10  Jason Merrill  <jason@redhat.com>
3705
3706         PR c++/42983, core issue 906
3707         * method.c (defaultable_fn_check): Check virtualness.
3708
3709 2010-02-10  Jason Merrill  <jason@redhat.com>
3710
3711         PR c++/43016
3712         * semantics.c (maybe_add_lambda_conv_op): Set DECL_INTERFACE_KNOWN.
3713
3714 2010-02-10  Shujing Zhao  <pearly.zhao@oracle.com>
3715
3716         * Make-lang.in (cp/cvt.o, cp/parser.o, cp/search.o): Depend on intl.h.
3717         * cvt.c (warn_ref_binding): Wrap the messages into G_() for easy
3718         translation.
3719         * parser.c (cp_parser_postfix_expression, cp_parser_new_type_id)
3720         (cp_parser_cast_expression, cp_parser_condition, cp_parser_decltype)
3721         (cp_parser_parameter_declaration)
3722         (cp_parser_exception_specification_opt)
3723         (cp_parser_exception_declaration): Likewise.
3724         * pt.c (check_default_tmpl_args): Likewise.
3725         * search.c (lookup_field_r): Likewise.
3726
3727 2010-02-09  Jason Merrill  <jason@redhat.com>
3728
3729         PR c++/42399
3730         * pt.c (tsubst_copy_and_build): Propagate LAMBDA_EXPR_LOCATION.
3731
3732 2010-02-09  Jason Merrill  <jason@redhat.com>
3733
3734         PR c++/42370
3735         * decl2.c (change_return_type): New fn.
3736         * semantics.c (apply_lambda_return_type): Use it.
3737         * cp-tree.h: Declare it.
3738
3739 2010-02-05  Richard Guenther  <rguenther@suse.de>
3740
3741         * Make-lang.in (cp/cp-lang.o): Depend on gt-cp-cp-lang.h.
3742         * cp-lang.c: Include gt-cp-cp-lang.h.
3743         * config-lang.in (gtfiles): Add cp/cp-lang.c.
3744
3745 2010-02-05  Dodji Seketeli  <dodji@redhat.com>
3746
3747         PR c++/42915
3748         * typeck.c (get_template_parms_of_dependent_type): Try getting
3749         the template parameters fromt the type itself first.
3750
3751 2010-02-03  Jason Merrill  <jason@redhat.com>
3752
3753         PR c++/4926
3754         PR c++/38600
3755         * mangle.c (write_unqualified_id): Split out from write_expression.
3756         (write_unqualified_name): Call it.
3757         (write_member_name): Likewise.
3758         (write_expression): Support TEMPLATE_ID_EXPR.
3759         Disambiguate operator names.
3760
3761         PR c++/12909
3762         * mangle.c (write_type) [VECTOR_TYPE]: Change mangling with
3763         -fabi-version=4.
3764
3765 2010-02-02  Jason Merrill  <jason@redhat.com>
3766
3767         PR c++/41090
3768         * decl.c (cp_finish_decl): Add local statics to cfun->local_decls.
3769         * optimize.c (clone_body): Remap their initializers when making base
3770         variants.
3771         (maybe_clone_body): Complain if multiple clones aren't safe.
3772
3773 2010-01-29  Dodji Seketeli  <dodji@redhat.com>
3774
3775         PR c++/42758
3776         PR c++/42634
3777         PR c++/42336
3778         PR c++/42797
3779         PR c++/42880
3780         * cp-tree.h (NON_DEFAULT_TEMPLATE_ARGS_COUNT,
3781         SET_NON_DEFAULT_TEMPLATE_ARGS_COUNT,
3782         GET_NON_DEFAULT_TEMPLATE_ARGS_COUNT): New accessor macros.
3783         * pt.c (coerce_template_parms, type_unification_real,
3784         expand_template_argument_pack, coerce_template_parameter_pack):
3785         Set the non default template args count.
3786         (current_template_args): Always set non defaulted
3787         template args count when compiled with --enable-checking
3788         (tsubst_template_args, type_unification_real): Propagate the non
3789         defaulted template args count.
3790         * error.c (get_non_default_template_args_count): Renamed
3791         count_non_default_template_args into this. Don't calculate the
3792         non default template argument count anymore. Use the new
3793         accessor macros above to get it.
3794         (dump_template_argument_list, dump_type, dump_decl,
3795         dump_template_parms): Adjust.
3796         * parser.c (cp_parser_template_argument_list): Always set defaulted
3797         template args count when compiled with --enable-checking.
3798
3799 2010-01-29  Shujing Zhao  <pearly.zhao@oracle.com>
3800
3801         * decl.c (redeclaration_error_message): Wrap the return messages into
3802         G_() for easy translation.
3803
3804 2010-01-28  Jason Merrill  <jason@redhat.com>
3805
3806         PR c++/42880
3807         * semantics.c (begin_class_definition): Don't use type_as_string.
3808
3809 2010-01-28  Dodji Seketeli  <dodji@redhat.com>
3810
3811         PR c++/42713
3812         PR c++/42820
3813         * typeck.c (get_template_parms_of_dependent_type): Factorized
3814         this out of incompatible_template_type_parms_p
3815         (incompatible_dependent_types_p): Renamed
3816         incompatible_template_type_parms_p into this. Make it detect
3817         two incompatible dependent typedefs too.
3818         (structural_comptypes): Use incompatible_dependent_types_p.
3819         * pt.c (get_template_info):
3820         Handle BOUND_TEMPLATE_TEMPLATE_PARAM.
3821
3822 2010-01-20  Janis Johnson  <janis187@us.ibm.com>
3823             Jason Merrill  <jason@redhat.com>
3824
3825         * mangle.c (write_type): Mangle transparent record as member type.
3826         * semantics.c (begin_class_definition): Recognize decimal classes
3827         and set TYPE_TRANSPARENT_AGGR.
3828
3829 2010-01-20  Jason Merrill  <jason@redhat.com>
3830
3831         PR c++/42338
3832         * mangle.c (write_expression): Handle tree codes that have extra
3833         arguments in the middle-end.
3834
3835 2010-01-20  Paolo Carlini  <paolo.carlini@oracle.com>
3836
3837         PR c++/42038
3838         * except.c (expand_start_catch_block): Deal correctly with
3839         do_begin_catch returning error_mark_node.
3840
3841 2010-01-20  Jason Merrill  <jason@redhat.com>
3842
3843         PR c++/41788
3844         * class.c (layout_class_type): Set packed_maybe_necessary for packed
3845         non-PODs.
3846
3847         PR c++/41920
3848         * semantics.c (build_lambda_object): Call mark_used on captured
3849         variables.
3850
3851         PR c++/40750
3852         * decl.c (grokdeclarator): Clear type_quals for a member function
3853         declared using a typedef.  Don't complain about adding cv-quals
3854         to a function typedef in C++0x mode.
3855
3856 2010-01-20  Jakub Jelinek  <jakub@redhat.com>
3857
3858         * decl.c (create_array_type_for_decl): Remove set but not used
3859         variable error_msg.  Remove break stmts after return stmts.
3860
3861 2010-01-19  Dodji Seketeli  <dodji@redhat.com>
3862
3863         * error.c (dump_template_parms, count_non_default_template_args):
3864         Revert fix of PR c++/42634.
3865
3866 2010-01-18  Dodji Seketeli  <dodji@redhat.com>
3867
3868         PR c++/42634
3869         * error.c (dump_template_parms): Use innermost template
3870         arguments before calling count_non_default_template_args.
3871         (count_non_default_template_args): We are being called with
3872         template innermost arguments now. There is no need to ensure
3873         that again.
3874
3875 2010-01-18  Dodji Seketeli  <dodji@redhat.com>
3876
3877         PR c++/42766
3878         * cvt.c (build_expr_type_conversion): Look through OVERLOAD.
3879
3880 2010-01-17  Dodji Seketeli  <dodji@redhat.com>
3881
3882         PR c++/42697
3883         *pt.c (tsubst_decl):  Revert commit for PR c++/42697.
3884
3885 2010-01-17  Dodji Seketeli  <dodji@redhat.com>
3886
3887         PR c++/42697
3888         *pt.c (tsubst_decl): Get the arguments of a specialization from
3889         the specialization template, not from the most general template.
3890
3891 2010-01-16  Jason Merrill  <jason@redhat.com>
3892
3893         PR c++/42761
3894         * semantics.c (finish_decltype_type): Within a template, treat
3895         unresolved CALL_EXPR as dependent.
3896
3897 2010-01-15  Dodji Seketeli  <dodji@redhat.com>
3898
3899         * error.c (dump_template_parms,count_non_default_template_args):
3900         Revert changes of PR c++/42634.
3901
3902 2010-01-14  Jakub Jelinek  <jakub@redhat.com>
3903
3904         PR middle-end/42674
3905         * decl.c (finish_function): Don't emit -Wreturn-type warnings in
3906         functions with noreturn attribute.
3907
3908 2010-01-14  Jason Merrill  <jason@redhat.com>
3909
3910         PR c++/42701
3911         * call.c (build_new_method_call): Don't free the vec here.
3912
3913         PR c++/42655
3914         * call.c (convert_like_real): Do full decay_conversion for ck_rvalue.
3915
3916 2010-01-13  Dodji Seketeli  <dodji@redhat.com>
3917
3918         PR c++/42634
3919         * error.c (dump_template_parms): Use innermost template
3920         arguments before calling count_non_default_template_args.
3921         (count_non_default_template_args): We are being called with
3922         template innermost arguments now. There is no need to ensure
3923         that again.
3924
3925 2010-01-07  Dodji Seketeli  <dodji@redhat.com>
3926
3927         c++/40155
3928         * pt.c (unify_pack_expansion): In non-deduced contexts, re-use template
3929         arguments that were previously deduced.
3930
3931 2010-01-05  Jason Merrill  <jason@redhat.com>
3932
3933         * pt.c (unify_pack_expansion): Handle deduction from init-list.
3934         * call.c (build_over_call): Don't complain about it.
3935
3936 2010-01-04  Jason Merrill  <jason@redhat.com>
3937
3938         PR c++/42555
3939         * pt.c (tsubst_decl): Don't apply type attributes in place.
3940
3941         PR c++/42567
3942         * semantics.c (describable_type): Remove decltype comment and
3943         semantics.
3944
3945
3946 \f
3947 Copyright (C) 2010 Free Software Foundation, Inc.
3948
3949 Copying and distribution of this file, with or without modification,
3950 are permitted in any medium without royalty provided the copyright
3951 notice and this notice are preserved.
3952