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