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