OSDN Git Service

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