a545511f79ef65fca9bcce981691b7cd0890c126
[gcc.git] / gcc / cp / ChangeLog
1 2011-11-09 Jason Merrill <jason@redhat.com>
2
3 PR c++/51029
4 * class.c (build_base_path): Don't ICE in fold_non_dependent_expr.
5
6 * Make-lang.in (check_g++_parallelize): Add dg-torture.exp.
7 (check-c++0x): Obsolete.
8
9 * pt.c (invalid_nontype_parm_type_p): Avoid printing "<type error>".
10
11 * pt.c (convert_nontype_argument): Only integral arguments
12 get early folding.
13
14 * parser.c (cp_parser_alias_declaration): Don't do semantic
15 processing if parsing failed.
16
17 2011-11-09 Paolo Carlini <paolo.carlini@oracle.com>
18
19 PR c++/51045
20 * init.c (build_new_1, build_vec_delete_1, build_delete):
21 Use nullptr_node.
22
23 2011-11-09 Paolo Carlini <paolo.carlini@oracle.com>
24
25 PR c++/51047
26 * search.c (lookup_member): Change to take also a tsubst_flags_t
27 parameter.
28 (lookup_field, lookup_fnfields): Adjust calls.
29 * typeck.c (lookup_destructor, finish_class_member_access_expr,
30 build_ptrmemfunc_access_expr): Likewise.
31 * class.c (handle_using_decl, maybe_note_name_used_in_class):
32 Likewise.
33 * pt.c (resolve_typename_type): Likewise.
34 * semantics.c (lambda_function): Likewise.
35 * parser.c (cp_parser_perform_range_for_lookup,
36 cp_parser_lookup_name): Likewise.
37 * friend.c (make_friend_class): Likewise.
38 * name-lookup.c (pushdecl_maybe_friend_1, get_class_binding,
39 do_class_using_decl, lookup_qualified_name): Likewise.
40 * cp-tree.h (lookup_member): Adjust declaration.
41
42 2011-11-09 Dodji Seketeli <dodji@redhat.com>
43
44 PR c++/51043
45 * cp-tree.h (TYPE_ALIAS_P, TYPE_TEMPLATE_INFO): Don't crash on
46 NULL TYPE_NAME.
47
48 PR c++/51027
49 * parser.c (cp_parser_alias_declaration): Require ';' at the end
50 of the declaration.
51
52 2011-11-09 Dodji Seketeli <dodji@redhat.com>
53
54 PR debug/51032
55 * decl2.c (check_member_template): Accept alias templates and ...
56 * parser.c (cp_parser_alias_declaration): ... use it here.
57
58 2011-11-08 Jason Merrill <jason@redhat.com>
59
60 PR c++/50835
61 * typeck.c (build_x_conditional_expr): Preserve lvalue/xvalueness.
62 * tree.c (lvalue_kind) [NON_DEPENDENT_EXPR]: Return clk_ordinary
63 in C++98.
64
65 2011-11-08 Richard Guenther <rguenther@suse.de>
66
67 PR middle-end/51010
68 * error.c (dump_expr): Handle SSA_NAMEs.
69
70 2011-11-07 Richard Henderson <rth@redhat.com>
71 Aldy Hernandez <aldyh@redhat.com>
72 Torvald Riegel <triegel@redhat.com>
73
74 Merged from transactional-memory.
75
76 * call.c (build_new_function_call): Call tm_malloc_replacement.
77 * class.c (check_bases): Compute transaction attributes for the
78 class based on its base classes.
79 (look_for_tm_attr_overrides, set_one_vmethod_tm_attributes,
80 set_method_tm_attributes): New.
81 (finish_struct_1): Call set_method_tm_attributes.
82 * cp-tree.h (begin_transaction_stmt, finish_transaction_stmt,
83 build_transaction_expr): Declare.
84 (TRANSACTION_EXPR_IS_STMT): New.
85 * decl.c (push_cp_library_fn): Set attribute to transaction_safe.
86 * except.c (do_get_exception_ptr): Apply transaction_pure.
87 (do_begin_catch): Mark _ITM_cxa_begin_catch transaction_pure and
88 record as transactional-memory wrapper.
89 (do_end_catch): Similarly for _ITM_cxa_end_catch.
90 (do_allocate_exception): Similarly for _ITM_cxa_allocate_exception.
91 (build_throw): Similarly for _ITM_cxa_throw. Make __cxa_rethrow pure.
92 * parser.h (struct cp_parser): Add in_transaction flag.
93 * parser.c (enum non_integral_constant): Add NIC_TRANSACTION.
94 (cp_parser_non_integral_constant_expression): Handle NIC_TRANSACTION.
95 (enum required_token): Add transaction tokens.
96 (cp_parser_transaction, cp_parser_transaction_expression,
97 cp_parser_function_transaction, cp_parser_transaction_cancel,
98 cp_parser_txn_attribute_opt): New.
99 (cp_parser_unary_expression): Handle RID_TRANSACTION*.
100 (cp_parser_statement, cp_parser_function_definition_after_declarator,
101 cp_parser_token_starts_function_definition_p): Same.
102 (cp_parser_required_error): Handle RT_TRANSACTION*.
103 * pt.c (tsubst_expr): Handle TRANSACTION_EXPR.
104 * semantics.c (begin_transaction_stmt, finish_transaction_stmt,
105 build_transaction_expr): New.
106
107 2011-11-08 Dodji Seketeli <dodji@redhat.com>
108
109 Fix context handling of alias-declaration
110 * decl.c (start_decl): Update comment.
111 * error.c (dump_alias_template_specialization): Dump the context
112 of the specialization.
113 * parser.c (cp_parser_alias_declaration): Call pop_scope on the
114 pushed scope yielded by start_decl.
115
116 2011-11-08 Paolo Carlini <paolo.carlini@oracle.com>
117
118 PR c++/50864
119 * parser.c (cp_parser_postfix_dot_deref_expression): Reject invalid
120 uses of '->' and '.' as postfix-expression in namespace scope.
121
122 2011-11-07 Jason Merrill <jason@redhat.com>
123
124 PR c++/50848
125 * pt.c (tsubst_copy_and_build) [CALL_EXPR]: Don't crash
126 if lookup finds a non-function.
127
128 PR c++/50863
129 * parser.c (cp_parser_initializer_list): Parse C99
130 array designators tentatively.
131
132 PR c++/50870
133 * pt.c (tsubst_copy): Handle NAMESPACE_DECL.
134 (tsubst_copy_and_build) [COMPONENT_REF]: Handle a still-dependent
135 object.
136
137 2011-11-07 Paolo Carlini <paolo.carlini@oracle.com>
138
139 * pt.c (tsubst_copy_and_build): Fix qualified_name_lookup_error
140 call in case COMPONENT_REF.
141
142 2011-11-07 Jason Merrill <jason@redhat.com>
143 Dodji Seketeli <dodji@redhat.com>
144
145 Support C++11 alias-declaration
146 PR c++/45114
147 * cp-tree.h (TYPE_DECL_ALIAS_P, TYPE_ALIAS_P)
148 (DECL_TYPE_TEMPLATE_P, DECL_ALIAS_TEMPLATE_P): New accessor
149 macros.
150 (TYPE_TEMPLATE_INFO): Get template info of an alias template
151 specializations from its TYPE_DECL.
152 (SET_TYPE_TEMPLATE_INFO): Set template info of alias template
153 specializations into its TYPE_DECL.
154 (DECL_CLASS_TEMPLATE_P): Re-write using the new
155 DECL_TYPE_TEMPLATE_P.
156 (enum cp_decl_spec): Add new ds_alias enumerator.
157 (alias_type_or_template_p, alias_template_specialization_p):
158 Declare new functions.
159 * parser.c (cp_parser_alias_declaration): New static function.
160 (cp_parser_check_decl_spec): Add "using" name for the `alias'
161 declspec.
162 (cp_parser_type_name): Update comment. Support simple-template-id
163 representing alias template specializations in c++0x mode.
164 (cp_parser_qualifying_entity): Update comment. Use
165 cp_parser_type_name.
166 (cp_parser_block_declaration): Handle alias-declaration in c++11.
167 Update comment.
168 (cp_parser_template_id): Handle specializations of alias
169 templates.
170 (cp_parser_member_declaration): Add alias-declaration production
171 to comment. Support alias-declarations.
172 (cp_parser_template_declaration_after_export): Handle alias
173 templates in c++11.
174 * decl.c (make_typename_type, make_unbound_class_template): Accept
175 alias templates.
176 (grokdeclarator): Set TYPE_DECL_ALIAS_P on alias
177 declarations.
178 * decl2.c (grokfield): Move template creation after setting up the
179 TYPE_DECL of the alias, so that the TEMPLATE_DECL of the alias
180 template actually carries the right type-id of the alias
181 declaration.
182 * pt.c (alias_type_or_template_p)
183 (alias_template_specialization_p): Define new public functions.
184 (maybe_process_partial_specialization): Reject partial
185 specializations of alias templates.
186 (primary_template_instantiation_p): Consider alias template
187 instantiations.
188 (push_template_decl_real): Assert that TYPE_DECLs of alias
189 templates are different from those of class template. Store
190 template info onto the TYPE_DECL of the alias template.
191 (convert_template_argument): Strip aliases from template
192 arguments.
193 (lookup_template_class_1): Handle the creation of the
194 specialization of an alias template.
195 (tsubst_decl): Create a substituted copy of the TYPE_DECL of an
196 member alias template.
197 (tsubst): Handle substituting into the type of an alias template.
198 Handle substituting UNBOUND_CLASS_TEMPLATE into
199 BOUND_TEMPLATE_TEMPLATE_PARM.
200 (do_type_instantiation): Better diagnostics when trying to
201 explicitely instantiate a non-class template.
202 * search.c (lookup_field_1, lookup_field_r): Support looking up
203 alias templates.
204 * semantics.c (finish_template_type): For instantiations of alias
205 templates, return the TYPE_DECL of the actual alias and not the
206 one of the aliased type.
207 * error.c (dump_alias_template_specialization): New static
208 function.
209 (dump_type): Handle printing of alias templates and their
210 specializations. templates.
211 (dump_aggr_type): For specialization of alias templates, fetch
212 arguments from the right place.
213 (dump_decl): Print an alias-declaration like `using decl = type;'
214 (dump_template_decl): Support printing of alias templates.
215
216 2011-11-07 Jason Merrill <jason@redhat.com>
217
218 PR c++/35688
219 * decl2.c (constrain_visibility): Return void. Add tmpl parm
220 which gives the constraint priority over an attribute.
221 (constrain_visibility_for_template, determine_visibility): Adjust.
222 * pt.c (instantiate_class_template_1): Call determine_visibility.
223
224 PR c++/33255
225 * decl.c (save_function_data): Clear local_typedefs.
226
227 * decl.c (cp_finish_decl): Only make_tree_vector if we're calling
228 check_initializer.
229
230 2011-11-06 Jason Merrill <jason@redhat.com>
231
232 PR c++/35688
233 * decl2.c (constrain_visibility): Check decl_has_visibility_attr
234 rather than DECL_VISIBILITY_SPECIFIED.
235
236 2011-11-06 Paolo Carlini <paolo.carlini@oracle.com>
237
238 PR c++/47695
239 * decl2.c (mark_used): Early return false after error or sorry.
240 * cp-tree.h (mark_used): Adjust declaration.
241 * semantics.c (finish_id_expression): Check mark_used return value.
242
243 2011-11-05 Jason Merrill <jason@redhat.com>
244
245 PR c++/48370
246 * decl.c (cp_finish_decl): Mostly revert previous change.
247
248 2011-11-04 Jason Merrill <jason@redhat.com>
249
250 PR c++/26714
251 * init.c (perform_member_init): Strip TARGET_EXPR around NSDMI.
252 Do temporary lifetime extension.
253
254 PR c++/48370
255 * decl.c (cp_finish_decl): Run cleanups in the right order.
256
257 2011-11-04 Eric Botcazou <ebotcazou@adacore.com>
258
259 PR c++/50608
260 * semantics.c (finish_offsetof): Adjust call to fold_offsetof.
261 * typeck.c (cp_build_addr_expr_1): Call fold_offsetof_1.
262
263 2011-11-04 Paolo Carlini <paolo.carlini@oracle.com>
264
265 * typeck.c (build_indirect_ref): Use ATTRIBUTE_UNUSED.
266 * mangle.c (write_unnamed_type_name): Likewise.
267
268 2011-11-04 Magnus Fromreide <magfr@lysator.liu.se>
269
270 * parser.c (cp_parser_enumerator_list): Do not warn about
271 trailing commas in C++0x mode.
272
273 2011-11-04 Olivier Goffart <olivier@woboq.com>
274 Jason Merrill <jason@redhat.com>
275
276 PR c++/50965
277 * class.c (check_field_decls): NSDMI makes a class non-aggregate.
278
279 2011-11-04 Paolo Carlini <paolo.carlini@oracle.com>
280
281 PR c++/48420
282 * call.c (conversion_null_warnings): For 'false' to NULL pointer,
283 just check that TREE_TYPE (expr) is a BOOLEAN_TYPE.
284
285 2011-11-04 Ed Smith-Rowland <3dw4rd@verizon.net>
286
287 PR c++/50941
288 * parser.c (cp_parser_userdef_string_literal): Fix string length.
289
290 2011-11-04 Jason Merrill <jason@redhat.com>
291
292 PR c++/48370
293 * call.c (extend_ref_init_temps, extend_ref_init_temps_1): New.
294 (set_up_extended_ref_temp): Use it. Change cleanup parm to VEC.
295 (initialize_reference): Just call convert_like.
296 * decl.c (grok_reference_init): Just call initialize_reference.
297 (build_init_list_var_init): Remove.
298 (check_initializer): Change cleanup parm to VEC. Handle references
299 like other types. Call perform_implicit_conversion instead
300 of build_init_list_var_init. Don't use build_aggr_init for
301 aggregate initialization of arrays.
302 (cp_finish_decl): Change cleanup to VEC.
303 * typeck2.c (store_init_value): Call extend_ref_init_temps.
304 Use build_vec_init for non-constant arrays.
305 * init.c (expand_aggr_init_1): Adjust.
306 (build_vec_init): Avoid re-converting an initializer
307 that's already digested.
308 * mangle.c (mangle_ref_init_variable): Add a discriminator.
309 * cp-tree.h: Adjust.
310 * typeck.c (convert_for_initialization): Adjust.
311 * decl2.c (maybe_emit_vtables): Adjust.
312
313 2011-11-02 Jason Merrill <jason@redhat.com>
314
315 PR c++/50930
316 * init.c (build_aggr_init): Don't set LOOKUP_ONLYCONVERTING
317 if the initializer has TARGET_EXPR_DIRECT_INIT_P.
318 (expand_default_init): An initializer with TARGET_EXPR_DIRECT_INIT_P
319 or TARGET_EXPR_LIST_INIT_P doesn't need more processing.
320 * tree.c (bot_manip): Propagate TARGET_EXPR_IMPLICIT_P,
321 TARGET_EXPR_LIST_INIT_P, TARGET_EXPR_DIRECT_INIT_P.
322 * call.c (convert_like_real): Set TARGET_EXPR_DIRECT_INIT_P
323 as appropriate on list-value-initialization.
324
325 * parser.c (cp_parser_decl_specifier_seq): Change "C++0x" to
326 "C++11" in warnings.
327 (cp_lexer_get_preprocessor_token): Likewise.
328 (cp_parser_binary_expression): Likewise.
329
330 2011-11-02 Paolo Carlini <paolo.carlini@oracle.com>
331
332 PR c++/50810
333 * typeck2.c (check_narrowing): Adjust OPT_Wnarrowing diagnostics.
334 (digest_init_r): Call check_narrowing irrespective of the C++ dialect.
335 * decl.c (check_initializer): Likewise.
336 * semantics.c (finish_compound_literal): Likewise.
337
338 2011-11-02 Paolo Carlini <paolo.carlini@oracle.com>
339
340 PR c++/50956
341 * typeck.c (build_const_cast_1): Fix -Wcast-qual for false
342 comp_ptr_ttypes_const.
343
344 2011-11-02 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
345
346 * Make-lang.in (g++spec.o): Pass SHLIB instead of SHLIB_LINK.
347
348 2011-11-01 Paolo Carlini <paolo.carlini@oracle.com>
349
350 PR c++/44277
351 * cvt.c (cp_convert_to_pointer): Warn for zero as null pointer
352 constant.
353 * typeck.c (cp_truthvalue_conversion): Handle pointers and member
354 function pointers under c_inhibit_evaluation_warnings; use
355 nullptr_node for data member pointers.
356 (cp_build_binary_op): Tweak, just forward to cp_convert op1,
357 either a nullptr_node or an integer_zero_node.
358 (build_ptrmemfunc): Use nullptr_node.
359 * init.c (build_zero_init_1): Likewise.
360
361 2011-11-01 Jason Merrill <jason@redhat.com>
362
363 PR c++/50500
364 DR 1082
365 * search.c (lookup_fnfields_idx_nolazy): Split out from...
366 (lookup_fnfields_1): ...here.
367 (lookup_fnfields_slot_nolazy): Use it.
368 * cp-tree.h: Declare it.
369 * class.c (type_has_move_assign): Use it.
370 (type_has_user_declared_move_assign): Likewise.
371
372 2011-10-31 Jason Merrill <jason@redhat.com>
373
374 PR c++/50920
375 * class.c (check_field_decl): Change c++0x in diags to c++11.
376 * error.c (maybe_warn_cpp0x): Likewise.
377 * parser.c (cp_parser_diagnose_invalid_type_name): Likewise.
378 * pt.c (check_default_tmpl_args): Likewise.
379
380 2011-10-31 Diego Novillo <dnovillo@google.com>
381
382 * mangle.c (get_mangled_id): Factor from ...
383 (mangle_decl): ... here.
384 Call get_mangled_id.
385
386 2011-10-25 Gerald Pfeifer <gerald@pfeifer.com>
387
388 * NEWS (GCC 2.95): Refer to GNU/Linux instead of Linux.
389 (EGCS 1.0): Ditto.
390
391 2011-10-29 Paolo Carlini <paolo.carlini@oracle.com>
392
393 PR c++/50901
394 * call.c (build_new_op_1): Handle ABS_EXPR together with the
395 other unary EXPR.
396
397 2011-10-28 Paolo Carlini <paolo.carlini@oracle.com>
398
399 Revert:
400 2011-10-28 Paolo Carlini <paolo.carlini@oracle.com>
401
402 PR c++/50864
403 * pt.c (tsubst_copy_and_build): Fix qualified_name_lookup_error
404 call in case COMPONENT_REF.
405
406 2011-10-28 Paolo Carlini <paolo.carlini@oracle.com>
407
408 * pt.c (unify_pack_expansion): Initialize bad_old_arg and bad_new_arg.
409
410 2011-10-28 Paolo Carlini <paolo.carlini@oracle.com>
411
412 PR c++/50864
413 * pt.c (tsubst_copy_and_build): Fix qualified_name_lookup_error
414 call in case COMPONENT_REF.
415
416 2011-10-27 Jason Merrill <jason@redhat.com>
417
418 * semantics.c (cxx_eval_outermost_constant_expr): Check
419 cp_has_mutable_p.
420 (cxx_eval_component_reference): Check DECL_MUTABLE_P.
421
422 2011-10-27 Roberto Agostino Vitillo <ravitillo@lbl.gov>
423
424 PR c++/30066
425 * decl2.c (determine_hidden_inline): New function.
426 (determine_visibility): fvisibility-inlines-hidden affects inline
427 functions.
428
429 2011-10-27 Dodji Seketeli <dodji@redhat.com>
430
431 * cp-tree.h (DECL_DECLARES_TYPE_P): Fix comment.
432
433 2011-10-26 Jason Merrill <jason@redhat.com>
434
435 * typeck.c (check_literal_operator_args): Avoid building types.
436
437 2011-10-26 Ed Smith-Rowland <3dw4rd@verizon.net>
438
439 Implement C++11 user-defined literals.
440 * cp-objcp-common.c: (cp_tree_size) Return size of USERDEF_LITERAL tree.
441 * cp-tree.h: (UDLIT_OP_*, UDLIT_OPER_P): Literal operator
442 name tools. New tree code for user-defined literals.
443 * cxx-pretty-print.h: (pp_cxx_userdef_literal) New.
444 * cxx-pretty-print.c: (pp_cxx_userdef_literal) New.
445 (pp_cxx_primary_expression, pp_cxx_expression): Use it.
446 * decl.c: (cp_tree_node_structure): Return new tree code.
447 (duplicate_decls): Check for raw vs. template operator conflicts.
448 (grokfndecl, grokdeclarator): New checks for literal operators.
449 * error.c: (dump_expr): Warn about user-defined literals
450 in C++98 mode. (dump_function_name): Pretty printing.
451 * mangle.c: (write_literal_operator_name): New.
452 (write_unqualified_id, write_unqualified_name): Use it.
453 * parser.c: (cp_parser_operator): Handle operator"".
454 (cp_parser_userdef_char_literal, cp_parser_userdef_numeric_literal,
455 cp_parser_userdef_string_literal): New.
456 (cp_parser_primary_expression): Handle new user-defined literal tokens
457 with new functions.
458 * semantics.c: (potential_constant_expression_1): Add
459 user-defined literals.
460 * typeck.c (check_raw_literal_operator,
461 check_literal_operator_args): New.
462
463 2011-10-26 Paolo Carlini <paolo.carlini@oracle.com>
464
465 * typeck.c (cp_build_addr_expr_1): Use BASELINK_P.
466 * class.c (instantiate_type): Likewise.
467 * pt.c (convert_nontype_argument_function, uses_template_parms,
468 tsubst_copy, resolve_nondeduced_context, type_dependent_expression_p):
469 Likewise.
470 * semantics.c (finish_decltype_type): Likewise.
471 * decl2.c (mark_used): Likewise.
472 * name-lookup.c (arg_assoc): Likewise.
473
474 2011-10-26 Paolo Carlini <paolo.carlini@oracle.com>
475
476 PR c++/50870
477 * typeck.c (non_reference): Pass NULL_TREE through.
478
479 2011-10-25 Jason Merrill <jason@redhat.com>
480
481 PR c++/50866
482 PR c++/41449
483 * semantics.c (maybe_cleanup_point_expr_void): No longer static.
484 * typeck2.c (split_nonconstant_init_1): Use it.
485 * cp-tree.h: Declare it.
486 * decl.c (wrap_cleanups_r): Stop at CLEANUP_POINT_EXPR.
487
488 PR c++/49996
489 * tree.c (stabilize_init): Stabilize scalar elements of a
490 CONSTRUCTOR, too.
491
492 2011-10-25 Paolo Carlini <paolo.carlini@oracle.com>
493
494 PR c++/50858
495 * typeck.c (composite_pointer_type_r): Check return value of
496 composite_pointer_type_r for error_mark_node.
497
498 2011-10-25 Paolo Carlini <paolo.carlini@oracle.com>
499
500 PR c++/50861
501 * pt.c (tsubst_copy_and_build): Check return value of
502 tsubst_copy_and_build for error_mark_node.
503
504 2011-10-23 Paolo Carlini <paolo.carlini@oracle.com>
505
506 PR c++/50841
507 Revert:
508 2011-10-23 Paolo Carlini <paolo.carlini@oracle.com>
509
510 PR c++/50810
511 * typeck2.c (check_narrowing): Adjust OPT_Wnarrowing diagnostics.
512 (digest_init_r): Call check_narrowing irrespective of the C++ dialect.
513 * decl.c (check_initializer): Likewise.
514 * semantics.c (finish_compound_literal): Likewise.
515
516 2011-10-23 Paolo Carlini <paolo.carlini@oracle.com>
517
518 PR c++/50810
519 * typeck2.c (check_narrowing): Adjust OPT_Wnarrowing diagnostics.
520 (digest_init_r): Call check_narrowing irrespective of the C++ dialect.
521 * decl.c (check_initializer): Likewise.
522 * semantics.c (finish_compound_literal): Likewise.
523
524 2011-10-21 Paolo Carlini <paolo.carlini@oracle.com>
525
526 PR c++/45385
527 * init.c (build_vec_init): Early return error_mark_node if
528 maxindex is -1.
529
530 2011-10-21 Paolo Carlini <paolo.carlini@oracle.com>
531
532 PR c++/31423
533 * typeck2.c (cxx_incomplete_type_diagnostic): Improve error message
534 for invalid use of member function.
535
536 2011-10-21 Ville Voutilainen <ville.voutilainen@gmail.com>
537
538 PR c++/50811
539 * parser.c (cp_parser_class_head): Parse virt-specifiers
540 regardless of whether an id is present
541
542 2011-10-20 Jason Merrill <jason@redhat.com>
543
544 PR c++/41449
545 * typeck2.c (split_nonconstant_init_1): Handle EH cleanup of
546 initialized subobjects.
547
548 2011-10-19 Paolo Carlini <paolo.carlini@oracle.com>
549
550 PR c++/13657
551 * class.c (instantiate_type): Fix error message.
552
553 2011-10-19 Jason Merrill <jason@redhat.com>
554
555 PR c++/50793
556 * tree.c (bot_manip): Propagate AGGR_INIT_ZERO_FIRST.
557
558 2011-10-19 Roland Stigge <stigge@antcom.de>
559
560 PR translation/49704
561 * semantics.c (potential_constant_expression_1): Use "AST" instead of
562 "ast" in sorry message.
563
564 2011-10-19 Paolo Carlini <paolo.carlini@oracle.com>
565
566 PR c++/38761
567 PR c++/40872
568 * decl.c (duplicate_decls, make_typename_type, grokdeclarator): Use
569 G_() in error message strings to facilitate translation.
570 * semantics.c (finish_id_expression): Likewise.
571 * parser.c (cp_parser_nested_name_specifier_opt,
572 cp_parser_parameter_declaration): Likewise.
573
574 2011-10-18 Jason Merrill <jason@redhat.com>
575
576 PR c++/50531
577 * pt.c (instantiate_decl): Recognize when a function defaulted
578 outside the class is already instantiated.
579
580 PR c++/50742
581 * decl.c (check_previous_goto_1): Handle using-decl.
582
583 2011-10-18 Jason Merrill <jason@redhat.com>
584
585 PR c++/50500
586 DR 1082
587 * class.c (type_has_user_declared_move_constructor): New.
588 (type_has_user_declared_move_assign): New.
589 (add_implicitly_declared_members): Add lazy copy ops
590 even if there's a move.
591 * method.c (lazily_declare_fn): Delete implicit copies
592 if there's a move.
593 (maybe_explain_implicit_delete): Explain this. Use inform rather
594 than error.
595 * cp-tree.h: Declare new fns.
596
597 2011-10-18 Diego Novillo <dnovillo@google.com>
598
599 * parser.c: Remove ENABLE_CHECKING markers around debugging
600 routines.
601 (cp_lexer_dump_tokens): Add arguments START_TOKEN and CURR_TOKEN.
602 Make static
603 When printing CURR_TOKEN surround it in [[ ]].
604 Start printing at START_TOKEN.
605 Update all users.
606 (cp_debug_print_tree_if_set): New.
607 (cp_debug_print_context): New.
608 (cp_debug_print_context_stack): New.
609 (cp_debug_print_flag): New.
610 (cp_debug_print_unparsed_function): New.
611 (cp_debug_print_unparsed_queues): New.
612 (cp_debug_parser_tokens): New.
613 (cp_debug_parser): New.
614 (cp_lexer_start_debugging): Set cp_lexer_debug_stream to stderr.
615 (cp_lexer_stop_debugging): Set cp_lexer_debug_stream to NULL.
616 * parser.h (cp_lexer_dump_tokens): Remove declaration.
617 (cp_debug_parser): Declare.
618
619 2011-10-17 Michael Spertus <mike_spertus@symantec.com>
620
621 * cp-tree.def: Add BASES as a new tree code.
622 * cp-tree.h (enum cp_trait_kind): Add CPTK_BASES, CPTK_DIRECT_BASES.
623 (BASES_TYPE, BASES_DIRECT): Define.
624 (calculate_bases, finish_bases, calculate_direct_bases): Declare.
625 * parser.c (cp_parser_trait_expr, cp_parser_template_argument_list,
626 (cp_parser_simple_type_specifier, cp_parser_save_nsdmi): Use them.
627 * pt.c (find_parameter_packs_r, tsubst_pack_expansion): Likewise.
628 * semantics.c (calculate_bases, finish_bases, calculate_direct_bases,
629 dfs_calculate_bases_pre, dfs_calculate_bases_post,
630 calculate_bases_helper): Define.
631
632 2011-10-17 Jason Merrill <jason@redhat.com>
633
634 PR c++/50736
635 * parser.c (cp_parser_lambda_introducer): Check for more
636 invalid captures.
637
638 2011-10-17 Paolo Carlini <paolo.carlini@oracle.com>
639
640 PR c++/44524
641 * typeck.c (build_class_member_access_expr): Provide a better error
642 message for X.Y where X is a pointer to class type.
643 (finish_class_member_access_expr): Likewise.
644
645 2011-10-15 Tom Tromey <tromey@redhat.com>
646 Dodji Seketeli <dodji@redhat.com>
647
648 * error.c (cp_diagnostic_starter): Pass the relevant location to
649 diagnostic_report_current_module.
650 (cp_diagnostic_finalizer): Call virt_loc_aware_diagnostic_finalizer.
651
652 2011-10-17 Paolo Carlini <paolo.carlini@oracle.com>
653
654 PR c++/48489
655 * typeck.c (finish_class_member_access_expr): Fix error call
656 for TREE_CODE (access_path) == TREE_BINFO.
657
658 2011-10-15 Paolo Carlini <paolo.carlini@oracle.com>
659
660 PR c++/50732
661 * semantics.c (finish_trait_expr): Do not try to instantiate the
662 the base type of an __is_base_of trait.
663 (check_trait_type): Return a tree; use complete_type_or_else.
664
665 2011-10-14 Jason Merrill <jason@redhat.com>
666
667 PR c++/50563
668 * parser.c (cp_parser_cache_group): Handle end==CPP_COMMA.
669 (cp_parser_save_nsdmi): Pass it.
670
671 PR c++/50707
672 * method.c (walk_field_subobs): Check for NSDMI before
673 complaining about uninitialized fields.
674
675 * pt.c (tsubst_decl) [FIELD_DECL]: Use void_zero_node
676 instead of error_mark_node as a placeholder.
677
678 2011-10-14 Paolo Carlini <paolo.carlini@oracle.com>
679
680 PR c++/38174
681 * call.c (add_builtin_candidate): If two pointers have a composite
682 pointer type, generate a single candidate with that type.
683
684 2011-10-13 Jason Merrill <jason@redhat.com>
685
686 PR c++/50614
687 * cp-tree.h (VAR_TEMPL_TYPE_FIELD_OR_FUNCTION_DECL_CHECK): New.
688 (DECL_TEMPLATE_INFO): Use it.
689 * pt.c (tsubst_decl) [FIELD_DECL]: Set DECL_TEMPLATE_INFO
690 if the decl has an NSDMI.
691 * init.c (perform_member_init): Use it.
692
693 PR c++/50437
694 * cp-tree.h (struct tree_lambda_expr): Add closure field.
695 (LAMBDA_EXPR_CLOSURE): New.
696 * pt.c (tsubst_copy_and_build) [LAMBDA_EXPR]: Likewise.
697 * semantics.c (build_lambda_object): Use it instead of TREE_TYPE.
698 (begin_lambda_type, lambda_function, add_capture): Likewise.
699 (add_default_capture, lambda_expr_this_capture): Likewise.
700
701 2011-10-13 Diego Novillo <dnovillo@google.com>
702
703 * cp-tree.h (struct language_function): Rename in_function_try_handler
704 to x_in_function_try_handler.
705 Rename in_base_initializer to x_in_base_initializer.
706 Update all users.
707
708 2011-10-13 Diego Novillo <dnovillo@google.com>
709
710 * class.c (sorted_fields_type_new): Factor out of ...
711 (finish_struct_1): ... here.
712
713 2011-10-13 Jason Merrill <jason@redhat.com>
714
715 PR c++/50618
716 * init.c (expand_aggr_init_1): Don't zero-initialize virtual
717 bases of a base subobject.
718
719 2011-10-12 Paolo Carlini <paolo.carlini@oracle.com>
720
721 PR c++/50594
722 * decl.c (cxx_init_decl_processing): Add
723 __attribute__((externally_visible)) to operator new and
724 operator delete library fn.
725
726 2011-10-11 Michael Meissner <meissner@linux.vnet.ibm.com>
727
728 * decl.c (duplicate_decls): Delete old interface with two parallel
729 arrays to hold standard builtin declarations, and replace it with
730 a function based interface that can support creating builtins on
731 the fly in the future. Change all uses, and poison the old
732 names. Make sure 0 is not a legitimate builtin index.
733 * except.c (build_eh_type_type): Ditto.
734 (choose_personality_routine): Ditto.
735 * semantics.c (finish_omp_atomic): Ditto.
736 (finish_omp_barrier): Ditto.
737 (finish_omp_flush): Ditto.
738 (finish_omp_taskwait): Ditto.
739
740 2011-10-11 Jason Merrill <jason@redhat.com>
741
742 PR c++/49855
743 PR c++/49896
744 * cp-tree.def (IMPLICIT_CONV_EXPR): New.
745 * call.c (perform_implicit_conversion_flags): Build it
746 instead of NOP_EXPR.
747 * cp-objcp-common.c (cp_common_init_ts): It's typed.
748 * cxx-pretty-print.c (pp_cxx_cast_expression): Handle it.
749 (pp_cxx_expression): Likewise.
750 * error.c (dump_expr): Likewise.
751 * semantics.c (potential_constant_expression_1): Likewise.
752 * tree.c (cp_tree_equal): Likewise.
753 (cp_walk_subtrees): Likewise.
754 * pt.c (iterative_hash_template_arg): Likewise.
755 (for_each_template_parm_r): Likewise.
756 (type_dependent_expression_p): Likewise.
757 (tsubst_copy, tsubst_copy_and_build): Handle IMPLICIT_CONV_EXPR
758 and CONVERT_EXPR.
759 * cp-tree.h (IMPLICIT_CONV_EXPR_DIRECT_INIT): New.
760
761 2011-10-11 Paolo Carlini <paolo.carlini@oracle.com>
762
763 PR c++/50611
764 * pt.c (tsubst_copy_and_build): If (complain & tf_error) is false
765 do not call unqualified_name_lookup_error.
766
767 2011-10-10 Paolo Carlini <paolo.carlini@oracle.com>
768
769 PR c++/50660
770 * call.c (conversion_null_warnings): Don't look through references.
771
772 2011-10-09 Paolo Carlini <paolo.carlini@oracle.com>
773
774 PR c++/38980
775 * init.c (constant_value_1): Add bool parameter.
776 (decl_constant_value_safe): Add.
777 (integral_constant_value): Adjust.
778 (decl_constant_value): Adjust.
779 * cp-tree.h (decl_constant_value_safe): Declare.
780 * typeck.c (decay_conversion): Use decl_constant_value_safe.
781 * call.c (convert_like_real): Likewise.
782
783 2011-10-09 Jakub Jelinek <jakub@redhat.com>
784 Diego Novillo <dnovillo@google.com>
785
786 * pt.c (reregister_specialization): Use htab_find instead of
787 htab_find_slot with INSERT.
788 (maybe_process_partial_specialization, lookup_template_class_1): Change
789 slot variable type to void ** to avoid aliasing problems.
790 (register_specialization): Likewise. Use slot != NULL instead of
791 more expensive !optimize_specialization_lookup_p (tmpl) test.
792
793 2011-10-08 Paolo Carlini <paolo.carlini@oracle.com>
794
795 PR c++/34927
796 * typeck2.c (abstract_virtuals_error_sfinae): Don't produce duplicate
797 inform messages in case of cloned destructor.
798
799 2011-10-06 Jason Merrill <jason@redhat.com>
800
801 PR c++/39164
802 * decl.c (grokfndecl): Diagnose redefinition of defaulted fn.
803
804 2011-10-02 Jason Merrill <jason@redhat.com>
805
806 * pt.c (tsubst_pack_expansion): Re-use ARGUMENT_PACK_SELECTs.
807 Change unsubstituted_packs to bool.
808
809 * parser.c (cp_parser_range_for): Don't try to deduce from {}
810 in a template.
811
812 PR c++/35722
813 Implement N2555 (expanding pack expansion to fixed parm list)
814 * pt.c (coerce_template_parms): Allow expanding a pack expansion
815 to a fixed-length argument list.
816 (unify_pack_expansion): Handle explicit args properly.
817 (unify) [TREE_VEC]: Handle pack expansions here.
818 [TYPE_ARGUMENT_PACK]: Not here.
819 (tsubst_pack_expansion): Don't try to do partial substitution.
820 (pack_deducible_p): New.
821 (fn_type_unification): Use it.
822 (find_parameter_packs_r): Take the TYPE_MAIN_VARIANT
823 of a type parameter.
824 (check_non_deducible_conversion): Split from type_unification_real.
825 (unify_one_argument): Split from type_unification_real...
826 (unify_pack_expansion): ...and here. Drop call_args_p parm.
827 (type_unification_real, unify, more_specialized_fn): Adjust.
828
829 * class.c (fixed_type_or_null): Handle NSDMI.
830 * method.c (walk_field_subobs): Disable NSDMI noexcept checking
831 for now.
832
833 2011-09-30 Jason Merrill <jason@redhat.com>
834
835 * cp-tree.h (TREE_NEGATED_INT): Remove.
836 * semantics.c (finish_unary_op_expr): Don't set it.
837
838 2011-09-30 Janis Johnson <janisjo@codesourcery.com>
839
840 PR c++/44473
841 * mangle.c (write_type): Handle CV qualifiers for decimal classes.
842
843 2011-09-26 Andi Kleen <ak@linux.intel.com>
844
845 * repo.c (finish_repo): Use HOST_WIDE_INT_PRINT_HEX_PURE.
846
847 2011-09-28 Paolo Carlini <paolo.carlini@oracle.com>
848
849 PR c++/45278
850 * typeck.c (cp_build_binary_op): With -Wextra, warn for ordered
851 comparison of pointer with zero.
852
853 2011-09-27 Paolo Carlini <paolo.carlini@oracle.com>
854
855 PR c++/31489
856 * parser.c (cp_parser_elaborated_type_specifier): For RECORD_TYPE,
857 set CLASSTYPE_DECLARED_CLASS.
858
859 2011-09-27 Jakub Jelinek <jakub@redhat.com>
860
861 * decl.c (duplicate_decls): If compatible stpcpy prototype
862 is seen, set implicit_built_in_decls[BUILT_IN_STPCPY].
863
864 2011-09-26 Jason Merrill <jason@redhat.com>
865
866 PR c++/45012
867 * pt.c (tsubst_copy_and_build) [CONST_DECL]: Don't pull out
868 constant value if we're still in a template.
869
870 PR c++/46105
871 * typeck.c (structural_comptypes): Ignore cv-quals on typename scope.
872
873 PR c++/50508
874 * semantics.c (cxx_eval_logical_expression): Use tree_int_cst_equal
875 rather than ==.
876
877 2011-09-26 Paolo Carlini <paolo.carlini@oracle.com>
878
879 PR c++/45487
880 * error.c (dump_template_bindings): Separate bindings with semicolons
881 instead of commas.
882
883 2011-09-26 Jason Merrill <jason@redhat.com>
884
885 PR c++/50512
886 * call.c (compare_ics): Only consider rvaluedness_matches_p
887 if the target type is the same or it too differs in rvalueness.
888
889 PR c++/50523
890 * call.c (implicit_conversion): Mask out inappropriate LOOKUP
891 flags at the top of the function.
892
893 * pt.c (tsubst_copy) [PARM_DECL]: Handle 'this' in NSDMI.
894
895 2011-09-26 Paolo Carlini <paolo.carlini@oracle.com>
896
897 * pt.c (convert_nontype_argument): Handle NULLPTR_TYPE.
898
899 2011-09-26 Paolo Carlini <paolo.carlini@oracle.com>
900
901 PR c++/26747
902 * cp-gimplify.c (get_bc_label): Remove obsolete diagnostics.
903
904 2011-09-25 Jason Merrill <jason@redhat.com>
905
906 * parser.c (inject_this_parameter): Split out from
907 cp_parser_late_return_type_opt.
908 (cp_parser_class_specifier_1): Use it for NSDMIs.
909 * tree.c (bot_replace): Replace NSDMI 'this' with real 'this'.
910
911 2011-09-24 Jason Merrill <jason@redhat.com>
912
913 * except.c (expr_noexcept_p): Split out from finish_noexcept_expr.
914 * cp-tree.h: Declare it.
915 * method.c (walk_field_subobs): Use it.
916
917 * init.c (perform_member_init): Instantiate NSDMI here.
918 * pt.c (tsubst_decl) [FIELD_DECL]: Not here.
919
920 Handle deferred parsing of NSDMIs.
921 * parser.h (cp_unparsed_functions_entry): Add nsdmis field.
922 * parser.c (unparsed_nsdmis, cp_parser_save_nsdmi): New.
923 (cp_parser_late_parse_one_default_arg): Split out from
924 cp_parser_late_parsing_default_args.
925 (cp_parser_late_parsing_nsdmi): New.
926 (push_unparsed_function_queues): Set it.
927 (cp_parser_parameter_declaration): Save the '=' token.
928 (cp_parser_template_parameter): Likewise.
929 (cp_parser_default_argument): Call cp_parser_initializer
930 rather than cp_parser_initializer_clause.
931 (cp_parser_class_specifier_1): Parse unparsed_nsdmis.
932 (cp_parser_member_declaration): Handle nsdmis.
933 * decl2.c (grokfield): Handle DEFAULT_ARG for a function.
934
935 Implement C++11 non-static data member initializers.
936 * cp-tree.h (enum cpp_warn_str): Add CPP0X_NSDMI.
937 * error.c (maybe_warn_cpp0x): Handle it.
938 * call.c (convert_like_real) [ck_user]: Don't complain about
939 using an explicit constructor for direct-initialization.
940 * class.c (check_field_decl): Fix ancient typo.
941 (check_field_decls): NSDMIs make the default ctor non-trivial.
942 * decl.c (cp_finish_decl): Record NSDMI.
943 (grokdeclarator): Allow NSDMI.
944 * decl2.c (grokfield): Allow NSDMI. Correct LOOKUP flags.
945 * init.c (perform_member_init): Use NSDMI.
946 * method.c (walk_field_subobs): Check for NSDMI.
947 * parser.c (cp_parser_member_declaration): Parse { } init.
948 * semantics.c (register_constexpr_fundef): Don't talk about
949 a return statement in a constexpr constructor.
950 (cxx_eval_call_expression): Check DECL_INITIAL instead of
951 DECL_SAVED_TREE.
952
953 2011-09-24 Paolo Carlini <paolo.carlini@oracle.com>
954
955 PR c++/44267
956 * class.c (build_base_path): Add a tsubst_flags_t parameter.
957 (convert_to_base): Adjust call.
958 * typeck.c (build_class_member_access_expr,
959 get_member_function_from_ptrfunc, build_static_cast_1): Likewise.
960 * init.c (dfs_initialize_vtbl_ptrs, emit_mem_initializers): Likewise.
961 * method.c (do_build_copy_constructor, do_build_copy_assign): Likewise.
962 * rtti.c (build_dynamic_cast_1): Likewise.
963 * typeck2.c (build_scoped_ref, build_m_component_ref): Likewise.
964 * call.c (build_over_call, build_special_member_call): Likewise.
965 * cvt.c (cp_convert_to_pointer, convert_to_pointer_force,
966 build_up_reference): Likewise.
967 * cp-tree.h (build_base_path): Adjust declaration.
968
969 2011-09-23 Jason Merrill <jason@redhat.com>
970
971 Core 253 - allow const objects with no initializer or
972 user-provided default constructor if the defaulted constructor
973 initializes all the subobjects.
974 PR c++/20039
975 PR c++/42844
976 * class.c (default_init_uninitialized_part): New.
977 * cp-tree.h: Declare it.
978 * decl.c (check_for_uninitialized_const_var): Use it.
979 * init.c (perform_member_init): Likewise.
980 (build_new_1): Likewise.
981 * method.c (walk_field_subobs): Likewise.
982
983 2011-09-23 Paolo Carlini <paolo.carlini@oracle.com>
984
985 PR c++/50258
986 * decl.c (check_static_variable_definition): Allow in-class
987 initialization of static data member of non-integral type in
988 permissive mode.
989
990 2011-09-22 Paolo Carlini <paolo.carlini@oracle.com>
991
992 PR c++/50491
993 * semantics.c (potential_constant_expression_1): Handle USING_DECL.
994
995 2011-09-22 Paolo Carlini <paolo.carlini@oracle.com>
996
997 PR c++/50371
998 * pt.c (invalid_nontype_parm_type_p): Handle NULLPTR_TYPE.
999
1000 2011-09-22 Jonathan Wakely <jwakely.gcc@gmail.com>
1001 Paolo Carlini <paolo.carlini@oracle.com>
1002
1003 PR c++/50344
1004 * friend.c (make_friend_class): cv-qualification is ok in a
1005 friend declaration.
1006
1007 2011-09-21 Paolo Carlini <paolo.carlini@oracle.com>
1008
1009 PR c++/50454
1010 * decl.c (grokdeclarator): Consistently handle both __int128
1011 and unsigned __int128 with -pedantic; suppress diagnostic in
1012 system headers.
1013
1014 2011-09-20 Jason Merrill <jason@redhat.com>
1015
1016 * cp-tree.h (DECL_TEMPLOID_INSTANTIATION): New.
1017 (DECL_GENERATED_P): New.
1018 * class.c (finalize_literal_type_property): Use them.
1019 * semantics.c (is_instantiation_of_constexpr): Likewise.
1020 (register_constexpr_fundef): Likewise.
1021
1022 * call.c (convert_default_arg): Avoid redundant copy.
1023 * tree.c (bot_manip): Copy everything.
1024
1025 2011-09-20 Roberto Agostino Vitillo <ravitillo@lbl.gov>
1026
1027 * call.c (build_new_method_call_1): Use non-virtual lookup
1028 for final virtual functions.
1029
1030 2011-09-16 Jason Merrill <jason@redhat.com>
1031
1032 PR c++/50424
1033 * call.c (set_flags_from_callee): Split out from build_call_a.
1034 * cp-tree.h: Declare it.
1035 * tree.c (bot_manip): Call it.
1036
1037 2011-09-15 Jason Merrill <jason@redhat.com>
1038
1039 PR c++/50365
1040 * parser.c (cp_parser_late_return_type_opt): Check quals parameter
1041 for clearing current_class_ptr, too.
1042
1043 2011-09-14 Diego Novillo <dnovillo@google.com>
1044
1045 * name-lookup.c (lookup_arg_dependent): Use conditional
1046 timevars.
1047 * decl.c (xref_tag): Likewise.
1048
1049 2011-09-14 Paolo Carlini <paolo.carlini@oracle.com>
1050
1051 PR c++/50391
1052 * pt.c (regenerate_decl_from_template): Don't pass an error_mark_node
1053 to build_exception_variant.
1054
1055 2011-09-13 Dodji Seketeli <dodji@redhat.com>
1056
1057 PR c++/48320
1058 * pt.c (template_parameter_pack_p): Support TEMPLATE_PARM_INDEX
1059 nodes. Add a comment.
1060 (arg_from_parm_pack_p): New static function, factorized out from
1061 tsubst_pack_expansion and extended to support non-type parameter
1062 packs represented with TEMPLATE_PARM_INDEX nodes.
1063 (tsubst_pack_expansion): Use arg_from_parm_pack_p.
1064
1065 2011-09-12 Jason Merrill <jason@redhat.com>
1066
1067 * pt.c (type_unification_real): Fix handling of DEDUCE_CONV
1068 with no deducible template parameters.
1069 * call.c (rejection_reason_code): Add rr_template_conversion.
1070 (print_z_candidate): Handle it.
1071 (template_conversion_rejection): New.
1072 (build_user_type_conversion_1): Use it.
1073
1074 * call.c (merge_conversion_sequences): Set bad_p and user_conv_p
1075 on all of the second conversion sequence.
1076 (build_user_type_conversion_1): Set bad_p on the ck_user conv.
1077 (convert_like_real): Handle bad ck_ref_bind with user_conv_p in the
1078 first section. Fix loop logic.
1079 (initialize_reference): Call convert_like for diagnostics when
1080 we have a (bad) conversion.
1081
1082 * call.c (convert_class_to_reference)
1083 (convert_class_to_reference_1): Remove.
1084 (reference_binding): Use build_user_type_conversion_1 instead.
1085
1086 * call.c (initialize_reference): Add flags parm.
1087 * decl.c (grok_reference_init): Likewise.
1088 (check_initializer): Pass it.
1089 * typeck.c (convert_for_initialization): Likewise.
1090 * cp-tree.h: Adjust.
1091
1092 * cp-tree.h (LOOKUP_NO_RVAL_BIND): New.
1093 * call.c (conditional_conversion): Use it.
1094 (reference_binding): Fix handling of xvalues.
1095
1096 2011-09-09 Jason Merrill <jason@redhat.com>
1097
1098 * call.c (implicit_conversion): Check BRACE_ENCLOSED_INITIALIZER_P
1099 before forcing instantiation.
1100
1101 2011-09-08 Paolo Carlini <paolo.carlini@oracle.com>
1102
1103 PR c++/50324
1104 * typeck2.c (digest_init_r): Call complete_type_or_maybe_complain
1105 instead of complete_type_or_else.
1106
1107 2011-09-08 Dodji Seketeli <dodji@redhat.com>
1108
1109 PR c++/33255 - Support -Wunused-local-typedefs warning
1110 * name-lookup.c (pushdecl_maybe_friend_1): Use the new
1111 record_locally_defined_typedef.
1112 * decl.c (finish_function): Use the new
1113 maybe_warn_unused_local_typedefs.
1114 (grokfield): Use the new record_locally_defined_typedef.
1115 * parser.c (lookup_name): Use the new maybe_record_typedef_use.
1116
1117 2011-09-07 Paolo Carlini <paolo.carlini@oracle.com>
1118
1119 PR c++/50309
1120 * decl.c (grokdeclarator): Check u.function.exception_specification
1121 for error_mark_node.
1122
1123 2011-09-07 Jason Merrill <jason@redhat.com>
1124
1125 PR c++/50298
1126 * parser.c (cp_parser_member_declaration): Don't require a constant
1127 rvalue here in C++0x.
1128
1129 * pt.c (type_unification_real): Correct complain arg for tsubsting
1130 default template args.
1131
1132 * pt.c (tsubst_aggr_type): Check TYPE_P before tsubsting.
1133
1134 2011-09-06 Jason Merrill <jason@redhat.com>
1135
1136 PR c++/50296
1137 * semantics.c (register_constexpr_fundef): Call is_valid_constexpr_fn.
1138 (cx_check_missing_mem_inits): Handle bases and empty trivial members.
1139 (validate_constexpr_fundecl): Remove.
1140 * decl.c (start_preparsed_function): Don't call it.
1141 * cp-tree.h: Don't declare it.
1142
1143 2011-09-04 Jason Merrill <jason@redhat.com>
1144
1145 PR c++/49267
1146 * call.c (reference_binding): Don't set is_lvalue for an rvalue
1147 reference rfrom.
1148
1149 PR c++/49267
1150 PR c++/49458
1151 DR 1328
1152 * call.c (reference_binding): Set rvaluedness_matches_p properly
1153 for reference to function conversion ops.
1154 (compare_ics): Adjust.
1155
1156 * class.c (trivial_default_constructor_is_constexpr): Rename from
1157 synthesized_default_constructor_is_constexpr.
1158 (type_has_constexpr_default_constructor): Adjust.
1159 (add_implicitly_declared_members): Call it instead.
1160 (explain_non_literal_class): Explain about non-constexpr default ctor.
1161 * cp-tree.h: Adjust.
1162 * method.c (synthesized_method_walk): Adjust.
1163 * semantics.c (explain_invalid_constexpr_fn): Handle defaulted
1164 functions, too.
1165
1166 PR c++/50248
1167 Core 1358
1168 * init.c (perform_member_init): Don't diagnose missing inits here.
1169 (emit_mem_initializers): Or here.
1170 * method.c (process_subob_fn): Don't instantiate constexpr ctors.
1171 * semantics.c (cx_check_missing_mem_inits): New.
1172 (explain_invalid_constexpr_fn): Call it.
1173 (register_constexpr_fundef): Likewise. Leave
1174 DECL_DECLARED_CONSTEXPR_P set when the body is unsuitable.
1175 (cxx_eval_call_expression): Adjust diagnostics.
1176 (cxx_eval_constant_expression): Catch use of 'this' in a constructor.
1177
1178 2011-08-30 Jason Merrill <jason@redhat.com>
1179
1180 PR c++/50084
1181 * cp-tree.h (cp_decl_specifier_seq): Rename user_defined_type_p
1182 to type_definition_p.
1183 * parser.c (cp_parser_set_decl_spec_type): Likewise.
1184 * decl.c (grokdeclarator): Check it.
1185
1186 PR c++/50089
1187 * semantics.c (finish_id_expression): Use
1188 current_nonlambda_class_type for qualified-ids.
1189
1190 PR c++/50114
1191 * decl.c (poplevel): Disable for scope compatibility hack
1192 in C++11 mode.
1193
1194 PR c++/50220
1195 * semantics.c (add_capture): Call complete_type for copy.
1196
1197 PR c++/50234
1198 * semantics.c (cxx_eval_component_reference): Handle
1199 value-initialization for omitted initializers.
1200
1201 2011-08-29 Jason Merrill <jason@redhat.com>
1202
1203 PR c++/50224
1204 * semantics.c (finish_id_expression): Mark captured variables used.
1205
1206 2011-08-29 Jakub Jelinek <jakub@redhat.com>
1207 Jason Merrill <jason@redhat.com>
1208
1209 PR c++/50207
1210 * class.c (finish_struct_1): Complain if the first field is
1211 artificial.
1212
1213 2011-08-29 Jason Merrill <jason@redhat.com>
1214
1215 PR c++/50209
1216 Core DR 994
1217 * parser.c (cp_parser_default_argument): Use
1218 cp_parser_initializer_clause.
1219 (cp_parser_late_parsing_default_args): Likewise.
1220
1221 2011-08-26 Jason Merrill <jason@redhat.com>
1222
1223 Core DR 342
1224 PR c++/48582
1225 * pt.c (check_valid_ptrmem_cst_expr): A null member pointer value
1226 is valid in C++11.
1227 (convert_nontype_argument): Likewise. Implicitly convert nullptr
1228 and do constant folding.
1229 * mangle.c (write_template_arg_literal): Mangle null member
1230 pointer values as 0.
1231 * call.c (null_member_pointer_value_p): New.
1232 * cp-tree.h: Declare it.
1233
1234 2011-08-25 Jason Merrill <jason@redhat.com>
1235
1236 * call.c (convert_like_real): Remove redundant complain checks.
1237
1238 PR c++/50157
1239 * call.c (convert_like_real): Exit early if bad and !tf_error.
1240
1241 2011-08-23 Jason Merrill <jason@redhat.com>
1242
1243 * typeck2.c (build_functional_cast): Don't try to avoid calling
1244 build_value_init.
1245 * pt.c (instantiate_class_template_1): Don't copy TYPE_HAS_* flags.
1246
1247 2011-08-23 Jason Merrill <jason@redhat.com>
1248
1249 PR c++/49045
1250 Core 1321
1251 * tree.c (dependent_name): New.
1252 (cp_tree_equal): Two calls with the same dependent name are
1253 equivalent even if the overload sets are different.
1254
1255 2011-08-23 Jason Merrill <jason@redhat.com>
1256
1257 * tree.c (build_target_expr): Set TREE_CONSTANT on
1258 literal TARGET_EXPR if the value is constant.
1259 * typeck2.c (build_functional_cast): Don't set it here.
1260
1261 2011-08-23 Jason Merrill <jason@redhat.com>
1262
1263 Core 903 (partial)
1264 * call.c (null_ptr_cst_p): Only 0 qualifies in C++11.
1265
1266 2011-08-23 Jason Merrill <jason@redhat.com>
1267
1268 Core 975
1269 * decl.c (cxx_init_decl_processing): Initialize
1270 dependent_lambda_return_type_node.
1271 * cp-tree.h (cp_tree_index): Add CPTI_DEPENDENT_LAMBDA_RETURN_TYPE.
1272 (dependent_lambda_return_type_node): Define.
1273 (DECLTYPE_FOR_LAMBDA_RETURN): Remove.
1274 * semantics.c (lambda_return_type): Handle overloaded function.
1275 Use dependent_lambda_return_type_node instead of
1276 DECLTYPE_FOR_LAMBDA_RETURN.
1277 (apply_lambda_return_type): Don't check dependent_type_p.
1278 * pt.c (tsubst_copy_and_build): Handle lambda return type deduction.
1279 (instantiate_class_template_1): Likewise.
1280 (tsubst): Don't use DECLTYPE_FOR_LAMBDA_RETURN.
1281 * mangle.c (write_type): Likewise.
1282 * typeck.c (structural_comptypes): Likewise.
1283 (check_return_expr): Handle dependent_lambda_return_type_node.
1284
1285 2011-08-23 Jason Merrill <jason@redhat.com>
1286
1287 PR c++/50024
1288 * semantics.c (maybe_constant_value): Don't try to fold { }.
1289 * pt.c (build_non_dependent_expr): Don't wrap { }.
1290 * init.c (build_value_init): Allow scalar value-init in templates.
1291
1292 2011-08-23 Jason Merrill <jason@redhat.com>
1293
1294 * semantics.c (potential_constant_expression_1): Allow 'this'.
1295
1296 2011-08-23 Jakub Jelinek <jakub@redhat.com>
1297
1298 PR c++/50158
1299 * typeck.c (cp_build_modify_expr): Call mark_rvalue_use on rhs
1300 if it has side-effects and needs to be preevaluated.
1301
1302 2011-08-23 Siddhesh Poyarekar <siddhesh.poyarekar@gmail.com>
1303
1304 PR c++/50055
1305 * except.c (begin_eh_spec_block): Build EH_SPEC block on the
1306 same line as the function.
1307
1308 2011-08-23 Jakub Jelinek <jakub@redhat.com>
1309
1310 PR c++/46862
1311 * class.c (finish_struct_1): If TYPE_TRANSPARENT_AGGR is set on a type
1312 which doesn't have any fields, clear it and diagnose.
1313
1314 2011-08-18 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
1315 Marc Glisse <marc.glisse@normalesup.org>
1316
1317 PR libstdc++-v3/1773
1318 * mangle.c (decl_mangling_context): Call
1319 targetm.cxx.decl_mangling_context.
1320 (write_unscoped_name): Use decl_mangling_context.
1321
1322 2011-08-18 Dodji Seketeli <dodji@redhat.com>
1323
1324 PR c++/45625
1325 * pt.c (parameter_of_template_p): Handle comparison with DECLs of
1326 template parameters as created by process_template_parm.
1327
1328 2011-08-16 Jason Merrill <jason@redhat.com>
1329
1330 PR c++/50086
1331 * pt.c (unify_pack_expansion): Correct overloaded unification
1332 logic.
1333
1334 * pt.c (instantiate_class_template_1): If DECL_PRESERVE_P is set
1335 on a member function or static data member, call mark_used.
1336
1337 PR c++/50054
1338 * typeck2.c (cxx_incomplete_type_diagnostic): Handle
1339 init_list_type_node.
1340
1341 2011-08-13 Jason Merrill <jason@redhat.com>
1342
1343 PR c++/50075
1344 * name-lookup.c (local_bindings_p): New.
1345 * name-lookup.h: Declare it.
1346 * lex.c (unqualified_name_lookup_error): Use it.
1347
1348 PR c++/50059
1349 * error.c (dump_expr): Handle MODIFY_EXPR properly.
1350
1351 * decl.c (grok_reference_init): Handle constexpr here.
1352 * call.c (initialize_reference): Not here.
1353
1354 2011-08-12 David Li <davidxl@google.com>
1355
1356 * class.c (update_vtable_entry_for_fn): Set
1357 LOST_PRIMARY bit properly.
1358
1359 2011-08-12 Jason Merrill <jason@redhat.com>
1360
1361 PR c++/50034
1362 * call.c (convert_arg_to_ellipsis): force_rvalue only in
1363 potentially evaluated context.
1364
1365 2011-08-12 Richard Guenther <rguenther@suse.de>
1366
1367 * call.c (build_over_call): Instead of memcpy use an
1368 assignment of two MEM_REFs.
1369
1370 2011-08-11 Romain Geissler <romain.geissler@gmail.com>
1371 Brian Hackett <bhackett1024@gmail.com>
1372
1373 * decl.c (cp_finish_decl): Invoke callbacks on finish_decl event.
1374
1375 2011-08-10 Richard Guenther <rguenther@suse.de>
1376
1377 * call.c (build_over_call): Call memcpy unconditionally.
1378
1379 2011-08-08 Jason Merrill <jason@redhat.com>
1380
1381 PR c++/50020
1382 * semantics.c (finish_call_expr): Don't look at 'this' if we
1383 had an explicit object argument.
1384
1385 PR c++/50011
1386 * typeck2.c (check_narrowing): Fix integer logic.
1387
1388 2011-08-08 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
1389
1390 * Make-lang.in (g++$(exeext)): Add $(EXTRA_GCC_LIBS).
1391
1392 2011-08-05 Jason Merrill <jason@redhat.com>
1393
1394 PR c++/48993
1395 * semantics.c (potential_constant_expression_1) [CALL_EXPR]: Sorry
1396 on 'this' in a constructor.
1397
1398 PR c++/49921
1399 * semantics.c (finish_decltype_type): Call invalid_nonstatic_memfn_p.
1400
1401 PR c++/49669
1402 * init.c (perform_member_init): Handle invalid array initializer.
1403
1404 PR c++/49988
1405 * semantics.c (cxx_eval_array_reference): Handle failure to
1406 reduce the array operand to something we can work with.
1407
1408 2011-08-05 Gabriel Charette <gchare@google.com>
1409
1410 * decl.c (finish_function): Remove unecessary line 0 hack.
1411
1412 2011-08-05 Jason Merrill <jason@redhat.com>
1413
1414 PR c++/47453
1415 * typeck.c (build_x_compound_expr_from_list): Also complain
1416 about ({...}).
1417
1418 PR c++/49812
1419 * typeck.c (cp_build_unary_op) [POSTINCREMENT_EXPR]: Strip cv-quals.
1420
1421 PR c++/49983
1422 * parser.c (cp_parser_range_for): Only do auto deduction in
1423 template if the range is non-dependent.
1424
1425 * init.c (perform_member_init): Always build_aggr_init
1426 for a class member with an explicit mem-initializer.
1427
1428 * pt.c (unify) [TEMPLATE_TYPE_PARM]: Allow VLA for C++0x 'auto'.
1429
1430 2011-08-04 Jakub Jelinek <jakub@redhat.com>
1431
1432 PR middle-end/49905
1433 * decl.c (cxx_init_decl_processing): Add alloc_size (1) attribute
1434 for operator new and operator new []. Call init_attributes.
1435
1436 2011-08-02 Jason Merrill <jason@redhat.com>
1437
1438 PR c++/43886
1439 * parser.c (cp_parser_lambda_body): Clear local_variables_forbidden_p.
1440
1441 PR c++/49577
1442 * typeck2.c (check_narrowing): Check unsigned mismatch.
1443 * semantics.c (finish_compound_literal): check_narrowing.
1444
1445 PR c++/49593
1446 * pt.c (find_parameter_packs_r): Handle CONSTRUCTOR.
1447
1448 PR c++/49803
1449 * init.c (sort_mem_initializers): Initialize uses_unions_p here.
1450 (build_field_list): Not here.
1451
1452 PR c++/49834
1453 * parser.c (build_range_temp): Split out from...
1454 (cp_convert_range_for): ...here.
1455 (do_range_for_auto_deduction): New.
1456 (cp_parser_range_for): Use it.
1457
1458 2011-08-02 Jakub Jelinek <jakub@redhat.com>
1459
1460 * cp-tree.h (finish_omp_atomic): Adjust prototype.
1461 (cxx_omp_const_qual_no_mutable): New prototype.
1462 (finish_omp_taskyield): New prototype.
1463 * parser.c (cp_parser_omp_atomic): (cp_parser_omp_atomic): Handle
1464 parsing OpenMP 3.1 atomics. Adjust finish_omp_atomic caller.
1465 (cp_parser_omp_clause_name): Handle final and mergeable clauses.
1466 (cp_parser_omp_clause_final, cp_parser_omp_clause_mergeable): New
1467 functions.
1468 (cp_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_FINAL
1469 and PRAGMA_OMP_CLAUSE_MERGEABLE.
1470 (OMP_TASK_CLAUSE_MASK): Allow final and mergeable clauses.
1471 (cp_parser_omp_taskyield): New function.
1472 (cp_parser_pragma): Handle PRAGMA_OMP_TASKYIELD.
1473 (cp_parser_omp_clause_reduction): Handle min and max.
1474 * pt.c (tsubst_expr) <case OMP_ATOMIC>: Handle OpenMP 3.1 atomics.
1475 (tsubst_omp_clauses): Handle OMP_CLAUSE_FINAL and
1476 OMP_CLAUSE_MERGEABLE.
1477 * semantics.c (finish_omp_atomic): Add OPCODE, V, LHS1 and RHS1
1478 arguments. Handle OpenMP 3.1 atomics. Adjust c_finish_omp_atomic
1479 caller.
1480 (finish_omp_clauses): Don't complain about const qualified
1481 predetermined vars and static data members in firstprivate clause.
1482 Handle OMP_CLAUSE_FINAL and OMP_CLAUSE_MERGEABLE. Handle MIN_EXPR
1483 and MAX_EXPR.
1484 (finish_omp_taskyield): New function.
1485 * cp-gimplify.c (cxx_omp_const_qual_no_mutable): New function.
1486 (cxx_omp_predetermined_sharing): Use it.
1487
1488 2011-08-02 Jason Merrill <jason@redhat.com>
1489
1490 * call.c (build_call_a): Also check at_function_scope_p.
1491
1492 2011-08-01 Jason Merrill <jason@redhat.com>
1493
1494 PR c++/49932
1495 * mangle.c (write_prefix): Handle decltype.
1496
1497 PR c++/49924
1498 * semantics.c (cxx_eval_vec_init_1): Fix logic.
1499
1500 PR c++/49813
1501 * semantics.c (potential_constant_expression_1): Allow any builtin.
1502 (morally_constexpr_builtin_function_p): Remove.
1503
1504 2011-07-29 Jason Merrill <jason@redhat.com>
1505
1506 PR c++/49867
1507 * parser.c (cp_parser_lambda_expression): Also clear in_statement
1508 and in_switch_statement_p.
1509 (cp_parser_class_specifier): Likewise.
1510
1511 2011-07-28 Jason Merrill <jason@redhat.com>
1512
1513 PR c++/49808
1514 * pt.c (tsubst) [TEMPLATE_PARM_INDEX]: Call convert_from_reference.
1515 (convert_nontype_argument, tsubst_template_arg): Handle its output.
1516
1517 2011-07-28 Paolo Carlini <paolo.carlini@oracle.com>
1518
1519 PR c++/49813
1520 * semantics.c (potential_constant_expression_1): Handle FMA_EXPR.
1521
1522 2011-07-27 Jeffrey Yasskin <jyasskin@google.com>
1523
1524 * pt.c (build_template_decl): Copy the function_decl's
1525 source location to the new template_decl.
1526
1527 2011-07-26 Paolo Carlini <paolo.carlini@oracle.com>
1528
1529 PR c++/49776
1530 * typeck.c (cp_build_modify_expr): Check digest_init return value
1531 for error_mark_node.
1532
1533 2011-07-25 Paolo Carlini <paolo.carlini@oracle.com>
1534
1535 PR bootstrap/49845
1536 * parser.c (cp_parser_perform_range_for_lookup): Always assign *being
1537 and *end before returning.
1538
1539 2011-07-25 Paolo Carlini <paolo.carlini@oracle.com>
1540
1541 PR c++/49838
1542 * parser.c (cp_parser_perform_range_for_lookup): Early return if
1543 error_operand_p (range).
1544
1545 2011-07-23 Jason Merrill <jason@redhat.com>
1546
1547 PR c++/49823
1548 * parser.c (cp_parser_qualifying_entity): Handle templates.
1549
1550 2011-07-22 Jason Merrill <jason@redhat.com>
1551
1552 PR c++/49793
1553 * typeck2.c (check_narrowing): Downgrade permerror to pedwarn.
1554 Make conditional on -Wnarrowing.
1555
1556 2011-07-22 Ville Voutilainen <ville.voutilainen@gmail.com>
1557
1558 Warn about the use of final/override in non-c++0x mode, and
1559 add __final for non-c++0x mode.
1560 * cp-tree.h (cpp0x_warn_str): Add CPP0X_OVERRIDE_CONTROLS.
1561 * error.c (maybe_warn_cpp0x): Adjust.
1562 * parser.c (cp_parser_virt_specifier_seq_opt): Use it. Add
1563 '__final' as a non-c++0x alternative for 'final'.
1564
1565 2011-07-22 Jason Merrill <jason@redhat.com>
1566 Mark Glisse <marc.glisse@normalesup.org>
1567
1568 PR c++/30112
1569 * decl.c (cp_finish_decl): Apply pragma redefine_extname in
1570 other namespaces as well.
1571 * name-lookup.c (c_linkage_bindings): Define.
1572 (lookup_extern_c_fun_in_all_ns): Rename from
1573 lookup_extern_c_fun_binding_in_all_ns. Return tree.
1574 (pushdecl_maybe_friend_1): Adjust. Copy DECL_ASSEMBLER_NAME.
1575
1576 2011-07-20 Jason Merrill <jason@redhat.com>
1577
1578 * parser.c (cp_parser_initializer_list): Handle C99 .id= and [N]=
1579 designated initializer syntax.
1580 * decl.c (check_array_designated_initializer): Add index parm.
1581 (maybe_deduce_size_from_array_init): Pass it.
1582 (reshape_init_array_1): Likewise.
1583
1584 PR c++/6709 (DR 743)
1585 PR c++/42603 (DR 950)
1586 * parser.c (token_is_decltype, cp_lexer_next_token_is_decltype): New.
1587 (cp_parser_nested_name_specifier_opt): Allow decltype.
1588 (cp_parser_qualifying_entity): Likewise.
1589 (cp_parser_decltype): Replace source tokens with CPP_DECLTYPE.
1590 (cp_parser_simple_type_specifier): Handle decltype as scope.
1591 (cp_parser_base_specifier): Allow decltype.
1592 (cp_parser_base_clause): Don't crash on null base.
1593 * parser.h (CPP_KEYWORD, CPP_TEMPLATE_ID): Move to c-common.h.
1594 (CPP_NESTED_NAME_SPECIFIER, N_CP_TTYPES): Likewise.
1595
1596 2011-07-19 Jason Merrill <jason@redhat.com>
1597
1598 PR c++/49785
1599 * pt.c (coerce_template_parms): Handle non-pack after pack.
1600
1601 2011-07-19 Richard Guenther <rguenther@suse.de>
1602
1603 * call.c (build_special_member_call): Use fold_build_pointer_plus.
1604 * class.c (build_base_path): Likewise.
1605 (convert_to_base_statically): Likewise.
1606 (dfs_accumulate_vtbl_inits): Likewise.
1607 * cp-gimplify.c (cxx_omp_clause_apply_fn): Likewise.
1608 * except.c (expand_start_catch_block): Likewise.
1609 * init.c (expand_virtual_init): Likewise.
1610 (build_new_1): Likewise.
1611 (build_vec_delete_1): Likewise.
1612 (build_vec_delete): Likewise.
1613 * rtti.c (build_headof): Likewise.
1614 (tinfo_base_init): Likewise.
1615 * typeck.c (get_member_function_from_ptrfunc): Likewise.
1616 (cp_build_addr_expr_1): Likewise.
1617 * typeck2.c (build_m_component_ref): Likewise.
1618
1619 2011-07-18 Martin Jambor <mjambor@suse.cz>
1620
1621 * parser.c (cp_parser_parameter_declaration_list): Initialize
1622 parenthesized_p.
1623
1624 2011-07-16 Jason Merrill <jason@redhat.com>
1625
1626 * pt.c (tinst_level_tick, last_template_error_tick): Replace with
1627 last_error_tinst_level.
1628 (push_tinst_level, pop_tinst_level): Adjust.
1629 (problematic_instantiation_changed): Adjust.
1630 (record_last_problematic_instantiation): Adjust.
1631 * error.c (cp_print_error_function): Don't print
1632 current_function_decl if we're in a template instantiation context.
1633 (print_instantiation_full_context): Always print first line.
1634
1635 2011-07-16 Nathan Froyd <froydnj@codesourcery.com>
1636 Jason Merrill <jason@redhat.com>
1637
1638 PR c++/45329
1639 PR c++/48934
1640 * cp-tree.h (fn_type_unification): Add `bool' parameter.
1641 * pt.c (enum template_base_result): Define.
1642 (unify_success, unify_unknown): Define.
1643 (unify_parameter_deduction_failure): Define.
1644 (unify_invalid, unify_cv_qual_mismatch, unify_type_mismatch): Define.
1645 (unify_parameter_pack_mismatch): Define.
1646 (unify_parameter_pack_inconsistent): Define.
1647 (unify_ptrmem_cst_mismatch, unify_vla_arg): Define.
1648 (unify_expression_unequal, unify_inconsistency): Define.
1649 (unify_method_type_error, unify_arity): Likewise.
1650 (unify_too_many_parameters, unify_too_few_parameters): Define.
1651 (unify_arg_conversion, unify_no_common_base): Define.
1652 (unify_illformed_ptrmem_cst_expr): Define.
1653 (unify_substitution_failure): Define.
1654 (unify_inconsistent_template_template_parameters): Define.
1655 (unify_template_deduction_failure): Define.
1656 (unify_template_argument_mismatch): Define.
1657 (unify_overload_resolution_failure): Define.
1658 (comp_template_args_with_info): New function, split out from...
1659 (comp_template_args): ...here. Call it.
1660 (deduction_tsubst_fntype): Add `complain' parameter'. Pass it
1661 to tsubst.
1662 (unify): Add `explain_p' parameter. Pass to all relevant calls.
1663 Call above status functions when appropriate.
1664 (resolve_overloaded_unification, try_one_overload): Likewise.
1665 (type_unification, type_unification_real): Likewise.
1666 (unify_pack_expansion): Likewise.
1667 (get_template_base, try_class_unification): Likewise.
1668 (get_bindings, more_specialized_fn): Pass false to unification
1669 calls.
1670 (get_class_bindings, do_auto_deduction): Likewise.
1671 (convert_nontype_argument): Likewise.
1672 (fn_type_unification): Likewise. Pass tf_warning_or_error if
1673 explain_p.
1674 (get_template_base): Add `explain_p' parameter and pass it to
1675 try_class_unification. Return an enum template_base_result.
1676 * class.c (resolve_address_of_overloaded_function): Pass false to
1677 fn_type_unification.
1678 * call.c (enum rejection_reason_code): Add new codes.
1679 (struct rejection_reason): Add template_unification field.
1680 Add template_instantiation field.
1681 (template_unification_rejection): Define.
1682 (template_unification_error_rejection): Define.
1683 (template_instantiation_rejection): Define.
1684 (invalid_copy_with_fn_template_rejection): Define.
1685 (add_template_candidate): Pass false to unify.
1686 Provide more rejection reasons when possible.
1687 (print_template_unification_rejection): Define.
1688 (print_arity_rejection): Define, split out from...
1689 (print_z_candidate): ...here. Add cases for new rejection
1690 reasons.
1691
1692 2011-07-15 Jason Merrill <jason@redhat.com>
1693
1694 * Make-lang.in (check-g++-strict-gc): New.
1695 (cp/except.o): Depend on gt-cp-except.h
1696 * except.c: Include gt-cp-except.h.
1697 * config-lang.in (gtfiles): Add cp/except.c.
1698 * decl2.c (mark_used): Adjust constexpr condition, set
1699 function_depth around template instantiation.
1700 * parser.c (cp_parser_lambda_body): Set function_depth.
1701 * semantics.c (maybe_add_lambda_conv_op): Likewise.
1702
1703 PR testsuite/49741
1704 * Make-lang.in (check-c++0x): Use --extra_opts instead of--tool_opts.
1705
1706 2011-07-13 Jason Merrill <jason@redhat.com>
1707
1708 * Make-lang.in (check-c++0x): New.
1709
1710 2011-07-13 Richard Sandiford <richard.sandiford@linaro.org>
1711
1712 * typeck2.c (split_nonconstant_init_1): Pass the initializer directly,
1713 rather than a pointer to it. Return true if the whole of the value
1714 was initialized by the generated statements. Use
1715 complete_ctor_at_level_p instead of count_type_elements.
1716
1717 2011-07-12 Diego Novillo <dnovillo@google.com>
1718
1719 * name-lookup.h (cp_binding_level): Rename from cxx_scope.
1720 Update all users.
1721 (struct cp_binding_level): Fix indentation.
1722
1723 2011-07-11 Jason Merrill <jason@redhat.com>
1724
1725 PR c++/49672
1726 * pt.c (extract_fnparm_pack): Split out from...
1727 (make_fnparm_pack): ...here.
1728 (instantiate_decl): Handle non-pack parms after a pack.
1729 * semantics.c (maybe_add_lambda_conv_op): Don't in a template.
1730
1731 * decl2.c (decl_constant_var_p): Use decl_maybe_constant_var_p.
1732
1733 PR c++/44609
1734 * cp-tree.h (struct tinst_level): Add errors field.
1735 * pt.c (neglectable_inst_p, limit_bad_template_recurson): New.
1736 (push_tinst_level): Don't start another decl in that case.
1737 (reopen_tinst_level): Adjust errors field.
1738 * decl2.c (cp_write_global_declarations): Don't complain about
1739 undefined inline if its template was defined.
1740 * mangle.c (mangle_decl_string): Handle failure from push_tinst_level.
1741
1742 2011-07-10 Jason Merrill <jason@redhat.com>
1743
1744 PR c++/49691
1745 * parser.c (cp_parser_late_return_type_opt): Check quals parameter
1746 rather than current_class_type to determine whether to set 'this'.
1747 (cp_parser_direct_declarator): Pass -1 to quals if member_p is false.
1748 (cp_parser_init_declarator): Pass down member_p.
1749
1750 2011-07-09 Jason Merrill <jason@redhat.com>
1751
1752 * tree.c (build_vec_init_elt): Strip TARGET_EXPR.
1753
1754 2011-07-08 Jason Merrill <jason@redhat.com>
1755
1756 PR c++/45437
1757 * typeck.c (cp_build_modify_expr): Preevaluate RHS.
1758
1759 * method.c (use_thunk): Use cgraph_add_to_same_comdat_group.
1760 * optimize.c (maybe_clone_body): Likewise.
1761 * semantics.c (maybe_add_lambda_conv_op): Likewise.
1762
1763 PR c++/45603
1764 * decl.c (expand_static_init): Don't get confused by user
1765 declaration of __cxa_guard_acquire.
1766
1767 * typeck.c (cp_apply_type_quals_to_decl): Don't check
1768 COMPLETE_TYPE_P either.
1769
1770 PR c++/49673
1771 * typeck.c (cp_apply_type_quals_to_decl): Don't check
1772 TYPE_NEEDS_CONSTRUCTING.
1773
1774 2011-07-07 Jason Merrill <jason@redhat.com>
1775
1776 PR c++/49663
1777 * pt.c (push_deduction_access_scope): Preserve
1778 processing_template_decl across push_to_top_level.
1779 And revert:
1780 * class.c (pushclass): Accept NULL argument.
1781 (popclass): Deal with popping null class.
1782 * pt.c (push_access_scope, pop_access_scope): Use them rather than
1783 push_to_top_level/pop_from_top_level.
1784 * name-lookup.c (lookup_name_real_1): Check current_class_type.
1785
1786 2011-07-07 Jakub Jelinek <jakub@redhat.com>
1787
1788 PR c/49644
1789 * typeck.c (cp_build_binary_op): For MULT_EXPR and TRUNC_DIV_EXPR with
1790 one non-complex and one complex argument, call save_expr on both
1791 operands.
1792
1793 2011-07-06 Jason Merrill <jason@redhat.com>
1794
1795 PR c++/49353
1796 * semantics.c (expand_or_defer_fn_1): Clear DECL_EXTERNAL
1797 on kept inlines.
1798
1799 PR c++/49568
1800 * method.c (make_thunk, use_thunk): Copy DECL_COMDAT.
1801
1802 2011-07-05 Jason Merrill <jason@redhat.com>
1803
1804 PR c++/48157
1805 * pt.c (tsubst_qualified_id): Preserve TEMPLATE_ID_EXPR in
1806 partial instantiation.
1807
1808 PR c++/49598
1809 * semantics.c (finish_id_expression): convert_from_reference.
1810
1811 2011-07-05 Richard Guenther <rguenther@suse.de>
1812
1813 * decl.c (cxx_init_decl_processing): Defer building common
1814 tree nodes to c_common_nodes_and_builtins.
1815
1816 2011-07-04 Jason Merrill <jason@redhat.com>
1817
1818 DR 1207
1819 PR c++/49589
1820 * mangle.c (write_expression): Handle 'this'.
1821 * parser.c (cp_parser_postfix_dot_deref_expression): Allow
1822 incomplete *this.
1823 * semantics.c (potential_constant_expression_1): Check that
1824 DECL_CONTEXT is set on 'this'.
1825
1826 * error.c (dump_template_bindings): Don't print typenames
1827 for a partial instantiation.
1828 (dump_function_decl): If we aren't printing function arguments,
1829 print template arguments as <args> rather than [with ...].
1830 (dump_expr): Don't print return type or template header.
1831 [BASELINK]: Use BASELINK_FUNCTIONS rather than get_first_fn.
1832 * pt.c (dependent_template_arg_p): Handle null arg.
1833
1834 * error.c (type_to_string): Avoid redundant akas.
1835
1836 2011-07-01 Jonathan Wakely <jwakely.gcc@gmail.com>
1837
1838 PR c++/49605
1839 * init.c (build_delete): Only warn for sfk_deleting_destructor.
1840
1841 2011-07-01 Jakub Jelinek <jakub@redhat.com>
1842
1843 * Make-lang.in (cp/decl.o): Depend on pointer-set.h.
1844 (cp/class.o): Likewise.
1845 (cp/error.o): Likewise.
1846 (cp/name-lookup.o): Likewise.
1847 (cp/decl2.o): Likewise. Don't depend on $(POINTER_SET_H).
1848
1849 2011-07-01 Jason Merrill <jason@redhat.com>
1850
1851 PR c++/48261
1852 * pt.c (lookup_template_function): Handle non-function.
1853
1854 PR c++/48593
1855 * pt.c (tsubst_qualified_id): Check PTRMEM_OK_P.
1856 * tree.c (build_qualified_name): Set PTRMEM_OK_P.
1857 * semantics.c (finish_parenthesized_expr): Clear PTRMEM_OK_P on
1858 SCOPE_REF, too.
1859 * cp-tree.h (PTRMEM_OK_P): Apply to SCOPE_REF, too.
1860 (QUALIFIED_NAME_IS_TEMPLATE): Switch to lang flag 1.
1861
1862 PR c++/48883
1863 PR c++/49609
1864 * pt.c (resolve_nondeduced_context): Call mark_used.
1865
1866 PR c++/49085
1867 * semantics.c (finish_offsetof): Complain about incomplete type.
1868
1869 2011-06-30 Jason Merrill <jason@redhat.com>
1870
1871 PR c++/49387
1872 * rtti.c (get_tinfo_decl): Call complete_type.
1873
1874 PR c++/49569
1875 * method.c (implicitly_declare_fn): Set DECL_PARM_LEVEL and
1876 DECL_PARM_INDEX on rhs parm.
1877
1878 * pt.c (iterative_hash_template_arg): Use cp_tree_operand_length.
1879
1880 PR c++/49355
1881 * tree.c (stabilize_init): Handle aggregate initialization.
1882
1883 PR c++/48481
1884 * name-lookup.c (struct arg_lookup): Add fn_set.
1885 (add_function): Check it.
1886 (lookup_arg_dependent_1): Initialize it.
1887
1888 2011-06-29 Jason Merrill <jason@redhat.com>
1889
1890 PR c++/49216
1891 * init.c (build_new_1): Pass {} down to build_vec_init.
1892 (build_vec_init): Handle it.
1893
1894 DR 1207
1895 PR c++/49003
1896 * cp-tree.h (struct saved_scope): Add x_current_class_ptr,
1897 x_current_class_ref.
1898 (current_class_ptr, current_class_ref): Use them.
1899 * decl.c (build_this_parm): Handle getting the class type.
1900 * parser.c (cp_parser_late_return_type_opt): Set up 'this'
1901 for use within the trailing return type.
1902
1903 * pt.c (tsubst_decl) [VAR_DECL]: In unevaluated operand,
1904 don't tsubst DECL_INITIAL unless our type use auto.
1905
1906 PR c++/49520
1907 * semantics.c (constexpr_fn_retval): Handle CLEANUP_POINT_EXPR here.
1908 (massage_constexpr_body): Not here.
1909
1910 PR c++/49554
1911 * semantics.c (lambda_proxy_type): New.
1912 (build_capture_proxy): Use it.
1913 * cp-tree.h (DECLTYPE_FOR_LAMBDA_PROXY): New.
1914 * pt.c (tsubst) [DECLTYPE_TYPE]: Use them.
1915
1916 PR c++/45923
1917 * class.c (explain_non_literal_class): New.
1918 (finalize_literal_type_property): Call it.
1919 * cp-tree.h: Declare it.
1920 * semantics.c (ensure_literal_type_for_constexpr_object): Call it.
1921 (is_valid_constexpr_fn): Likewise.
1922 (massage_constexpr_body): Split out from...
1923 (register_constexpr_fundef): ...here.
1924 (is_instantiation_of_constexpr): New.
1925 (expand_or_defer_fn_1): Leave DECL_SAVED_TREE alone in that case.
1926 (explain_invalid_constexpr_fn): New.
1927 (cxx_eval_call_expression): Call it.
1928 (potential_constant_expression_1): Likewise. Avoid redundant errors.
1929 * method.c (process_subob_fn): Diagnose non-constexpr.
1930 (walk_field_subobs): Likewise.
1931 (synthesized_method_walk): Don't shortcut if we want diagnostics.
1932 (explain_implicit_non_constexpr): New.
1933 (defaulted_late_check): Use it.
1934 * call.c (build_cxx_call): Remember location.
1935
1936 * method.c (maybe_explain_implicit_delete): Use pointer_set
1937 instead of htab.
1938
1939 * class.c (finalize_literal_type_property): Update conditions.
1940 * method.c (defaulted_late_check): Set TYPE_HAS_CONSTEXPR_CTOR.
1941
1942 * tree.c (build_vec_init_expr): Don't add TARGET_EXPR.
1943 * typeck2.c (digest_init_r): Handle VEC_INIT_EXPR.
1944 * semantics.c (cxx_eval_vec_init_1): Correct type.
1945
1946 * init.c (build_value_init): Decide whether or not to zero-initialize
1947 based on user-providedness of default ctor, not any ctor.
1948 (build_value_init_noctor): Adjust assert.
1949
1950 DR 990
1951 * call.c (convert_like_real) [ck_user]: Handle value-initialization.
1952 (build_new_method_call_1): Likewise.
1953 * init.c (expand_default_init): Handle direct list-initialization
1954 of aggregates.
1955
1956 2011-06-27 Jakub Jelinek <jakub@redhat.com>
1957
1958 * cp-tree.h (union lang_tree_node): Use it in chain_next expression.
1959
1960 2011-06-26 Jason Merrill <jason@redhat.com>
1961
1962 PR c++/49528
1963 * semantics.c (potential_constant_expression_1): Check
1964 for non-literality rather than cleanup.
1965 (cxx_eval_constant_expression): Likewise.
1966
1967 PR c++/49528
1968 * semantics.c (potential_constant_expression_1): A TARGET_EXPR
1969 with a cleanup isn't constant.
1970 (cxx_eval_constant_expression): Likewise.
1971 * init.c (expand_default_init): Use maybe_constant_init.
1972
1973 2011-06-24 Jakub Jelinek <jakub@redhat.com>
1974
1975 PR c++/46400
1976 * cp-tree.h (union lang_tree_node): Use TYPE_NEXT_VARIANT
1977 instead of TYPE_CHAIN for chain_next for types.
1978
1979 2011-06-23 Gabriel Charette <gchare@google.com>
1980
1981 * name-lookup.h (cp_binding_level): Removed unused
1982 member names_size. Update all users.
1983
1984 2011-06-23 Jason Merrill <jason@redhat.com>
1985
1986 * typeck2.c (build_functional_cast): Strip cv-quals for value init.
1987 * init.c (build_zero_init_1): Not here.
1988
1989 PR c++/35255
1990 * pt.c (resolve_overloaded_unification): Fix DR 115 handling.
1991
1992 2011-06-23 Paolo Carlini <paolo.carlini@oracle.com>
1993
1994 PR c++/44625
1995 * decl2.c (build_anon_union_vars): Early return error_mark_node
1996 for a nested anonymous struct.
1997
1998 2011-06-23 Jason Merrill <jason@redhat.com>
1999
2000 PR c++/49507
2001 * decl2.c (mark_used): Don't call synthesize_method for
2002 functions defaulted outside the class.
2003
2004 * optimize.c (maybe_clone_body): Set linkage flags before
2005 cgraph_same_body_alias.
2006
2007 PR c++/49440
2008 * class.c (set_linkage_according_to_type): Hand off to
2009 determine_visibility.
2010
2011 PR c++/49395
2012 * init.c (build_zero_init_1): Strip cv-quals from scalar types.
2013
2014 PR c++/36435
2015 * pt.c (most_specialized_instantiation): Do check return types.
2016
2017 2011-06-22 Jason Merrill <jason@redhat.com>
2018
2019 PR c++/49260
2020 * call.c (build_call_a): Set cp_function_chain->can_throw here.
2021 (build_cxx_call): Not here.
2022
2023 2011-06-21 Jason Merrill <jason@redhat.com>
2024
2025 PR c++/49172
2026 * decl.c (cp_finish_decl): Adjust init_const_expr_p for refs.
2027 (grokdeclarator): constexpr doesn't apply const for refs.
2028 * parser.c (cp_parser_initializer_clause): Don't call
2029 maybe_constant_value here.
2030 * call.c (initialize_reference): Handle constexpr.
2031
2032 PR c++/49482
2033 * semantics.c (maybe_add_lambda_conv_op): Call mark_exp_read for
2034 static fn parameters.
2035
2036 * call.c (add_builtin_candidates): Use cv_unqualified rather than
2037 TYPE_MAIN_VARIANT.
2038 * pt.c (tsubst_arg_types): Likewise.
2039 * except.c (build_throw): Use cv_unqualified.
2040
2041 PR c++/49418
2042 * call.c (cxx_type_promotes_to): Don't strip cv-quals.
2043 * semantics.c (lambda_return_type): Strip them here.
2044
2045 2011-06-21 Andrew MacLeod <amacleod@redhat.com>
2046
2047 * semantics.c: Add sync_ or SYNC__ to builtin names.
2048
2049 2011-06-20 Jason Merrill <jason@redhat.com>
2050
2051 PR c++/49216
2052 * init.c (build_vec_init): Don't try to use a CONSTRUCTOR when
2053 base is a pointer.
2054 * typeck2.c (process_init_constructor_array): Use {} for classes,
2055 too.
2056 * call.c (convert_like_real): Handle substitution failure.
2057
2058 PR c++/48138
2059 * pt.c (canonicalize_type_argument): New.
2060 (convert_template_argument, unify): Use it.
2061
2062 PR c++/47080
2063 * call.c (rejection_reason_code): Add rr_explicit_conversion.
2064 (print_z_candidate): Handle it.
2065 (explicit_conversion_rejection): New.
2066 (build_user_type_conversion_1): Reject an explicit conversion
2067 function that requires more than a qualification conversion.
2068
2069 PR c++/47635
2070 * decl.c (grokdeclarator): Don't set ctype to an ENUMERAL_TYPE.
2071
2072 PR c++/48138
2073 * tree.c (strip_typedefs): Use build_aligned_type.
2074
2075 PR c++/49205
2076 * call.c (sufficient_parms_p): Allow parameter packs too.
2077
2078 PR c++/43321
2079 * semantics.c (describable_type): Remove.
2080 * cp-tree.h: Likewise.
2081 * decl.c (cp_finish_decl): Don't call it.
2082 * init.c (build_new): Likewise.
2083 * parser.c (cp_parser_omp_for_loop): Likewise.
2084 * pt.c (tsubst_decl): Likewise.
2085 (do_auto_deduction): If we fail in a template, try again
2086 at instantiation time.
2087
2088 PR c++/43831
2089 * parser.c (cp_parser_lambda_introducer): Complain about redundant
2090 captures.
2091 * semantics.c (add_capture): Likewise.
2092 (register_capture_members): Clear IDENTIFIER_MARKED.
2093
2094 2011-06-17 Jason Merrill <jason@redhat.com>
2095
2096 PR c++/49458
2097 * call.c (convert_class_to_reference_1): Allow binding function
2098 lvalue to rvalue reference.
2099
2100 PR c++/43912
2101 Generate proxy VAR_DECLs for better lambda debug info.
2102 * cp-tree.h (FUNCTION_NEEDS_BODY_BLOCK): Add lambda operator().
2103 (LAMBDA_EXPR_PENDING_PROXIES): New.
2104 (struct tree_lambda_expr): Add pending_proxies.
2105 * name-lookup.c (pushdecl_maybe_friend_1): Handle capture shadowing.
2106 (qualify_lookup): Use is_lambda_ignored_entity.
2107 * parser.c (cp_parser_lambda_expression): Don't adjust field names.
2108 Call insert_pending_capture_proxies.
2109 (cp_parser_lambda_introducer): Use this_identifier.
2110 (cp_parser_lambda_declarator_opt): Call the object parameter
2111 of the op() "__closure" instead of "this".
2112 (cp_parser_lambda_body): Call build_capture_proxy.
2113 * semantics.c (build_capture_proxy, is_lambda_ignored_entity): New.
2114 (insert_pending_capture_proxies, insert_capture_proxy): New.
2115 (is_normal_capture_proxy, is_capture_proxy): New.
2116 (add_capture): Add __ to field names here, return capture proxy.
2117 (add_default_capture): Use this_identifier, adjust to expect
2118 add_capture to return a capture proxy.
2119 (outer_lambda_capture_p, thisify_lambda_field): Remove.
2120 (finish_id_expression, lambda_expr_this_capture): Adjust.
2121 (build_lambda_expr): Initialize LAMBDA_EXPR_PENDING_PROXIES.
2122 * pt.c (tsubst_copy_and_build): Check that LAMBDA_EXPR_PENDING_PROXIES
2123 is null.
2124
2125 * name-lookup.c (pushdecl_maybe_friend_1): Do check for shadowing
2126 of artificial locals.
2127
2128 * parser.c (cp_parser_lambda_expression): Clear
2129 LAMBDA_EXPR_THIS_CAPTURE after parsing.
2130 * pt.c (tsubst_copy_and_build): Make sure it isn't set.
2131
2132 * cp-tree.h (struct tree_lambda_expr): Change common to typed.
2133 Move non-pointers to end of struct.
2134
2135 * pt.c (tsubst_decl): Handle DECL_VALUE_EXPR on reference.
2136 * decl.c (check_initializer): Handle DECL_VALUE_EXPR_P.
2137
2138 * semantics.c (finish_non_static_data_member): Preserve dereference
2139 in template.
2140
2141 2011-06-16 Jason Merrill <jason@redhat.com>
2142
2143 PR c++/44160
2144 * parser.c (cp_parser_lambda_body): Share code between
2145 simple and complex cases instead of using cp_parser_function_body.
2146
2147 PR c++/45378
2148 * decl.c (check_initializer): Check narrowing.
2149
2150 PR c++/49229
2151 * pt.c (tsubst_decl) [FUNCTION_DECL]: Handle substitution failure.
2152
2153 PR c++/49251
2154 * semantics.c (finish_id_expression): Mark even dependent
2155 variables as used.
2156
2157 PR c++/49420
2158 * error.c (dump_template_argument): Don't try to omit default
2159 template args from an argument pack.
2160
2161 2011-06-15 H.J. Lu <hongjiu.lu@intel.com>
2162
2163 PR c++/49412
2164 * decl.c (get_dso_handle_node): Mark __dso_handle hidden if
2165 assembler supports hidden visibility.
2166
2167 2011-06-14 Jason Merrill <jason@redhat.com>
2168
2169 PR c++/49107
2170 * cp-tree.h (DEFERRED_NOEXCEPT_SPEC_P): Handle overload.
2171 * method.c (defaulted_late_check): Only maybe_instantiate_noexcept
2172 if the declaration had an exception-specifier.
2173 (process_subob_fn): Don't maybe_instantiate_noexcept.
2174 * pt.c (maybe_instantiate_noexcept): Handle overload.
2175 * typeck2.c (nothrow_spec_p_uninst): New.
2176 (merge_exception_specifiers): Add 'fn' parm. Build up overload.
2177 * typeck.c (merge_types): Adjust.
2178
2179 * pt.c (deduction_tsubst_fntype): Don't save input_location.
2180 (maybe_instantiate_noexcept): Likewise.
2181
2182 2011-06-14 Joseph Myers <joseph@codesourcery.com>
2183
2184 * Make-lang.in (cp/method.o): Update dependencies.
2185 * method.c: Include common/common-target.h.
2186 (use_thunk): Use targetm_common.have_named_sections.
2187
2188 2011-06-14 Steve Ellcey <sje@cup.hp.com>
2189
2190 * decl.c (cxx_init_decl_processing): Use ptr_mode instead of Pmode.
2191
2192 2011-06-14 Jason Merrill <jason@redhat.com>
2193
2194 * error.c (type_to_string): Print typedef-stripped version too.
2195
2196 PR c++/49117
2197 * call.c (perform_implicit_conversion_flags): Print source type as
2198 well as expression.
2199
2200 PR c++/49389
2201 * typeck2.c (build_m_component_ref): Preserve rvalueness.
2202
2203 PR c++/49369
2204 * class.c (build_base_path): Fix cv-quals in unevaluated context.
2205
2206 PR c++/49290
2207 * semantics.c (cxx_fold_indirect_ref): Local, more permissive copy
2208 of fold_indirect_ref_1.
2209 (cxx_eval_indirect_ref): Use it.
2210
2211 2011-06-11 Jan Hubicka <jh@suse.cz>
2212
2213 * decl2.c (cp_write_global_declarations): Process aliases; look trhough
2214 same body aliases.
2215
2216 2011-06-10 Paolo Carlini <paolo.carlini@oracle.com>
2217
2218 PR c++/41769
2219 * decl.c (grokdeclarator): Reject operator names in parameters.
2220
2221 2011-06-10 Jan Hubicka <jh@suse.cz>
2222
2223 * decl2.c (clear_decl_external): New functoin.
2224 (cp_write_global_declarations): Use it.
2225
2226 2011-06-10 Paolo Carlini <paolo.carlini@oracle.com>
2227
2228 * cp-tree.h (error_operand_p): Remove.
2229
2230 2011-06-09 David Krauss <potswa@mac.com>
2231
2232 PR c++/49118
2233 * typeck2.c (build_x_arrow): Push fake template context
2234 to produce diagnostic on acyclic endless operator-> drill-down.
2235 * call.c (build_new_op): Change Boolean overload status
2236 value to a pointer to the overload function.
2237 * cp-tree.h: Likewise.
2238 * typeck.c: Likewise.
2239 * parser.c: Likewise.
2240 * decl2.c: Likewise.
2241 * pt.c: Likewise.
2242
2243 2011-06-09 Jason Merrill <jason@redhat.com>
2244
2245 * semantics.c (maybe_constant_value): Handle overflowed input.
2246 (non_const_var_error): Handle non-constant DECL_INITIAL.
2247
2248 * pt.c (build_non_dependent_expr): Use fold_non_dependent_expr_sfinae.
2249
2250 * parser.c (cp_parser_constant_expression): Just return the
2251 non-constant expression.
2252
2253 * semantics.c (finish_compound_literal): Set TREE_HAS_CONSTRUCTOR.
2254
2255 2011-06-09 Paolo Carlini <paolo.carlini@oracle.com>
2256
2257 PR c++/29003
2258 * decl.c (grokdeclarator): Reject operator names in typedefs.
2259
2260 2011-06-08 Jason Merrill <jason@redhat.com>
2261
2262 PR c++/49107
2263 * cp-tree.def (DEFERRED_NOEXCEPT): New.
2264 * cp-tree.h (struct tree_deferred_noexcept): New.
2265 (DEFERRED_NOEXCEPT_PATTERN, DEFERRED_NOEXCEPT_ARGS): New.
2266 (DEFERRED_NOEXCEPT_SPEC_P): New.
2267 (enum cp_tree_node_structure_enum): Add TS_CP_DEFERRED_NOEXCEPT.
2268 (union lang_tree_node): Add tree_deferred_noexcept.
2269 (maybe_instantiate_noexcept): Declare.
2270 * cp-objcp-common.c (cp_tree_size): Handle DEFERRED_NOEXCEPT.
2271 * error.c (dump_exception_spec): Likewise.
2272 * cxx-pretty-print.c (pp_cxx_exception_specification): Likewise.
2273 * ptree.c (cxx_print_xnode): Likewise.
2274 * tree.c (cp_tree_equal): Likewise.
2275 * decl.c (cp_tree_node_structure): Likewise.
2276 (duplicate_decls): Call maybe_instantiate_noexcept.
2277 * except.c (build_noexcept_spec): Handle DEFERRED_NOEXCEPT.
2278 (nothrow_spec_p, type_noexcept_p, type_throw_all_p): Check
2279 DEFERRED_NOEXCEPT_SPEC_P.
2280 * typeck2.c (merge_exception_specifiers): Likewise.
2281 * decl2.c (mark_used): Call maybe_instantiate_noexcept.
2282 * method.c (process_subob_fn, defaulted_late_check): Likewise.
2283 * pt.c (tsubst_exception_specification): Add defer_ok parm.
2284 Build DEFERRED_NOEXCEPT.
2285 (maybe_instantiate_noexcept): New.
2286 (tsubst, regenerate_decl_from_template, instantiate_decl): Adjust.
2287 * search.c (check_final_overrider): Call maybe_instantiate_noexcept.
2288
2289 * semantics.c (potential_constant_expression_1): Handle destructor
2290 call.
2291
2292 2011-06-08 Jakub Jelinek <jakub@redhat.com>
2293
2294 * cp-tree.h (struct tinst_level): Add chain_next GTY
2295 markup.
2296
2297 2011-06-08 Jason Merrill <jason@redhat.com>
2298
2299 PR c++/49322
2300 * pt.c (deduction_tsubst_fntype): Don't free the tinst entry
2301 if a pending_template entry is pointing at it.
2302
2303 2011-06-07 Jason Merrill <jason@redhat.com>
2304
2305 PR c++/48969
2306 PR c++/44175
2307 * error.c (subst_to_string): New.
2308 (cp_printer): Use it for 'S'.
2309 (print_instantiation_partial_context_line): Handle subst context.
2310 * pt.c (push_tinst_level): Handle subst context.
2311 (deduction_tsubst_fntype): Don't track specific substitutions.
2312 Use push_tinst_level.
2313
2314 * pt.c (deduction_tsubst_fntype): Use push_deduction_access_scope.
2315 (fn_type_unification): Don't call push_deduction_access_scope here.
2316
2317 2011-06-06 Jason Merrill <jason@redhat.com>
2318
2319 PR c++/48780
2320 * typeck.c (perform_integral_promotions): Don't promote scoped enums.
2321 * call.c (convert_arg_to_ellipsis): Promote them here in old ABI.
2322
2323 2011-06-06 Nicola Pero <nicola.pero@meta-innovation.com>,
2324
2325 PR obj-c++/48275
2326 * parser.c (cp_parser_objc_at_property_declaration): Allow setter
2327 and getter names to use all the allowed method names.
2328
2329 2011-06-06 Jason Merrill <jason@redhat.com>
2330
2331 PR c++/49298
2332 * semantics.c (potential_constant_expression_1): Handle FIELD_DECL.
2333
2334 PR objc++/49221
2335 * decl.c (cp_finish_decl): Check DECL_FUNCTION_SCOPE_P rather than
2336 at_function_scope_p.
2337
2338 PR c++/49134
2339 * tree.c (build_target_expr): Deal with ARM ABI tweaks.
2340
2341 2011-06-04 Jonathan Wakely <jwakely.gcc@gmail.com>
2342
2343 * init.c (build_delete): Warn when deleting type with non-virtual
2344 destructor.
2345
2346 2011-06-03 Jakub Jelinek <jakub@redhat.com>
2347
2348 PR c++/49276
2349 * mangle.c (write_nested_name): Use CP_DECL_CONTEXT instead of
2350 DECL_CONTEXT.
2351
2352 2011-06-01 Jason Merrill <jason@redhat.com>
2353
2354 * pt.c (build_non_dependent_expr): Remove special handling of
2355 REFERENCE_REF_P.
2356
2357 PR c++/44175
2358 * pt.c (template_args_equal): Handle one arg being NULL_TREE.
2359 (deduction_tsubst_fntype): Handle excessive non-infinite recursion.
2360
2361 PR c++/49253
2362 * typeck2.c (build_x_arrow): Don't use build_min_nt.
2363
2364 2010-05-31 Fabien Chêne <fabien@gcc.gnu.org>
2365
2366 PR c++/48010
2367 * name-lookup.c (supplement_binding_1): If the old binding was a
2368 type name, also check that the DECL actually refers to the same
2369 type or is not a type.
2370
2371 2011-05-31 Jason Merrill <jason@redhat.com>
2372
2373 PR c++/44870
2374 * tree.c (lvalue_kind): Recurse on NON_DEPENDENT_EXPR. Handle
2375 ARROW_EXPR, TYPEID_EXPR, and arbitrary class-valued expressions.
2376 (build_min_non_dep): Preserve reference refs.
2377 (build_min_non_dep_call_vec): Likewise
2378
2379 2011-05-30 Jakub Jelinek <jakub@redhat.com>
2380
2381 PR c++/49223
2382 * semantics.c (finish_omp_clauses): Call require_complete_type
2383 even for copyin/copyprivate clauses. Only call
2384 cxx_omp_create_clause_info if inner_type is COMPLETE_TYPE_P.
2385
2386 2011-05-28 Jason Merrill <jason@redhat.com>
2387
2388 PR c++/46124
2389 * parser.c (cp_parser_lambda_expression): Improve error recovery.
2390 (cp_parser_lambda_declarator_opt): Likewise. Return bool.
2391
2392 2011-05-27 Jason Merrill <jason@redhat.com>
2393
2394 PR c++/47277
2395 * parser.c (cp_parser_pseudo_destructor_name): Commit to parse
2396 after we see the ~.
2397
2398 * mangle.c (mangle_decl_string): Make sure we don't try to mangle
2399 templates.
2400
2401 PR c++/47049
2402 * semantics.c (maybe_add_lambda_conv_op): Fix COMDAT sharing.
2403 * decl.c (start_preparsed_function): Don't call comdat_linkage for
2404 a template.
2405
2406 PR c++/47132
2407 * mangle.c (write_expression): Handle MODOP_EXPR.
2408
2409 PR c++/47277
2410 * parser.c (cp_parser_unqualified_id): Don't check
2411 constructor_name_p for enums.
2412
2413 PR c++/47687
2414 * pt.c (dependent_type_p_r): Avoid infinite recursion.
2415
2416 PR c++/48284
2417 * error.c (dump_expr) [COMPONENT_REF]: Use pp_cxx_dot
2418 with INDIRECT_REF of REFERENCE_TYPE.
2419
2420 PR c++/49181
2421 * pt.c (get_mostly_instantiated_function_type): Use push_access_scope.
2422
2423 2011-05-27 Nathan Froyd <froydnj@codesourcery.com>
2424
2425 * cp-tree.h (building_stmt_tree): Delete.
2426 * decl.c (save_function_data): Tweak initializer for x_cur_stmt_list.
2427 (build_aggr_init_full_exprs): Call building_stmt_list_p
2428 instead of building_stmt_tree.
2429 (initialize_local_var): Likewise.
2430 (finish_function): Likewise.
2431 * decl2.c (finish_anon_union): Likewise.
2432 * init.c (begin_init_stmts): Likewise.
2433 (finish_init_stmts): Likewise.
2434 (expand_aggr_init_1): Likewise.
2435 * name-lookup.c (do_local_using_decl): Likewise.
2436 (do_namespace_alias): Likewise.
2437 (do_using_directive): Likewise.
2438 (cp_emit_debug_info_for_using): Likewise.
2439 * semantics.c (add_stmt): Assert that stmt_list_stack is non-empty.
2440
2441 2011-05-27 Paolo Carlini <paolo.carlini@oracle.com>
2442
2443 PR c++/42056
2444 * typeck2.c (build_functional_cast): Complain early for invalid uses
2445 of 'auto' and set type to error_mark_node.
2446
2447 2011-05-26 Jason Merrill <jason@redhat.com>
2448
2449 PR c++/47721
2450 * parser.c (cp_parser_member_declaration): Allow friend T.
2451 * friend.c (make_friend_class): Ignore non-classes.
2452 * pt.c (instantiate_class_template_1): Handle TEMPLATE_TYPE_PARM.
2453
2454 DR 1004
2455 * pt.c (convert_template_argument): Don't complain about using
2456 injected-class-name as template template argument.
2457
2458 PR c++/47956
2459 * decl.c (check_static_variable_definition): Now static.
2460 (cp_finish_decl): Call it here.
2461 (grokdeclarator): Not here.
2462 * pt.c (instantiate_class_template_1): Or here.
2463 * cp-tree.h: Don't declare it.
2464
2465 2011-05-26 Janis Johnson <janis187@us.ibm.com>
2466 Nathan Froyd <froydnj@codesourcery.com>
2467
2468 PR c++/2288
2469 PR c++/18770
2470 * name-lookup.h (enum scope_kind): Add sk_cond.
2471 * name-lookup.c (pushdecl_maybe_friend): Get scope of shadowed local.
2472 Detect and report error for redeclaration from for-init or if
2473 or switch condition.
2474 (begin_scope): Handle sk_cond.
2475 * semantics.c (begin_if_stmt): Use sk_cond.
2476 (begin switch_stmt): Ditto.
2477
2478 2011-05-26 Jason Merrill <jason@redhat.com>
2479
2480 PR c++/48211
2481 * name-lookup.h (cp_class_binding): Make base a pointer.
2482 * name-lookup.c (new_class_binding): Adjust.
2483 (poplevel_class): Adjust.
2484
2485 PR c++/48424
2486 * decl.c (grokparms): Function parameter packs don't need to
2487 go at the end.
2488 * pt.c (type_unification_real): But they aren't deduced otherwise.
2489
2490 2011-05-25 Jason Merrill <jason@redhat.com>
2491
2492 PR c++/48536
2493 * decl.c (build_enumerator): If incremented enumerator won't fit in
2494 previous integral type, find one it will fit in.
2495
2496 PR c++/48599
2497 * decl.c (create_array_type_for_decl): Complain about array of auto.
2498
2499 PR c++/44994
2500 PR c++/49156
2501 * error.c (dump_template_bindings): Set processing_template_decl
2502 for a partial instantiation.
2503
2504 PR c++/45401
2505 * decl.c (grokdeclarator): Don't change type when adding rvalue ref
2506 to another reference type.
2507
2508 PR c++/44311
2509 * decl.c (case_conversion): New.
2510 (finish_case_label): Use it.
2511
2512 * ptree.c (cxx_print_xnode): Handle ARGUMENT_PACK_SELECT.
2513
2514 PR c++/45698
2515 * pt.c (dependent_template_arg_p): See through ARGUMENT_PACK_SELECT.
2516
2517 PR c++/46005
2518 * decl.c (grokdeclarator): Complain about auto typedef.
2519
2520 PR c++/46245
2521 * decl.c (grokdeclarator): Complain later for auto parameter.
2522 * pt.c (splice_late_return_type): Handle use in a template
2523 type-parameter.
2524
2525 PR c++/46696
2526 * typeck.c (cp_build_modify_expr): Check DECL_DEFAULTED_FN.
2527
2528 PR c++/47184
2529 * parser.c (cp_parser_parameter_declaration): Recognize
2530 list-initialization.
2531 (cp_parser_direct_declarator): Check for the closing
2532 paren before parsing definitely.
2533
2534 PR c++/48935
2535 * parser.c (cp_parser_constructor_declarator_p): Don't check
2536 constructor_name_p for enums.
2537 (cp_parser_diagnose_invalid_type_name): Correct error message.
2538
2539 PR c++/45418
2540 * init.c (perform_member_init): Handle list-initialization
2541 of array of non-trivial class type.
2542
2543 PR c++/45080
2544 * pt.c (instantiate_class_template_1): Call maybe_add_lambda_conv_op.
2545 * semantics.c (lambda_function): Check COMPLETE_OR_OPEN_TYPE_P.
2546
2547 PR c++/48292
2548 * pt.c (tsubst_decl) [PARM_DECL]: Handle partial instantiation of
2549 function parameter pack.
2550 (tsubst_pack_expansion): Likewise.
2551
2552 * cp-objcp-common.c (cp_common_init_ts): TYPE_ARGUMENT_PACK has
2553 TS_COMMON.
2554
2555 2011-05-25 Jakub Jelinek <jakub@redhat.com>
2556
2557 * cp-objcp-common.c (cp_common_init_ts): Mark CTOR_INITIALIZER
2558 as TS_TYPED.
2559
2560 PR c++/49136
2561 * semantics.c (cxx_eval_bit_field_ref): Handle the
2562 case when BIT_FIELD_REF doesn't cover only a single field.
2563
2564 2011-05-24 Jason Merrill <jason@redhat.com>
2565
2566 PR c++/49042
2567 * pt.c (get_mostly_instantiated_function_type): Use
2568 push_deferring_access_checks rather than set flag_access_control.
2569
2570 2011-05-24 Nicola Pero <nicola.pero@meta-innovation.com>,
2571
2572 * parser.c (cp_parser_objc_class_ivars): Deal gracefully with a
2573 syntax error in declaring an ObjC instance variable.
2574
2575 2011-05-24 Jason Merrill <jason@redhat.com>
2576
2577 PR c++/48884
2578 * class.c (pushclass): Accept NULL argument.
2579 (popclass): Deal with popping null class.
2580 * pt.c (push_access_scope, pop_access_scope): Use them rather than
2581 push_to_top_level/pop_from_top_level.
2582 (push_deduction_access_scope, pop_defarg_context): New.
2583 (fn_type_unification): Use them.
2584 * name-lookup.c (lookup_name_real_1): Check current_class_type.
2585
2586 2011-05-24 Paolo Carlini <paolo.carlini@oracle.com>
2587
2588 * decl.c (grokdeclarator): Use current_class_name.
2589
2590 2011-05-24 Joseph Myers <joseph@codesourcery.com>
2591
2592 * Make-lang.in (GXX_OBJS): Remove prefix.o.
2593 (g++$(exeext)): Use libcommon-target.a.
2594 (CXX_C_OBJS): Remove prefix.o.
2595
2596 2011-05-23 Jason Merrill <jason@redhat.com>
2597
2598 * pt.c (tsubst_copy_and_build): Use current_class_name.
2599
2600 PR c++/49102
2601 * call.c (convert_arg_to_ellipsis): Call force_rvalue.
2602
2603 PR c++/49105
2604 * typeck.c (cp_build_c_cast): Don't strip cv-quals when
2605 converting to reference.
2606 (build_static_cast_1): Update for glvalues.
2607
2608 PR c++/49105
2609 * typeck.c (build_const_cast_1): Handle rvalue references.
2610
2611 PR c++/47263
2612 * decl.c (use_eh_spec_block): Do use an EH spec block for a
2613 lambda op().
2614
2615 PR c++/49058
2616 * call.c (splice_viable): Be strict in templates.
2617
2618 PR c++/47336
2619 * error.c (dump_template_bindings): Suppress access control.
2620
2621 PR c++/47544
2622 * pt.c (instantiate_decl): Handle =default.
2623
2624 PR c++/48617
2625 * pt.c (invalid_nontype_parm_type_p): Allow DECLTYPE_TYPE.
2626
2627 2011-05-23 Nathan Froyd <froydnj@codesourcery.com>
2628
2629 * call.c (build_over_call): Tweak call to check_function_arguments.
2630 * typeck.c (cp_build_function_call_vec): Likewise.
2631
2632 2011-05-23 Jonathan Wakely <jwakely.gcc@gmail.com>
2633
2634 PR c++/18016
2635 * init.c (perform_member_init): Check for self-initialization.
2636
2637 2011-05-22 Jason Merrill <jason@redhat.com>
2638
2639 PR c++/48647
2640 * typeck.c (composite_pointer_type_r): Return error_mark_node
2641 on error in SFINAE context.
2642
2643 2011-05-20 Jason Merrill <jason@redhat.com>
2644
2645 PR c++/48945
2646 * decl.c (grokdeclarator): Don't add set const function-cv-qual
2647 for constexpr fns to memfn_quals, just add it to the type.
2648 (revert_static_member_fn): Don't complain about quals.
2649 (check_static_quals): New.
2650 (grokfndecl): Call it.
2651 (start_preparsed_function): Don't call revert_static_member_fn.
2652
2653 PR c++/48945
2654 * decl.c (revert_static_member_fn): Ignore const on constexpr fn.
2655
2656 PR c++/48780
2657 * cvt.c (type_promotes_to): Don't promote scoped enums.
2658
2659 PR c++/49066
2660 * decl.c (duplicate_decls): Preserve DECL_DELETED_FN.
2661
2662 PR c++/48873
2663 * tree.c (stabilize_expr): Fix typo.
2664
2665 DR 1073
2666 PR c++/49082
2667 * typeck.c (comp_except_specs): noexcept(false) is not compatible
2668 with throw(type-list).
2669 * typeck2.c (merge_exception_specifiers): noexcept(false)
2670 beats any more limited specification.
2671
2672 PR c++/24163
2673 PR c++/29131
2674 * pt.c (tsubst_copy_and_build) [CALL_EXPR]: Avoid repeating
2675 unqualified lookup.
2676 * semantics.c (perform_koenig_lookup): Add complain parm.
2677 * cp-tree.h: Adjust.
2678 * parser.c (cp_parser_postfix_expression): Adjust.
2679 (cp_parser_perform_range_for_lookup): Adjust.
2680
2681 2011-05-20 Jason Merrill <jason@redhat.com>
2682
2683 * semantics.c (finish_call_expr): SET_EXPR_LOCATION.
2684
2685 2011-05-20 Joseph Myers <joseph@codesourcery.com>
2686
2687 * Make-lang.in (GXX_OBJS): Remove intl.o and version.o.
2688
2689 2011-05-19 Jakub Jelinek <jakub@redhat.com>
2690
2691 PR c++/49043
2692 * decl.c (check_omp_return): Stop searching on sk_function_parms.
2693
2694 PR c++/48869
2695 * method.c (get_dtor, get_copy_ctor): Add COMPLAIN argument,
2696 pass it down to locate_fn_flags.
2697 * cp-tree.h (get_dtor, get_copy_ctor): Adjust prototypes.
2698 * semantics.c (cxx_omp_create_clause_info): Adjust callers.
2699 * cp-gimplify.c: Include splay-tree.h.
2700 (splay_tree_compare_decl_uid, omp_var_to_track,
2701 omp_cxx_notice_variable): New functions.
2702 (struct cp_genericize_omp_taskreg): New type.
2703 (struct cp_genericize_data): Add omp_ctx field.
2704 (cp_genericize_r): Attempt to determine implicitly determined
2705 firstprivate class type variables.
2706 (cp_genericize): Clear omp_ctx.
2707 * Make-lang.in (cp/cp-gimplify.o): Depend on $(SPLAY_TREE_H).
2708
2709 2011-05-18 Jason Merrill <jason@redhat.com>
2710
2711 PR c++/48948
2712 PR c++/49015
2713 * class.c (finalize_literal_type_property): Do check
2714 for constexpr member functions of non-literal class.
2715 (finish_struct): Don't call check_deferred_constexpr_decls.
2716 * cp-tree.h: Don't declare it.
2717 (DECL_DEFERRED_CONSTEXPR_CHECK): Remove.
2718 * decl.c (grok_special_member_properties): Don't check it
2719 (grokfnedcl): Don't call validate_constexpr_fundecl.
2720 (start_preparsed_function): Do call it.
2721 * pt.c (tsubst_decl): Don't call it.
2722 (instantiate_class_template_1): Don't call
2723 check_deferred_constexpr_decls.
2724 * semantics.c (literal_type_p): Check for any incompleteness.
2725 (ensure_literal_type_for_constexpr_object): Likewise.
2726 (is_valid_constexpr_fn): Revert deferral changes.
2727 (validate_constexpr_fundecl): Likewise.
2728 (register_constexpr_fundef): Likewise.
2729 (check_deferred_constexpr_decls): Remove.
2730
2731 2011-05-16 Jason Merrill <jason@redhat.com>
2732
2733 PR c++/48969
2734 * pt.c (deduction_tsubst_fntype): Use a VEC initially.
2735
2736 2011-05-15 Paolo Carlini <paolo.carlini@oracle.com>
2737
2738 * cxx-pretty-print.c: Update comment.
2739 * semantics.c (trait_expr_value, finish_trait_expr):
2740 Reorder the cases.
2741 * parser.c (cp_parser_primary_expression): Likewise.
2742
2743 2011-05-15 Jonathan Wakely <jwakely.gcc@gmail.com>
2744
2745 PR c++/48994
2746 * parser.c (cp_parser_perform_range_for_lookup): Call complete_type.
2747
2748 2011-05-13 Ville Voutilainen <ville.voutilainen@gmail.com>
2749
2750 Implement final on class.
2751 * class.c (check_bases): Diagnose derivation from a final class.
2752 * cp-tree.h (lang_type_class): Add is_final and adjust dummy.
2753 (CLASSTYPE_FINAL): New.
2754 * parser.c (cp_parser_class_head): Parse class-virt-specifier, set
2755 CLASSTYPE_FINAL.
2756 * pt.c (instantiate_class_template_1): Copy CLASSTYPE_FINAL.
2757
2758 2011-05-13 Jason Merrill <jason@redhat.com>
2759
2760 PR c++/48969
2761 * pt.c (deduction_tsubst_fntype): New.
2762 (fn_type_unification): Use it.
2763 (init_template_processing): Initialize hash table.
2764 (print_template_statistics): Print hash table stats.
2765
2766 * call.c (build_op_call): Use timevar_cond_start/stop.
2767 (build_user_type_conversion): Likewise.
2768
2769 2011-05-12 Jason Merrill <jason@redhat.com>
2770
2771 * cp-tree.h (DECL_DEFERRED_CONSTEXPR_CHECK): New.
2772 * semantics.c (validate_constexpr_fundecl): Set it.
2773 (check_deferred_constexpr_decls): Clear it.
2774 (register_constexpr_fundef): Make sure it isn't set.
2775 * decl.c (grok_special_member_properties): Check it.
2776
2777 2011-05-11 Jason Merrill <jason@redhat.com>
2778
2779 PR c++/48948
2780 * semantics.c (validate_constexpr_fundecl): Defer checking if
2781 an argument type is being defined.
2782 (is_valid_constexpr_fn): Add defer_ok parm.
2783 (cxx_eval_call_expression): Adjust.
2784 (check_deferred_constexpr_decls): New.
2785 (literal_type_p): Make sure type isn't being defined.
2786 (ensure_literal_type_for_constexpr_object): Handle type being defined.
2787 * cp-tree.h: Declare check_deferred_constexpr_decls.
2788 * decl.c (grokfndecl): Call validate_constexpr_fundecl here.
2789 (start_preparsed_function, cp_finish_decl): Not here.
2790 * class.c (finalize_literal_type_property): Don't call
2791 validate_constexpr_fundecl.
2792 (finish_struct): Call check_deferred_constexpr_decls.
2793 * pt.c (tsubst_decl): Call validate_constexpr_fundecl.
2794 (instantiate_class_template): Call check_deferred_constexpr_decls.
2795
2796 * semantics.c (validate_constexpr_fundecl): Check DECL_TEMPLATE_INFO
2797 rather than DECL_TEMPLATE_INSTANTIATION.
2798 (cxx_eval_call_expression): Likewise.
2799
2800 * semantics.c (register_constexpr_fundef): Add to hash table here.
2801 (validate_constexpr_fundecl): Not here.
2802
2803 * decl.c (grokdeclarator): Only set DECL_DECLARED_CONSTEXPR_P once.
2804
2805 * pt.c (build_non_dependent_expr): Don't check null_ptr_cst_p,
2806 do call maybe_constant_value in C++0x mode.
2807 * semantics.c (cxx_eval_constant_expression): Handle TEMPLATE_DECL.
2808
2809 PR c++/48745
2810 * pt.c (value_dependent_expr_p): Handle CONSTRUCTOR.
2811
2812 2011-05-11 Nathan Froyd <froydnj@codesourcery.com>
2813
2814 * cp-tree.h (TYPENAME_TYPE_FULLNAME, TYPEOF_TYPE_EXPR): Use
2815 TYPE_VALUES_RAW.
2816 (UNDERLYING_TYPE_TYPE, DECLTYPE_TYPE_EXPR): Likewise.
2817 (DECLTYPE_TYPE_ID_EXPR_OR_MEMBER_ACCESS_P): Likewise.
2818 (TEMPLATE_TYPE_PARM_INDEX): Likewise.
2819
2820 2011-05-10 Jason Merrill <jason@redhat.com>
2821
2822 PR c++/48930
2823 * class.c (type_build_ctor_call): New.
2824 * cp-tree.h: Declare it.
2825 * decl.c (check_initializer): Use it instead of
2826 TYPE_NEEDS_CONSTRUCTING.
2827 * init.c (build_value_init, build_value_init_noctor): Likewise.
2828 (perform_member_init, expand_aggr_init_1, build_new_1): Likewise.
2829 (build_vec_init): Likewise.
2830 * typeck2.c (process_init_constructor_array): Likewise.
2831 (process_init_constructor_record): Likewise.
2832
2833 PR c++/48736
2834 * pt.c (tsubst_copy_and_build): Handle substitution of a pack
2835 expansion producing another expansion.
2836
2837 2011-05-10 Ville Voutilainen <ville.voutilainen@gmail.com>
2838
2839 Fixes for override/final.
2840 * class.c (check_for_override): Diagnose final on a nonvirtual
2841 member function, diagnose override for a virtual with no matching
2842 override. Don't fiddle around with DECL_VINDEX.
2843
2844 2011-05-10 Nathan Froyd <froydnj@codesourcery.com>
2845
2846 * cp-tree.def (EXPR_PACK_EXPANSION): Add an operand.
2847 * cp-objcp-common.c (cp_common_init_ts): Mark it as TS_TYPED.
2848 * cp-tree.h (PACK_EXPANSION_PARAMETER_PACKS): Use the new
2849 operand of EXPR_PACK_EXPANSION.
2850 (cp_tree_operand_length): Declare.
2851 * tree.c (cp_tree_operand_length): Define.
2852 (cp_tree_equal): Call it.
2853 * pt.c (value_dependent_expr_P): Likewise.
2854 * mangle.c (write_expression): Likewise.
2855
2856 2011-05-09 Paolo Carlini <paolo.carlini@oracle.com>
2857
2858 PR c++/48737
2859 PR c++/48744
2860 * decl.c (reshape_init): Take a complain parameter and do
2861 not call error if tf_error is not set.
2862 (check_initializer, reshape_init_r, reshape_init_array,
2863 reshape_init_array_1, reshape_init_vector, reshape_init_class):
2864 Adjust.
2865 * typeck2.c (digest_init_r): Take a complain parameter and
2866 pass it to convert_for_initialization.
2867 (digest_init, digest_init_flags, process_init_constructor_array,
2868 process_init_constructor_record, process_init_constructor_union,
2869 process_init_constructor, digest_init_r): Adjust.
2870 * init.c (expand_default_init, build_new_1): Likewise.
2871 * typeck.c (cp_build_modify_expr): Likewise.
2872 * decl2.c (grokfield): Likewise.
2873 * call.c (convert_like_real, convert_default_arg): Likewise.
2874 * semantics.c (finish_compound_literal): Pass complain to
2875 reshape_init and digest_init.
2876 * cp-tree.h: Adjust declarations.
2877
2878 2011-05-07 Fabien Chêne <fabien@gcc.gnu.org>
2879
2880 PR c++/48859
2881 * init.c (diagnose_uninitialized_cst_or_ref_member_1): stop the
2882 recursion if there is user defined constructor.
2883
2884 2011-05-09 Jason Merrill <jason@redhat.com>
2885
2886 PR c++/34772
2887 * decl.c (initialize_local_var): Use DECL_INITIAL for simple
2888 initialization.
2889
2890 2011-05-08 Ville Voutilainen <ville.voutilainen@gmail.com>
2891
2892 Implement final/override for member functions.
2893 * class.c (check_for_override): Check for DECL_OVERRIDE_P.
2894 * cp-tree.h (DECL_OVERRIDE_P, DECL_FINAL_P): New.
2895 (cp_virt_specifiers, enum virt_specifier): New.
2896 * decl.c (set_virt_specifiers): New.
2897 (grokdeclarator): Use them. Diagnose virt-specifiers on non-fields.
2898 * parser.c (make_call_declarator): add virt-specifiers parameter.
2899 (cp_parser_lambda_declarator_opt): Adjust.
2900 (cp_parser_direct_declarator): Likewise.
2901 (cp_parser_virt_specifier_seq_opt): New.
2902 * search.c (check_final_overrider): Diagnose attempts to override
2903 a final member function.
2904
2905 2011-05-09 Dodji Seketeli <dodji@redhat.com>
2906
2907 PR c++/48574
2908 * class.c (fixed_type_or_null): Use type_dependent_p_push to test
2909 if the instance has a dependent initializer.
2910
2911 2011-05-08 Paolo Carlini <paolo.carlini@oracle.com>
2912
2913 PR c++/48816
2914 * cxx-pretty-print.c (pp_cxx_template_declaration): Remove
2915 effectively unused variable.
2916
2917 2011-05-07 Eric Botcazou <ebotcazou@adacore.com>
2918
2919 * name-lookup.h (global_bindings_p): Adjust prototype.
2920 * name-lookup.c (global_bindings_p): Return bool.
2921
2922 2011-05-06 Jason Merrill <jason@redhat.com>
2923
2924 * decl.c (stabilize_save_expr_r): Set *walk_subtrees as
2925 appropriate.
2926
2927 PR c++/48909
2928 * semantics.c (cxx_eval_conditional_expression): Check
2929 integer_zerop instead.
2930 (potential_constant_expression_1): Likewise.
2931
2932 PR c++/48911
2933 * semantics.c (cxx_eval_array_reference): Handle implicit
2934 initializers.
2935
2936 2011-05-06 Nathan Froyd <froydnj@codesourcery.com>
2937
2938 * cp-tree.h (type_of_this_parm, class_of_this_parm): New functions.
2939 * call.c (standard_conversion): Call class_of_this_parm.
2940 * cxx-pretty-print.c (pp_cxx_implicit_parameter_type): Likewise.
2941 (pp_cxx_direct_abstract_declarator): Likewise.
2942 * decl2.c (change_return_type): Likewise.
2943 (cp_reconstruct_complex_type): Likewise.
2944 * error.c (dump_type_suffix, dump_function_decl): Likewise.
2945 * mangle.c (write_function_type): Likewise.
2946 * pt.c (unify): Likewise.
2947 * typeck.c (merge_types, type_memfn_quals): Likewise.
2948 * decl.c (build_this_parm): Call type_of_this_parm.
2949
2950 2011-05-06 Dodji Seketeli <dodji@redhat.com>
2951
2952 PR c++/48838
2953 * cp-tree.h (non_static_member_function_p): Declare new function.
2954 * tree.c (non_static_member_function_p): Define it.
2955 * semantics.c (finish_call_expr): Use it.
2956
2957 2011-05-05 Nathan Froyd <froydnj@codesourcery.com>
2958
2959 * decl.c (finish_case_label): Omit the loc argument to
2960 build_case_label.
2961
2962 2011-05-05 Jason Merrill <jason@redhat.com>
2963
2964 * cp-tree.h (REFERENCE_REF_P): Just check the type.
2965 * cvt.c (convert_from_reference): Adjust.
2966 * pt.c (build_non_dependent_expr): Adjust.
2967 * semantics.c (finish_offsetof): Adjust.
2968 * tree.c (lvalue_kind): Use it.
2969
2970 PR c++/48873
2971 * tree.c (stabilize_expr): Don't make gratuitous copies of classes.
2972
2973 2011-05-05 Eric Botcazou <ebotcazou@adacore.com>
2974
2975 * decl.c (start_preparsed_function): Do not set
2976 dont_save_pending_sizes_p.
2977
2978 2011-05-05 Joseph Myers <joseph@codesourcery.com>
2979
2980 * parser.c (cp_parser_objc_method_definition_list): Update call to
2981 objc_start_method_definition.
2982
2983 2011-05-04 Jason Merrill <jason@redhat.com>
2984
2985 PR c++/48749
2986 * class.c (resolves_to_fixed_type_p): Don't look closely
2987 in templates.
2988
2989 2011-05-03 Paolo Carlini <paolo.carlini@oracle.com>
2990
2991 PR c++/28501
2992 * call.c (add_builtin_candidate): Handle REALPART_EXPR and
2993 IMAGPART_EXPR.
2994
2995 2011-05-02 Lawrence Crowl <crowl@google.com>
2996
2997 * decl.c: (push_local_name): Change TV_NAME_LOOKUP to start/stop.
2998 (poplevel): Refactor POP_TIMEVAR_AND_RETURN to plain code.
2999 Change TV_NAME_LOOKUP to start/stop.
3000 (define_label): Refactor timevar calls out to a wrapper function.
3001 Change TV_NAME_LOOKUP to start/stop.
3002 (xref_tag): Likewise.
3003 (lookup_label): Refactor timevar calls out to a wrapper function.
3004 Change TV_NAME_LOOKUP to start_cond/stop_cond.
3005
3006 * pt.c: (instantiate_class_template): Add a wrapper to push/pop new
3007 TV_TEMPLATE_INST.
3008 (instantiate_template): Add a wrapper to push/pop new TV_TEMPLATE_INST.
3009 (lookup_template_class): Refactor timevar calls out to a wrapper
3010 function. Change use of TV_NAME_LOOKUP to TV_TEMPLATE_INST.
3011 (instantiate_decl): Change TV_PARSE to TV_TEMPLATE_INST.
3012
3013 * name-lookup.c: (store_bindings): Change TV_NAME_LOOKUP to start/stop.
3014 (poplevel_class): Change TV_NAME_LOOKUP to start_cond/stop_cond.
3015 (push_namespace): Likewise.
3016 (pop_nested_namespace): Likewise.
3017 (pushdecl_namespace_level): Likewise.
3018 (store_class_bindings): Likewise.
3019 (push_to_top_level): Likewise.
3020 (identifier_type_value): Refactor timevar calls out to a wrapper
3021 function. Change TV_NAME_LOOKUP to start/stop.
3022 (find_binding): Likewise.
3023 (push_using_decl): Likewise.
3024 (lookup_arg_dependent): Likewise.
3025 (push_using_directive): Likewise.
3026 (qualified_lookup_using_namespace): Refactor POP_TIMEVAR_AND_RETURN
3027 to plain code. Change TV_NAME_LOOKUP to start/stop.
3028 (lookup_type_current_level): Likewise. Refactor inner return to
3029 break.
3030 (pushdecl_class_level): Refactor POP_TIMEVAR_AND_RETURN to plain
3031 code. Change TV_NAME_LOOKUP to start_cond/stop_cond.
3032 (pushdecl_top_level_1): Likewise.
3033 (lookup_using_namespace): Likewise.
3034 (pushdecl_with_scope): Refactor timevar calls out to a wrapper
3035 function. Change TV_NAME_LOOKUP to start_cond/stop_cond.
3036 (push_overloaded_decl): Likewise.
3037 (push_class_level_binding): Likewise.
3038 (namespace_binding): Likewise.
3039 (set_namespace_binding): Likewise.
3040 (supplement_binding): Likewise.
3041 (unqualified_namespace_lookup): Likewise.
3042 (lookup_name_real): Likewise.
3043 (lookup_type_scope): Likewise.
3044 (namespace_ancestor): Likewise.
3045 (lookup_name_innermost_nonclass_level): Likewise.
3046 (pushtag): Likewise.
3047 (pop_from_top_level): Likewise.
3048 (pushdecl_maybe_friend): Refactor timevar calls out to a wrapper
3049 function. Change TV_NAME_LOOKUP to start_cond/stop_cond. Wrap long
3050 lines.
3051 (add_using_namespace): Refactor timevar calls out to a wrapper
3052 function. Change TV_NAME_LOOKUP to start_cond/stop_cond. Bypass
3053 wrapper on call to self.
3054
3055 * decl2.c: (cp_write_global_declarations): Add start/stop of
3056 new TV_PHASE_DEFERRED, TV_PHASE_CGRAPH, TV_PHASE_CHECK_DBGINFO.
3057 Remove push/pop calls to TV_VARCONST.
3058
3059 * parser.c: Add include of "timevar.h".
3060 (cp_parser_explicit_instantiation): Add push/pop calls to
3061 TV_TEMPLATE_INST.
3062 (cp_parser_enum_specifier): Add push/pop calls to new TV_PARSE_ENUM.
3063 (cp_parser_class_specifier): Add wrapper to add push/pop calls to
3064 TV_PARSE_STRUCT.
3065 (cp_parser_function_definition_from_specifiers_and_declarator): Add
3066 push/pop calls to new TV_PARSE_FUNC or TV_PARSE_INLINE.
3067 (cp_parser_late_parsing_for_member): Add push/pop calls to
3068 new TV_PARSE_INMETH.
3069
3070 * call.c: Add include of "timevar.h".
3071 (convert_class_to_reference): Wrap and add push/pop calls to
3072 TV_OVERLOAD.
3073 (build_op_call): Likewise.
3074 (build_conditional_expr): Likewise.
3075 (build_new_op): Likewise.
3076 (build_new_method_call): Likewise.
3077 (build_user_type_conversion): Reorganize to single return and add
3078 push/pop calls to TV_OVERLOAD.
3079 (perform_overload_resolution): Likewise.
3080
3081 * Make-lang.in: Add dependence of call.o and parser.o on $(TIMEVAR_H).
3082
3083 2011-05-02 Jason Merrill <jason@redhat.com>
3084
3085 * tree.c (build_vec_init_expr): Take complain parm.
3086 (build_vec_init_elt): Likewise. Free arg vector.
3087 (diagnose_non_constexpr_vec_init, build_array_copy): Adjust.
3088 * cp-tree.h (VEC_INIT_EXPR_SLOT): Use VEC_INIT_EXPR_CHECK.
3089 (VEC_INIT_EXPR_INIT): Likewise.
3090 Adjust build_vec_init_expr declaration.
3091 * init.c (perform_member_init): Adjust.
3092
3093 Revert:
3094 PR c++/40975
3095 * cp-tree.def (VEC_INIT_EXPR): Add third operand.
3096 * cp-tree.h (VEC_INIT_EXPR_NELTS): New.
3097 * cp-gimplify.c (cp_gimplify_expr) [VEC_INIT_EXPR]: Handle it.
3098 * tree.c (build_vec_init_expr): Handle getting pointer/nelts.
3099 (build_vec_init_elt): Don't expect an array type.
3100 (build_array_copy): Adjust.
3101 * init.c (perform_member_init): Adjust.
3102 (build_new_1): Use build_vec_init_expr.
3103
3104 PR c++/48834
3105 * tree.c (build_vec_init_expr): Set TREE_SIDE_EFFECTS.
3106 Protect an explicit target.
3107
3108 PR c++/48446
3109 * decl.c (stabilize_save_expr_r, stabilize_vla_size): New.
3110 (compute_array_index_type): Revert earlier 48446 changes.
3111 (grokdeclarator): Use stabilize_vla_size.
3112
3113 2011-05-02 Dmitry Gorbachev <d.g.gorbachev@gmail.com>
3114 Eric Botcazou <ebotcazou@adacore.com>
3115
3116 * parser.c (cp_parser_init_declarator): Set pushed_scope to NULL_TREE
3117 instead of inappropriate zero values.
3118
3119 2011-05-02 Paolo Carlini <paolo.carlini@oracle.com>
3120
3121 PR c++/47969
3122 * decl.c (compute_array_index_type): Check build_expr_type_conversion
3123 return value for NULL_TREE.
3124
3125 2011-04-29 Paolo Carlini <paolo.carlini@oracle.com>
3126
3127 PR c++/48606
3128 * init.c (perform_member_init): Check build_value_init return
3129 value for error_mark_node.
3130
3131 2011-04-29 Diego Novillo <dnovillo@google.com>
3132 Le-Chun Wu <lcwu@google.com>
3133
3134 * call.c (conversion_null_warnings): Also handle assignments
3135 when warning about NULL conversions.
3136
3137 2011-04-29 Le-Chun Wu <lcwu@google.com>
3138
3139 * cp-tree.h (LOOKUP_EXPLICIT_TMPL_ARGS): Define.
3140 * call.c (build_new_function_call): Set it for TEMPLATE_ID_EXPRs.
3141 (build_over_call): Use it to determine whether to emit a NULL
3142 warning for template function instantiations.
3143 (build_new_method_call): Set LOOKUP_EXPLICIT_TMPL_ARGS if
3144 EXPLICIT_TARGS is set.
3145
3146 2011-04-29 Nicola Pero <nicola.pero@meta-innovation.com>,
3147 Mike Stump <mikestump@comcast.net>
3148
3149 * Make-lang.in ($(srcdir)/cp/cfns.h): Enable the dependency only
3150 in maintainer mode. Use the --output-file option of gperf instead
3151 of > to prevent creating an empty cp/cfns.h when gperf is not
3152 available.
3153
3154 2011-04-28 Paolo Carlini <paolo.carlini@oracle.com>
3155
3156 PR c++/48798
3157 * semantics.c (finish_base_specifier): cv-qualified base class
3158 is fine, per DR 484.
3159
3160 2011-04-28 Dodji Seketeli <dodji@redhat.com>
3161
3162 PR c++/48656
3163 * semantics.c (finish_call_expr): Don't forget BASELINK nodes when
3164 considering call expressions involving a member function.
3165
3166 2011-04-28 Paolo Carlini <paolo.carlini@oracle.com>
3167
3168 PR c++/48530
3169 * tree.c (build_cplus_new): Check build_target_expr return
3170 value for error_mark_node.
3171
3172 2011-04-28 Paolo Carlini <paolo.carlini@oracle.com>
3173
3174 PR c++/48771
3175 * semantics.c (literal_type_p): Reference types are literal types,
3176 per the FDIS.
3177 (valid_type_in_constexpr_fundecl_p): Remove.
3178 (is_valid_constexpr_fn): Adjust.
3179
3180 2011-04-27 Jason Merrill <jason@redhat.com>
3181
3182 PR libstdc++/48760
3183 Implement list-initialization of _Complex.
3184 * decl.c (reshape_init_r): Allow {real,imag} for _Complex.
3185 (check_initializer): Likewise.
3186 * call.c (build_complex_conv): New.
3187 (implicit_conversion): Call it.
3188 (convert_like_real): Handle it.
3189 * typeck2.c (check_narrowing): Handle it.
3190
3191 * init.c (build_vec_delete_1): Look for sfk_deleting_destructor to
3192 decide whether to delete.
3193 (build_vec_init): Pass sfk_complete_destructor.
3194
3195 PR c++/40975
3196 * cp-tree.def (VEC_INIT_EXPR): Add third operand.
3197 * cp-tree.h (VEC_INIT_EXPR_NELTS): New.
3198 * cp-gimplify.c (cp_gimplify_expr) [VEC_INIT_EXPR]: Handle it.
3199 * tree.c (build_vec_init_expr): Handle getting pointer/nelts.
3200 (build_vec_init_elt): Don't expect an array type.
3201 (build_array_copy): Adjust.
3202 * init.c (perform_member_init): Adjust.
3203 (build_new_1): Use build_vec_init_expr.
3204
3205 * class.c (resolve_address_of_overloaded_function): Don't
3206 change OVERLOAD to TREE_LIST.
3207 * pt.c (print_candidates_1): Remove nonsensical assert.
3208
3209 PR c++/48046
3210 * parser.c (cp_parser_diagnose_invalid_type_name): Commit
3211 to tentative parse sooner.
3212
3213 2011-04-26 Jason Merrill <jason@redhat.com>
3214
3215 PR c++/42687
3216 * parser.c (cp_parser_primary_expression): Set *idk to
3217 CP_ID_KIND_NONE for a parenthesized identifier.
3218
3219 * ptree.c (cxx_print_type) [TYPENAME_TYPE]: Dump fullname.
3220 (cxx_print_identifier): Correct indentation.
3221
3222 PR c++/48530
3223 * decl.c (cxx_maybe_build_cleanup): Add complain parm.
3224 * tree.c (force_target_expr): Add complain parm.
3225 (build_target_expr_with_type): Likewise.
3226 (get_target_expr_sfinae): Split out.
3227 (build_vec_init_expr, bot_manip): Adjust.
3228 * init.c (build_vec_delete, build_vec_delete_1): Add complain parm.
3229 (build_delete, build_dtor_call): Likewise.
3230 (perform_direct_initialization_if_possible): Adjust.
3231 (build_vec_init): Handle error return.
3232 * cvt.c (force_rvalue): Add complain parm.
3233 Call build_special_member_call directly.
3234 * decl2.c (delete_sanity): Add complain parm.
3235 (build_cleanup): Adjust.
3236 * pt.c (tsubst_copy_and_build, tsubst_expr): Adjust.
3237 * semantics.c (finish_stmt_expr_expr): Adjust.
3238 (finish_compound_literal): Adjust.
3239 * parser.c (cp_parser_delete_expression): Adjust.
3240 * typeck2.c (build_functional_cast): Adjust.
3241 * cp-tree.h: Adjust.
3242
3243 2011-04-26 Martin Jambor <mjambor@suse.cz>
3244
3245 * class.c (cp_fold_obj_type_ref): Remove.
3246 * cp-tree.h (cp_fold_obj_type_ref): Remove declaration.
3247
3248 2011-04-25 Paolo Carlini <paolo.carlini@oracle.com>
3249
3250 * cp-tree.def: Add a new UNDERLYING_TYPE tree code.
3251 * cp-tree.h (enum cp_trait_kind): Add CPTK_UNDERLYING_TYPE, tidy.
3252 (UNDERLYING_TYPE_TYPE): Add.
3253 * cp-objcp-common.c (cp_common_init_ts): Mark UNDERLYING_TYPE
3254 as TS_COMMON.
3255 * parser.c (cp_lexer_next_token_is_decl_specifier_keyword,
3256 cp_parser_simple_type_specifier): Handle UNDERLYING_TYPE.
3257 (cp_parser_trait_expr): Deal with RID_UNDERLYING_TYPE; tidy.
3258 * semantics.c (finish_underlying_type): New.
3259 * typeck.c (structural_comptypes): Handle UNDERLYING_TYPE.
3260 * error.c (dump_type, dump_type_prefix, dump_type_suffix): Likewise.
3261 * cxx-pretty-print.c (p_cxx_type_id): Likewise.
3262 * tree.c (cp_walk_subtrees): Likewise.
3263 * pt.c (for_each_template_parm_r, tsubst, unify,
3264 dependent_type_p_r): Likewise.
3265 * mangle.c (write_type): Sorry for __underlying_type.
3266
3267 2011-04-25 Jason Merrill <jason@redhat.com>
3268
3269 PR c++/48707
3270 * decl.c (type_dependent_init_p): New.
3271 (cp_finish_decl): Check it.
3272 * pt.c (any_type_dependent_elements_p): New.
3273 * cp-tree.h: Declare it.
3274
3275 2011-04-20 Jason Merrill <jason@redhat.com>
3276
3277 * semantics.c (finish_compound_literal): Don't put an array
3278 with a dtor in a static variable.
3279
3280 * call.c (build_over_call): Handle trivial dtor.
3281
3282 * search.c (lookup_fnfields_slot): Call complete_type.
3283
3284 PR c++/48594
3285 * decl2.c (build_offset_ref_call_from_tree): Move
3286 non-dependency of object outside condition.
3287
3288 PR c++/48657
3289 * decl.c (cp_finish_decl): Simplify template handling.
3290
3291 2011-04-20 Jim Meyering <meyering@redhat.com>
3292
3293 * tree.c (cxx_printable_name_internal): Remove useless if-before-free.
3294
3295 2011-04-19 Jason Merrill <jason@redhat.com>
3296
3297 PR c++/46304
3298 * typeck.c (cp_build_binary_op): Fold COMPLEX_EXPR.
3299
3300 PR c++/45267
3301 * decl.c (duplicate_decls): Keep always_inline attribute
3302 in sync with DECL_DISREGARD_INLINE_LIMITS.
3303
3304 2011-04-18 Jason Merrill <jason@redhat.com>
3305
3306 PR c++/48569
3307 * typeck2.c (build_functional_cast): Handle VOID_TYPE.
3308
3309 PR c++/48537
3310 * init.c (build_value_init): Handle UNION_TYPE the same.
3311
3312 2011-04-18 Jakub Jelinek <jakub@redhat.com>
3313
3314 PR c++/48632
3315 * parser.c (cp_parser_omp_for_loop): Don't use cp_parser_omp_for_incr
3316 for type dependent pointers.
3317
3318 2011-04-18 Jim Meyering <meyering@redhat.com>
3319
3320 * pt.c (type_unification_real): Fix typo in comment: s/in in/in/.
3321
3322 2011-04-17 Jan Hubicka <jh@suse.cz>
3323
3324 * semantics.c (finish_goto_stmt): Do set UNINLINABLE flag on computed
3325 gotos.
3326
3327 2011-04-17 Jason Merrill <jason@redhat.com>
3328
3329 PR c++/48531
3330 * typeck2.c (build_functional_cast): Disallow array type.
3331
3332 * tree.c (get_target_expr): Handle VEC_INIT_EXPR.
3333
3334 2011-04-17 Jan Hubicka <jh@suse.cz>
3335
3336 * class.c (cp_fold_obj_type_ref): Drop vtable_method.
3337
3338 2011-04-15 Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
3339
3340 Implement N3271
3341 * parser.c (cp_convert_range_for): Split into
3342 cp_parser_perform_range_for_lookup.
3343 (cp_parser_perform_range_for_lookup): New.
3344 (cp_parser_range_for_member_function): New.
3345 (cp_parser_for_init_statement): Correct error message.
3346 * semantics.c (finish_call_expr): Accept COMPONENT_REF.
3347
3348 2011-04-14 Nicola Pero <nicola.pero@meta-innovation.com>
3349
3350 * parser.c (cp_parser_objc_protocol_declaration): Updated for
3351 change from objc_declare_protocols() to objc_declare_protocol().
3352
3353 2011-04-14 Nathan Froyd <froydnj@codesourcery.com>
3354
3355 PR objc++/48479
3356 * typeck.c (cxx_mark_addressable) [CONST_DECL]: Mark addressable
3357 and return immediately.
3358
3359 2011-04-14 Nathan Froyd <froydnj@codesourcery.com>
3360
3361 * cp-tree.def (SWITCH_STMT): Add an extra operand.
3362 * cp-objcp-common.c (cp_common_init_ts): Mark it as TS_TYPED.
3363 * cp-tree.h (SWITCH_STMT_SCOPE): Define.
3364 * semantics.c (begin_switch__stmt): Pass scope to build_stmt.
3365 (finish_switch_stmt): Use SWITCH_STMT_SCOPE instead of TREE_CHAIN.
3366
3367 2011-04-14 Nathan Froyd <froydnj@codesourcery.com>
3368
3369 * cp-tree.def (IF_STMT): Add an extra operand.
3370 * cp-objcp-common.c (cp_common_init_ts): Mark it as TS_TYPED.
3371 * cp-tree.h (IF_SCOPE): Define.
3372 * semantics.c (begin_if_stmt): Pass scope to build_stmt.
3373 (finish_if_stmt): Use IF_SCOPE instead of TREE_CHAIN.
3374
3375 2011-04-14 Nathan Froyd <froydnj@codesourcery.com>
3376
3377 * cp-tree.def (FOR_STMT, RANGE_FOR_STMT): Add an extra operand.
3378 * cp-objcp-common.c (cp_common_init_ts): Mark them as TS_TYPED.
3379 * cp-tree.h (FOR_SCOPE, RANGE_FOR_SCOPE): Define.
3380 * semantics.c (begin_for_stmt): Pass an extra arg to build_stmt.
3381 Use FOR_SCOPE instead of TREE_CHAIN.
3382 (begin_range_for_stmt): Likewise, with RANGE_FOR_SCOPE.
3383 (finish_for_stmt): Likewise.
3384
3385 2011-04-14 Jason Merrill <jason@redhat.com>
3386
3387 * parser.c (cp_parser_postfix_expression): Fix flags passed to
3388 build_new_method_call.
3389 * semantics.c (finish_call_expr): Likewise.
3390
3391 PR c++/48531
3392 * init.c (build_value_init_noctor): Check complain consistently.
3393
3394 PR c++/48557
3395 * typeck.c (cp_build_binary_op): Don't decay void operands.
3396
3397 PR c++/48446
3398 * decl.c (compute_array_index_type): Use get_temp_regvar instead
3399 of variable_size.
3400 * init.c (get_temp_regvar): No longer static.
3401 * cp-tree.h: Declare it.
3402
3403 2011-04-14 Nicola Pero <nicola.pero@meta-innovation.com>
3404
3405 * parser.c (cp_parser_objc_class_declaration): Updated for change
3406 in objc_declare_class().
3407
3408 2011-04-14 Nathan Froyd <froydnj@codesourcery.com>
3409
3410 * decl.c (poplevel): Use block_chainon.
3411
3412 2011-04-13 Jason Merrill <jason@redhat.com>
3413
3414 PR c++/48594
3415 * decl2.c (build_offset_ref_call_from_tree): Fix calling a functor
3416 or pointer to (non-member) function.
3417
3418 2011-04-13 Jakub Jelinek <jakub@redhat.com>
3419
3420 PR c++/48570
3421 * semantics.c (cxx_eval_array_reference): Handle reading from
3422 wchar_t, char16_t and char32_t STRING_CST.
3423
3424 2011-04-13 Dodji Seketeli <dodji@redhat.com>
3425
3426 PR c++/48574
3427 * class.c (fixed_type_or_null): We cannot determine the dynamic
3428 type of a reference variable if its initializer is dependent.
3429
3430 2011-04-13 Jason Merrill <jason@redhat.com>
3431
3432 PR c++/48581
3433 * pt.c (tsubst_copy_and_build) [CALL_EXPR]: Don't complain about
3434 unqualified lookup failing if we're still in a template.
3435
3436 2011-04-12 Nathan Froyd <froydnj@codesourcery.com>
3437
3438 * cp-lang.c (cp_init_ts): Call cp_common_init_ts. Move
3439 tree_contains_struct initialization to...
3440 * cp-objcp-common.c (cp_common_init_ts): ...here. Use MARK_*
3441 macros.
3442 * cp-objcp-common.h (cp_common_init_ts): Declare.
3443 * cp-tree.h (union lang_tree_node): Check for TS_COMMON before
3444 calling TREE_CHAIN.
3445
3446 2011-04-12 Nicola Pero <nicola.pero@meta-innovation.com>
3447
3448 * parser.c (cp_parser_objc_message_expression): Updated call
3449 to objc_build_message_expr.
3450
3451 2011-04-12 Martin Jambor <mjambor@suse.cz>
3452
3453 * class.c (cp_fold_obj_type_ref): Call cgraph_get_node instead of
3454 cgraph_get_create_node.
3455 * decl2.c (cp_write_global_declarations): Call cgraph_get_node
3456 instead of cgraph_get_create_node.
3457 * method.c (make_alias_for_thunk): Call cgraph_get_node
3458 instead of cgraph_get_create_node, assert it returns non-NULL.
3459 (use_thunk): Likewise.
3460 * optimize.c (maybe_clone_body): Call cgraph_same_body_alias only
3461 when flag_syntax_only is not set. Call cgraph_get_node instead of
3462 cgraph_get_create_node.
3463 (maybe_clone_body): Call cgraph_get_node instead of
3464 cgraph_get_create_node.
3465
3466 2011-04-12 Martin Jambor <mjambor@suse.cz>
3467
3468 * class.c (cp_fold_obj_type_ref): Call cgraph_get_create_node
3469 instead of cgraph_node.
3470 * decl2.c (cxx_callgraph_analyze_expr): Likewise.
3471 (cp_write_global_declarations): Likewise.
3472 * optimize.c (maybe_clone_body): Likewise.
3473 * semantics.c (maybe_add_lambda_conv_op): Likewise.
3474 * mangle.c (mangle_decl): Likewise.
3475 * method.c (make_alias_for_thunk): Likewise.
3476 (use_thunk): Likewise.
3477
3478 2011-04-11 Jason Merrill <jason@redhat.com>
3479
3480 PR c++/48535
3481 * decl.c (cp_complete_array_type_or_error): New.
3482 * semantics.c (finish_compound_literal): Use it.
3483 * cp-tree.h: Declare it.
3484
3485 PR c++/48535
3486 * semantics.c (finish_compound_literal): Handle references.
3487
3488 PR c++/48535
3489 * semantics.c (finish_compound_literal): Take complain parm.
3490 (build_lambda_object): Adjust.
3491 * cp-tree.h: Adjust.
3492 * call.c (convert_like_real): Adjust.
3493 * decl.c (check_initializer): Adjust.
3494 * parser.c (cp_parser_postfix_expression): Adjust.
3495 (cp_parser_functional_cast): Adjust.
3496 * pt.c (tsubst_copy_and_build): Adjust.
3497 * typeck2.c (process_init_constructor_record): Adjust.
3498
3499 PR c++/48534
3500 * cvt.c (ocp_convert): Use build_nop to convert to underlying type
3501 of scoped enum.
3502
3503 PR c++/48523
3504 * tree.c (maybe_dummy_object): Use build_x_indirect_ref rather
3505 than cp_build_indirect_ref.
3506
3507 PR c++/48457, Core 1238
3508 * call.c (reference_binding): Allow rvalue reference to bind to
3509 function lvalue.
3510 * tree.c (lvalue_kind): Functions are always lvalues.
3511
3512 2011-04-07 Jason Merrill <jason@redhat.com>
3513
3514 PR c++/48500
3515 * semantics.c (potential_constant_expression_1) [CALL_EXPR]: Check
3516 arguments even if we don't know the function.
3517
3518 PR c++/48481
3519 * tree.c (build_overload): Allow an unwrapped FUNCTION_DECL
3520 at the end of the chain.
3521 * pt.c (dependent_template_p): Use OVL_CURRENT/NEXT.
3522 (iterative_hash_template_arg): Likewise.
3523
3524 PR c++/48481
3525 * cp-tree.h (OVL_ARG_DEPENDENT): New.
3526 * name-lookup.c (add_function): Set it.
3527 * semantics.c (finish_call_expr): Free OVERLOADs if it's set.
3528
3529 PR c++/48481
3530 * call.c (build_user_type_conversion_1): Use lookup_fnfields_slot.
3531 Release unused vector.
3532
3533 PR c++/48451
3534 * pt.c (fn_type_unification): Don't clear incomplete pack flag.
3535 (type_unification_real): Clear it here instead.
3536
3537 PR c++/48468
3538 * except.c (build_noexcept_spec): Propagate error_mark_node.
3539 (finish_noexcept_expr): Likewise.
3540
3541 PR c++/48452
3542 * typeck.c (build_x_compound_expr_from_list): Return error_mark_node
3543 in SFINAE context.
3544
3545 PR c++/48450
3546 * call.c (resolve_args): Take complain.
3547 (build_new_function_call, build_operator_new_call): Pass it.
3548 (build_op_call, build_new_op, build_new_method_call): Pass it.
3549
3550 PR c++/48450
3551 * typeck.c (check_for_casting_away_constness): Take complain.
3552 (build_static_cast_1, build_reinterpret_cast_1): Pass it.
3553 (build_const_cast_1): Pass it. Take full complain parm.
3554 (build_const_cast, cp_build_c_cast): Adjust.
3555
3556 * tree.c (build_aggr_init_expr): Always return error_mark_node
3557 on abstract violation.
3558
3559 PR c++/48450
3560 * tree.c (build_cplus_new, build_aggr_init_expr): Take complain.
3561 (bot_manip): Adjust.
3562 * cp-tree.h: Adjust.
3563 * call.c (convert_like_real, build_cxx_call): Adjust.
3564 (perform_direct_initialization_if_possible): Adjust.
3565 * cvt.c (ocp_convert): Adjust.
3566 * init.c (build_value_init): Adjust.
3567 * semantics.c (maybe_add_lambda_conv_op): Adjust.
3568 * typeck.c (unary_complex_lvalue, cp_build_modify_expr): Adjust.
3569 * typeck2.c (build_functional_cast): Adjust.
3570
3571 * init.c (build_value_init_noctor): Handle REFERENCE_TYPE at top
3572 level.
3573 (perform_member_init): Not here.
3574 * typeck2.c (build_functional_cast): Limit REFERENCE_TYPE special
3575 case to templates.
3576 (abstract_virtuals_error_sfinae): Remove RESULT_DECL special case.
3577
3578 PR c++/48449
3579 * typeck2.c (build_functional_cast): Check complain consistently.
3580 Use build_value_init and abstract_virtuals_error_sfinae.
3581 (abstract_virtuals_error_sfinae): Split out.
3582 * cp-tree.h: Declare it.
3583 * init.c (build_new_1): Use it.
3584 (build_value_init_noctor): Handle FUNCTION_TYPE.
3585
3586 * semantics.c (finish_decltype_type): Simplify handling of unknown
3587 type.
3588
3589 * semantics.c (finish_decltype_type): Add complain parm.
3590 * cp-tree.h: Adjust.
3591 * parser.c (cp_parser_decltype): Adjust.
3592 * pt.c (tsubst): Adjust.
3593
3594 PR c++/48450
3595 * cvt.c (ocp_convert): Handle converting scoped enum to bool.
3596
3597 2011-03-31 Jason Merrill <jason@redhat.com>
3598
3599 PR c++/48277
3600 * semantics.c (finish_call_expr): Remove assert.
3601
3602 PR c++/48280
3603 * method.c (defaultable_fn_check): Templates are not defaultable.
3604
3605 * parser.c (cp_parser_init_declarator): Avoid redundant
3606 cp_finish_decl for member declarations.
3607
3608 2011-03-30 Jason Merrill <jason@redhat.com>
3609
3610 PR c++/48212
3611 * semantics.c (non_const_var_error): Just return if DECL_INITIAL
3612 is error_mark_node.
3613
3614 2011-03-30 Jason Merrill <jason@redhat.com>
3615
3616 PR c++/48369
3617 * semantics.c (potential_constant_expression_1): Handle
3618 UNORDERED_EXPR and ORDERED_EXPR.
3619
3620 PR c++/48281
3621 * semantics.c (finish_compound_literal): Do put static/constant
3622 arrays in static variables.
3623
3624 * call.c (convert_like_real) [ck_list]: Build up the
3625 initializer_list object directly.
3626 * decl.c (build_init_list_var_init): Adjust.
3627
3628 * call.c (convert_like_real): Correct TREE_CONSTANT on CONSTRUCTOR.
3629 * decl.c (reshape_init_array_1): Likewise.
3630
3631 2011-03-29 Jason Merrill <jason@redhat.com>
3632
3633 PR c++/48265
3634 * pt.c (value_dependent_expression_p) [VAR_DECL]: Make sure
3635 the variable is constant before looking at its initializer.
3636
3637 PR c++/48319
3638 * pt.c (value_dependent_expression_p): Handle TEMPLATE_ID_EXPR.
3639
3640 PR c++/48089
3641 * semantics.c (potential_constant_expression_1): Change error about
3642 use of *this in constructor into sorry.
3643
3644 PR c++/48296
3645 * decl.c (cp_finish_decl): Defer validation of constexpr member
3646 functions.
3647 * class.c (finalize_literal_type_property): Validate them here.
3648 * semantics.c (is_valid_constexpr_fn): Don't check completeness.
3649
3650 * semantics.c (is_valid_constexpr_fn): Specify input location.
3651
3652 2011-03-28 Jason Merrill <jason@redhat.com>
3653
3654 PR c++/48313
3655 * pt.c (maybe_adjust_types_for_deduction): Handle T&& deduction
3656 from overloaded function.
3657
3658 Core 1232
3659 * call.c (build_array_conv): New.
3660 (implicit_conversion): Use it.
3661
3662 * call.c (reference_binding): Allow direct binding to an array
3663 rvalue.
3664
3665 Core 898
3666 * parser.c (cp_parser_compound_statement): Add function_body parm.
3667 Complain about non-body compound-stmt in constexpr fn.
3668 (cp_parser_primary_expression, cp_parser_statement): Adjust.
3669 (cp_parser_implicitly_scoped_statement): Adjust.
3670 (cp_parser_function_body, cp_parser_try_block): Adjust.
3671 (cp_parser_handler, cp_parser_objc_synchronized_statement): Adjust.
3672 (cp_parser_objc_try_catch_finally_statement): Adjust.
3673
3674 Core 898
3675 * semantics.c (constexpr_fn_retval): New. Allow using-declaration
3676 and using-definition.
3677 (register_constexpr_fundef): Call it.
3678
3679 * except.c (build_noexcept_spec): Call cxx_constant_value after
3680 converting to bool.
3681
3682 2011-03-25 Kai Tietz <ktietz@redhat.com>
3683
3684 * lex.c (interface_strcmp): Handle dos-paths.
3685 (handle_pragma_implementation): Use filename_cmp instead of
3686 strcmp.
3687 (in_main_input_context): Likewise.
3688
3689 2011-03-25 Jason Merrill <jason@redhat.com>
3690
3691 Core 1135
3692 * method.c (defaulted_late_check): Check for exception spec mismatch.
3693 (defaultable_fn_check): Allow exception spec and virtual.
3694 * class.c (check_for_override): A virtual dtor is non-trivial.
3695
3696 PR c++/48289
3697 * pt.c (build_non_dependent_expr): Keep dereferences outside the
3698 NON_DEPENDENT_EXPR.
3699
3700 2011-03-25 Kai Tietz <ktietz@redhat.com>
3701
3702 * decl.c (decls_match): Replace target hook
3703 call of comp_type_attributes by version in tree.c file.
3704 * search.c (check_final_overrider): Likewise.
3705 * typeck.c (structural_comptypes): Likewise.
3706
3707 2011-03-21 Kai Tietz <ktietz@redhat.com>
3708
3709 PR target/12171
3710 * cxx-pretty-print.c (pp_cxx_ptr_operator):
3711 Display allowed attributes for function pointer types.
3712 * error.c (dump_type_prefix): Likewise.
3713
3714 * tree.c (cxx_attribute_table): Adjust table.
3715
3716 2011-03-18 Jason Merrill <jason@redhat.com>
3717
3718 PR c++/48162
3719 * semantics.c (finish_call_expr): Allow TARGET_EXPR for now.
3720
3721 PR c++/48118
3722 * call.c (build_over_call): Don't skip ck_rvalue.
3723
3724 2011-03-17 Jason Merrill <jason@redhat.com>
3725
3726 PR c++/47504
3727 * semantics.c (cxx_eval_constant_expression) [NOP_EXPR]: Don't let
3728 the conversion set TREE_OVERFLOW.
3729
3730 Core 1212
3731 * semantics.c (finish_decltype_type): Return T&& for xvalue.
3732 * typeck.c (unlowered_expr_type): Preserve cv-quals.
3733
3734 PR c++/48166
3735 * decl.c (revert_static_member_fn): Strip function-cv-quals.
3736
3737 2011-03-16 Jason Merrill <jason@redhat.com>
3738
3739 PR c++/48089
3740 * semantics.c (potential_constant_expression_1): Don't allow *this
3741 in a constructor.
3742 (register_constexpr_fundef): Use potential_rvalue_constant_expression.
3743
3744 PR c++/47301
3745 * decl.c (compute_array_index_type): Don't bother trying to deal
3746 with literal classes in ABI v1.
3747
3748 PR c++/46336
3749 * decl.c (duplicate_decls): Return NULL_TREE for clashing
3750 C functions.
3751
3752 PR c++/47570
3753 * semantics.c (cxx_eval_constant_expression) [COMPOUND_EXPR]: Don't
3754 use the generic binary expression handling.
3755
3756 2011-03-16 Diego Novillo <dnovillo@google.com>
3757
3758 * Make-lang.in (CXX_PARSER_H): New.
3759 (cp/parser.o): Add dependency on CXX_PARSER_H.
3760 Add dependency on tree-pretty-print.h
3761 (cp/cp-lang.o): Add dependency on CXX_PARSER_H.
3762 * cp-lang.c: Include parser.h.
3763 * parser.c: Include parser.h.
3764 (struct cp_token): Add bitfield purged_p.
3765 Update all users.
3766 Move to parser.h.
3767 (CPP_PURGED): Remove. Update all users.
3768 (struct cp_lexer): Change field buffer to be a VEC of cp_token.
3769 Remove field buffer_length.
3770 Update all users.
3771 Move to parser.h.
3772 (struct tree_check): Move to parser.h.
3773 (cp_token_position): Likewise.
3774 (struct cp_token_cache): Likewise.
3775 (CPP_KEYWORD): Likewise.
3776 (CPP_TEMPLATE_ID): Likewise.
3777 (CPP_NESTED_NAME_SPECIFIER): Likewise.
3778 (N_CP_TTYPES): Likewise.
3779 (enum cp_parser_status_kind): Likewise.
3780 (struct cp_parser_context): Likewise.
3781 (struct cp_default_arg_entry_d): Likewise.
3782 (struct cp_unparsed_functions_entry_d): Likewise.
3783 (struct cp_parser): Likewise.
3784 (cp_lexer_dump_tokens): New.
3785 (cp_lexer_debug_tokens): New.
3786 (cp_lexer_finished_p): New.
3787 (cp_lexer_alloc): Factor out of cp_lexer_new_main.
3788 (cp_lexer_new_main): Re-write main lexing loop to push
3789 tokens into the new VEC buffer.
3790 (cp_lexer_print_token): Improve printing of CPP_NUMBER tokens.
3791 Do not abort if the token type is not recognized, just print
3792 its code.
3793 * parser.h: New file.
3794 * config-lang.in (gtfiles): Add cp/parser.h.
3795
3796 2011-03-16 Jason Merrill <jason@redhat.com>
3797
3798 Core 1148
3799 * typeck.c (check_return_expr): Fix conditions for setting
3800 LOOKUP_PREFER_RVALUE.
3801
3802 * call.c (build_over_call): Remove require_complete_type_sfinae call.
3803
3804 PR c++/48132
3805 * decl.c (check_array_designated_initializer): Allow integer index.
3806 (reshape_init_array_1): Set index on the elements.
3807
3808 2011-03-16 Jason Merrill <jason@redhat.com>
3809
3810 PR c++/48113
3811 * typeck.c (convert_for_initialization): Use
3812 perform_implicit_conversion_flags.
3813 * call.c (standard_conversion): If LOOKUP_PREFER_RVALUE, set
3814 rvaluedness_matches_p on ck_rvalue.
3815 (convert_like_real) [ck_rvalue]: And restore it here.
3816
3817 PR c++/48115
3818 * call.c (convert_arg_to_ellipsis): Handle incomplete type.
3819
3820 2011-03-16 Jason Merrill <jason@redhat.com>
3821
3822 * parser.c (cp_parser_abort_tentative_parse): Make sure we haven't
3823 committed to this tentative parse.
3824
3825 PR c++/47999
3826 * semantics.c (finish_call_expr): Preserve reference semantics
3827 in templates.
3828
3829 * call.c (convert_default_arg): Use LOOKUP_IMPLICIT.
3830
3831 2011-03-16 Jakub Jelinek <jakub@redhat.com>
3832
3833 * cp-objcp-common.c (cp_function_decl_explicit_p): Don't crash if
3834 DECL_LANG_SPECIFIC is NULL.
3835
3836 2011-03-15 Jason Merrill <jason@redhat.com>
3837
3838 Core 1074
3839 * pt.c (value_dependent_expression_p) [NOEXCEPT_EXPR]: Don't
3840 check value_dependent_expression_p on the operand.
3841
3842 * semantics.c (push_cx_call_context): Return bool.
3843 (cxx_eval_call_expression): Handle excess depth.
3844
3845 Core 1191
3846 * method.c (synthesized_method_walk): Cleanups don't affect the
3847 triviality of a constructor, but do affect deletion and exception
3848 specification.
3849
3850 2011-03-15 Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
3851
3852 * decl2.c (cp_check_const_attributes): New.
3853 (cplus_decl_attributes): Call cp_check_const_attributes.
3854
3855 2011-03-15 Jason Merrill <jason@redhat.com>
3856
3857 PR c++/34758
3858 * call.c (convert_default_arg): Use DECL_ORIGIN of fn. Check for
3859 recursion first.
3860 (push_defarg_context, pop_defarg_context): New.
3861 * parser.c (cp_parser_late_parsing_default_args): Use them.
3862 * cp-tree.h: Declare them.
3863
3864 2011-03-11 Dodji Seketeli <dodji@redhat.com>
3865
3866 * call.c (add_builtin_candidate)<case INDIRECT_REF>: The type of
3867 the argument of the indirection operator should not be dependent.
3868 Fix the comment.
3869
3870 2011-03-11 Jason Merrill <jason@redhat.com>
3871
3872 PR c++/47125
3873 * pt.c (tsubst) [TYPENAME_TYPE]: Only give errors if tf_error.
3874
3875 PR c++/47144
3876 * parser.c (cp_parser_template_type_arg): Set
3877 type_definition_forbidden_message.
3878
3879 PR c++/47808
3880 * decl.c (compute_array_index_type): Discard folding
3881 if it didn't produce a constant.
3882
3883 2011-03-11 Jakub Jelinek <jakub@redhat.com>
3884
3885 PR c++/48035
3886 * init.c (build_zero_init_1): Extracted from build_zero_init.
3887 Add FIELD_SIZE argument, if non-NULL and field bit_position
3888 as not smaller than that, don't add that field's initializer.
3889 Pass DECL_SIZE as last argument to build_zero_init_1
3890 for DECL_FIELD_IS_BASE fields.
3891 (build_zero_init): Use build_zero_init_1.
3892
3893 2011-03-10 Jason Merrill <jason@redhat.com>
3894
3895 PR c++/48029
3896 * pt.c (iterative_hash_template_arg): Remove special case for
3897 ARRAY_TYPE.
3898
3899 PR c++/47198
3900 * parser.c (cp_parser_single_declaration): Just return if
3901 cp_parser_parse_and_diagnose_invalid_type_name complained.
3902
3903 2011-03-09 Jason Merrill <jason@redhat.com>
3904
3905 PR c++/44629
3906 * pt.c (unify): An unresolved overload is a nondeduced context.
3907
3908 2011-03-09 Martin Jambor <mjambor@suse.cz>
3909
3910 PR tree-optimization/47714
3911 * method.c (use_thunk): Clear addressable flag of thunk arguments.
3912
3913 2011-03-08 Dodji Seketeli <dodji@redhat.com>
3914
3915 PR c++/47705
3916 * pt.c (convert_nontype_argument): Only call decay_conversion on
3917 arrays.
3918
3919 2011-03-08 Jason Merrill <jason@redhat.com>
3920
3921 PR c++/47488
3922 * mangle.c (write_template_arg_literal) [STRING_CST]: Sorry.
3923
3924 PR c++/47705
3925 * pt.c (convert_nontype_argument): Don't crash on non-pointer
3926 argument to pointer parameter.
3927
3928 PR c++/45651
3929 * pt.c (instantiate_decl): Don't clear DECL_INTERFACE_KNOWN on
3930 !TREE_PUBLIC decls.
3931
3932 2011-03-08 Dodji Seketeli <dodji@redhat.com>
3933
3934 PR c++/47957
3935 * name-lookup.c (binding_to_template_parms_of_scope_p): Only
3936 consider scopes of primary template definitions. Adjust comments.
3937
3938 2011-03-07 Jason Merrill <jason@redhat.com>
3939
3940 PR c++/48003
3941 * pt.c (convert_nontype_argument): Fix -fpermissive allowing
3942 integer overflow.
3943 * semantics.c (potential_constant_expression_1): Check TREE_OVERFLOW.
3944
3945 PR c++/48015
3946 * init.c (constant_value_1): Always require init to be TREE_CONSTANT.
3947
3948 PR c++/48008
3949 * mangle.c (write_type): Strip cv-quals from FUNCTION_TYPE here.
3950 (write_CV_qualifiers_for_type): Not here.
3951
3952 2011-03-06 Joseph Myers <joseph@codesourcery.com>
3953
3954 * lang-specs.h: Match -save-temps* instead of -save-temps.
3955
3956 2011-03-05 Jason Merrill <jason@redhat.com>
3957
3958 * mangle.c (write_expression): Change ABI v6 to v5.
3959 (write_type): Likewise.
3960
3961 2011-03-04 Jan Hubicka <jh@suse.cz>
3962
3963 PR lto/47497
3964 * optimize.c (maybe_clone_body): Update call of cgraph_same_body_alias
3965 and cgraph_add_thunk.
3966 * method.c (make_alias_for_thunk, use_thunk): Likewise.
3967 * mangle.c (mangle_decl): Likewise.
3968
3969 2011-03-04 Jason Merrill <jason@redhat.com>
3970
3971 PR c++/47971
3972 * pt.c (tsubst_copy_and_build) [PSEUDO_DTOR_EXPR]: Use tsubst for type.
3973 (tsubst_copy) [default]: Just return t if !ENABLE_CHECKING.
3974
3975 PR c++/46220
3976 * search.c (check_final_overrider): Allow pointer to same incomplete
3977 class type with different cv-quals.
3978
3979 2011-03-03 Paolo Carlini <paolo.carlini@oracle.com>
3980
3981 PR c++/47974
3982 * pt.c (tsubst_template_args): Check argument t for error_mark_node.
3983
3984 2011-03-03 Jason Merrill <jason@redhat.com>
3985
3986 PR c++/47950
3987 * pt.c (tsubst_copy_and_build) [TARGET_EXPR]: Retain TREE_CONSTANT.
3988
3989 2011-03-02 Jason Merrill <jason@redhat.com>
3990
3991 PR c++/47950
3992 * parser.c (cp_parser_condition): Don't fold_non_dependent_expr here.
3993
3994 PR c++/47774
3995 * tree.c (build_vec_init_elt): Split out from...
3996 (build_vec_init_expr): ...here.
3997 (diagnose_non_constexpr_vec_init): New fn.
3998 * semantics.c (potential_constant_expression_1): Use it.
3999 * cp-tree.h: Declare it.
4000
4001 2011-03-01 Jason Merrill <jason@redhat.com>
4002
4003 PR c++/46159
4004 * parser.c (cp_parser_primary_expression): Don't warn about a
4005 failed tentative parse.
4006
4007 PR c++/47200
4008 * semantics.c (cxx_bind_parameters_in_call): Don't call
4009 adjust_temp_type on non-constant args.
4010
4011 PR c++/47851
4012 * call.c (standard_conversion): Provide requested cv-quals on
4013 class rvalue conversion.
4014
4015 PR c++/46282
4016 * decl2.c (grokbitfield): Handle type-dependent width.
4017
4018 2011-02-28 Jason Merrill <jason@redhat.com>
4019
4020 PR c++/47873
4021 * class.c (update_vtable_entry_for_fn): Check BINFO_LOST_PRIMARY_P
4022 after checking for a non-thunk.
4023
4024 2011-02-26 Jason Merrill <jason@redhat.com>
4025
4026 PR c++/47904
4027 * tree.c (cp_tree_equal): Compare DECL_PARM_LEVEL.
4028 * pt.c (iterative_hash_template_arg): And hash it.
4029
4030 PR c++/47897
4031 * semantics.c (non_const_var_error): Split out from...
4032 (cxx_eval_constant_expression): ...here.
4033 (potential_constant_expression_1) [VAR_DECL]: Use it.
4034 Allow dependent variables.
4035
4036 2011-02-24 Jason Merrill <jason@redhat.com>
4037
4038 * parser.c (cp_parser_constant_expression): Set
4039 non_integral_constant_expression correctly for C++0x too.
4040 (cp_parser_static_assert): Allow non-constant expression.
4041 (cp_parser_direct_declarator): Expect non_constant_p to be set
4042 properly for C++0x.
4043 * pt.c (value_dependent_expression_p): Handle TYPEID_EXPR.
4044 * semantics.c (maybe_constant_value): Check type_unknown_p too.
4045 (potential_rvalue_constant_expression): New.
4046 (require_potential_rvalue_constant_expression): New.
4047
4048 2011-02-23 Jason Merrill <jason@redhat.com>
4049
4050 * cp-tree.h (DECL_PARM_LEVEL): New.
4051 (struct lang_decl_parm): Add level field.
4052 * name-lookup.c (function_parm_depth): New fn.
4053 * name-lookup.h: Declare it.
4054 * parser.c (cp_parser_parameter_declaration_list): Use it.
4055 * mangle.c (struct globals): Add parm_depth field.
4056 (write_bare_function_type): Adjust it.
4057 (write_expression): Include the level delta in PARM_DECL mangling
4058 for abi >= 6.
4059
4060 * semantics.c (finish_decltype_type): Remove shortcut for decltype
4061 of id-expression.
4062 * mangle.c (write_type) [DECLTYPE_TYPE]: Strip it here for abi < 6.
4063
4064 2011-02-23 Nathan Froyd <froydnj@codesourcery.com>
4065
4066 PR c++/46868
4067 * parser.c (cp_parser_class_specifier): Require a closing brace
4068 to attempt error recovery.
4069
4070 2011-02-23 Jakub Jelinek <jakub@redhat.com>
4071
4072 PR c++/47833
4073 * pt.c (struct pending_template): Add chain_next GTY option.
4074 * decl.c (struct named_label_use_entry): Likewise.
4075
4076 2011-02-22 Paolo Carlini <paolo.carlini@oracle.com>
4077
4078 PR c++/47242
4079 * semantics.c (build_lambda_object): Bail out if a field is
4080 error_mark_node.
4081
4082 2011-02-22 Dodji Seketeli <dodji@redhat.com>
4083
4084 PR c++/47666
4085 * class.c (dfs_declare_virt_assop_and_dtor)
4086 (declare_virt_assop_and_dtor): New static functions.
4087 (add_implicitly_declared_members): Use
4088 declare_virt_assop_and_dtor.
4089
4090 2011-02-21 Jason Merrill <jason@redhat.com>
4091
4092 PR c++/47207
4093 * decl2.c (decl_constant_var_p): A constexpr var needs an
4094 initializer to be constant.
4095 * semantics.c (cxx_eval_constant_expression): Complain about
4096 constexpr var used in its own initializer.
4097 * call.c (set_up_extended_ref_temp): Set
4098 DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P too.
4099
4100 2011-02-20 Jason Merrill <jason@redhat.com>
4101
4102 PR c++/47199
4103 * semantics.c (cxx_eval_call_expression): Call
4104 cxx_eval_constant_expression in trivial shortcut.
4105
4106 PR c++/46831
4107 * call.c (convert_class_to_reference): Don't try to set up a
4108 second conv sequence for non-viable candidates.
4109
4110 PR c++/47703
4111 * error.c (location_of): Handle non-tagged types.
4112
4113 PR c++/46472
4114 * method.c (process_subob_fn): Instantiate constexpr templates.
4115 * optimize.c (maybe_clone_body): Propagate DECL_DECLARED_CONSTEXPR_P.
4116
4117 2011-02-20 Dodji Seketeli <dodji@redhat.com>
4118
4119 PR c++/46394
4120 * pt.c (tsubst_pack_expansion): do not use
4121 cp_tree_equal/same_type_p to detect an expansion of a parameter
4122 pack.
4123
4124 2011-02-19 Jason Merrill <jason@redhat.com>
4125
4126 PR c++/47503
4127 * semantics.c (cxx_eval_call_expression): Shortcut trivial copy.
4128
4129 2011-02-18 Paolo Carlini <paolo.carlini@oracle.com>
4130
4131 PR c++/47795
4132 * semantics.c (finish_non_static_data_member): Early return if
4133 object is error_mark_node.
4134
4135 2011-02-18 Dodji Seketeli <dodji@redhat.com>
4136
4137 PR c++/47208
4138 * pt.c (do_auto_deduction): Do not mention error_mark_node in
4139 diagnostics.
4140 * semantics.c (finish_id_expression): Do not pass erroneous decl
4141 to decl_constant_var_p.
4142
4143 2011-02-17 Jakub Jelinek <jakub@redhat.com>
4144
4145 PR c++/47783
4146 * cvt.c (convert_from_reference): Call mark_exp_read.
4147
4148 2011-02-11 Dodji Seketeli <dodji@redhat.com>
4149
4150 PR c++/47172
4151 * pt.c (finish_call_expr): Consider a call expression that has a
4152 dependent "this" pointer as being dependent. Add comments.
4153 (dependent_type_p, type_dependent_expression_p): Update comments.
4154
4155 2011-02-16 Dodji Seketeli <dodji@redhat.com>
4156
4157 PR c++/47326
4158 * pt.c (tsubst_copy)<case SIZEOF_EXPR>: Ensure that even pack
4159 expansion arguments are not evaluated.
4160
4161 2011-02-16 Jakub Jelinek <jakub@redhat.com>
4162
4163 PR c++/47704
4164 * cp-tree.h (ENUM_FIXED_UNDERLYING_TYPE_P): Use TYPE_LANG_FLAG_5
4165 instead of TYPE_LANG_FLAG_3.
4166 * pt.c (lookup_template_class): Copy over
4167 ENUM_FIXED_UNDERLYING_TYPE_P.
4168
4169 2011-02-15 Jason Merrill <jason@redhat.com>
4170
4171 PR c++/46807
4172 * method.c (synthesized_method_walk): Always exit early for
4173 trivial fn in C++98 mode.
4174
4175 2011-02-14 Jason Merrill <jason@redhat.com>
4176
4177 PR c++/47482
4178 * parser.c (cp_parser_enumerator_definition): Call
4179 fold_non_dependent_expr.
4180
4181 2011-02-09 Jason Merrill <jason@redhat.com>
4182
4183 * decl.c (cp_make_fname_decl): Set DECL_THIS_STATIC at toplevel.
4184 * semantics.c (finish_fname): Only return the name if we're in
4185 a function.
4186
4187 * decl.c (build_enumerator): Don't perform integral promotions on
4188 non-integral constants.
4189
4190 * cvt.c (convert_to_void): Handle null op1.
4191
4192 * class.c (type_has_constexpr_default_constructor): Make sure the
4193 caller stripped an enclosing array.
4194 * init.c (perform_member_init): Strip arrays before calling it.
4195
4196 PR c++/47511
4197 * semantics.c (potential_constant_expression_1): Handle TEMPLATE_DECL.
4198
4199 2011-02-03 Dodji Seketeli <dodji@redhat.com>
4200
4201 PR c++/47398
4202 * tree.c (cp_tree_equal)<TEMPLATE_PARM_INDEX>: Take the number of
4203 template parameters in account.
4204
4205 2011-02-03 Nathan Froyd <froydnj@codesourcery.com>
4206
4207 PR c++/46890
4208 * parser.c (cp_parser_class_specifier): Fix setting of
4209 want_semicolon.
4210
4211 2011-01-31 Jakub Jelinek <jakub@redhat.com>
4212
4213 PR c++/47416
4214 * semantics.c (build_data_member_initialization): Handle
4215 STATEMENT_LIST always instead of just for CLEANUP_BODY.
4216
4217 2011-01-31 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
4218
4219 * g++spec.c (lang_specific_driver) [HAVE_LD_STATIC_DYNAMIC] Use
4220 LD_STATIC_OPTION, LD_DYNAMIC_OPTION.
4221
4222 2011-01-29 Dodji Seketeli <dodji@redhat.com>
4223
4224 PR c++/47311
4225 * cp-tree.h (fixup_template_parms): Declare.
4226 * pt.c (end_template_parm_list): Do not fixup template parms here.
4227 (fixup_template_parms): Remove static. Fix typo in the
4228 comments. Remove useless code statement.
4229 (fixup_template_parm): For a template template parameter, fixup
4230 its attributes before fixing up its type.
4231 * parser.c
4232 (cp_parser_template_declaration_after_export): After parsing
4233 template parameters fixup their types.
4234
4235 2011-01-26 Jakub Jelinek <jakub@redhat.com>
4236
4237 PR c++/47476
4238 * semantics.c (potential_constant_expression_1): Handle
4239 TRUTH_XOR_EXPR.
4240
4241 2011-01-26 Dave Korn <dave.korn.cygwin@gmail.com>
4242
4243 PR c++/43601
4244 * semantics.c (expand_or_defer_fn_1): Handle it.
4245 * decl2.c (decl_needed_p): Likewise.
4246
4247 2011-01-21 Jason Merrill <jason@redhat.com>
4248
4249 PR c++/47041
4250 * semantics.c (build_constexpr_constructor_member_initializers):
4251 Handle trivial copy.
4252
4253 2011-01-21 Jakub Jelinek <jakub@redhat.com>
4254
4255 PR c++/47388
4256 * semantics.c (begin_for_stmt): If -fno-for-scope, don't
4257 assume init must be NULL if scope is NULL.
4258 (begin_range_for_stmt): Likewise.
4259
4260 2011-01-21 Jason Merrill <jason@redhat.com>
4261
4262 PR c++/46552
4263 * semantics.c (cxx_eval_constant_expression): Handle OFFSET_REF.
4264
4265 PR c++/46977
4266 * semantics.c (potential_constant_expression_1): Split out from
4267 potential_constant_expression. Add want_rval parm. Handle
4268 template expression forms. Don't enforce restriction on address
4269 of automatic variable here. Add a couple of diagnostics that
4270 had been missing.
4271 (require_potential_constant_expression): New entry point.
4272 (build_data_member_initialization, register_constexpr_fundef): Adjust.
4273 (maybe_constant_value): Check potential_constant_expression.
4274 * pt.c (fold_non_dependent_expr_sfinae): Likewise.
4275 * tree.c (build_vec_init_expr): Adjust.
4276
4277 2011-01-19 Jakub Jelinek <jakub@redhat.com>
4278
4279 PR c++/47303
4280 * decl2.c (finish_anon_union): Only call mangle_decl if TREE_STATIC
4281 or DECL_EXTERNAL.
4282
4283 2011-01-17 Jason Merrill <jason@redhat.com>
4284
4285 PR c++/47067
4286 * semantics.c (base_field_constructor_elt): New fn.
4287 (cxx_eval_bare_aggregate): Use it.
4288 (build_data_member_initialization): Leave COMPONENT_REF for
4289 vfield inits.
4290
4291 2011-01-14 Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
4292
4293 * parser.c (cp_parser_range_for): Remove the "unused variable" warning
4294 workaround.
4295
4296 2011-01-15 Giovanni Funchal <gafunchal@gmail.com>
4297 Jonathan Wakely <jwakely.gcc@gmail.com>
4298
4299 PR c++/33558
4300 * decl.c (grokdeclarator): Reject mutable reference members.
4301
4302 2011-01-14 Jason Merrill <jason@redhat.com>
4303
4304 PR c++/47289
4305 * pt.c (coerce_template_parms): Fix error recovery.
4306
4307 PR c++/46903
4308 * typeck2.c (check_narrowing): Only check arithmetic types.
4309
4310 PR c++/46688
4311 * tree.c (build_vec_init_expr): Handle flexible array
4312 properly.
4313
4314 2011-01-13 Kai Tietz <kai.tietz@onevision.com>
4315
4316 PR c++/47213
4317 * cp-tree.h (CLASSTYPE_VISIBILITY): Use
4318 TYPE_MAIN_DECL instead of TYPE_NAME.
4319 (CLASSTYPE_VISIBILITY_SPECIFIED): Likewise.
4320 * decl2.c (determine_visibility): Add check
4321 of CLASS_TYPE_P for underlying_type.
4322
4323 2011-01-12 Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
4324
4325 * cp-tree.h (begin_for_scope): New prototype.
4326 (begin_for_stmt): Update prototype.
4327 (begin_range_for_stmt): Update prototype.
4328 * init.c (build_vec_init): Update call to begin_for_stmt.
4329 * parser.c (cp_parser_for): New.
4330 (cp_parser_c_for): Add three new parameters.
4331 (cp_parser_range_for): Likewise. Most parsing code removed.
4332 (cp_parser_iteration_statement): Call cp_parser_for instead of
4333 cp_parser_c_for and cp_parser_range_for.
4334 (cp_parser_for_init_statement): Add new parameter and return type.
4335 (cp_parser_block_declaration): Update call to
4336 cp_parser_simple_declaration.
4337 (cp_parser_simple_declaration): Add new parameter.
4338 Update call to cp_parser_init_declarator.
4339 (cp_parser_init_declarator): Add new parameter.
4340 * pt.c (tsubst_expr): Update call to begin_for_stmt.
4341 * semantics.c (begin_for_scope): New.
4342 (begin_for_stmt): Add two new parameters.
4343 (begin_range_for_stmt): Likewise.
4344
4345 2011-01-12 Nicola Pero <nicola.pero@meta-innovation.com>
4346
4347 * parser.c (cp_parser_objc_at_property_declaration): Improved
4348 error message.
4349
4350 2011-01-11 Dodji Seketeli <dodji@redhat.com>
4351
4352 PR debug/46955
4353 * cp-lang.c (get_template_innermost_arguments_folded)
4354 (get_template_argument_pack_elems_folded)
4355 (template_arg_needs_folding, fold_cplus_constants): New static
4356 functions.
4357 (LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS): Set this hook to
4358 get_template_innermost_arguments_folded.
4359 (LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS): Set this hook to
4360 get_template_argument_pack_elems_folded.
4361
4362 2011-01-11 Jason Merrill <jason@redhat.com>
4363
4364 PR c++/46658
4365 * init.c (build_new_1): Handle value-init in templates differently.
4366
4367 PR c++/45520
4368 * tree.c (maybe_dummy_object): Check current_class_ref against
4369 context, not current_class_type.
4370
4371 2011-01-08 Nicola Pero <nicola.pero@meta-innovation.com>
4372
4373 PR objc/47078
4374 * parser.c (cp_parser_objc_typename): If the type is unknown, for
4375 error recovery purposes behave as if it was not specified so that
4376 the default type is used.
4377
4378 2011-01-07 Jakub Jelinek <jakub@redhat.com>
4379
4380 PR c++/47022
4381 * pt.c (tsubst_copy_and_build): Use tsubst instead of tsubst_copy
4382 for the second build_x_va_arg argument.
4383
4384 2011-01-05 Tom Tromey <tromey@redhat.com>
4385
4386 * typeck.c (cp_build_addr_expr_1): Update call to lvalue_error.
4387 (lvalue_or_else): Likewise.
4388
4389 2011-01-01 Kai Tietz <kai.tietz@onevision.com>
4390
4391 PR target/38662
4392 * tree.c (cxx_type_hash_eq):
4393 Allow METHOD_TYPE, too.
4394
4395 \f
4396 Copyright (C) 2011 Free Software Foundation, Inc.
4397
4398 Copying and distribution of this file, with or without modification,
4399 are permitted in any medium without royalty provided the copyright
4400 notice and this notice are preserved.