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