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