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