OSDN Git Service

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