OSDN Git Service

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