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