OSDN Git Service

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