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