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