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