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