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