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