OSDN Git Service

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