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