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