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