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