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