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