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