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