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