OSDN Git Service

* except.c (build_throw): Set EXPR_LOCATION.
[pf3gnuchains/gcc-fork.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