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