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