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