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