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