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