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