OSDN Git Service

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