OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [cp/] [ChangeLog-2011] - Blame information for rev 710

Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.