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