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