mangle.c (write_expression): Only do -fabi-version=1 special handling if we know...
[gcc.git] / gcc / cp / ChangeLog
1 2010-09-21 Jason Merrill <jason@redhat.com>
2
3 * mangle.c (write_expression) [SCOPE_REF]: Only do -fabi-version=1
4 special handling if we know the member.
5
6 2010-09-18 Jason Merrill <jason@redhat.com>
7
8 * call.c (compare_ics): Do lvalue/rvalue reference binding
9 comparison for ck_list, too.
10
11 2010-09-15 Jason Merrill <jason@redhat.com>
12
13 * semantics.c (finish_id_expression): Diagnose use of function
14 parms in evaluated context outside function body.
15
16 * decl2.c (grokbitfield): Diagnose non-integral width.
17
18 * call.c (convert_like_real): Use the underlying type of the
19 reference for the temporary.
20
21 2010-09-15 Jakub Jelinek <jakub@redhat.com>
22
23 PR c++/45635
24 * class.c (build_vtbl_initializer): Use fn instead of init's operand
25 as first argument to FDESC_EXPR.
26
27 2010-09-15 Paolo Carlini <paolo.carlini@oracle.com>
28
29 PR c++/45665
30 * decl.c (grokdeclarator): Check build_memfn_type return value
31 for error_mark_node.
32
33 2010-09-13 Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
34
35 * semantics.c (finish_for_stmt): Always test flag_new_for_scope.
36 (begin_range_for_stmt): Likewise.
37
38 2010-09-11 Rodrigo Rivas <rodrigorivascosta@gmail.com>
39
40 Implement range-based for-statements.
41 * cp-tree.def (RANGE_FOR_STMT): New.
42 * cp-tree.h (RANGE_FOR_DECL, RANGE_FOR_EXPR, RANGE_FOR_BODY): New.
43 (cp_convert_range_for): Declare.
44 * pt.c (tsubst_expr): Add RANGE_FOR_STMT.
45 (tsubst_copy_and_build): perform_koenig_lookup takes extra argument.
46 * semantics.c (begin_range_for_stmt): New.
47 (finish_range_for_decl): New.
48 (finish_for_stmt): Accept also RANGE_FOR_STMT.
49 (perform_koenig_lookup): Add extra argument include_std.
50 * parser.c (cp_parser_c_for): New with code from
51 cp_parser_iteration_statement().
52 (cp_parser_range_for): New.
53 (cp_convert_range_for): New.
54 (cp_parser_iteration_statement): Add range-for support.
55 (cp_parser_condition): Adjust comment.
56 (cp_parser_postfix_expression): perform_koenig_lookup takes extra
57 argument.
58 * dump.c (cp_dump_tree): Add RANGE_FOR_STMT.
59 * cxx-pretty-print.c: Likewise.
60 * lex.c (cxx_init): Likewise.
61 * name-lookup.c (lookup_function_nonclass): Add extra argument
62 include_std.
63 (lookup_arg_dependent): Likewise.
64 * name-lookup.h: Likewise.
65
66 2010-09-10 Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
67
68 PR c++/43824
69 * error.c (maybe_warn_cpp0x): Add new warning
70 CPP0X_INLINE_NAMESPACES.
71 * parser.c (cp_parser_namespace_definition): Likewise.
72 * cp-tree.h (cpp0x_warn_str): Likewise.
73
74 2010-09-10 Richard Guenther <rguenther@suse.de>
75
76 * decl.c (reshape_init_vector): For VECTOR_TYPEs, use
77 TYPE_VECTOR_SUBPARTS instead of TYPE_DEBUG_REPRESENTATION_TYPE.
78
79 2010-09-10 Jan Hubicka <jh@suse.cz>
80
81 PR tree-optimization/45605
82 * cp/class.c (build_vtbl_initializer): Avoid wrong type conversion in
83 ADDR_EXPR.
84
85 2010-09-08 Jakub Jelinek <jakub@redhat.com>
86
87 PR c++/45588
88 * pt.c (tsubst) <case INTEGER_TYPE>: Call mark_rvalue_use
89 before calling fold_decl_constant_value.
90
91 2010-09-07 Arnaud Charlet <charlet@adacore.com>
92
93 * cp-tree.h (build_enumerator): Add new location_t parameter.
94 (build_lang_decl_loc): New function.
95 * decl.c (build_enumerator): New parameter loc. Use it when calling
96 build_decl. Replace build_lang_decl with build_lang_decl_loc.
97 * pt.c (tsubst_enum): Adjust call to build_enumerator.
98 * parser.c (cp_parser_enumerator_definition): Ditto.
99 * lex.c (build_lang_decl_loc): New function.
100
101 2010-09-06 Dodji Seketeli <dodji@redhat.com>
102
103 PR c++/45200
104 PR c++/45293
105 PR c++/45558
106 * tree.c (strip_typedefs): Strip typedefs from the context of
107 TYPENAME_TYPEs.
108
109 2010-09-06 Mark Mitchell <mark@codesourcery.com>
110
111 * typeck.c (cp_build_binary_op): Call do_warn_double_promotion.
112 * call.c (build_conditional_expr): Likewise.
113 (convert_arg_to_ellipsis): Likewise.
114
115 2010-09-06 Arnaud Charlet <charlet@adacore.com>
116
117 * parser.c (make_pointer_declarator, make_reference_declarator,
118 make_call_declarator, make_array_declarator): Set declarator->id_loc.
119 (cp_parser_init_declarator): Adjust location of decl if appropriate.
120
121 2010-09-06 Jason Merrill <jason@redhat.com>
122
123 * call.c (implicit_conversion): Fix value-init of enums.
124 (convert_like_real): Likewise.
125
126 * decl.c (cp_finish_decl): Don't change init for auto deduction.
127
128 * pt.c (fold_non_dependent_expr_sfinae): Split out from...
129 (fold_non_dependent_expr): ...here.
130 (convert_nontype_argument): Use it. Take complain parm.
131 Use perform_implicit_conversion instead of ocp_convert.
132 Allow cv-qual changes.
133 (convert_template_argument): Pass complain down.
134 (tsubst_template_arg): Suppress constant expression warnings.
135 Don't fold here.
136
137 * method.c (synthesized_method_walk): In constructors, also check
138 subobject destructors.
139
140 * semantics.c (finish_compound_literal): Always build a
141 TARGET_EXPR.
142
143 2010-08-30 Paolo Carlini <paolo.carlini@oracle.com>
144
145 PR c++/45043
146 * decl.c (grokdeclarator): Use MAIN_NAME_P only on IDENTIFIER_NODEs.
147
148 2010-08-30 Jakub Jelinek <jakub@redhat.com>
149
150 PR middle-end/45423
151 * parser.c (cp_parser_omp_atomic): Handle boolean
152 {PRE,POST}_INCREMENT.
153
154 2010-08-29 Jason Merrill <jason@redhat.com>
155
156 PR c++/44991
157 * parser.c (cp_parser_parameter_declaration): Pop parameter decls
158 after tentative parsing.
159
160 2010-08-22 Joseph Myers <joseph@codesourcery.com>
161
162 * Make-lang.in (g++spec.o): Update dependencies.
163 * g++spec.c: Include opts.h
164 (MATH_LIBRARY, LIBSTDCXX): Remove initial "-l".
165 (lang_specific_driver): Use cl_decoded_option structures.
166
167 2010-08-20 Nathan Froyd <froydnj@codesourcery.com>
168
169 * call.c: Use FOR_EACH_VEC_ELT.
170 * class.c: Likewise.
171 * decl.c: Likewise.
172 * decl2.c: Likewise.
173 * error.c: Likewise.
174 * except.c: Likewise.
175 * mangle.c: Likewise.
176 * method.c: Likewise.
177 * name-lookup.c: Likewise.
178 * parser.c: Likewise.
179 * pt.c: Likewise.
180 * repo.c: Likewise.
181 * semantics.c: Likewise.
182 * typeck2.c: Likewise.
183
184 2010-08-19 Jason Merrill <jason@redhat.com>
185
186 * call.c (reference_related_p): Check for error_mark_node.
187 (add_function_candidate): Check it instead of
188 same_type_ignoring_top_level_qualifiers_p.
189
190 PR c++/45315
191 * init.c (build_new_1): Don't use build_value_init in a template.
192 (build_value_init): Make sure we don't.
193
194 PR c++/45307
195 * cp-gimplify.c (cp_gimplify_expr): Also remove assignment
196 of empty class CONSTRUCTOR.
197
198 * except.c (pending_noexcept, pending_noexcept_checks): New.
199 (perform_deferred_noexcept_checks): New.
200 (maybe_noexcept_warning): Split from...
201 (finish_noexcept_expr): ...here. Adjust.
202 * decl2.c (cp_write_global_declarations): Call
203 perform_deferred_noexcept_checks.
204 * cp-tree.h: And declare it.
205
206 2010-08-18 Nathan Froyd <froydnj@codesourcery.com>
207
208 PR c++/45049
209 * name-lookup.c (push_overloaded_decl): Change DECL_CHAIN to
210 TREE_CHAIN.
211
212 2010-08-17 Kai Tietz <kai.tietz@onevision.com>
213
214 * class.c (note_name_declared_in_class): Make in 'extern "C"' blocks,
215 or if -fms-extensions is enabled check, check permissive.
216
217 2010-08-09 Jason Merrill <jason@redhat.com>
218
219 PR c++/45236
220 * pt.c (lookup_template_class): Don't re-coerce outer parms.
221
222 2010-08-09 Nathan Froyd <froydnj@codesourcery.com>
223
224 * call.c (add_builtin_candidates): Use VECs for local variable
225 `types'. Adjust remainder of function accordingly.
226
227 2010-08-09 Nathan Froyd <froydnj@codesourcery.com>
228
229 * name-lookup.c (is_associated_namespace): Convert local variables
230 to be VECs instead of TREE_LISTs.
231
232 2010-08-09 Nathan Froyd <froydnj@codesourcery.com>
233
234 * tree.c (varargs_function_p): Use stdarg_p.
235
236 2010-08-07 Nathan Froyd <froydnj@codesourcery.com>
237
238 * parser.c (cp_default_arg_entry): Declare. Declare a VEC of it.
239 (cp_unparsed_functions_entry): Declare. Declare a VEC of it.
240 (cp_parser) [unparsed_functions_queues]: Rename to unparsed_queues.
241 Change type to a VEC.
242 (unparsed_funs_with_default_args): Define.
243 (unparsed_funs_with_definitions): Define.
244 (push_unparsed_function_queues): New function.
245 (cp_parser_new): Call it.
246 (pop_unparsed_function_queues): New function.
247 (cp_parser_class_specifier): Adjust processing of unparsed functions.
248 (cp_parser_template_declaration_after_export): Use VEC_safe_push.
249 (cp_parser_save_member_function_body): Likewise.
250 (cp_parser_late_parsing_for_member): Call push_unparsed_function_queues
251 and pop_unparsed_function_queues.
252 (cp_parser_late_parsing_default_args): Likewise.
253 (cp_parser_save_default_args): Use VEC_safe_push.
254
255 2010-08-07 Nathan Froyd <froydnj@codesourcery.com>
256
257 * name-lookup.h (cp_label_binding): Declare. Declare a VEC type
258 containing it.
259 (cp_binding_level): Convert shadowed_labels and dead_vars_from_for
260 fields to VECs.
261 * decl.c (poplevel): Adjust for type changes.
262 (declare_local_label): Likewise.
263
264 2010-08-06 Jason Merrill <jason@redhat.com>
265
266 * typeck.c (complete_type_or_maybe_complain): Split out from...
267 (complete_type_or_else): Here.
268 (build_class_member_access_expr): Call it.
269 (finish_class_member_access_expr): Likewise.
270 * call.c (build_special_member_call): Likewise.
271 * cvt.c (build_expr_type_conversion): Likewise.
272 * init.c (build_new): Likewise.
273 * typeck2.c (build_functional_cast): Likewise.
274 * cp-tree.h: Declare it.
275
276 * init.c (build_value_init): Add complain parm.
277 (build_value_init_noctor): Likewise.
278 (perform_member_init): Pass it.
279 (expand_aggr_init_1): Likewise.
280 (build_new_1): Likewise.
281 (build_vec_init): Likewise.
282 * pt.c (tsubst_expr): Likewise.
283 * typeck2.c (build_functional_cast): Likewise.
284 * cp-tree.h: Adjust.
285 * tree.c (build_target_expr_with_type): Handle error_mark_node.
286
287 * typeck.c (decay_conversion): Any expression with type nullptr_t
288 decays to nullptr.
289
290 2010-07-30 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
291
292 PR c++/45112
293 * decl.c (duplicate_decls): Merge DECL_USER_ALIGN and DECL_PACKED.
294
295 2010-07-27 Jason Merrill <jason@redhat.com>
296
297 * pt.c (tsubst_expr) [DECL_EXPR]: Handle getting an AGGR_INIT_EXPR
298 from build_value_init.
299 * init.c (build_value_init_noctor): Give error for unknown array
300 bound.
301
302 2010-07-27 Joseph Myers <joseph@codesourcery.com>
303
304 * cp-objcp-common.h (LANG_HOOKS_MISSING_ARGUMENT): Remove.
305
306 2010-07-27 Joseph Myers <joseph@codesourcery.com>
307
308 * cp-objcp-common.c (cxx_initialize_diagnostics): First call
309 c_common_initialize_diagnostics.
310 * cp-objcp-common.h (LANG_HOOKS_OPTION_LANG_MASK,
311 LANG_HOOKS_COMPLAIN_WRONG_LANG_P): Define.
312
313 2010-07-21 Jason Merrill <jason@redhat.com>
314
315 * tree.c (cp_tree_equal): Fix CONSTRUCTOR handling.
316
317 * parser.c (cp_parser_init_declarator): Pass LOOKUP_NORMAL
318 to cp_finish_decl.
319
320 2010-07-20 Jeffrey Yasskin <jyasskin@google.com>
321
322 PR c++/44641
323 * pt.c (instantiate_class_template): Propagate the template's
324 location to its instance.
325
326 2010-07-20 Jason Merrill <jason@redhat.com>
327
328 PR c++/44967
329 * pt.c (tsubst_copy_and_build): Rework last change.
330
331 PR c++/44967
332 * pt.c (tsubst_copy_and_build): Handle partial substitution of
333 CALL_EXPR.
334
335 2010-07-19 Jason Merrill <jason@redhat.com>
336
337 PR c++/44996
338 * semantics.c (finish_decltype_type): Correct decltype
339 of parenthesized rvalue reference variable.
340
341 PR c++/44969
342 * tree.c (cp_tree_equal): Compare type of *CAST_EXPR.
343 * pt.c (iterative_hash_template_arg): Hash type of *CAST_EXPR.
344
345 2010-07-19 Paolo Carlini <paolo.carlini@oracle.com>
346
347 PR c++/44969
348 * typeck.c (build_x_compound_expr_from_list): Add tsubst_flags_t
349 parameter.
350 * cp-tree.h: Adjust declaration.
351 * init.c (perform_member_init): Adjust caller.
352 * decl.c (grok_reference_init, cp_finish_decl): Likewise.
353 * typeck2.c (store_init_value): Likewise.
354 (build_functional_cast): Pass complain argument to
355 build_x_compound_expr_from_list.
356
357 2010-07-16 Jason Merrill <jason@redhat.com>
358
359 PR c++/32505
360 * pt.c (process_partial_specialization): Diagnose partial
361 specialization after instantiation.
362 (most_specialized_class): Add complain parm.
363
364 * ptree.c (cxx_print_xnode): Handle TEMPLATE_INFO.
365
366 2010-07-15 Nathan Froyd <froydnj@codesourcery.com>
367
368 * init.c (build_new_1): Use cp_build_function_call_nary instead of
369 cp_build_function_call.
370
371 2010-07-15 Jason Merrill <jason@redhat.com>
372
373 PR c++/44909
374 * call.c (add_function_candidate): If we're working on an implicit
375 declaration, don't consider candidates that won't match.
376 * typeck.c (same_type_ignoring_top_level_qualifiers_p): Now a fn.
377 * cp-tree.h (same_type_ignoring_top_level_qualifiers_p): Adjust.
378
379 Revert:
380 * cp-tree.h (struct lang_type_class): Add has_user_opeq.
381 (TYPE_HAS_USER_OPEQ): New.
382 * decl.c (grok_special_member_properties): Set it.
383 * class.c (add_implicitly_declared_members): Don't lazily declare
384 constructors/operator= if a base or member has a user-declared one.
385 (check_bases_and_members, check_bases): Adjust.
386 (check_field_decls, check_field_decl): Adjust.
387
388 2010-07-15 Anatoly Sokolov <aesok@post.ru>
389
390 * decl.c (integer_three_node): Remove.
391 (cxx_init_decl_processing): Do not initialize the integer_three_node.
392 * cp-tree.h (integer_three_node): Remove.
393
394 2010-07-15 Nathan Froyd <froydnj@codesourcery.com>
395
396 * cp-tree.h: Carefully replace TREE_CHAIN with DECL_CHAIN.
397 * call.c: Likewise.
398 * class.c: Likewise.
399 * cp-gimplify.c: Likewise.
400 * decl.c: Likewise.
401 * decl2.c: Likewise.
402 * init.c: Likewise.
403 * mangle.c: Likewise.
404 * name-lookup.c: Likewise.
405 * optimize.c: Likewise.
406 * parser.c: Likewise.
407 * pt.c: Likewise.
408 * rtti.c: Likewise.
409 * search.c: Likewise.
410 * semantics.c: Likewise.
411 * typeck.c: Likewise.
412 * typeck2.c: Likewise.
413
414 2010-07-14 Jason Merrill <jason@redhat.com>
415
416 * init.c (sort_mem_initializers): Rename "field_type" to "ctx".
417 (build_field_list): Cache field type.
418
419 Implement C++0x unrestricted unions (N2544)
420 * class.c (check_field_decl): Loosen union handling in C++0x.
421 * method.c (walk_field_subobs): Split out from...
422 (synthesized_method_walk): ...here. Set msg before loops.
423 (process_subob_fn): Check for triviality in union members.
424 * init.c (sort_mem_initializers): Splice out uninitialized
425 anonymous unions and union members.
426 (push_base_cleanups): Don't automatically destroy anonymous unions
427 and union members.
428
429 2010-07-13 Jason Merrill <jason@redhat.com>
430
431 PR c++/44909
432 * cp-tree.h (struct lang_type_class): Add has_user_opeq.
433 (TYPE_HAS_USER_OPEQ): New.
434 * decl.c (grok_special_member_properties): Set it.
435 * class.c (add_implicitly_declared_members): Don't lazily declare
436 constructors/operator= if a base or member has a user-declared one.
437 (check_bases_and_members, check_bases): Adjust.
438 (check_field_decls, check_field_decl): Adjust.
439 * method.c (synthesized_method_walk): Initialize check_vdtor.
440
441 PR c++/44540
442 * mangle.c (write_type): Canonicalize.
443 (canonicalize_for_substitution): Retain cv-quals on FUNCTION_TYPE.
444 (write_CV_qualifiers_for_type): Ignore them in abi>=5.
445
446 2010-07-13 Paolo Carlini <paolo.carlini@oracle.com>
447
448 PR c++/44908
449 * call.c (convert_like_real): Adjust convert_ptrmem call, pass
450 complain argument.
451 * typeck.c (get_delta_difference): Update prototype, add a
452 tsubst_flags_t parameter; update get_delta_difference_1 calls and
453 add checks for error_mark_node.
454 (get_delta_difference_1): Update prototype, add a tsubst_flags_t
455 parameter; update lookup_base call.
456 (build_ptrmemfunc): Update prototype, add a tsubst_flags_t
457 parameter; update get_delta_difference call and add check for
458 error_mark_node.
459 (convert_ptrmem): Update prototype, add a tsubst_flags_t
460 parameter; update get_delta_difference call and add check for
461 error_mark_node; update build_ptrmemfunc call.
462 (build_static_cast_1): Adjust convert_ptrmem call.
463 (expand_ptrmemfunc_cst): Adjust get_delta_difference call.
464 (cp_build_unary_op): Adjust build_ptrmemfunc call.
465 * cvt.c (cp_convert_to_pointer, convert_force): Adjust convert_ptrmem
466 and build_ptrmemfunc calls.
467 * cp-tree.h: Update build_ptrmemfunc and convert_ptrmem prototypes.
468
469 2010-07-12 Paolo Carlini <paolo.carlini@oracle.com>
470
471 PR c++/44907
472 * call.c (build_temp): Add tsubst_flags_t complain parameter;
473 adjust build_special_member_call call, pass complain.
474 (convert_like_real): Adjust build_temp call, pass complain.
475
476 2010-07-09 Jason Merrill <jason@redhat.com>
477
478 PR c++/43120
479 * cp-tree.h (BV_LOST_PRIMARY): New macro.
480 * class.c (update_vtable_entry_for_fn): Fix covariant thunk logic.
481 Set BV_LOST_PRIMARY.
482 (build_vtbl_initializer): Check BV_LOST_PRIMARY.
483
484 2010-07-08 Jason Merrill <jason@redhat.com>
485
486 PR c++/43120
487 * class.c (update_vtable_entry_for_fn): Fix handling of dummy
488 virtual bases for covariant thunks.
489
490 2010-07-08 Manuel López-Ibáñez <manu@gcc.gnu.org>
491
492 * cp-tree.h: Do not include toplev.h.
493
494 2010-07-06 Jason Merrill <jason@redhat.com>
495
496 PR c++/44703
497 * call.c (is_std_init_list): Look through typedefs.
498
499 PR c++/44778
500 * init.c (build_offset_ref): If scope isn't dependent,
501 don't exit early. Look at TYPE_MAIN_VARIANT.
502 * pt.c (tsubst_copy) [OFFSET_REF]: Do substitution.
503
504 * error.c (dump_function_decl): Don't crash on null DECL_NAME.
505
506 2010-07-06 Shujing Zhao <pearly.zhao@oracle.com>
507
508 * cp-tree.h (impl_conv_void): New type.
509 (convert_to_void): Adjust prototype.
510 * cvt.c (convert_to_void): Use impl_conv_void, emit and adjust the
511 diagnostic for easy translation. Change caller.
512 * typeck.c: Update call to convert_to_void.
513 * semantics.c: Likewise.
514 * init.c: Likewise.
515
516 2010-07-05 Nathan Froyd <froydnj@codesourcery.com>
517
518 * decl.c (cp_finish_decl): Call add_local_decl.
519 * optimize.c (clone_body): Adjust for new type of cfun->local_decls.
520
521 2010-07-05 Paolo Carlini <paolo.carlini@oracle.com>
522
523 * pt.c (tsubst): Early declare code = TREE_CODE (t) and use it
524 throughout.
525
526 2010-07-05 Shujing Zhao <pearly.zhao@oracle.com>
527
528 PR c++/22138
529 * parser.c (cp_parser_primary_expression): Error if local template is
530 declared.
531
532 2010-07-02 Le-Chun Wu <lcwu@google.com>
533
534 PR/44128
535 * name-lookup.c (pushdecl_maybe_friend): Warn when a local decl
536 (variable or type) shadows another type.
537
538 2010-07-02 Jakub Jelinek <jakub@redhat.com>
539
540 PR c++/44780
541 * typeck.c (convert_for_assignment): When converting a convertible
542 vector type or objc++ types, call mark_rvalue_use.
543 * typeck2.c (build_m_component_ref): Use return values from
544 mark_rvalue_use or mark_lvalue_use.
545 * class.c (build_base_path): Likewise.
546 * call.c (build_conditional_expr): Likewise.
547
548 2010-07-02 Paolo Carlini <paolo.carlini@oracle.com>
549
550 PR c++/44039
551 * pt.c (tsubst_baselink): Return error_mark_node if lookup_fnfields
552 returns NULL_TREE.
553
554 2010-07-01 Richard Guenther <rguenther@suse.de>
555
556 * cp-gimplify.c (cp_gimplify_expr): Open-code the rhs
557 predicate we are looking for, allow non-gimplified
558 INDIRECT_REFs.
559
560 2010-06-30 Paolo Carlini <paolo.carlini@oracle.com>
561
562 PR c++/44628
563 * typeck.c (cp_build_unary_op): Early return error_mark_node when
564 arg is NULL_TREE too.
565 * call.c (convert_class_to_reference): Return error_mark_node when
566 expr is NULL_TREE.
567
568 2010-06-30 Michael Matz <matz@suse.de>
569
570 * repo.c (finish_repo): Fix typo.
571
572 2010-06-30 Nathan Froyd <froydnj@codesourcery.com>
573
574 * parser.c (cp_parser_omp_for_loop): Use a VEC for for_block.
575
576 2010-06-30 Nathan Froyd <froydnj@codesourcery.com>
577
578 * repo.c (pending_repo): Change type to a VEC.
579 (finish_repo): Adjust for new type of pending_repo.
580 (repo_emit_p): Likewise.
581
582 2010-06-30 Manuel López-Ibáñez <manu@gcc.gnu.org>
583
584 * tree.c: Include gimple.h. Do not include tree-flow.h
585 * decl.c: Do not include tree-flow.h
586 * Make-lang.in: Adjust dependencies.
587
588 2010-06-29 Nathan Froyd <froydnj@codesourcery.com>
589
590 * decl.c (incomplete_var): Declare. Declare VECs containing them.
591 (incomplete_vars): Adjust comment. Change type to a VEC.
592 (maybe_register_incomplete_var): Adjust for new type.
593 (complete_vars): Adjust iteration over incomplete_vars.
594
595 2010-06-29 Nathan Froyd <froydnj@codesourcery.com>
596
597 * decl.c (struct named_label_entry): Change type of bad_decls field
598 to a VEC.
599 (poplevel_named_label_1): Adjust for new type of bad_decls.
600 (check_goto): Likewise.
601
602 2010-06-29 Jason Merrill <jason@redhat.com>
603
604 Enable implicitly declared move constructor/operator= (N3053).
605 * class.c (add_implicitly_declared_members): A class with no
606 explicitly declared copy or move constructor gets both declared
607 implicitly, and similarly for operator=.
608 (check_bases): A type with no copy ctor does not inhibit
609 a const copy ctor in a derived class. It does mean the derived
610 one is non-trivial.
611 (check_field_decl): Likewise.
612 (check_bases_and_members): A nonexistent copy ctor/op= is non-trivial.
613 * tree.c (type_has_nontrivial_copy_init): Adjust semantics.
614 (trivially_copyable_p): Likewise.
615 * call.c (convert_like_real): Use type_has_nontrivial_copy_init.
616 * class.c (finish_struct_bits): Likewise.
617 * tree.c (build_target_expr_with_type): Likewise.
618 * typeck2.c (store_init_value): Likewise.
619
620 Enable implicitly deleted functions (N2346)
621 * class.c (check_bases_and_members): Adjust lambda flags.
622 * method.c (implicitly_declare_fn): Set DECL_DELETED_FN if appropriate.
623
624 * decl2.c (mark_used): Adjust error for use of deleted function.
625
626 Machinery to support implicit delete/move.
627 * cp-tree.h: (struct lang_type_class): Add lazy_move_assign,
628 has_complex_move_ctor, has_complex_move_assign bitfields.
629 (CLASSTYPE_LAZY_MOVE_ASSIGN): New.
630 (TYPE_HAS_COMPLEX_MOVE_ASSIGN): New.
631 (TYPE_HAS_COMPLEX_MOVE_CTOR): New.
632 (enum special_function_kind): Add sfk_move_assignment.
633 (LOOKUP_SPECULATIVE): New.
634 * call.c (build_over_call): Return early if it's set.
635 (build_over_call): Use trivial_fn_p.
636 * class.c (check_bases): If the base has no default constructor,
637 the derived one is non-trivial. Handle move ctor/op=.
638 (check_field_decl): Likewise.
639 (check_bases_and_members): Handle move ctor/op=.
640 (add_implicitly_declared_members): Handle CLASSTYPE_LAZY_MOVE_ASSIGN.
641 (type_has_move_constructor, type_has_move_assign): New.
642 * decl.c (grok_special_member_properties): Handle move ctor/op=.
643 * method.c (type_has_trivial_fn, type_set_nontrivial_flag): New.
644 (trivial_fn_p): New.
645 (do_build_copy_constructor): Use it.
646 (do_build_assign_ref): Likewise. Handle move assignment.
647 (build_stub_type, build_stub_object, locate_fn_flags): New.
648 (locate_ctor): Use locate_fn_flags.
649 (locate_copy, locate_dtor): Remove.
650 (get_dtor, get_default_ctor, get_copy_ctor, get_copy_assign): New.
651 (process_subob_fn, synthesized_method_walk): New.
652 (maybe_explain_implicit_delete): New.
653 (implicitly_declare_fn): Use synthesized_method_walk,
654 type_has_trivial_fn, and type_set_nontrivial_flag.
655 (defaulted_late_check): Set DECL_DELETED_FN.
656 (defaultable_fn_check): Handle sfk_move_assignment.
657 (lazily_declare_fn): Clear CLASSTYPE_LAZY_* early. Don't declare
658 implicitly deleted move ctor/op=.
659 * search.c (lookup_fnfields_1): Handle sfk_move_assignment.
660 (lookup_fnfields_slot): New.
661 * semantics.c (omp_clause_info_fndecl): Remove.
662 (cxx_omp_create_clause_info): Use get_default_ctor, get_copy_ctor,
663 get_copy_assign, trivial_fn_p.
664 (trait_expr_value): Adjust call to locate_ctor.
665 * tree.c (special_function_p): Handle sfk_move_assignment.
666
667 * class.c (type_has_virtual_destructor): New.
668 * cp-tree.h: Declare it.
669 * semantics.c (trait_expr_value): Use it.
670
671 * call.c (build_over_call): Only give warnings with tf_warning.
672
673 * name-lookup.c (pop_scope): Handle NULL_TREE.
674
675 * cp-tree.h (TYPE_HAS_ASSIGN_REF): Rename to TYPE_HAS_COPY_ASSIGN.
676 (TYPE_HAS_CONST_ASSIGN_REF): Rename to TYPE_HAS_CONST_COPY_ASSIGN.
677 (TYPE_HAS_INIT_REF): Rename to TYPE_HAS_COPY_CTOR.
678 (TYPE_HAS_CONST_INIT_REF): Rename to TYPE_HAS_CONST_COPY_CTOR.
679 (TYPE_HAS_COMPLEX_ASSIGN_REF): Rename to TYPE_HAS_COMPLEX_COPY_ASSIGN.
680 (TYPE_HAS_COMPLEX_INIT_REF): Rename to TYPE_HAS_COMPLEX_COPY_CTOR.
681 (TYPE_HAS_TRIVIAL_ASSIGN_REF): Rename to TYPE_HAS_TRIVIAL_COPY_ASSIGN.
682 (TYPE_HAS_TRIVIAL_INIT_REF): Rename to TYPE_HAS_TRIVIAL_COPY_CTOR.
683 (CLASSTYPE_LAZY_ASSIGNMENT_OP): Rename to CLASSTYPE_LAZY_COPY_ASSIGN.
684 (sfk_assignment_operator): Rename to sfk_copy_assignment.
685 * decl.c, call.c, class.c, init.c, method.c, pt.c, ptree.c: Adjust.
686 * search.c, semantics.c, tree.c: Adjust.
687
688 * pt.c (dependent_scope_ref_p): Remove.
689 (value_dependent_expression_p): Don't call it.
690 (type_dependent_expression_p): Here either.
691 * init.c (build_offset_ref): Set TREE_TYPE on a qualified-id
692 if the scope isn't dependent.
693
694 * pt.c (convert_nontype_argument): Use mark_lvalue_use if we want
695 a reference.
696
697 PR c++/44587
698 * pt.c (has_value_dependent_address): New.
699 (value_dependent_expression_p): Check it.
700 (convert_nontype_argument): Likewise. Call decay_conversion before
701 folding if we want a pointer.
702 * semantics.c (finish_id_expression): Don't add SCOPE_REF if the
703 scope is the current instantiation.
704
705 2010-06-28 Jakub Jelinek <jakub@redhat.com>
706
707 PR c++/44682
708 * class.c (build_base_path): If want_pointer, call mark_rvalue_use
709 on expr.
710
711 2010-06-28 Steven Bosscher <steven@gcc.gnu.org>
712
713 * init.c: Do not include except.h.
714 * decl.c: Likewise.
715 * expr.c: Likewise.
716 * cp-lang.c: Likewise.
717 * pt.c: Likewise.
718 * semantics.c: Likewise.
719 * decl2.c: Likewise.
720 * except.c: Likewise.
721 (init_exception_processing): Do not set the removed
722 lang_protect_cleanup_actions here.
723 (cp_protect_cleanup_actions): Make non-static and remove prototype.
724 (doing_eh): New, moved from except.c but removed the do_warning flag.
725 (expand_start_catch_block): Update doing_eh call.
726 (expand_end_catch_block): Likewise.
727 (build_throw): Likewise.
728 * cp-tree.h: Prototype cp_protect_cleanup_actions.
729 * cp-objcp-common.h: Set LANG_HOOKS_EH_PROTECT_CLEANUP_ACTIONS to
730 cp_protect_cleanup_actions.
731 * Make-lang.in: Update dependencies.
732
733 2010-06-26 Jason Merrill <jason@redhat.com>
734
735 * call.c (add_function_candidate): Set LOOKUP_COPY_PARM for any
736 constructor called with a single argument that takes a reference
737 to the constructor's class.
738 (BAD_CONVERSION_RANK): New.
739 (compare_ics): Use it to compare bad ICSes.
740
741 2010-06-25 Joseph Myers <joseph@codesourcery.com>
742
743 * lang-specs.h: Remove +e handling.
744
745 2010-06-24 Andi Kleen <ak@linux.intel.com>
746
747 * parser.c: (cp_parser_question_colon_clause):
748 Switch to use cp_lexer_peek_token.
749 Call warn_for_omitted_condop. Call pedwarn for omitted
750 middle operand.
751
752 2010-06-22 Jakub Jelinek <jakub@redhat.com>
753
754 PR c++/44619
755 * typeck2.c (build_m_component_ref): Call mark_lvalue_use on
756 datum and mark_rvalue_use on component.
757
758 PR c++/44627
759 * error.c (dump_expr): Don't look at CALL_EXPR_ARG (t, 0) if
760 the CALL_EXPR has no arguments.
761
762 2010-06-21 Jason Merrill <jason@redhat.com>
763
764 * typeck.c (comp_except_specs): Fix ce_derived with noexcept.
765
766 * semantics.c (check_trait_type): Check COMPLETE_TYPE_P for array
767 element type.
768
769 2010-06-17 Nathan Froyd <froydnj@codesourcery.com>
770
771 * name-lookup.c (struct arg_lookup): Convert namespaces and
772 classes fields to VEC.
773 (arg_assoc_namespace): Adjust for new type of namespaces.
774 (arg_assoc_class): Adjust for new type of classes.
775 (lookup_arg_dependent): Use make_tree_vector and
776 release_tree_vector.
777 * typeck2.c (build_x_arrow): Use vec_member.
778
779 2010-06-17 Manuel López-Ibáñez <manu@gcc.gnu.org>
780
781 PR c++/44486
782 * error.c (dump_decl): Better wording for anonymous namespace.
783
784 2010-06-16 Nathan Froyd <froydnj@codesourcery.com>
785
786 * class.c (build_vtbl_initializer): Adjust computation of new_position
787 and which entry to add padding for.
788
789 2010-06-16 Jason Merrill <jason@redhat.com>
790
791 * except.c (check_noexcept_r): Return the problematic function.
792 (finish_noexcept_expr): Give -Wnoexcept warning. Add complain parm.
793 * pt.c (tsubst_copy_and_build): Pass it.
794 * parser.c (cp_parser_unary_expression): Likewise.
795 * cp-tree.h: Adjust prototype.
796
797 * method.c (defaulted_late_check): Give the defaulted method
798 the same exception specification as the implicit declaration.
799
800 2010-06-15 Jason Merrill <jason@redhat.com>
801
802 * class.c (add_implicitly_declared_members): Implicit assignment
803 operators can also be virtual overriders.
804 * method.c (lazily_declare_fn): Likewise.
805
806 * call.c (convert_like_real): Give "initializing argument of"
807 information for ambiguous conversion. Give source position
808 of function.
809
810 * call.c (print_z_candidates): Do print viable deleted candidates.
811 (joust): Don't choose a deleted function just because its worst
812 conversion is better than another candidate's worst.
813
814 * call.c (convert_like_real): Don't complain about
815 list-value-initialization from an explicit constructor.
816
817 * decl.c (duplicate_decls): Use DECL_IS_BUILTIN rather than test
818 DECL_SOURCE_LOCATION directly.
819
820 * class.c (type_has_user_provided_default_constructor): Use
821 sufficient_parms_p.
822
823 * call.c (is_subseq): Handle ck_aggr, ck_list.
824 (compare_ics): Treat an aggregate or ambiguous conversion to the
825 same type as involving the same function.
826
827 2010-06-13 Shujing Zhao <pearly.zhao@oracle.com>
828
829 * typeck.c (convert_for_assignment): Fix comment. Change message
830 format from %d to %qP.
831 (convert_for_initialization): Fix comment.
832
833 2010-06-11 Shujing Zhao <pearly.zhao@oracle.com>
834
835 * cp-tree.h (expr_list_kind): New type.
836 (impl_conv_rhs): New type.
837 (build_x_compound_expr_from_list, convert_for_initialization): Adjust
838 prototype.
839 (typeck.c (convert_arguments): Use impl_conv_rhs and emit the
840 diagnostics for easy translation. Change caller.
841 (convert_for_initialization): Use impl_conv_rhs and change caller.
842 (build_x_compound_expr_from_list): Use expr_list_kind and emit the
843 diagnostics for easy translation. Change caller.
844 * decl.c (bad_spec_place): New enum.
845 (bad_specifiers): Use it and emit the diagnostics for easy
846 translation. Change caller.
847 * pt.c (coerce_template_parms): Put the diagnostics in full sentence.
848
849 2010-06-09 Nathan Froyd <froydnj@codesourcery.com>
850
851 * cp-tree.h (struct saved_scope): Change decl_ns_list field type
852 to a VEC.
853 * decl2.c (cp_write_global_declarations): Adjust for new type of
854 decl_namespace_list.
855 * name-lookup.c (current_decl_namespace): Likewise.
856 (push_decl_namespace): Likewise.
857 (pop_decl_namespace): Likewise.
858
859 2010-06-09 Nathan Froyd <froydnj@codesourcery.com>
860
861 * call.c (build_java_interface_fn_ref): Call build_function_type_list
862 instead of build_function_type.
863 * decl.c (cxx_init_decl_processing): Likewise.
864 (declare_global_var): Likewise.
865 (get_atexit_node): Likewise.
866 (expand_static_init): Likewise.
867 * decl2.c (start_objects): Likewise.
868 (start_static_storage_duration_function): Likewise.
869 * except.c (init_exception_processing): Likewise.
870 (build_exc_ptr): Likewise.
871 (build_throw): Likewise.
872 * rtti.c (throw_bad_cast): Likewise.
873 (throw_bad_typeid): Likewise.
874 (build_dynamic_cast_1): Likewise.
875
876 2010-06-09 Nathan Froyd <froydnj@codesourcery.com>
877
878 * call.c (build_call_n): Call XALLOCAVEC instead of alloca.
879 (build_op_delete_call): Likewise.
880 (build_over_call): Likewise.
881 * cp-gimplify.c (cxx_omp_clause_apply_fn): Likewise.
882 * pt.c (process_partial_specialization): Likewise.
883 (tsubst_template_args): Likewise.
884 * semantics.c (finish_asm_stmt): Likewise.
885
886 2010-06-08 Nathan Sidwell <nathan@codesourcery.com>
887
888 * decl.c (record_key_method_defined): New, broken out of ...
889 (finish_function): ... here. Call it.
890 (start_decl): Treat aliases as definitions.
891
892 2010-06-08 Laurynas Biveinis <laurynas.biveinis@gmail.com>
893
894 * typeck2.c (abstract_virtuals_error): Use typed GC allocation.
895
896 * pt.c (maybe_process_partial_specialization): Likewise.
897 (register_specialization): Likewise.
898 (add_pending_template): Likewise.
899 (lookup_template_class): Likewise.
900 (push_tinst_level): Likewise.
901
902 * parser.c (cp_lexer_new_main): Likewise.
903 (cp_lexer_new_from_tokens): Likewise.
904 (cp_token_cache_new): Likewise.
905 (cp_parser_context_new): Likewise.
906 (cp_parser_new): Likewise.
907 (cp_parser_nested_name_specifier_opt): Likewise.
908 (cp_parser_template_id): Likewise.
909
910 * name-lookup.c (binding_entry_make): Likewise.
911 (binding_table_construct): Likewise.
912 (binding_table_new): Likewise.
913 (cxx_binding_make): Likewise.
914 (pushdecl_maybe_friend): Likewise.
915 (begin_scope): Likewise.
916 (push_to_top_level): Likewise.
917
918 * lex.c (init_reswords): Likewise.
919 (retrofit_lang_decl): Likewise.
920 (cxx_dup_lang_specific_decl): Likewise.
921 (copy_lang_type): Likewise.
922 (cxx_make_type): Likewise.
923
924 * decl.c (make_label_decl): Likewise.
925 (check_goto): Likewise.
926 (start_preparsed_function): Likewise.
927 (save_function_data): Likewise.
928
929 * cp-tree.h (TYPE_SET_PTRMEMFUNC_TYPE): Likewise.
930
931 * cp-objcp-common.c (decl_shadowed_for_var_insert): Likewise.
932
933 * class.c (finish_struct_1): Likewise.
934
935 * cp-tree.h (struct lang_type): Add variable_size GTY option.
936 (struct lang_decl): Likewise.
937
938 * parser.c (cp_parser_new): Update comment to not reference
939 ggc_alloc.
940
941 2010-06-07 Jason Merrill <jason@redhat.com>
942
943 PR c++/44366
944 * error.c (dump_parameters): Mask out TFF_SCOPE.
945 (dump_simple_decl): Don't print the scope of a PARM_DECL.
946 (dump_scope): Remove no-op mask.
947
948 PR c++/44401
949 * parser.c (cp_parser_lookup_name): Fix naming the constructor.
950
951 * cp-tree.h (COMPLETE_OR_OPEN_TYPE_P): New macro.
952 * init.c (build_offset_ref): Use it.
953 * pt.c (maybe_process_partial_specialization): Use it.
954 (instantiate_class_template): Use it.
955 * search.c (lookup_base): Use it.
956
957 2010-06-07 Jakub Jelinek <jakub@redhat.com>
958
959 PR c++/44444
960 * expr.c (mark_exp_read): Handle INDIRECT_REF.
961 * cvt.c (convert_to_void): Handle INDIRECT_REF like
962 handled_component_p.
963
964 PR c++/44443
965 * decl.c (initialize_local_var): If TREE_USED is set on the type,
966 set also DECL_READ_P on the decl.
967
968 2010-05-25 Dodji Seketeli <dodji@redhat.com>
969
970 PR c++/44188
971 * cp-tree.h (typedef_variant_p): Move this declaration to
972 gcc/tree.h.
973 * tree.c (typedef_variant_p): Move this definition to gcc/tree.c.
974 * decl.c (grokdeclarator): Do not rename debug info of an
975 anonymous tagged type named by a typedef.
976
977 2010-06-05 Fabien Chêne <fabien@gcc.gnu.org>
978
979 PR c++/44086
980 * class.c (check_field_decls): Move the call to
981 check_bitfield_decl before trying to set the
982 CLASSTYPE_READONLY_FIELDS_NEED_INIT flag.
983
984 2010-06-05 Steven Bosscher <steven@gcc.gnu.org>
985
986 * typeck.c: Update include path for moved files.
987 * decl.c: Likewise.
988 * rtti.c: Likewise.
989 * cp-gimplify.c: Likewise.
990 * cp-lang.c: Likewise.
991 * pt.c: Likewise.
992 * semantics.c: Likewise.
993 * cxx-pretty-print.h: Likewise.
994 * decl2.c: Likewise.
995 * parser.c: Likewise.
996 * cp-objcp-common.c: Likewise.
997 * cp-tree.h: Likewise.
998 * name-lookup.c: Likewise.
999 * lex.c: Likewise.
1000 * name-lookup.h: Likewise.
1001 * config-lang.in: Update paths in gtfiles for files in c-family/.
1002 * Make-lang.in: Likewise.
1003
1004 2010-06-04 Magnus Fromreide <magfr@lysator.liu.se>
1005
1006 * cvt.c (cp_convert_to_pointer): Use null_ptr_cst_p.
1007 * typeck.c (build_ptrmemfunc): Likewise.
1008
1009 2010-06-04 Jason Merrill <jason@redhat.com>
1010
1011 * typeck2.c (merge_exception_specifiers): Adjust merging of
1012 throw() and noexcept(true).
1013
1014 * pt.c (value_dependent_expression_p) [NOEXCEPT_EXPR]: Avoid
1015 using an uninitialized variable.
1016
1017 * cxx-pretty-print.c (pp_cxx_unary_expression): Handle NOEXCEPT_EXPR.
1018 (pp_cxx_expression): Likewise.
1019
1020 Implement noexcept-specification (15.4)
1021 * parser.c (cp_parser_exception_specification_opt): Parse it.
1022 Give -Wdeprecated warning about throw() specs.
1023 * pt.c (tsubst_exception_specification): Handle it.
1024 * error.c (dump_exception_spec): Handle it.
1025 (dump_expr): Handle NOEXCEPT_EXPR.
1026 * cxx-pretty-print.c (pp_cxx_exception_specification): Likewise.
1027 * typeck.c (comp_except_specs): Handle compatibility rules.
1028 Change exact parm to take an enum.
1029 * typeck2.c (merge_exception_specifiers): Handle noexcept.
1030 * except.c (nothrow_spec_p, type_noexcept_p): New fns.
1031 (type_throw_all_p, build_noexcept_spec): New fns.
1032 * cp-tree.h (TYPE_NOTHROW_P, TYPE_NOEXCEPT_P): Use them.
1033 (comp_except_specs): Define ce_derived, ce_normal, ce_exact enums.
1034 (cp_tree_index): Add CPTI_NOEXCEPT_TRUE_SPEC, CPTI_NOEXCEPT_FALSE_SPEC.
1035 (noexcept_true_spec, noexcept_false_spec): New macros.
1036 * name-lookup.c (pushdecl_maybe_friend): Adjust.
1037 * search.c (check_final_overrider): Adjust.
1038 * decl.c (check_redeclaration_exception_specification): Adjust.
1039 (use_eh_spec_block): Use type_throw_all_p.
1040 (cxx_init_decl_processing): Set noexcept_false_spec,noexcept_true_spec.
1041 Give operator new a noexcept-specification in C++0x mode.
1042 * tree.c (build_exception_variant, cxx_type_hash_eq): Adjust.
1043 (cp_build_type_attribute_variant): Don't test TYPE_RAISES_EXCEPTIONS.
1044
1045 Implement noexcept operator (5.3.7)
1046 * cp-tree.def (NOEXCEPT_EXPR): New.
1047 * except.c (check_noexcept_r, finish_noexcept_expr): New.
1048 * cp-tree.h: Declare finish_noexcept_expr.
1049 * parser.c (cp_parser_unary_expression): Parse noexcept-expression.
1050 * pt.c (tsubst_copy_and_build): And tsubst it.
1051 (type_dependent_expression_p): Handle it.
1052 (value_dependent_expression_p): Handle it.
1053
1054 * call.c (build_conditional_expr): Never fold in unevaluated context.
1055 * tree.c (build_aggr_init_expr): Propagate TREE_NOTHROW.
1056 * semantics.c (simplify_aggr_init_expr): Likewise.
1057 * typeck.c (merge_types): Call merge_exception_specifiers.
1058 * decl.c (duplicate_decls): Check DECL_SOURCE_LOCATION rather than
1059 DECL_ANTICIPATED for preferring new type.
1060
1061 2010-06-04 Joseph Myers <joseph@codesourcery.com>
1062
1063 * g++spec.c (lang_specific_driver): Use GCC-specific formats in
1064 diagnostics.
1065
1066 2010-06-04 Jakub Jelinek <jakub@redhat.com>
1067
1068 PR c++/44412
1069 * typeck.c (build_class_member_access_expr): Call mark_exp_read
1070 on object for static data members.
1071
1072 2010-06-04 Jakub Jelinek <jakub@redhat.com>
1073 Jason Merrill <jason@redhat.com>
1074
1075 PR c++/44362
1076 * call.c (build_conditional_expr): If both arg2 and arg3 are lvalues
1077 with the same type, call mark_lvalue_use on both.
1078
1079 2010-06-03 Nathan Froyd <froydnj@codesourcery.com>
1080
1081 * class.c (struct vtbl_init_data_s): Remove last_init field.
1082 (struct secondary_vptr_vtt_init_data_s): Change type of inits field
1083 to a VEC.
1084 (finish_vtbls): Use a VEC rather than a TREE_LIST for the accumulated
1085 initializers.
1086 (build_vtt): Likewise.
1087 (initialize_vtable): Take a VEC instead of a tree.
1088 (build_vtt_inits): Change return type to void. Take a VEC **
1089 instead of a tree *; accumulate results into said VEC.
1090 (build_ctor_vtbl_group): Use a VEC rather than a TREE_LIST for the
1091 accumulated initializers. Pass the vtable to accumulate_vtbl_inits.
1092 (accumulate_vtbl_inits): Add extra vtable tree parameter; take a VEC
1093 instead of a tree.
1094 (dfs_accumulate_vtbl_inits): Likewise. Change return type to void.
1095 (build_vtbl_initializer): Add VEC parameter; accumulate initializers
1096 into it.
1097 (dfs_build_secondary_vptr_vtt_inits): Use CONSTRUCTOR_APPEND_ELT
1098 rather than tree_cons.
1099 (build_vbase_offset_vtbl_entries): Likewise.
1100 (add_vcall_offset): Likewise.
1101 (build_rtti_vtbl_entries): Likewise.
1102 * cp-tree.h (initialize_artificial_var): Take a VEC instead of a tree.
1103 * decl.c (initialize_artificial_var): Use build_constructor instead
1104 of build_constructor_from_list.
1105
1106 2010-06-03 H.J. Lu <hongjiu.lu@intel.com>
1107
1108 PR c++/44294
1109 * class.c (layout_class_type): Check MAX_FIXED_MODE_SIZE on
1110 bit-field.
1111
1112 2010-06-02 Jonathan Wakely <jwakely.gcc@gmail.com>
1113
1114 * parser.c (cp_parser_mem_initializer_list): Change error text.
1115
1116 2010-06-02 Jakub Jelinek <jakub@redhat.com>
1117
1118 * cp-objcp-common.c (shadowed_var_for_decl): Change into
1119 tree_decl_map hashtab from tree_map.
1120 (decl_shadowed_for_var_lookup, decl_shadowed_for_var_insert): Adjust.
1121 (init_shadowed_var_for_decl): Adjust initialization.
1122
1123 PR c++/44361
1124 * cvt.c (convert_to_void): If implicit is NULL, call mark_rvalue_use
1125 instead of calling mark_exp_read only when not an assignment.
1126
1127 PR debug/44367
1128 * semantics.c (finalize_nrv): Don't copy DECL_ARTIFICIAL, DECL_IGNORED_P,
1129 DECL_SOURCE_LOCATION and DECL_ABSTRACT_ORIGIN from var to result.
1130 Set DECL_VALUE_EXPR on var.
1131
1132 2010-06-02 Jason Merrill <jason@redhat.com>
1133
1134 * error.c (dump_type): Improve typedef handling.
1135
1136 PR c++/9726
1137 PR c++/23594
1138 PR c++/44333
1139 * name-lookup.c (same_entity_p): New.
1140 (ambiguous_decl): Multiple declarations of the same entity
1141 are not ambiguous.
1142
1143 2010-06-01 Jason Merrill <jason@redhat.com>
1144
1145 DR 990
1146 * call.c (add_list_candidates): Prefer the default constructor.
1147 (build_aggr_conv): Treat missing initializers like { }.
1148 * typeck2.c (process_init_constructor_record): Likewise.
1149 * init.c (expand_default_init): Use digest_init for
1150 direct aggregate initialization, too.
1151
1152 * call.c (add_list_candidates): Split out...
1153 (build_user_type_conversion_1): ...from here.
1154 (build_new_method_call): And here.
1155 (implicit_conversion): Propagate LOOKUP_NO_NARROWING.
1156
1157 PR c++/44358
1158 * call.c (build_list_conv): Set list-initialization flags properly.
1159
1160 2010-06-01 Nathan Froyd <froydnj@codesourcery.com>
1161
1162 * typeck2.c (build_x_arrow): Make types_memoized a VEC.
1163
1164 2010-06-01 Arnaud Charlet <charlet@adacore.com>
1165 Matthew Gingell <gingell@adacore.com>
1166
1167 * Make-lang.in (CXX_C_OBJS): Add c-ada-spec.o.
1168 * decl2.c: Include langhooks.h and c-ada-spec.h.
1169 (cpp_check, collect_source_refs, collect_ada_namespace,
1170 collect_all_refs): New functions.
1171 (cp_write_global_declarations): Add handling of -fdump-ada-spec.
1172 * lang-specs.h: Ditto.
1173
1174 2010-05-29 Nathan Froyd <froydnj@codesourcery.com>
1175
1176 * cp-tree.h (cp_build_function_call_nary): Declare.
1177 * typeck.c (cp_build_function_call_nary): Define.
1178 * decl.c (register_dtor_fn): Use it instead of
1179 cp_build_function_call.
1180 (cxx_maybe_build_cleanup): Likewise.
1181 * decl2.c (generate_ctor_or_dtor_function): Likewise.
1182 * except.c (do_get_exception_ptr): Likewise.
1183 (do_begin_catch): Likewise.
1184 (do_allocate_exception): Likewise.
1185 (do_free_exception): Likewise.
1186 (build_throw): Likewise. Use cp_build_function_call_vec instead
1187 of cp_build_function_call.
1188 (do_end_catch): Likewise.
1189
1190 2010-05-29 Nathan Froyd <froydnj@codesourcery.com>
1191
1192 * cp-tree.h (struct cp_decl_specifier_seq): Move type_location field up.
1193 (struct cp_declarator): Move id_loc field up.
1194
1195 2010-05-29 Steven Bosscher <steven@gcc.gnu.org>
1196
1197 * cp-tree.h (ATTRIBUTE_GCC_CXXDIAG): Remove. Require that
1198 this file is included before c-common.h. Define GCC_DIAG_STYLE
1199 before including diagnostic-core.h and toplev.h.
1200 (pedwarn_cxx98): Use ATTRIBUTE_GCC_DIAG.
1201 * pt.c: Include cp-tree.h before c-common.h.
1202
1203 2010-05-29 Steven Bosscher <steven@gcc.gnu.org>
1204
1205 * tree.c (c_register_addr_space): Add stub.
1206
1207 2010-05-28 Joseph Myers <joseph@codesourcery.com>
1208
1209 * g++spec.c (lang_specific_driver): Use fatal_error instead of
1210 fatal.
1211
1212 2010-05-28 Dodji Seketeli <dodji@redhat.com>
1213
1214 Revert fix of PR c++/44188
1215 * cp-tree.h (typedef_variant_p): Revert moving this declaration to
1216 gcc/tree.h.
1217 * tree.c (typedef_variant_p): Revert moving this definition to
1218 gcc/tree.c.
1219 * decl.c (grokdeclarator): Revert naming typedef handling.
1220
1221 2010-05-27 Joseph Myers <joseph@codesourcery.com>
1222
1223 * call.c: Include diagnostic-core.h instead of diagnostic.h.
1224 * cp-lang.c: Don't include diagnostic.h
1225 * name-lookup.c: Include diagnostic-core.h instead of
1226 diagnostic.h.
1227 (cp_emit_debug_info_for_using): Use seen_error.
1228 * optimize.c: Include diagnostic-core.h instead of diagnostic.h.
1229 * parser.c: Include diagnostic-core.h instead of diagnostic.h.
1230 * pt.c (iterative_hash_template_arg): Use seen_error.
1231 * repo.c: Include diagnostic-core.h instead of diagnostic.h.
1232 * typeck2.c: Include diagnostic-core.h instead of diagnostic.h.
1233 * Make-lang.in (cp/cp-lang.o, cp/typeck2.o, cp/call.o, cp/repo.o,
1234 cp/optimize.o, cp/parser.o, cp/name-lookup.o): Update
1235 dependencies.
1236
1237 2010-05-25 Dodji Seketeli <dodji@redhat.com>
1238
1239 PR c++/44188
1240 * cp-tree.h (typedef_variant_p): Move this declaration to
1241 gcc/tree.h.
1242 * tree.c (typedef_variant_p): Move this definition to gcc/tree.c.
1243 * decl.c (grokdeclarator): Do not rename debug info of an
1244 anonymous tagged type named by a typedef.
1245
1246 2010-05-27 Jason Merrill <jason@redhat.com>
1247
1248 PR c++/43555
1249 * decl.c (grokdeclarator) [cdk_pointer et al]: Force evaluation of
1250 anonymous VLA size.
1251
1252 2010-05-27 Kai Tietz <kai.tietz@onevision.com>
1253
1254 PR bootstrap/44287
1255 * rtti.c (emit_support_tinfos): Check for NULL_TREE.
1256 * class.c (layout_class_type): Likewise.
1257 * decl.c (finish_enum): Likewise.
1258 * mangle.c (write_builitin_type): Likewise.
1259
1260 2010-05-26 Kai Tietz <kai.tietz@onevision.com>
1261
1262 * cp-tree.h (cp_decl_specifier_seq): Add new bifield
1263 explicit_int128_p.
1264 * decl.c (grokdeclarator): Handle __int128.
1265 * parser.c (cp_lexer_next_token_is_decl_specifier_ke): Likewise.
1266 (cp_parser_simple_type_specifier): Likewise.
1267 * rtti.c (emit_support_tinfos): Add int128 nodes for rtti.
1268 * typeck.c (cp_common_type): Handle __int128.
1269 * mangle.c (integer_type_codes): Add itk_int128 and
1270 itk_unsigned_int128.
1271
1272 2010-05-26 Jason Merrill <jason@redhat.com>
1273
1274 PR c++/43382
1275 * pt.c (tsubst_pack_expansion): Don't get confused by recursive
1276 unification.
1277
1278 2010-05-26 Steven Bosscher <steven@gcc.gnu.org>
1279
1280 * cp-lang.c: Do not include expr.h.
1281
1282 2010-05-26 Steven Bosscher <steven@gcc.gnu.org>
1283
1284 * decl.c: Do not include rtl.h
1285 * semantics.c: Likewise.
1286
1287 2010-05-25 Steven Bosscher <steven@gcc.gnu.org>
1288
1289 * cp-tree.h: Do not include splay-tree.h.
1290 (struct prtmem_cst): Remove unused field and false comment.
1291 * typeck.c: Do not include rtl.h, expr.h, and tm_p.h.
1292 * optimize.c: Do not inclde rtl.h, insn-config.h, and integrate.h.
1293 * init.c: Do not include rtl.h and expr.h.
1294 * class.c: Do not include rtl.h. Include splay-tree.h.
1295 (build_clone): Use plain NULL instead of NULL_RTX.
1296 * decl.c: Do not include expr.h. Explain why rtl.h has to be
1297 included. Include splay-tree.h.
1298 * method.c: Do not include rtl.h and expr.h.
1299 (use_thunk): Use plain NULL instead of NULL_RTX.
1300 * except.c: Do not include rtl.h, expr.h, and libfuncs.h.
1301 * tree.c: Do not include rtl.h, insn-config.h, integrate.h,
1302 and target.h. Include splay-tree.h.
1303 * expr.c: Do not include rtl.h and expr.h.
1304 * pt.c: Do not include obstack.h and rtl.h.
1305 (tsubst_friend_function): Use plain NULL instead of NULL_RTX.
1306 (tsubst_decl): Likewise.
1307 (instantiate_decl): Likewise.
1308 * semantics.c: Do not include exprt.h and debug.h. Explain why
1309 rtl.h has to be included.
1310 * decl2.c: Do not include rtl.h and expr.h. Include splay-tree.h.
1311 * call.c: Do not include rtl.h and expr.h.
1312 * search.c: Do not include obstack.h and rtl.h.
1313 * friend.c: Do not include rtl.h and expr.h.
1314 * Make-lang.in: Update dependencies.
1315
1316 2010-05-25 Jakub Jelinek <jakub@redhat.com>
1317
1318 PR c++/18249
1319 * parser.c (non_integral_constant): Add NIC_NONE.
1320 (required_token): Add RT_NONE.
1321 (cp_parser_unary_expression): Initialize non_constant_p
1322 to NIC_NONE.
1323 (cp_parser_asm_definition): Initialize missing to RT_NONE.
1324 (cp_parser_primary_expression, cp_parser_postfix_expression,
1325 cp_parser_cast_expression, cp_parser_binary_expression,
1326 cp_parser_functional_cast): Fix formatting.
1327
1328 2010-05-25 Shujing Zhao <pearly.zhao@oracle.com>
1329
1330 PR c++/18249
1331 * parser.c: Remove inclusion of dyn-string.h.
1332 (non_integral_constant): New enum.
1333 (name_lookup_error): New enum.
1334 (required_token): New enum.
1335 (cp_parser_required_error): New function.
1336 (cp_parser_require): Change the type of variable token_desc to
1337 required_token and use cp_parser_required_error.
1338 (cp_parser_require_keyword): Likewise.
1339 (cp_parser_error): Use gmsgid as parameter.
1340 (cp_parser_name_lookup_error): Change the type of variable desired to
1341 name_lookup_error and put the diagnostic in the full sentences. Change
1342 caller.
1343 (cp_parser_non_integral_constant_expression): Change the type of the
1344 variable thing to non_integral_constant and put the diagnostics in
1345 full sentences. Change caller.
1346
1347 2010-05-24 Eric Botcazou <ebotcazou@adacore.com>
1348
1349 PR middle-end/44100
1350 * typeck.c (cp_build_unary_op): Fold offsetof-like computations.
1351
1352 2010-05-24 Joseph Myers <joseph@codesourcery.com>
1353
1354 * error.c (cp_diagnostic_starter): Update call to
1355 diagnostic_build_prefix.
1356 (cp_print_error_function,
1357 print_instantiation_partial_context_line): Check show_column flag
1358 in context.
1359
1360 2010-05-24 Jason Merrill <jason@redhat.com>
1361
1362 PR c++/41510
1363 * decl.c (check_initializer): Don't wrap an init-list in a
1364 TREE_LIST.
1365 * init.c (build_aggr_init): Don't assume copy-initialization if
1366 init has CONSTRUCTOR_IS_DIRECT_INIT.
1367 * call.c (build_new_method_call): Sanity check.
1368
1369 2010-05-24 Nathan Froyd <froydnj@codesourcery.com>
1370
1371 * rtti.c (tinfo_base_init): Use build_constructor instead of
1372 build_constructor_from_list. Don't cons a tree node for
1373 returning.
1374 (generic_initializer): Use build_constructor_single instead of
1375 build_constructor_from_list.
1376 (ptr_initializer): Use build_constructor instead of
1377 build_constructor_from_list
1378 (ptm_initializer): Likewise.
1379 (class_initializer): Likewise. Take varargs instead of TRAIL.
1380 (get_pseudo_ti_init): Adjust calls to class_initializer. Use
1381 build_constructor instead of build_constructor_from_list.
1382
1383 2010-05-22 Steven Bosscher <steven@gcc.gnu.org>
1384
1385 * semantics.c: Include bitmap.h.
1386 * Make-lang.in: Update dependencies.
1387
1388 2010-05-22 Jan Hubicka <jh@suse.cz>
1389
1390 * decl2.c (maybe_emit_vtables): Produce same comdat group when outputting
1391 comdat vtables.
1392 (cxx_callgraph_analyze_expr): Remove code marking vtables needed.
1393
1394 2010-05-21 Joseph Myers <joseph@codesourcery.com>
1395
1396 * cxx-pretty-print.c: Correct merge error.
1397
1398 2010-05-21 Joseph Myers <joseph@codesourcery.com>
1399
1400 * error.c: Include tree-diagnostic.h and tree-pretty-print.h.
1401 (cp_print_error_function): Use diagnostic_abstract_origin macro.
1402 (cp_printer): Handle %K here using percent_K_format.
1403 * cxx-pretty-print.c: Include tree-pretty-print.h.
1404 * Make-lang.in (cp/error.o, cp/cxx-pretty-print.o): Update
1405 dependencies.
1406
1407 2010-05-21 Steven Bosscher <steven@gcc.gnu.org>
1408
1409 * error.c, tree.c, typeck2.c, cxx-pretty-print.c, mangle.c:
1410 Clean up redundant includes.
1411
1412 2010-05-20 Paolo Carlini <paolo.carlini@oracle.com>
1413
1414 PR c++/30298
1415 * decl.c (xref_basetypes): Return false in case of ill-formed
1416 redefinition.
1417
1418 2010-05-19 Jason Merrill <jason@redhat.com>
1419
1420 * call.c (reference_binding): Use cp_build_qualified_type_real
1421 and cp_type_quals consistently.
1422 (add_function_candidate): Likewise.
1423 (build_conditional_expr): Likewise.
1424 (convert_like_real): Likewise.
1425 (type_passed_as): Likewise.
1426 * class.c (add_method): Likewise.
1427 (same_signature_p): Likewise.
1428 (layout_class_type): Likewise.
1429 * decl.c (cxx_init_decl_processing): Likewise.
1430 (cp_fname_init): Likewise.
1431 (grokdeclarator): Likewise.
1432 * decl2.c (cp_reconstruct_complex_type): Likewise.
1433 * init.c (build_new_1): Likewise.
1434 * method.c (do_build_copy_constructor): Likewise.
1435 (implicitly_declare_fn): Likewise.
1436 * pt.c (tsubst_aggr_type): Likewise.
1437 (tsubst): Likewise.
1438 * rtti.c (init_rtti_processing): Likewise.
1439 (build_headof): Likewise.
1440 (build_dynamic_cast_1): Likewise.
1441 (tinfo_base_init): Likewise.
1442 (emit_support_tinfos): Likewise.
1443 * semantics.c (capture_decltype): Likewise.
1444 * tree.c (cv_unqualified): Likewise.
1445 * typeck.c (composite_pointer_type): Likewise.
1446 (string_conv_p): Likewise.
1447
1448 * mangle.c (write_CV_qualifiers_for_type): Tweak.
1449
1450 * call.c (initialize_reference): Use CP_TYPE_CONST_P.
1451 * decl.c (start_decl): Likewise.
1452 * semantics.c (finish_compound_literal): Likewise.
1453 * typeck.c (check_return_expr): Use CP_TYPE_VOLATILE_P.
1454 (cp_type_readonly): Remove.
1455 * cp-tree.h: Remove declaration.
1456
1457 * typeck.c (merge_types): Preserve memfn quals.
1458
1459 * decl.c (grokdeclarator): Don't check quals on fn type.
1460 * typeck.c (cp_apply_type_quals_to_decl): Likewise.
1461 * tree.c (cp_build_qualified_type_real): Simplify qualifier checking.
1462
1463 PR c++/44193
1464 * typeck.c (type_memfn_quals): New fn.
1465 (apply_memfn_quals): New fn.
1466 (cp_type_quals): Return TYPE_UNQUALIFIED for FUNCTION_TYPE.
1467 (cp_type_readonly): Use cp_type_quals.
1468 * cp-tree.h: Add declarations.
1469 * tree.c (cp_build_qualified_type_real): Don't set, but do
1470 preserve, quals on FUNCTION_TYPE.
1471 (strip_typedefs): Use apply_memfn_quals and type_memfn_quals.
1472 * decl.c (build_ptrmem_type): Likewise.
1473 (grokdeclarator): Likewise.
1474 (static_fn_type): Likewise.
1475 * decl2.c (change_return_type): Likewise.
1476 (cp_reconstruct_complex_type): Likewise.
1477 * pt.c (tsubst_function_type): Likewise.
1478 (unify): Likewise.
1479 (tsubst): Likewise. Drop special FUNCTION_TYPE substitution code.
1480
1481 2010-05-18 Nathan Froyd <froydnj@codesourcery.com>
1482
1483 * tree.c (build_min_non_dep_call_vec): Update comment.
1484
1485 2010-05-17 Jason Merrill <jason@redhat.com>
1486
1487 * call.c (struct z_candidate): Add explicit_targs field.
1488 (add_template_candidate_real): Set it.
1489 (build_over_call): Use it to control init-list warning.
1490
1491 PR c++/44157
1492 * call.c (build_over_call): Limit init-list deduction warning to
1493 cases where the argument is actually an init-list.
1494
1495 PR c++/44158
1496 * call.c (build_over_call): Don't do bitwise copy for move ctor.
1497
1498 2010-05-17 Dodji Seketeli <dodji@redhat.com>
1499 Jason Merrill <jason@redhat.com>
1500
1501 PR c++/44108
1502 * decl.c (compute_array_index_type): Call mark_rvalue_use.
1503
1504 2010-05-15 Jason Merrill <jason@redhat.com>
1505
1506 * cp-tree.h (TYPE_NOEXCEPT_P): New macro.
1507 * except.c (begin_eh_spec_block): Use MUST_NOT_THROW_EXPR if
1508 TYPE_NOEXCEPT_P.
1509 (finish_eh_spec_block): Adjust.
1510
1511 2010-05-15 Jakub Jelinek <jakub@redhat.com>
1512
1513 PR c++/44148
1514 * pt.c (tsubst): Unshare template argument.
1515
1516 2010-05-15 Steven Bosscher <steven@gcc.gnu.org>
1517
1518 * decl.c: Include tree-iterator.h, as fixup for tree-inline.h changes.
1519 * Make-lang.in: Fix dependencies accordingly.
1520
1521 2010-05-14 Jason Merrill <jason@redhat.com>
1522
1523 C++ DR 475
1524 * except.c (build_throw): Simplify, adjust for DR 475.
1525
1526 PR c++/44127
1527 * except.c (dtor_nothrow): Return nonzero for type with
1528 trivial destructor.
1529
1530 PR c++/44127
1531 * cp-gimplify.c (gimplify_must_not_throw_expr): Use
1532 gimple_build_eh_must_not_throw.
1533
1534 2010-05-14 Martin Jambor <mjambor@suse.cz>
1535
1536 * cp-lang.c (LANG_HOOKS_FOLD_OBJ_TYPE_REF): Remove both its undef
1537 and define.
1538
1539 2010-05-14 Jonathan Wakely <jwakely.gcc@gmail.com>
1540
1541 * call.c (build_new_method_call): Change warning text.
1542 * typeck2.c (build_functional_cast): Change error text.
1543
1544 2010-05-14 Shujing Zhao <pearly.zhao@oracle.com>
1545
1546 PR c++/30566
1547 * name-lookup.c (pushdecl_maybe_friend): Avoid the warnings about
1548 shadowing the outer parameter or variables by the declaration of
1549 nested function in nested structure or class. Warn the shadowing by
1550 the declaration of nested lambda expression.
1551
1552 2010-05-13 Jason Merrill <jason@redhat.com>
1553
1554 * typeck.c (cp_build_array_ref): Factor out from...
1555 (build_array_ref): ...here. Drop complain parm.
1556 (build_new_op): Adjust.
1557 * class.c (build_vtbl_ref_1): Adjust.
1558 * decl2.c (grok_array_decl): Adjust.
1559 * cp-tree.h: Adjust prototypes.
1560
1561 2010-05-13 Jan Hubicka <jh@suse.cz>
1562
1563 * decl.c (cp_finish_decl): Do not worry about used attribute.
1564
1565 2010-05-12 Jason Merrill <jason@redhat.com>
1566
1567 * typeck.c (build_array_ref): Take complain parm.
1568 * cp-tree.h: Add it to prototype.
1569 * call.c (build_new_op): Pass it.
1570 * class.c (build_vtbl_ref): Pass it.
1571 * decl2.c (grok_array_decl): Pass it.
1572
1573 PR bootstrap/44048
1574 PR target/44099
1575 * cp-tree.def (NULLPTR_TYPE): Remove.
1576 * cp-tree.h (NULLPTR_TYPE_P): New.
1577 (SCALAR_TYPE_P): Use it.
1578 (nullptr_type_node): New.
1579 (cp_tree_index): Add CPTI_NULLPTR_TYPE.
1580 * decl.c (cxx_init_decl_processing): Call record_builtin_type on
1581 nullptr_type_node.
1582 * cvt.c (ocp_convert): Use NULLPTR_TYPE_P instead of NULLPTR_TYPE.
1583 * cxx-pretty-print.c (pp_cxx_constant): Likewise.
1584 * error.c (dump_type, dump_type_prefix, dump_type_suffix): Likewise.
1585 * mangle.c (write_type): Likewise.
1586 * name-lookup.c (arg_assoc_type): Likewise.
1587 * typeck.c (build_reinterpret_cast_1): Likewise.
1588 * rtti.c (typeinfo_in_lib_p): Likewise.
1589 (emit_support_tinfos): Remove local nullptr_type_node.
1590
1591 * cp-tree.h (UNKNOWN_TYPE): Remove.
1592 * decl.c (cxx_init_decl_processing): Use LANG_TYPE instead.
1593 * error.c (dumy_type, dump_type_prefix, dump_type_suffix): Likewise.
1594 * typeck2.c (cxx_incomplete_type_diagnostic): Likewise.
1595 * class.c (instantiate_type): Check unknown_type_node rather than
1596 UNKNOWN_TYPE.
1597 * name-lookup.c (maybe_push_decl): Likewise.
1598 * rtti.c (get_tinfo_decl_dynamic): Likewise.
1599 (get_typeid): Likewise.
1600 * semantics.c (finish_offsetof): Likewise.
1601
1602 PR c++/20669
1603 * call.c (add_template_candidate_real): If deduction fails, still
1604 add the template as a non-viable candidate.
1605 (equal_functions): Handle template candidates.
1606 (print_z_candidate): Likewise.
1607 (print_z_candidates): Likewise.
1608 (build_new_function_call): Likewise.
1609
1610 * cp-tree.h (LOOKUP_LIST_ONLY): New.
1611 * call.c (add_candidates): Enforce it.
1612 (build_new_method_call): Try non-list ctor if no viable list ctor.
1613 (build_user_type_conversion_1): Likewise.
1614
1615 * call.c (add_candidates): Distinguish between type(x) and
1616 x.operator type().
1617 (convert_class_to_reference): Set LOOKUP_NO_CONVERSION.
1618 (build_new_method_call): Give better error for conversion op.
1619
1620 * call.c (add_candidates): Add first_arg and return_type parms.
1621 Add special constructor/conversion op handling.
1622 (convert_class_to_reference): Use it.
1623 (build_user_type_conversion_1): Likewise.
1624 (build_op_call): Likewise.
1625 (build_new_method_call): Likewise.
1626 (build_new_op): Adjust.
1627 (perform_overload_resolution): Adjust.
1628
1629 2010-05-11 Paolo Carlini <paolo.carlini@oracle.com>
1630
1631 PR c++/34272
1632 PR c++/43630
1633 PR c++/34491
1634 * pt.c (process_partial_specialization): Return error_mark_node
1635 in case of unused template parameters in partial specialization.
1636
1637 2010-05-11 Jakub Jelinek <jakub@redhat.com>
1638
1639 PR c++/44062
1640 * semantics.c (finish_expr_stmt): Don't call mark_exp_read here...
1641 * cvt.c (convert_to_void): ... but here. If expr is a COMPOUND_EXPR,
1642 look at its second operand.
1643
1644 2010-05-10 Jason Merrill <jason@redhat.com>
1645
1646 PR c++/44017
1647 * semantics.c (baselink_for_fns): Revert earlier change.
1648
1649 PR c++/44045
1650 * typeck.c (cp_build_modify_expr): Complain about assignment to
1651 array from init list.
1652
1653 2010-05-10 Fabien Chêne <fabien.chene@gmail.com>
1654
1655 PR c++/43719
1656 * decl.c (check_initializer): strip array type before checking for
1657 uninitialized const or ref members.
1658
1659 2010-05-07 Fabien Chêne <fabien.chene@gmail.com>
1660
1661 PR c++/43951
1662 * init.c (diagnose_uninitialized_cst_or_ref_member_1): Returns the
1663 error count. Emit errors only if compain is true.
1664 (build_new_1): Do not return error_mark_node if
1665 diagnose_uninitialized_cst_or_ref_member_1 does not diagnose any
1666 errors. Delay the check for user-provided constructor.
1667 (perform_member_init): Adjust.
1668 * cp-tree.h (diagnose_uninitialized_cst_or_ref_member): Change the
1669 prototype.
1670
1671 2010-05-06 Magnus Fromreide <magfr@lysator.liu.se>
1672 Jason Merrill <jason@redhat.com>
1673
1674 Add support for C++0x nullptr.
1675 * cp-tree.def: Add NULLPTR_TYPE.
1676 * cp-tree.h: Add nullptr_node.
1677 (cp_tree_index): Add CPTI_NULLPTR.
1678 (SCALAR_TYPE_P): Add NULLPTR_TYPE.
1679 * call.c (null_ptr_cst_p): Handle nullptr.
1680 (standard_conversion): Likewise.
1681 (convert_arg_to_ellipsis): Likewise.
1682 * mangle.c (write_type): Likewise.
1683 * name-lookup.c (arg_assoc_type): Likewise.
1684 * parser.c (cp_parser_primary_expression): Likewise.
1685 * typeck.c (cp_build_binary_op): Likewise.
1686 (build_reinterpret_cast_1): Likewise.
1687 * error.c (dump_type): Likewise.
1688 (dump_type_prefix, dump_type_suffix): Likewise.
1689 * decl.c (cxx_init_decl_processing): Likewise.
1690 * cxx-pretty-print.c (pp_cxx_constant): Likewise.
1691 * cvt.c (ocp_convert): Likewise.
1692 * rtti.c (typeinfo_in_lib_p, emit_support_tinfos): Put
1693 nullptr_t tinfo in libsupc++.
1694
1695 2010-05-06 Jason Merrill <jason@redhat.com>
1696
1697 * semantics.c (simplify_aggr_init_expr): Use INIT_EXPR.
1698
1699 2010-04-22 Jakub Jelinek <jakub@redhat.com>
1700 Dodji Seketeli <dodji@redhat.com>
1701
1702 PR c/18624
1703 * cp-tree.h (mark_exp_read, rvalue_use, lvalue_use, type_use):
1704 Declare ...
1705 * expr.c (mark_exp_read, rvalue_use, lvalue_use, type_use): ... new fns.
1706 * typeck.c (cxx_sizeof_expr, cxx_alignof_expr): Call type_use.
1707 (decay_conversion, perform_integral_promotions): Call rvalue_use.
1708 (cp_build_unary_op): Call lvalue_use.
1709 * decl.c (unused_but_set_errorcount): New variable.
1710 (poplevel): Issue -Wunused-but-set-variable diagnostics.
1711 (duplicate_decls): Merge DECL_READ_P flags.
1712 (start_cleanup_fn): Set DECL_READ_P flag.
1713 (finish_function): Issue -Wunused-but-set-parameter diagnostics.
1714 * tree.c (rvalue): Call rvalue_use.
1715 * pt.c (convert_nontype_argument): Likewise.
1716 * semantics.c (finish_expr_stmt, finish_asm_stmt, finish_typeof,
1717 finish_decltype_type): Likewise.
1718 * call.c (convert_like_real) <ck_identity, ck_user>: Call rvalue use.
1719 (build_x_va_arg, build_new_method_call, build_over_call): Call lvalue_use
1720 or rvalue_use depending on the expr.
1721 * init.c (build_new, build_delete): Likewise.
1722 * rtti.c (build_typeid, build_dynamic_cast_1): Likewise.
1723
1724 2010-05-05 Jason Merrill <jason@redhat.com>
1725
1726 PR c++/43787
1727 * cp-gimplify.c (cp_gimplify_expr): Remove copies of empty classes.
1728 * call.c (build_over_call): Don't try to avoid INIT_EXPR copies here.
1729
1730 2010-05-04 Paolo Carlini <paolo.carlini@oracle.com>
1731
1732 PR c++/43028
1733 * pt.c (unify): Check each elt for error_mark_node.
1734
1735 2010-05-04 Jason Merrill <jason@redhat.com>
1736
1737 PR c++/38064
1738 * typeck.c (cp_build_binary_op): Allow enums for <> as well.
1739
1740 2010-05-04 Paolo Carlini <paolo.carlini@oracle.com>
1741
1742 PR c++/43705
1743 * call.c (build_new_method_call): Return error_mark_node if fns is
1744 NULL_TREE.
1745
1746 2010-05-03 Dodji Seketeli <dodji@redhat.com>
1747
1748 PR c++/43953
1749 * pt.c (most_specialized_class): Pretend we are processing
1750 a template decl during the call to coerce_template_parms.
1751
1752 2010-05-03 Jason Merrill <jason@redhat.com>
1753
1754 PR c++/42810
1755 PR c++/43680
1756 * decl.c (finish_enum): Use the TYPE_MIN_VALUE and TYPE_MAX_VALUE
1757 from the selected underlying type unless -fstrict-enums. Set
1758 ENUM_UNDERLYING_TYPE to have the restricted range.
1759 * cvt.c (type_promotes_to): Use ENUM_UNDERLYING_TYPE.
1760 * class.c (check_bitfield_decl): Likewise.
1761
1762 2010-05-01 H.J. Lu <hongjiu.lu@intel.com>
1763
1764 PR c++/43951
1765 * init.c (build_new_1): Revert the accidental checkin in
1766 revision 158918.
1767
1768 2010-04-30 Jason Merrill <jason@redhat.com>
1769
1770 PR c++/43868
1771 * cxx-pretty-print.c (pp_cxx_decl_specifier_seq): Move pmf handling...
1772 (pp_cxx_type_specifier_seq): ...here.
1773
1774 2010-04-30 Steven Bosscher <steven@gcc.gnu.org>
1775
1776 * optimize.c, parser.c, mangle.c, cp-tree.h: Do not include varray.h.
1777 * Make-lang.in: Don't include varray.h dependency in CXX_TREE_H.
1778
1779 2010-04-30 Shujing Zhao <pearly.zhao@oracle.com>
1780
1781 PR c++/43779
1782 * typeck.c (warn_args_num): New function.
1783 (convert_arguments): Use warn_args_num to print the diagnostic
1784 messages.
1785
1786 2010-04-29 Fabien Chêne <fabien.chene@gmail.com>
1787
1788 PR c++/43890
1789 * init.c (diagnose_uninitialized_cst_or_ref_member): check for
1790 user-provided constructor while recursing.
1791
1792 2010-04-28 Manuel López-Ibáñez <manu@gcc.gnu.org>
1793
1794 PR c++/9335
1795 * error.c (print_instantiation_partial_context_line): Handle
1796 recursive instantiation.
1797 (print_instantiation_partial_context): Likewise.
1798
1799 2010-04-27 Jason Merrill <jason@redhat.com>
1800
1801 * init.c (perform_member_init): Check CLASS_TYPE_P.
1802
1803 2010-04-27 Fabien Chêne <fabien.chene@gmail.com>
1804
1805 PR c++/29043
1806 * init.c (perform_member_init): check for uninitialized const or
1807 reference members, including array types.
1808
1809 2010-04-24 Jason Merrill <jason@redhat.com>
1810
1811 * tree.c (get_fns): Split out from get_first_fn.
1812 * cp-tree.h: Declare it.
1813 * search.c (shared_member_p): Use it.
1814 * semantics.c (finish_qualified_id_expr): Simplify.
1815 (finish_id_expression): Simplify.
1816
1817 * semantics.c (finish_non_static_data_member): Call maybe_dummy_object
1818 whenever object is NULL_TREE. Don't do 'this' capture here.
1819 (finish_qualified_id_expr): Pass NULL_TREE.
1820 (finish_id_expression): Likewise.
1821 (lambda_expr_this_capture): Likewise.
1822
1823 * semantics.c (finish_qualified_id_expr): Use maybe_dummy_object
1824 rather than checking current_class_ref directly.
1825 (finish_call_expr): Likewise.
1826
1827 PR c++/43856
1828 * name-lookup.c (qualify_lookup): Disqualify lambda op().
1829 * class.c (current_nonlambda_class_type): New fn.
1830 * semantics.c (nonlambda_method_basetype): New.
1831 * cp-tree.h: Declare them.
1832 * tree.c (maybe_dummy_object): Handle implicit 'this' capture.
1833
1834 * semantics.c (baselink_for_fns): Correct BASELINK_BINFO.
1835
1836 PR c++/43875
1837 * semantics.c (lambda_return_type): Complain about
1838 braced-init-list.
1839
1840 PR c++/43790
1841 * tree.c (cv_unqualified): Handle error_mark_node.
1842
1843 PR c++/41468
1844 * call.c (convert_like_real) [ck_ambig]: Just return error_mark_node
1845 if we don't want errors.
1846
1847 PR c++/41468
1848 * class.c (convert_to_base): Add complain parameter. Pass
1849 ba_quiet to lookup_base if we don't want errors.
1850 (build_vfield_ref): Pass complain to convert_to_base.
1851 * call.c (convert_like_real): Likewise.
1852 (initialize_reference): Likewise.
1853 (perform_direct_initialization_if_possible): Pass complain to
1854 convert_like_real.
1855 * cp-tree.h: Adjust.
1856
1857 2010-04-27 Fabien Chêne <fabien.chene@gmail.com>
1858 Jason Merrill <jason@redhat.com>
1859
1860 PR c++/42844
1861 * decl.c (check_for_uninitialized_const_var): Handle classes that need
1862 constructing, too.
1863 (check_initializer): Call it for classes that need constructing, too.
1864 * class.c (in_class_defaulted_default_constructor): New.
1865 * cp-tree.h: Declare it.
1866
1867 2010-04-20 Jason Merrill <jason@redhat.com>
1868
1869 PR c++/9335
1870 * init.c (constant_value_1): Treat error_mark_node as a constant
1871 if DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P is set.
1872 * cvt.c (ocp_convert): Handle getting error_mark_node from
1873 integral_constant_value.
1874 * decl.c (compute_array_index_type): Likewise.
1875
1876 2010-04-20 Dodji Seketeli <dodji@redhat.com>
1877
1878 PR c++/43800
1879 PR c++/43704
1880 * typeck.c (incompatible_dependent_types_p): If one of the
1881 compared types if not a typedef then honour their main variant
1882 equivalence.
1883
1884 2010-04-20 Jakub Jelinek <jakub@redhat.com>
1885
1886 * cp-tree.h (TYPE_REF_IS_RVALUE): Remove.
1887
1888 2010-04-19 Dodji Seketeli <dodji@redhat.com>
1889
1890 PR c++/43704
1891 * typeck.c (structural_comptypes): Test dependent typedefs
1892 incompatibility before testing for their main variant based
1893 equivalence.
1894
1895 2010-04-19 Jakub Jelinek <jakub@redhat.com>
1896
1897 * cp-tree.h (SCOPED_ENUM_P, UNSCOPED_ENUM_P, SET_SCOPED_ENUM_P): Use
1898 ENUM_IS_SCOPED bit instead of TYPE_LANG_FLAG_5.
1899
1900 2010-04-18 Eric Botcazou <ebotcazou@adacore.com>
1901
1902 * decl.c (cxx_init_decl_processing): Remove second argument in call to
1903 build_common_tree_nodes.
1904
1905 2010-04-14 Jason Merrill <jason@redhat.com>
1906
1907 PR c++/36625
1908 * parser.c (cp_parser_parenthesized_expression_list): Change
1909 is_attribute_list parm to int to indicate whether or not to
1910 handle initial identifier specially.
1911 (cp_parser_attribute_list): Use attribute_takes_identifier_p.
1912
1913 2010-04-13 Jason Merrill <jason@redhat.com>
1914
1915 * call.c (type_decays_to): Check MAYBE_CLASS_TYPE_P instead of
1916 CLASS_TYPE_P.
1917 * parser.c (cp_parser_lambda_expression): Complain about lambda in
1918 unevaluated context.
1919 * pt.c (iterative_hash_template_arg): Don't crash on lambda.
1920
1921 2010-04-12 Jason Merrill <jason@redhat.com>
1922
1923 PR c++/43641
1924 * semantics.c (maybe_add_lambda_conv_op): Use build_call_a and tweak
1925 return value directly.
1926
1927 * call.c (type_decays_to): Call cv_unqualified for non-class type.
1928
1929 2010-04-12 Fabien Chene <fabien.chene@gmail.com>
1930
1931 PR c++/25811
1932 * cp-tree.h (diagnose_uninitialized_cst_or_ref_member): Declare.
1933 * init.c (build_new_1): Check for uninitialized const members and
1934 uninitialized reference members, when using new without
1935 new-initializer. Call diagnose_uninitialized_cst_or_ref_member.
1936 (diagnose_uninitialized_cst_or_ref_member): Define, call
1937 diagnose_uninitialized_cst_or_ref_member_1.
1938 (diagnose_uninitialized_cst_or_ref_member_1): New function.
1939
1940 2010-04-12 Richard Guenther <rguenther@suse.de>
1941
1942 PR c++/43611
1943 * semantics.c (expand_or_defer_fn_1): Do not keep extern
1944 template inline functions.
1945
1946 2010-04-09 Manuel López-Ibáñez <manu@gcc.gnu.org>
1947
1948 PR c++/28584
1949 * typeck.c (cp_build_c_cast): Warn for casting integer to larger
1950 pointer type.
1951
1952 2010-04-07 Jason Merrill <jason@redhat.com>
1953
1954 PR c++/43016
1955 * decl.c (start_preparsed_function): Do defer nested functions.
1956
1957 PR c++/11094, DR 408
1958 * cp-tree.h (VAR_HAD_UNKNOWN_BOUND, SET_VAR_HAD_UNKNOWN_BOUND): New.
1959 * decl2.c (finish_static_data_member_decl): Set it.
1960 * decl.c (duplicate_decls): Propagate it.
1961 * pt.c (tsubst_decl): Don't substitute the domain of an array
1962 VAR_DECL if it's set.
1963 (regenerate_decl_from_template): Substitute it here.
1964 (type_dependent_expression_p): Return true if it's set.
1965 * semantics.c (finish_decltype_type): Instantiate such a variable.
1966 * typeck.c (cxx_sizeof_expr): Likewise.
1967 (strip_array_domain): New.
1968
1969 PR c++/43145
1970 * name-lookup.c (current_decl_namespace): Non-static.
1971 (pop_nested_namespace): Sanity check.
1972 * cp-tree.h: Declare current_decl_namespace.
1973 * decl.c (grokvardecl): Use it instead of current_namespace.
1974 (grokfndecl): Likewise.
1975
1976 PR c++/38392
1977 * pt.c (tsubst_friend_function): Instatiate a friend that has already
1978 been used.
1979
1980 * pt.c (print_template_statistics): New.
1981 * cp-tree.h: Declare it.
1982 * tree.c (cxx_print_statistics): Call it.
1983
1984 PR c++/41970
1985 * decl.c (grokvardecl): Tweak warning message.
1986 (grokfndecl): Likewise.
1987
1988 2010-04-07 Dodji Seketeli <dodji@redhat.com>
1989
1990 PR c++/42697
1991 *pt.c (tsubst_decl): Get the arguments of a specialization from
1992 the specialization template, not from the most general template.
1993
1994 2010-04-07 Dodji Seketeli <dodji@redhat.com>
1995
1996 PR c++/40239
1997 * typeck2.c (process_init_constructor_record):
1998 value-initialize members that are are not explicitely
1999 initialized.
2000
2001 2010-04-07 Jie Zhang <jie@codesourcery.com>
2002
2003 PR c++/42556
2004 * typeck2.c (split_nonconstant_init_1): Drop empty CONSTRUCTOR
2005 when all of its elements are non-constant and have been split out.
2006
2007 2010-04-06 Taras Glek <taras@mozilla.com>
2008 Jason Merrill <jason@redhat.com>
2009
2010 * parser.c (cp_parser_class_specifier): Set class location to that
2011 of IDENTIFIER_NODE instead of '{' when possible.
2012 * semantics.c (begin_class_definition): Do not overide locations
2013 with less precise ones.
2014
2015 2010-04-06 Jason Merrill <jason@redhat.com>
2016
2017 PR c++/43648
2018 * name-lookup.c (constructor_name_p): Allow X::~X even for typedefs.
2019
2020 PR c++/43621
2021 * pt.c (maybe_update_decl_type): Check the return value from
2022 push_scope.
2023
2024 2010-04-01 Jason Merrill <jason@redhat.com>
2025
2026 * decl.c (next_initializable_field): No longer static.
2027 * cp-tree.h: Declare it.
2028 * call.c (build_aggr_conv): Fail if there are more initializers
2029 than initializable fields.
2030
2031 * semantics.c (maybe_add_lambda_conv_op): Use null_pointer_node
2032 instead of void_zero_node.
2033
2034 2010-03-31 Dodji Seketeli <dodji@redhat.com>
2035
2036 PR c++/43558
2037 * cp-tree.h (TEMPLATE_TYPE_PARM_SIBLING_PARMS): New accessor macro.
2038 * pt.c (end_template_parm_list): Store sibling template parms of
2039 each TEMPLATE_TYPE_PARMs into its TEMPLATE_TYPE_PARM_SIBLING_PARMS.
2040 (push_template_decl_real): Don't store the containing template decl
2041 into the DECL_CONTEXT of TEMPLATE_TYPE_PARMs anymore.
2042 * typeck.c (get_template_parms_of_dependent_type): Get sibling parms
2043 of a TEMPLATE_TYPE_PARM from TEMPLATE_TYPE_PARM_SIBLING_PARMS.
2044 Simplify the logic.
2045
2046 2010-03-30 Jason Merrill <jason@redhat.com>
2047
2048 PR c++/43076
2049 * pt.c (push_template_decl_real): Deal better with running out of
2050 scopes before running out of template parms.
2051
2052 PR c++/41185
2053 PR c++/41786
2054 * parser.c (cp_parser_direct_declarator): Don't allow VLAs in
2055 function parameter context. Don't print an error if parsing
2056 tentatively.
2057
2058 PR c++/43559
2059 * pt.c (more_specialized_fn): Don't control cv-qualifier check
2060 with same_type_p.
2061
2062 2010-03-26 Jason Merrill <jason@redhat.com>
2063
2064 PR c++/43509
2065 * parser.c (cp_parser_qualifying_entity): Do accept enum names in
2066 c++0x mode, but not other type-names.
2067
2068 2010-03-26 Dodji Seketeli <dodji@redhat.com>
2069
2070 PR c++/43327
2071 * pt.c (add_to_template_args): Support NULL ARGS;
2072 (most_specialized_class): call coerce_template_parms on
2073 template arguments passed to get_class_bindings. Use
2074 add_to_template_args.
2075 (unify): Handle VAR_DECLs.
2076
2077 2010-03-26 Dodji Seketeli <dodji@redhat.com>
2078
2079 * cp-tree.h (get_template_parms_at_level): Change unsigned parm
2080 into int.
2081 * pt.c (get_template_parms_at_level): Adjust.
2082
2083 2010-03-25 Dodji Seketeli <dodji@redhat.com>
2084
2085 PR c++/43206
2086 * cp-tree.h (get_template_parms_at_level): Declare ...
2087 * pt.c (get_template_parms_at_level): ... new function.
2088 * typeck.c (get_template_parms_of_dependent_type): If a template
2089 type parm's DECL_CONTEXT isn't yet set, get its siblings from
2090 current_template_parms. Use get_template_parms_at_level. Remove
2091 useless test.
2092 (incompatible_dependent_types_p): If we get empty parms from just one
2093 of the template type parms we are comparing then the template parms are
2094 incompatible.
2095
2096 2010-03-24 Jason Merrill <jason@redhat.com>
2097
2098 PR c++/43502
2099 * parser.c (make_declarator): Initialize id_loc.
2100 (cp_parser_lambda_declarator_opt): And set it.
2101
2102 2010-03-23 Jason Merrill <jason@redhat.com>
2103
2104 Make lambda conversion op and op() non-static.
2105 * semantics.c (maybe_add_lambda_conv_op): Make non-static.
2106 Also add the thunk function returned by the conversion op.
2107 Mark the conversion deleted if the op() is variadic.
2108 * decl2.c (mark_used): Give helpful message about deleted conversion.
2109 * parser.c (cp_parser_lambda_declarator_opt): Don't make op() static.
2110 * semantics.c (finish_this_expr): Adjust.
2111 * mangle.c (write_closure_type_name): Adjust.
2112 * decl.c (grok_op_properties): Don't allow it.
2113 * call.c (build_user_type_conversion_1): No static conversion ops.
2114 (build_op_call): Or op().
2115
2116 * decl2.c (change_return_type): Fix 'this' quals.
2117
2118 2010-03-22 Jason Merrill <jason@redhat.com>
2119
2120 PR c++/43333
2121 * tree.c (pod_type_p): Use old meaning in C++98 mode.
2122
2123 PR c++/43281
2124 * pt.c (contains_auto_r): New fn.
2125 (do_auto_deduction): Use it.
2126 (tsubst): Don't look at TREE_TYPE of a TEMPLATE_TYPE_PARM.
2127
2128 2010-03-20 Simon Martin <simartin@users.sourceforge.net>
2129
2130 PR c++/43081:
2131 * decl2.c (grokfield): Handle invalid initializers for member
2132 functions.
2133
2134 2010-03-20 Dodji Seketeli <dodji@redhat.com>
2135
2136 PR c++/43375
2137 * method.c (make_alias_for): Avoid crashing when DECL_LANG_SPECIFIC
2138 is NULL.
2139 * decl2.c (vague_linkage_p): Likewise.
2140
2141 2010-03-18 Paolo Carlini <paolo.carlini@oracle.com>
2142
2143 PR c++/43418
2144 * parser.c (cp_parser_for_init_statement): Use NULL_TREE, not
2145 false, in the cp_parser_expression_statement call.
2146
2147 2010-03-05 Jason Merrill <jason@redhat.com>
2148
2149 * mangle.c (mangle_decl): Give name collision error even without
2150 ASM_OUTPUT_DEF.
2151
2152 2010-03-04 Marco Poletti <poletti.marco@gmail.com>
2153
2154 * pt.c (process_partial_specialization): Use error_n instead of
2155 error.
2156
2157 2010-03-03 Jason Merrill <jason@redhat.com>
2158
2159 PR c++/12909
2160 * mangle.c (mangle_decl): Handle VAR_DECL, too.
2161
2162 2010-03-03 Jason Merrill <jason@redhat.com>
2163
2164 PR c++/12909
2165 * mangle.c: Include cgraph.h.
2166 (mangle_decl): If the mangled name will change in a later
2167 ABI version, make the later mangled name an alias.
2168 * method.c (make_alias_for): Copy DECL_ARGUMENTS.
2169 * Make-lang.in (mangle.o): Depend on cgraph.h.
2170 * method.c (make_alias_for): Handle VAR_DECL, too.
2171 * decl2.c (vague_linkage_p): Rename from vague_linkage_fn_p.
2172 * tree.c (no_linkage_check): Adjust.
2173 * decl.c (maybe_commonize_var): Adjust.
2174 * cp-tree.h: Adjust.
2175
2176 2010-03-01 Marco Poletti <poletti.marco@gmail.com>
2177
2178 * pt.c (redeclare_class_template): Use error_n and inform_n.
2179
2180 2010-02-27 Mark Mitchell <mark@codesourcery.com>
2181
2182 PR c++/42748
2183 * cp-tree.h (push_tinst_level): Declare.
2184 (pop_tinst_level): Likewise.
2185 * pt.c (push_tinst_level): Give it external linkage.
2186 (pop_tinst_level): Likewise.
2187 * mangle.c (mangle_decl_string): Set the source location to that
2188 of the decl while mangling.
2189
2190 2010-02-27 Simon Martin <simartin@users.sourceforge.net>
2191
2192 PR c++/42054
2193 * pt.c (redeclare_class_template): Return false if there are erroneous
2194 template parameters.
2195
2196 2010-02-24 Manuel López-Ibáñez <manu@gcc.gnu.org>
2197
2198 * pt.c (push_tinst_level): Replace -ftemplate-depth- with
2199 -ftemplate-depth=.
2200
2201 2010-02-24 Jason Merrill <jason@redhat.com>
2202
2203 PR c++/12909
2204 * mangle.c (write_type): Give -Wabi warning for old vector mangling.
2205
2206 * class.c (layout_class_type): Don't give -Wabi warning for a bug
2207 in a previous ABI version.
2208
2209 2010-02-23 Jason Merrill <jason@redhat.com>
2210
2211 PR c++/43143
2212 * typeck2.c (digest_init_r): Accept value init of array.
2213
2214 2010-02-22 Manuel López-Ibáñez <manu@gcc.gnu.org>
2215
2216 PR c++/43126
2217 * typeck.c (convert_arguments): Update error message.
2218
2219 2010-02-22 Mike Stump <mikestump@comcast.net>
2220
2221 PR c++/43125
2222 * decl.c (duplicate_decls): Merge DECL_PRESERVE_P.
2223
2224 2010-02-21 Manuel López-Ibáñez <manu@gcc.gnu.org>
2225
2226 PR c++/23510
2227 * error.c (print_instantiation_partial_context_line): New.
2228 (print_instantiation_partial_context): Print at most 12 contexts,
2229 skip the rest with a message.
2230
2231 2010-02-21 Dodji Seketeli <dodji@redhat.com>
2232
2233 PR c++/42824
2234 * pt.c (lookup_template_class): Better support of specialization
2235 of member of class template implicit instantiation.
2236
2237 2010-02-20 Manuel López-Ibáñez <manu@gcc.gnu.org>
2238
2239 PR c++/35669
2240 * call.c (conversion_null_warnings): Replace -Wconversion with
2241 -Wconversion-null.
2242 * cvt.c (build_expr_type_conversion): Likewise.
2243
2244 2010-02-18 Jason Merrill <jason@redhat.com>
2245
2246 PR c++/42837
2247 * class.c (create_vtable_ptr): Set DECL_PACKED if type is packed.
2248
2249 PR c++/43108
2250 * typeck.c (cp_build_binary_op): Adapt mixed complex/non handling from
2251 C build_binary_op.
2252 * cp-tree.h (WANT_VECTOR_OR_COMPLEX): Rename from WANT_VECTOR.
2253 * cvt.c (build_expr_type_conversion): Allow COMPLEX_TYPE.
2254
2255 PR c++/43070
2256 * semantics.c (finish_goto_stmt): Don't call decay_conversion.
2257
2258 PR c++/26261
2259 PR c++/43101
2260 * pt.c (tsubst_qualified_id): Do normal lookup in non-dependent scope.
2261 (maybe_update_decl_type): New fn.
2262 * parser.c (cp_parser_init_declarator): Use it.
2263
2264 PR c++/43109
2265 * semantics.c (begin_class_definition): Don't crash on unnamed ns.
2266
2267 2010-02-17 Jason Merrill <jason@redhat.com>
2268
2269 PR c++/43075
2270 * call.c (build_over_call): Don't create zero-sized assignments.
2271 * cp-gimplify.c (cp_genericize_r): Don't remove them here.
2272 * cp-objcp-common.c (cp_expr_size): Remove.
2273 * cp-tree.h: Remove prototype.
2274
2275 PR c++/43069
2276 * name-lookup.c (set_decl_namespace): Don't copy DECL_CONTEXT if the
2277 decl we looked up doesn't match.
2278
2279 PR c++/43093
2280 * cp-gimplify.c (cp_gimplify_expr) [INIT_EXPR]: Return if we don't
2281 have an INIT_EXPR anymore.
2282
2283 PR c++/43079
2284 * pt.c (convert_nontype_argument): Change assert to test.
2285
2286 2010-02-16 Jason Merrill <jason@redhat.com>
2287
2288 * cp-gimplify.c (cp_gimplify_expr): Fix error recovery.
2289
2290 PR c++/43031
2291 * cp-gimplify.c (cp_gimplify_expr) [MODIFY_EXPR]: Use
2292 VIEW_CONVERT_EXPR for conversions between structural equality types
2293 that the back end can't tell are the same.
2294
2295 PR c++/43036
2296 * tree.c (build_cplus_array_type): Set TYPE_MAIN_VARIANT to strip
2297 cv-quals from element here.
2298 (cp_build_qualified_type_real): Not here. Preserve typedef name.
2299
2300 2010-02-14 Jason Merrill <jason@redhat.com>
2301
2302 PR c++/41997
2303 * semantics.c (finish_compound_literal): Use
2304 cp_apply_type_quals_to_decl when creating a static variable.
2305
2306 2010-02-12 Jason Merrill <jason@redhat.com>
2307
2308 PR c++/43024
2309 * name-lookup.h (current_binding_level): Check for null
2310 cp_function_chain.
2311
2312 2010-02-12 Jason Merrill <jason@redhat.com>
2313
2314 PR c++/43054
2315 * tree.c (cp_tree_equal): Correct CALL_EXPR logic.
2316
2317 2010-02-12 Jakub Jelinek <jakub@redhat.com>
2318
2319 PR c++/43033
2320 * name-lookup.c (pushdecl_maybe_friend): Check default args of t
2321 instead of x.
2322
2323 2010-02-10 Jason Merrill <jason@redhat.com>
2324
2325 PR c++/41896
2326 * semantics.c (outer_lambda_capture_p): Revert.
2327 (add_capture): Only finish_member_declaration if
2328 we're in the lambda class.
2329 (register_capture_members): New.
2330 * cp-tree.h: Declare it.
2331 * parser.c (cp_parser_lambda_expression): Call it.
2332
2333 2010-02-10 Jason Merrill <jason@redhat.com>
2334
2335 PR c++/41896
2336 * semantics.c (outer_lambda_capture_p): Use current_function_decl
2337 instead of current_class_type.
2338
2339 2010-02-10 Jason Merrill <jason@redhat.com>
2340
2341 PR c++/42983, core issue 906
2342 * method.c (defaultable_fn_check): Check virtualness.
2343
2344 2010-02-10 Jason Merrill <jason@redhat.com>
2345
2346 PR c++/43016
2347 * semantics.c (maybe_add_lambda_conv_op): Set DECL_INTERFACE_KNOWN.
2348
2349 2010-02-10 Shujing Zhao <pearly.zhao@oracle.com>
2350
2351 * Make-lang.in (cp/cvt.o, cp/parser.o, cp/search.o): Depend on intl.h.
2352 * cvt.c (warn_ref_binding): Wrap the messages into G_() for easy
2353 translation.
2354 * parser.c (cp_parser_postfix_expression, cp_parser_new_type_id)
2355 (cp_parser_cast_expression, cp_parser_condition, cp_parser_decltype)
2356 (cp_parser_parameter_declaration)
2357 (cp_parser_exception_specification_opt)
2358 (cp_parser_exception_declaration): Likewise.
2359 * pt.c (check_default_tmpl_args): Likewise.
2360 * search.c (lookup_field_r): Likewise.
2361
2362 2010-02-09 Jason Merrill <jason@redhat.com>
2363
2364 PR c++/42399
2365 * pt.c (tsubst_copy_and_build): Propagate LAMBDA_EXPR_LOCATION.
2366
2367 2010-02-09 Jason Merrill <jason@redhat.com>
2368
2369 PR c++/42370
2370 * decl2.c (change_return_type): New fn.
2371 * semantics.c (apply_lambda_return_type): Use it.
2372 * cp-tree.h: Declare it.
2373
2374 2010-02-05 Richard Guenther <rguenther@suse.de>
2375
2376 * Make-lang.in (cp/cp-lang.o): Depend on gt-cp-cp-lang.h.
2377 * cp-lang.c: Include gt-cp-cp-lang.h.
2378 * config-lang.in (gtfiles): Add cp/cp-lang.c.
2379
2380 2010-02-05 Dodji Seketeli <dodji@redhat.com>
2381
2382 PR c++/42915
2383 * typeck.c (get_template_parms_of_dependent_type): Try getting
2384 the template parameters fromt the type itself first.
2385
2386 2010-02-03 Jason Merrill <jason@redhat.com>
2387
2388 PR c++/4926
2389 PR c++/38600
2390 * mangle.c (write_unqualified_id): Split out from write_expression.
2391 (write_unqualified_name): Call it.
2392 (write_member_name): Likewise.
2393 (write_expression): Support TEMPLATE_ID_EXPR.
2394 Disambiguate operator names.
2395
2396 PR c++/12909
2397 * mangle.c (write_type) [VECTOR_TYPE]: Change mangling with
2398 -fabi-version=4.
2399
2400 2010-02-02 Jason Merrill <jason@redhat.com>
2401
2402 PR c++/41090
2403 * decl.c (cp_finish_decl): Add local statics to cfun->local_decls.
2404 * optimize.c (clone_body): Remap their initializers when making base
2405 variants.
2406 (maybe_clone_body): Complain if multiple clones aren't safe.
2407
2408 2010-01-29 Dodji Seketeli <dodji@redhat.com>
2409
2410 PR c++/42758
2411 PR c++/42634
2412 PR c++/42336
2413 PR c++/42797
2414 PR c++/42880
2415 * cp-tree.h (NON_DEFAULT_TEMPLATE_ARGS_COUNT,
2416 SET_NON_DEFAULT_TEMPLATE_ARGS_COUNT,
2417 GET_NON_DEFAULT_TEMPLATE_ARGS_COUNT): New accessor macros.
2418 * pt.c (coerce_template_parms, type_unification_real,
2419 expand_template_argument_pack, coerce_template_parameter_pack):
2420 Set the non default template args count.
2421 (current_template_args): Always set non defaulted
2422 template args count when compiled with --enable-checking
2423 (tsubst_template_args, type_unification_real): Propagate the non
2424 defaulted template args count.
2425 * error.c (get_non_default_template_args_count): Renamed
2426 count_non_default_template_args into this. Don't calculate the
2427 non default template argument count anymore. Use the new
2428 accessor macros above to get it.
2429 (dump_template_argument_list, dump_type, dump_decl,
2430 dump_template_parms): Adjust.
2431 * parser.c (cp_parser_template_argument_list): Always set defaulted
2432 template args count when compiled with --enable-checking.
2433
2434 2010-01-29 Shujing Zhao <pearly.zhao@oracle.com>
2435
2436 * decl.c (redeclaration_error_message): Wrap the return messages into
2437 G_() for easy translation.
2438
2439 2010-01-28 Jason Merrill <jason@redhat.com>
2440
2441 PR c++/42880
2442 * semantics.c (begin_class_definition): Don't use type_as_string.
2443
2444 2010-01-28 Dodji Seketeli <dodji@redhat.com>
2445
2446 PR c++/42713
2447 PR c++/42820
2448 * typeck.c (get_template_parms_of_dependent_type): Factorized
2449 this out of incompatible_template_type_parms_p
2450 (incompatible_dependent_types_p): Renamed
2451 incompatible_template_type_parms_p into this. Make it detect
2452 two incompatible dependent typedefs too.
2453 (structural_comptypes): Use incompatible_dependent_types_p.
2454 * pt.c (get_template_info):
2455 Handle BOUND_TEMPLATE_TEMPLATE_PARAM.
2456
2457 2010-01-20 Janis Johnson <janis187@us.ibm.com>
2458 Jason Merrill <jason@redhat.com>
2459
2460 * mangle.c (write_type): Mangle transparent record as member type.
2461 * semantics.c (begin_class_definition): Recognize decimal classes
2462 and set TYPE_TRANSPARENT_AGGR.
2463
2464 2010-01-20 Jason Merrill <jason@redhat.com>
2465
2466 PR c++/42338
2467 * mangle.c (write_expression): Handle tree codes that have extra
2468 arguments in the middle-end.
2469
2470 2010-01-20 Paolo Carlini <paolo.carlini@oracle.com>
2471
2472 PR c++/42038
2473 * except.c (expand_start_catch_block): Deal correctly with
2474 do_begin_catch returning error_mark_node.
2475
2476 2010-01-20 Jason Merrill <jason@redhat.com>
2477
2478 PR c++/41788
2479 * class.c (layout_class_type): Set packed_maybe_necessary for packed
2480 non-PODs.
2481
2482 PR c++/41920
2483 * semantics.c (build_lambda_object): Call mark_used on captured
2484 variables.
2485
2486 PR c++/40750
2487 * decl.c (grokdeclarator): Clear type_quals for a member function
2488 declared using a typedef. Don't complain about adding cv-quals
2489 to a function typedef in C++0x mode.
2490
2491 2010-01-20 Jakub Jelinek <jakub@redhat.com>
2492
2493 * decl.c (create_array_type_for_decl): Remove set but not used
2494 variable error_msg. Remove break stmts after return stmts.
2495
2496 2010-01-19 Dodji Seketeli <dodji@redhat.com>
2497
2498 * error.c (dump_template_parms, count_non_default_template_args):
2499 Revert fix of PR c++/42634.
2500
2501 2010-01-18 Dodji Seketeli <dodji@redhat.com>
2502
2503 PR c++/42634
2504 * error.c (dump_template_parms): Use innermost template
2505 arguments before calling count_non_default_template_args.
2506 (count_non_default_template_args): We are being called with
2507 template innermost arguments now. There is no need to ensure
2508 that again.
2509
2510 2010-01-18 Dodji Seketeli <dodji@redhat.com>
2511
2512 PR c++/42766
2513 * cvt.c (build_expr_type_conversion): Look through OVERLOAD.
2514
2515 2010-01-17 Dodji Seketeli <dodji@redhat.com>
2516
2517 PR c++/42697
2518 *pt.c (tsubst_decl): Revert commit for PR c++/42697.
2519
2520 2010-01-17 Dodji Seketeli <dodji@redhat.com>
2521
2522 PR c++/42697
2523 *pt.c (tsubst_decl): Get the arguments of a specialization from
2524 the specialization template, not from the most general template.
2525
2526 2010-01-16 Jason Merrill <jason@redhat.com>
2527
2528 PR c++/42761
2529 * semantics.c (finish_decltype_type): Within a template, treat
2530 unresolved CALL_EXPR as dependent.
2531
2532 2010-01-15 Dodji Seketeli <dodji@redhat.com>
2533
2534 * error.c (dump_template_parms,count_non_default_template_args):
2535 Revert changes of PR c++/42634.
2536
2537 2010-01-14 Jakub Jelinek <jakub@redhat.com>
2538
2539 PR middle-end/42674
2540 * decl.c (finish_function): Don't emit -Wreturn-type warnings in
2541 functions with noreturn attribute.
2542
2543 2010-01-14 Jason Merrill <jason@redhat.com>
2544
2545 PR c++/42701
2546 * call.c (build_new_method_call): Don't free the vec here.
2547
2548 PR c++/42655
2549 * call.c (convert_like_real): Do full decay_conversion for ck_rvalue.
2550
2551 2010-01-13 Dodji Seketeli <dodji@redhat.com>
2552
2553 PR c++/42634
2554 * error.c (dump_template_parms): Use innermost template
2555 arguments before calling count_non_default_template_args.
2556 (count_non_default_template_args): We are being called with
2557 template innermost arguments now. There is no need to ensure
2558 that again.
2559
2560 2010-01-07 Dodji Seketeli <dodji@redhat.com>
2561
2562 c++/40155
2563 * pt.c (unify_pack_expansion): In non-deduced contexts, re-use template
2564 arguments that were previously deduced.
2565
2566 2010-01-05 Jason Merrill <jason@redhat.com>
2567
2568 * pt.c (unify_pack_expansion): Handle deduction from init-list.
2569 * call.c (build_over_call): Don't complain about it.
2570
2571 2010-01-04 Jason Merrill <jason@redhat.com>
2572
2573 PR c++/42555
2574 * pt.c (tsubst_decl): Don't apply type attributes in place.
2575
2576 PR c++/42567
2577 * semantics.c (describable_type): Remove decltype comment and
2578 semantics.
2579
2580
2581 \f
2582 Copyright (C) 2010 Free Software Foundation, Inc.
2583
2584 Copying and distribution of this file, with or without modification,
2585 are permitted in any medium without royalty provided the copyright
2586 notice and this notice are preserved.
2587