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

Subversion Repositories openrisc

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

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 710 jeremybenn
2007-12-20  Jason Merrill  
2
 
3
        PR c++/34111
4
        * call.c (standard_conversion): Derived-to-base is considered a
5
        standard conversion.
6
 
7
2007-12-19  Jakub Jelinek  
8
 
9
        PR c++/34513
10
        * parser.c (cp_parser_omp_parallel): For non-combined parallel
11
        call cp_parser_statement rather than
12
        cp_parser_already_scoped_statement.
13
 
14
2007-12-18  Jason Merrill  
15
 
16
        PR c++/34206
17
        * pt.c (tsubst_aggr_type): Do nothing if the type already doesn't
18
        use template parms.
19
        (dependent_type_p_r): Handle the domain of an array.
20
 
21
2007-12-18  Douglas Gregor  
22
             Jakub Jelinek  
23
 
24
        PR c++/32565
25
        PR c++/33943
26
        PR c++/33965
27
        * pt.c (template_template_parm_bindings_ok_p): New; verifies
28
        bindings of template template parameters after all template
29
        arguments have been deduced.
30
        (coerce_template_parms): Don't complain when COMPLAIN doesn't
31
        include tf_error.
32
        (fn_type_unification): Use template_template_parm_bindings_ok_p.
33
        (unify): Deal with variadic, bound template template parameters.
34
        (get_class_bindings): Use template_template_parm_bindings_ok_p.
35
 
36
2007-12-18  Jakub Jelinek  
37
 
38
        PR c++/34488
39
        * decl.c (grokdeclarator): Reject friend sfk_constructor
40
        FUNCTION_TYPE.
41
 
42
2007-12-17  Jakub Jelinek  
43
 
44
        PR c/34506
45
        * parser.c (cp_parser_omp_all_clauses): Accept optional comma
46
        in between clauses.
47
 
48
2007-12-15  Alexandre Oliva  
49
 
50
        PR debug/7081
51
        * cp-lang.c (cp_classify_record): New.
52
        (LANG_HOOKS_CLASSIFY_RECORD): Override.
53
 
54
2007-12-11  Jakub Jelinek  
55
 
56
        PR c++/34238
57
        * decl2.c (cp_write_global_declarations): Revert 2007-11-22 change.
58
 
59
        PR c++/34364
60
        * rtti.c (build_dynamic_cast): Call convert_from_reference even for
61
        dynamic_cast in a template.
62
 
63
2007-12-10  Simon Martin  
64
 
65
        PR c++/34059
66
        * typeck.c (build_class_member_access_expr): Compute MEMBER_SCOPE from
67
        MEMBER's BASELINK_ACCESS_BINFO instead of its BASELINK_BINFO.
68
 
69
2007-12-10  Jakub Jelinek  
70
 
71
        PR c++/34395
72
        * error.c (dump_type_prefix, dump_type_suffix): Handle
73
        TYPE_PACK_EXPANSION.
74
 
75
        PR c++/34394
76
        * error.c (dump_expr): Handle ABS_EXPR.
77
 
78
2007-12-09  Jakub Jelinek  
79
 
80
        PR c++/34178
81
        PR c++/34340
82
        * repo.c (repo_emit_p): Return 2 for DECL_INTEGRAL_CONSTANT_VAR_P
83
        in class scope rather than DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P.
84
        Return 2 also if DECL_EXPLICIT_INSTANTIATION.
85
        * decl2.c (import_export_decl): Don't make VAR_DECLs import_p when
86
        flag_use_repository and repo_emit_p returned 2.
87
 
88
2007-12-06  Jakub Jelinek  
89
 
90
        PR c++/34336
91
        * tree.c (stabilize_call, stabilize_init): Do nothing if
92
        processing_template_decl.
93
 
94
2007-12-05  Jakub Jelinek  
95
 
96
        PR c++/34271
97
        * semantics.c (finish_decltype_type): For SCOPE_REF issue an
98
        error instead of assertion failure.
99
        * parser.c (cp_parser_decltype): If closing paren is not found,
100
        return error_mark_node.
101
 
102
2007-12-04  Douglas Gregor  
103
 
104
        PR c++/34101
105
        * name-lookup.c (arg_assoc_template_arg): Recurse on argument
106
        packs.
107
        (arg_assoc_type): We don't need to handle TYPE_ARGUMENT_PACK here,
108
        since arg_assoc_template_arg will deal with them (better).
109
 
110
2007-12-04  Douglas Gregor  
111
 
112
        PR c++/33509
113
        * pt.c (tsubst_exception_specification): Handle substitutions into
114
        member templates, where tsubst_pack_expansion returns a
115
        TYPE_PACK_EXPANSION.
116
 
117
2007-12-04  Douglas Gregor  
118
 
119
        PR c++/33091
120
        * pt.c (unify_pack_expansion): If we didn't deduce any actual
121
        bindings for the template parameter pack, don't try to keep the
122
        empty deduced arguments.
123
        (unify): If a parameter is a template-id whose template argument
124
        list contains a pack expansion that is not at the end, then we
125
        cannot unify against that template-id.
126
 
127
2007-12-02  Paolo Carlini  
128
 
129
         PR c++/34061
130
         * pt.c (current_template_args): Use error_operand_p.
131
 
132
2007-12-02  Paolo Carlini  
133
 
134
         PR c++/34273
135
         * error.c (dump_decl): Handle TREE_BINFO.
136
 
137
2007-12-01  Ollie Wild  
138
 
139
        PR c++/8171
140
        * typeck.c (build_binary_op): Add conversion of pointers to function
141
        members appearing as operands to the equality operators.
142
 
143
2007-11-30  Jakub Jelinek  
144
 
145
        PR c++/34275
146
        * error.c (dump_expr): Handle OBJ_TYPE_REF.
147
 
148
2007-11-29  Jakub Jelinek  
149
 
150
        PR c++/34270
151
        * tree.c (lvalue_p_1) : Handle x ?: y
152
        in templates.
153
        * typeck.c (is_bitfield_expr_with_lowered_type) :
154
        Likewise.
155
 
156
        PR c++/34267
157
        PR c++/34268
158
        * parser.c (cp_parser_decltype): Don't call finish_id_expression
159
        on ~type.
160
        * semantics.c (finish_decltype_type): Issue error on types, TYPE_DECLs
161
        and ~type early.
162
 
163
2007-11-27  Jakub Jelinek  
164
 
165
        PR tree-optimization/34181
166
        * method.c (use_thunk): Don't inline the call in the thunk.
167
 
168
        PR c++/34213
169
        * tree.c (decl_linkage): Static data members and static member
170
        functions in anonymous ns classes are lk_external.
171
 
172
2007-11-26  Andreas Krebbel  
173
 
174
        PR c++/34081
175
        * decl.c (start_preparsed_function): Pass
176
        processing_template_decl for the new allocate_struct_function
177
        parameter.
178
 
179
2007-11-25  Richard Guenther  
180
 
181
        * decl.c (poplevel): Use BLOCK_CHAIN.
182
 
183
2007-11-24  Ollie Wild  
184
 
185
        * typeck.c (delta_from_ptrmemfunc): New function.
186
        (get_member_function_from_ptrfunc): Call delta_from_ptrmemfunc.
187
        (build_binary_op): Call delta_from_ptrmemfunc.
188
 
189
2007-11-23  Jakub Jelinek  
190
 
191
        PR c++/30293
192
        PR c++/30294
193
        * decl.c (cp_finish_decl): Disallow variable or field
194
        definitions if extern "Java" aggregates.
195
        (grokparms): Disallow parameters with extern "Java"
196
        aggregates.
197
        (check_function_type): Disallow function return values
198
        with extern "Java" aggregates.
199
        * init.c (build_new_1): Disallow placement new with
200
        extern "Java" aggregates.
201
 
202
2007-11-23  Mark Mitchell  
203
            Manuel Lopez-Ibanez  
204
 
205
        PR c++/5310
206
        * call.c (convert_like_real): Build a zero constant when __null is
207
        converted to an integer type.
208
 
209
2007-11-22  Jakub Jelinek  
210
 
211
        PR c++/34094
212
        * decl2.c (cp_write_global_declarations): Issue error about static
213
        data members in anonymous namespace which are declared and used,
214
        but not defined.
215
 
216
2007-11-20  Jakub Jelinek  
217
 
218
        PR c++/34089
219
        * parser.c (cp_parser_class_head): Reject function template ids.
220
 
221
        PR c++/28879
222
        * tree.c (build_cplus_array_type_1): Don't pass any VLA types
223
        when processing_template_decl to build_array_type.
224
 
225
        PR c++/33962
226
        * pt.c (more_specialized_fn): Don't segfault if one or
227
        both argument list end with ellipsis.
228
 
229
2007-11-18  Jakub Jelinek  
230
 
231
        PR c++/30988
232
        * semantics.c (finish_call_expr): Set
233
        current_function_returns_abnormally if fn is noreturn FUNCTION_DECL
234
        or OVERLOAD with all noreturn functions.
235
 
236
2007-11-16  Jakub Jelinek  
237
 
238
        PR c++/34100
239
        * pt.c (apply_late_template_attributes): Do nothing if decl's type is
240
        error_mark_node.
241
 
242
2007-11-13  Jakub Jelinek  
243
 
244
        PR c++/34054
245
        PR c++/34056
246
        PR c++/34057
247
        PR c++/34058
248
        PR c++/34060
249
        * pt.c (find_parameter_packs_r): If ppd->set_packs_to_error,
250
        set to error_mark_node the outermost POINTER_TYPE to the pack if
251
        it is seen in a POINTER_TYPE.
252
        (push_template_decl_real): If check_for_bare_parameter_packs
253
        fails for function return type, set the return type to
254
        integer_type_node.  If check_for_bare_parameter_packs failed
255
        for non-function, return error_mark_node.
256
 
257
        PR c++/29225
258
        * call.c (build_new_op): Call resolve_args before calling
259
        build_over_call.
260
 
261
2007-11-11  Tom Tromey  
262
 
263
        PR c++/17577:
264
        * lex.c (handle_pragma_implementation): Use cpp_included_before.
265
 
266
2007-11-12  Manuel Lopez-Ibanez  
267
 
268
        PR c++/8570
269
        * pt.c (redeclare_class_template): Update error message. Use a
270
        note to show the previous declaration.
271
        (tsubst_friend_class): Use the location of the friend template as
272
        the input location before calling redeclare_class_template.
273
 
274
2007-11-11  Jakub Jelinek  
275
 
276
        PR c++/34068
277
        * semantics.c (finish_pseudo_destructor_expr): Handle
278
        object == error_mark_node.
279
 
280
2007-11-10  Jakub Jelinek  
281
 
282
        PR c++/32241
283
        * pt.c (tsubst_copy_and_build) : If object_type
284
        is not scalar type, let finish_class_member_access_expr handle
285
        diagnostics.  Pass BIT_NOT_EXPR argument to
286
        finish_pseudo_destructor_expr.  Handle SCOPE_REF properly.
287
 
288
2007-11-09  Douglas Gregor  
289
 
290
        PR c++/33510
291
        * decl.c (cp_complete_array_type): If any of the initializer
292
        elements are pack expansions, don't compute the array size yet.
293
 
294
2007-11-08  Andrew Pinski  
295
 
296
        PR c++/30297:
297
        * tree.c (decl_linkage): Fields have no linkage.
298
 
299
2007-11-08  Daniel Jacobowitz  
300
 
301
        * class.c (build_ctor_vtbl_group): Lay out the new type and decl.
302
 
303
2007-11-07  Douglas Gregor  
304
 
305
        PR c++/33045
306
        PR c++/33837
307
        PR c++/33838
308
        * semantics.c (finish_decltype_type): See through INDIRECT_REFs.
309
        Be careful with ERROR_MARK_NODEs.
310
        * parser.c (cp_parser_check_access_in_redeclaration): Handle NULL
311
        argument.
312
 
313
2007-11-07  Jakub Jelinek  
314
 
315
        PR c++/33501
316
        * call.c (build_over_call): Don't check TREE_ADDRESSABLE
317
        on incomplete type.
318
 
319
2007-11-06  Douglas Gregor  
320
 
321
        PR c++/33977
322
        PR c++/33886
323
        * tree.c (c_build_qualified_type): Define bridge to
324
        cp_build_qualified_type.
325
 
326
2007-11-06  Douglas Gregor  
327
 
328
        PR c++/31439
329
        PR c++/32114
330
        PR c++/32115
331
        PR c++/32125
332
        PR c++/32126
333
        PR c++/32127
334
        PR c++/32128
335
        PR c++/32253
336
        PR c++/32566
337
        * typeck.c (check_return_expr): Pass address of retval to
338
        check_for_bare_parameter_packs.
339
        * class.c (build_base_field): Tolerate bases that have no layout
340
        due to errors.
341
        (end_of_base): Ditto.
342
        * tree.c (canonical_type_variant): Be careful with
343
        ERROR_MARK_NODE.
344
        * cp-tree.h (check_for_bare_parameter_packs): Now accepts a
345
        tree*.
346
        * pt.c (find_parameter_pack_data): Add set_packs_to_error field,
347
        which states whether parameter packs should be replaced with
348
        ERROR_MARK_NODE.
349
        (find_parameter_packs_r): Pass addresses to cp_walk_tree wherever
350
        possible. If set_packs_to_error is set true, replace the parameter
351
        pack with ERROR_MARK_NODE. Manage our own pointer sets.
352
        (uses_parameter_packs): Don't set parameter packs to
353
        ERROR_MARK_NODE.
354
        (check_for_bare_parameter_packs): Now takes a pointer to a tree,
355
        which may be modified (if it is a parameter pack). Instructs
356
        find_parameter_packs_r to replace parameter packs with
357
        ERROR_MARK_NODE (so that they won't cause errors later on).
358
        (process_template_parm): Pass pointer to
359
        check_for_bare_parameter_packs.
360
        (process_partial_specialization): Replace pack expansions before
361
        the end of the template argument list with ERROR_MARK_NODE.
362
        (push_template_decl_real): Pass pointer to
363
        check_for_bare_parameter_packs. Replace parameter packs not at the
364
        end of the template parameter list with ERROR_MARK_NODE.
365
        (convert_template_argument): Be more careful about using DECL_NAME
366
        on only declarations.
367
        (unify): Can't unify against ERROR_MARK_NODE.
368
        * semantics.c (finish_cond): Pass pointer to
369
        check_for_bare_parameter_packs.
370
        (finish_expr_stmt): Ditto.
371
        (finish_for_expr): Ditto.
372
        (finish_switch_cond): Pass pointer to
373
        check_for_bare_parameter_packs, and call it before we put the
374
        condition into the statement.
375
        (finish_mem_initializers): Pass pointer to
376
        check_for_bare_parameter_packs.
377
        (finish_member_declaration): Ditto.
378
        * parser.c (cp_parser_base_clause): Ditto.
379
 
380
2007-11-06  Jakub Jelinek  
381
 
382
        PR target/33168
383
        * decl.c (cp_finish_decl): Call make_rtl_for_nonlocal_decl already
384
        with the final TREE_READONLY flag in place.  processing_template_decl
385
        is known to be 0 in this part of function.
386
 
387
        PR c++/33894
388
        * cp-tree.h: Update comment - TYPE_LANG_FLAG_0 is not
389
        OMP_ATOMIC_DEPENDENT_P in OMP_ATOMIC.
390
        * pt.c (tsubst_expr): Assert OMP_ATOMIC_DEPENDENT_P.
391
        * semantics.c (finish_omp_atomic): Revert most of the
392
        2007-02-05 changes, just keep the new representation of
393
        OMP_ATOMIC_DEPENDENT_P OMP_ATOMIC.
394
 
395
2007-11-05  H.J. Lu  
396
 
397
        PR c++/33871
398
        * decl2.c (constrain_visibility): Clear DECL_ONE_ONLY if marked
399
        local.
400
 
401
2007-11-05  Douglas Gregor  
402
 
403
        PR c++/33996
404
        PR c++/33235
405
        PR c++/33930
406
        * typeck.c (merge_types): Don't lose rvalue references when
407
        merging types.
408
        * call.c (build_over_call): Don't elide move constructors just
409
        because the copy constructor is trivial (!).
410
        (compare_ics): If comparing cv-qualifiers fails, we can still order
411
        based on binding lvalues vs. rvalues.
412
 
413
2007-11-05  Douglas Gregor  
414
 
415
        PR c++/33939
416
        * pt.c (unify_pack_expansion): bring handling of function call
417
        arguments into line with type_unification_real.
418
 
419
2007-11-05  Manuel Lopez-Ibanez  
420
 
421
        * typeck.c (build_binary_op): Use pedwarn instead of error for
422
        consistency.
423
 
424
2007-11-05  Jakub Jelinek  
425
 
426
        PR c++/33836
427
        * parser.c (cp_parser_unary_expression): For &&label call
428
        cp_parser_non_integral_constant_expression and return error_mark_node
429
        if it returned true.
430
 
431
        PR c++/33969
432
        * decl.c (grokdeclarator): Don't call build_memfn_type if type
433
        is neither FUNCTION_TYPE nor METHOD_TYPE.
434
 
435
2007-11-02  Jakub Jelinek  
436
 
437
        PR c++/33516
438
        * parser.c (cp_parser_nested_name_specifier_opt): Use
439
        TYPE_MAIN_VARIANT (new_scope) as scope if new_scope is an incomplete
440
        typedef of currently open class.
441
 
442
2007-11-02  Paolo Carlini  
443
 
444
        PR c++/33495
445
        * error.c (dump_expr): Deal specially with statements.
446
 
447
2007-11-01  Jason Merrill  
448
 
449
        PR c++/30897
450
        * pt.c (push_template_decl_real): Set DECL_CONTEXT on template
451
        template parms.
452
        (lookup_template_class): Use it to get the outer template args
453
        for instantiating one.
454
 
455
        PR c++/29236
456
        * pt.c (reduce_template_parm_level): tsubst the parameters
457
        of a template template parm.
458
 
459
2007-11-01  Douglas Gregor  
460
 
461
        PR c++/33955
462
        * pt.c (find_parameter_packs_r): Handle TYPENAME_TYPE.
463
 
464
2007-11-01  Jakub Jelinek  
465
 
466
        PR c++/32384
467
        * parser.c (cp_parser_postfix_dot_deref_expression): If
468
        POSTFIX_EXPRESSION is type dependent, try to parse it as pseudo dtor
469
        first and if that succeeds and type is SCALAR_TYPE_P, create
470
        PSEUDO_DTOR_EXPR.
471
 
472
        PR c++/32260
473
        * rtti.c (enum_tinfo_kind): Fix TK_TYPE_INFO_TYPE comment.
474
        (typeid_ok_p): Use the same alias set for abi::__type_info_pseudo
475
        as for std::type_info.
476
 
477
2007-10-31  Paolo Carlini  
478
 
479
        PR c++/33494
480
        * cxx-pretty-print.c (pp_cxx_typeid_expression,
481
        pp_cxx_delete_expression): Change to static linkage.
482
        * cxx-pretty-print.h: Adjust declarations.
483
        * error.c (dump_expr, case EXPR_PACK_EXPANSION, TYPEID_EXPR,
484
        MEMBER_REF, DOTSTAR_EXPR, DELETE_EXPR, VEC_DELETE_EXPR,
485
        MODOP_EXPR): Forward to pp_expression.
486
 
487
        * cxx-pretty-print.c (pp_cxx_expression, case NON_DEPENDENT_EXPR):
488
        Fix typo.
489
 
490
2007-10-31 Christian Bruel  
491
            Mark Mitchell  
492
 
493
        PR c++/19531
494
        * typeck.c (check_return_expr): Don't set named_return_value_okay_p
495
        if retval is volatile.
496
 
497
2007-10-30  Jakub Jelinek  
498
 
499
        PR c++/33616
500
        * decl2.c (build_offset_ref_call_from_tree): Call
501
        build_non_dependent_expr on object prior to building ADDR_EXPR from it
502
        if FN is DOTSTAR_EXPR.
503
 
504
2007-10-30  Douglas Gregor  
505
 
506
        PR c++/31993
507
        PR c++/32252
508
        * pt.c (find_parameter_packs_r): Fix typo in comment.
509
        (convert_template_argument): Look at the pattern of a pack
510
        expansion to determine what kind of entity we're converting.
511
        (coerce_template_parameter_pack): When we have coerced a non-type
512
        template parameter pack, substitute into the type of that pack.
513
        (tsubst_pack_expansion): When our substitution of a parameter pack
514
        is a "trivial" substitution of itself, just substitute into the
515
        pack expansion rather than actually expanding.
516
 
517
2007-10-29  Jakub Jelinek  
518
 
519
        PR c++/33841
520
        * class.c (check_bitfield_decl): Don't set field's type to error_mark_node
521
        for non-integral type bitfields.  Return true if bitfield is correct, false
522
        error has been diagnosed.
523
        (check_field_decls): If check_bitfield_decl returned false, call also
524
        check_field_decl.
525
 
526
2007-10-28  Paolo Carlini  
527
            Mark Mitchell  
528
 
529
        PR c++/30659
530
        * pt.c (do_decl_instantiation): If the VAR_DECL is not a
531
        class member error out and return.
532
 
533
2007-10-27  Jakub Jelinek  
534
 
535
        * error.c (reinit_cxx_pp): Initialize cxx_pp->enclosing_scope
536
        to current_function_decl rather than 0.
537
 
538
        PR c++/33844
539
        * cxx-pretty-print.c (pp_cxx_pm_expression) : Print
540
        ->* rather than .*.
541
        * error.c (dump_expr): Handle MEMBER_REF and DOTSTAR_EXPR.
542
 
543
2007-10-27  Jason Merrill  
544
 
545
        PR c++/5247
546
        * call.c (convert_default_arg): Detect recursion.
547
 
548
2007-10-27  Jakub Jelinek  
549
 
550
        PR c++/33842
551
        * cxx-pretty-print.h (pp_cxx_offsetof_expression): New prototype.
552
        * cxx-pretty-print.c (pp_cxx_primary_expression): Handle
553
        OFFSETOF_EXPR.
554
        (pp_cxx_offsetof_expression_1, pp_cxx_offsetof_expression): New
555
        functions.
556
        * error.c (dump_expr): Handle OFFSETOF_EXPR.
557
 
558
2007-10-26  Jason Merrill  
559
 
560
        PR c++/24791
561
        * pt.c (get_template_info): New fn.
562
        (template_class_depth): Use it.
563
        (push_template_decl_real): Check that the template args of the
564
        definition match the args of the previous declaration.
565
 
566
2007-10-26  Paolo Carlini  
567
 
568
        PR c++/31988
569
        * decl2.c (coerce_new_type): Do not allow a default argument for
570
        the first parameter.
571
 
572
2007-10-26  Douglas Gregor  
573
 
574
        PR c++/33839
575
        * parser.c (cp_parser_decltype): Return ERROR_MARK_NODE if we
576
        don't see the leading '('. Only lookup names if we get an
577
        IDENTIFIER_NODE.
578
 
579
2007-10-26  Jakub Jelinek  
580
 
581
        PR c++/33744
582
        * parser.c (cp_parser_parenthesized_expression_list): Set
583
        greater_than_is_operator_p to true in between the parens.
584
 
585
2007-10-26  Paolo Carlini  
586
 
587
        PR c++/31747
588
        * decl.c (grokdeclarator): In case of conflicting specifiers
589
        just return error_mark_node.
590
 
591
2007-10-26  Ollie Wild  
592
 
593
        * expr.c (cxx_expand_expr): Removed.
594
        * cp-tree.h (exx_expand_expr): Removed.
595
        * cp-objcp-common.h (LANK_HOOKS_EXPAND_EXPR): Replace cxx_expand_expr
596
        with c_expand_expr.
597
 
598
2007-10-25  Paolo Carlini  
599
 
600
        PR c++/33843
601
        * cxx-pretty-print.c (pp_cxx_unqualified_id): Deal with BIT_NOT_EXPR.
602
 
603
2007-10-23  Jason Merrill  
604
 
605
        PR c++/25950 (DR 391)
606
        * call.c (struct conversion): Remove check_copy_constructor_p.
607
        (reference_binding): Always bind a reference directly to a
608
        compatible class rvalue.  Pass down LOOKUP_NO_TEMP_BIND during
609
        temporary creation.
610
        (check_constructor_callable): Remove.
611
        (convert_like_real): Don't call it.
612
        (initialize_reference): Don't call check_constructor_callable.
613
        (standard_conversion): Check LOOKUP_NO_CONVERSION instead of
614
        LOOKUP_CONSTRUCTOR_CALLABLE.  Don't require a temporary for base
615
        conversions if LOOKUP_NO_TEMP_BIND.
616
        (implicit_conversion): Pass through LOOKUP_NO_TEMP_BIND.
617
        (build_user_type_conversion_1): Pass through LOOKUP_NO_TEMP_BIND for
618
        second conversion.
619
        * cp-tree.h (LOOKUP_CONSTRUCTOR_CALLABLE): Remove.
620
 
621
2007-10-22  Jakub Jelinek  
622
 
623
        PR c++/33372
624
        * semantics.c (finish_omp_clauses): Check !type_dependent_expression_p
625
        before checking if its type is integral.
626
 
627
2007-10-22  Jason Merrill  
628
 
629
        PR c++/33620
630
        * class.c (finish_struct_bits): Copy TYPE_ATTRIBUTES.
631
        * pt.c (apply_late_template_attributes): Splice out dependent
632
        attributes from DECL_ATTRIBUTES.
633
 
634
        * decl.c (cxx_maybe_build_cleanup): Use build_address.
635
 
636
2007-10-17  Manuel Lopez-Ibanez  
637
 
638
        * typeck.c (build_binary_op) : Use appropriate warning option
639
        instead of unnamed warning.
640
 
641
2007-10-16  Paolo Carlini  
642
 
643
        PR c++/31446
644
        * pt.c (current_template_args): Do not change TREE_LIST elements
645
        with a TREE_VALUE of error_mark_node.
646
 
647
2007-10-16  Mark Mitchell  
648
 
649
        * typeck.c (cp_apply_type_quals_to_decl): Expand documentation.
650
        * decl.c (start_decl): Tidy.
651
        (start_decl_1): Call cp_apply_type_quals_to_decl after completing
652
        the type.
653
        (grokdeclarator): Clarify comment.
654
 
655
2007-10-14  Andrew Pinski  
656
 
657
        PR c++/30303
658
        * decl.c (grokfndecl): Return NULL after the "definition of
659
        implicitly-declared" error happened.
660
 
661
2007-10-12  Simon Martin  
662
 
663
        PR c++/26698
664
        * call.c (build_user_type_conversion_1): Do not consider conversion
665
        functions to convert a (possibly cv-qualified) object to the (possibly
666
        cv-qualified) same object type (or a reference to it), to a (possibly
667
        cv-qualified) base class of that type (or a reference to it).
668
 
669
2007-10-12  Paolo Carlini  
670
 
671
        * pt.c (tsubst): Use template_parm_level_and_index.
672
 
673
2007-10-12  Jakub Jelinek  
674
 
675
        PR c++/32121
676
        * parser.c (cp_parser_compound_statement): Handle label-declarations
677
        at the beginning of the compound statement.
678
        (cp_parser_block_declaration): Issue diagnostics about __label__
679
        not at the beginning of a block.
680
 
681
2007-10-11  Paolo Carlini  
682
 
683
        PR c++/33461
684
        * pt.c (coerce_template_parameter_pack): Do not pass error_mark_node
685
        to convert_template_argument.
686
        (coerce_template_parms): Return error_mark_node after fixed-length
687
        error.
688
        (tsubst_decl): Check for error_mark_node the return value of the
689
        first tsubst in 'case VAR_DECL'.
690
 
691
2007-10-08  Ollie Wild  
692
 
693
        * typeck2.c (digest_init): Call cplus_expand_constant after
694
        convert_for_initialization.
695
        * cp-objcp-common.h (LANG_HOOKS_EXPAND_CONSTANT): Removed.
696
        * expr.c (cplus_expand_constant): Updated function description.
697
 
698
2007-10-04  Jason Merrill  
699
 
700
        PR c++/20416
701
        * call.c (initialize_reference): Handle local static reference
702
        temps properly.
703
 
704
2007-10-03  Jason Merrill  
705
 
706
        PR c++/32470
707
        * name-lookup.c (push_namespace_with_attrs): Fold back into...
708
        (push_namespace): Here.
709
        (handle_namespace_attrs): New fn for the attr code.
710
        (leave_scope): Don't pop_visibility.
711
        * name-lookup.h (struct cp_binding_level): Remove has_visibility.
712
        * parser.c (cp_parser_namespace_definition): Call
713
        handle_namespace_attrs and pop_visibility as appropriate.
714
 
715
        PR c++/11756
716
        * mangle.c (write_type) [TYPEOF_TYPE]: Just sorry.
717
 
718
2007-10-03  Alexandre Oliva  
719
 
720
        * decl.c (duplicate_decls): Preserve linkage flags for mere
721
        redeclarations of gnu_inline definitions.
722
 
723
2007-10-03  Jason Merrill  
724
 
725
        PR c++/15764
726
        * decl.c (wrap_cleanups_r): New fn.
727
        (wrap_temporary_cleanups): New fn.
728
        (initialize_local_var): Call it.
729
 
730
2007-09-29  Jason Merrill  
731
 
732
        PR c++/33094
733
        * decl.c (make_rtl_for_nonlocal_decl): It's ok for a member
734
        constant to not have DECL_EXTERNAL if it's file-local.
735
 
736
2007-09-28  Ollie Wild  
737
 
738
        Revert
739
        2007-09-27  Ollie Wild  
740
 
741
        * typeck2.c (digest_init): Call cplus_expand_constant after
742
        convert_for_initialization.
743
        * cp-objcp-common.h (LANG_HOOKS_EXPAND_CONSTANT): Removed.
744
        * expr.c (cplus_expand_constant): Updated function description.
745
 
746
2007-09-28  Jason Merrill  
747
 
748
        PR c++/10179
749
        * class.c (layout_empty_base): Take rli parameter, update
750
        rli->record_align if empty base has user-specified alignment.
751
        (build_base_field): Pass rli to it.
752
 
753
2007-09-28  Paolo Carlini  
754
 
755
        PR c++/33213
756
        * error.c (dump_decl): Deal with TYPE_PACK_EXPANSION.
757
 
758
2007-09-28  Paolo Carlini  
759
 
760
        PR c++/33118
761
        * error.c (dump_expr): Deal with ARGUMENT_PACK_SELECT.
762
        (dump_type): Use dump_template_argument for TYPE_ARGUMENT_PACK.
763
        (dump_parameters): Just call dump_type for argument packs too.
764
 
765
2007-09-28  Jakub Jelinek  
766
 
767
        PR c++/31434
768
        * tree.c (cp_build_qualified_type_real): Handle TYPE_PACK_EXPANSION
769
        qualification by creating qualified PACK_EXPANSION_PATTERN and
770
        then calling make_pack_expansion on it.
771
 
772
2007-09-27  Ollie Wild  
773
 
774
        * typeck2.c (digest_init): Call cplus_expand_constant after
775
        convert_for_initialization.
776
        * cp-objcp-common.h (LANG_HOOKS_EXPAND_CONSTANT): Removed.
777
        * expr.c (cplus_expand_constant): Updated function description.
778
 
779
2007-09-27  Jason Merrill  
780
 
781
        PR c++/33571
782
        * decl2.c (is_late_template_attribute): Don't crash on unknown
783
        attribute.
784
 
785
2007-09-27  Paolo Carlini  
786
 
787
        PR c++/33493
788
        * error.c (dump_expr): Deal with DELETE_EXPR and VEC_DELETE_EXPR.
789
        * cxx-pretty-print.c (pp_cxx_delete_expression): Add missing
790
        spaces in the formatting.
791
        * cxx-pretty-print.h (pp_cxx_delete_expression): Declare.
792
 
793
2007-09-27  Jakub Jelinek  
794
 
795
        * error.c (cxx_print_error_function): Add third argument, pass
796
        it over to lhd_print_error_function.
797
        (cp_print_error_function): If diagnostic->abstract_origin, print
798
        virtual backtrace.
799
        * cp-tree.h (struct diagnostic_info): New forward decl.
800
        (cxx_print_error_function): Add third argument.
801
 
802
2007-09-25  Simon Martin  
803
 
804
        PR c++/33207
805
        * name-lookup.c (pushtag): Do not create an implicit typedef before
806
        the associated type declaration is known to be valid.
807
 
808
2007-09-25  Jakub Jelinek  
809
 
810
        * tree.c (cxx_printable_name): Compare FUNCTION_DECL uids
811
        rather than pointers.
812
 
813
2007-09-24  Danny Smith  
814
 
815
        PR c++/14688
816
         * search.c (check_final_overrider): Fail if
817
        targetm.comp_type_attributes returns 0.
818
 
819
2007-09-24  Jason Merrill  
820
 
821
        PR c++/33239
822
        * pt.c (resolve_typename_type): Don't look things up in the original
823
        template if it would mean losing template arguments.
824
 
825
2007-09-24  Jakub Jelinek  
826
 
827
        PR c++/33506
828
        * cp-tree.h (cxx_type_hash_eq): New prototype.
829
        * cp-objcp-common.h (LANG_HOOKS_TYPE_HASH_EQ): Redefine.
830
        * tree.c (cxx_type_hash_eq): New function.
831
 
832
2007-09-24  Douglas Gregor  
833
 
834
        PR c++/33185
835
        * tree.c (cp_build_qualified_type_real): Build a canonical
836
        ARRAY_TYPE if the original ARRAY_TYPE was not a canonical type.
837
 
838
2007-09-24  Douglas Gregor  
839
 
840
        PR c++/33112
841
        PR c++/33185
842
        * tree.c (cplus_array_compare): Compare pointers, not types.
843
        (build_cplus_array_type_1): Store new array type into the hash
844
        table before building the canonical type; build the canonical type
845
        correctly.
846
        (cp_build_qualified_type_real): Put all of the array types with
847
        cv-qualified element types into the C++ array hash table, built as
848
        variants of the unqualified versions.
849
 
850
2007-09-23  Jason Merrill  
851
 
852
        PR c++/16370
853
        * decl.c (grokdeclarator): Look through implicit TYPE_DECLs
854
        for deprecation warnings.
855
 
856
2007-09-22  Jason Merrill  
857
 
858
        PR c++/15269
859
        * call.c (build_over_call): Warn about deprecated virtuals.
860
 
861
        PR c++/19407
862
        * cp-tree.h (ATTR_IS_DEPENDENT): New macro.
863
        (MAYBE_TAGGED_TYPE_P): Remove.
864
        * pt.c (apply_late_template_attributes): Check ATTR_IS_DEPENDENT
865
        instead of calling is_late_template_attribute again.
866
        (tsubst_decl) [TYPE_DECL]: Just check if the name is the tag.
867
        (tsubst): A typedef is a TYPE_NAME != TYPE_MAIN_DECL.
868
        Don't crash on typedefs from non-template classes.
869
        * decl2.c (grokfield): Don't sorry about attrs on template parms.
870
        (is_late_template_attribute): All attributes applied to template
871
        parms or typename types are dependent.  Static.
872
        (splice_template_attributes): Pass decl through.
873
        (save_template_attributes): Likewise.
874
 
875
2007-09-20  Jakub Jelinek  
876
 
877
        PR c++/33496
878
        * pt.c (tsubst_copy) : Handle error_mark_node
879
        returned from tsubst_pack_expansion.
880
        (tsubst_copy_and_build) : Likewise.
881
        (tsubst_copy_and_build) : Likewise.
882
 
883
2007-09-20  Paolo Carlini  
884
 
885
        PR c++/33460
886
        * semantics.c (finish_id_expression): Use consistently
887
        context_for_name_lookup.
888
        * decl.c (fixup_anonymous_aggr): Fix error message for
889
        anonymous struct (vs union).
890
 
891
2007-09-19  Jason Merrill  
892
 
893
        PR c++/7586
894
        * pt.c (tsubst): Handle typedefs by looking for the specialization.
895
        (retrieve_specialization): Only tagged types use
896
        DECL_TEMPLATE_INSTANTIATIONS.
897
        (instantiate_class_template): Push nested classes too.
898
        (tsubst_decl) [TYPE_DECL]: Only check for canonical decl for
899
        tagged types.
900
        * cp-tree.h (MAYBE_TAGGED_TYPE_P): New macro.
901
        * init.c (is_aggr_type): Remove redundant tests.
902
        * class.c (push_nested_class): Use CLASS_TYPE_P.
903
 
904
2007-09-20  Paolo Carlini  
905
 
906
        PR c++/33459
907
        * init.c (build_zero_init): If, recursively, build_zero_init
908
        returns a NULL_TREE, do not append it to the VEC of constructors.
909
 
910
2007-09-18  Jason Merrill  
911
 
912
        PR c++/17743
913
        * pt.c (apply_late_template_attributes): Set processing_template_decl.
914
        (tsubst_decl) [TYPE_DECL]: Preserve naming typedef, pass
915
        ATTR_FLAG_TYPE_IN_PLACE.
916
        (tsubst): Do unqualified lookup to find typedefs from current class.
917
        [ARRAY_TYPE]: Propagate alignment info.
918
        * decl2.c (is_late_template_attribute): Only defer handling of
919
        attribute aligned if the expression is dependent.
920
        (save_template_attributes): If we're deferring any attributes,
921
        make this a naming typedef.
922
 
923
2007-09-18  Paolo Carlini  
924
 
925
        PR c++/33462 (again)
926
        * cxx-pretty-print.c (pp_cxx_va_arg_expression): Print
927
        va_arg instead of __builtin_va_arg.
928
 
929
2007-09-18  Paolo Carlini  
930
 
931
        PR c++/33462
932
        * cxx-pretty-print.c (pp_cxx_va_arg_expression): Add.
933
        (pp_cxx_primary_expression): Use it.
934
        * cxx-pretty-print.h (pp_cxx_va_arg_expression): Declare.
935
        * error.c (dump_expr): Use it.
936
 
937
2007-09-18  Paolo Carlini  
938
 
939
        PR c++/33463
940
        * cxx-pretty-print.c (pp_cxx_postfix_expression): Split
941
        out case TYPEID_EXPR to...
942
        (pp_cxx_typeid_expression): ... here; use pp_cxx_left_paren
943
        and pp_cxx_right_paren.
944
        * cxx-pretty-print.h (pp_cxx_typeid_expression): Declare.
945
        * error.c (dump_expr): Use it.
946
 
947
2007-09-18  Paolo Carlini  
948
 
949
        PR c++/33464
950
        * cxx-pretty-print.c (pp_cxx_trait_expression): Add.
951
        (pp_cxx_primary_expression): Use it.
952
        * cxx-pretty-print.h (pp_cxx_trait_expression): Declare.
953
        * error.c (dump_expr): Use it.
954
 
955
2007-09-16  Paolo Carlini  
956
 
957
        PR c++/33124
958
        * init.c (build_new): Remove warning for zero-element
959
        allocations.
960
 
961
2007-09-16  Nathan Sidwell  
962
 
963
        PR c++/32756
964
        * call.c (maybe_handle_implicit_object): Set this_p, clear
965
        rvaluedness_matches_p.
966
        (compare_ics): Do not compare rvaluedness matching when one of the
967
        operands is an implicit object.
968
 
969
2007-09-14  Jason Merrill  
970
 
971
        PR c++/17743, c++/19163
972
        * decl2.c (is_late_template_attribute): New fn.
973
        (splice_template_attributes, save_template_attributes): New fns.
974
        (cplus_decl_attributes): Call save_template_attributes.
975
        * pt.c (apply_late_template_attributes): New fn.
976
        (instantiate_class_template, tsubst_decl): Use it.
977
        * cp-tree.h: Declare is_late_template_attribute.
978
 
979
2007-09-13  Tom Tromey  
980
 
981
        * parser.c (cp_lexer_new_main): Don't use
982
        c_lex_return_raw_strings.
983
        (cp_lexer_get_preprocessor_token): Update.  Add special case when
984
        lexer is NULL.
985
 
986
2007-09-11  Jan Hubicka 
987
 
988
        * method.c (use_thunk): Use tree_rest_of_compilation
989
        * cp-objecp-common.h (LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Kill.
990
        (LANG_HOOKS_CALLGRAPH_EMIT_ASSOCIATED_THUNKS): Define.
991
        * cp-tree.h (expand_body): Kill.
992
        (emit_associated_thunks): Declare.
993
        * semantics.c (emit_associated_thunks): Export.
994
        (expand_body): Kill.
995
 
996
2007-09-09  David Daney  
997
 
998
        PR c++/33324
999
        * init.c (build_new_1):  Use POINTER_PLUS_EXPR instead of MINUS_EXPR
1000
        to calculate cookie_ptr.
1001
 
1002
2007-09-08  Jason Merrill  
1003
 
1004
        PR c++/33342
1005
        * pt.c (most_specialized_class): Set processing_template_decl
1006
        while tsubsting partial spec args.
1007
 
1008
2007-09-06  Jason Merrill  
1009
 
1010
        * decl2.c (get_guard): Copy visibility from the guarded variable.
1011
 
1012
2007-09-06  Jan Hubicka  
1013
 
1014
        * semantics.c (expand_body): Do not mark arguments of clones used.
1015
 
1016
2007-09-06  Paolo Carlini  
1017
 
1018
        PR c++/32674
1019
        * decl.c (cp_finish_decl): When processing_template_decl,
1020
        deal correctly with init as TREE_LIST.
1021
 
1022
2007-09-06  Tom Tromey  
1023
 
1024
        * decl.c (finish_function): Put return's location on line zero of
1025
        file.
1026
 
1027
2007-09-05  Jason Merrill  
1028
 
1029
        PR c++/15745
1030
        * except.c (prepare_eh_type): Use type_decays_to.
1031
 
1032
        PR c++/15097
1033
        * init.c (build_delete): Use build_headof to get the address of the
1034
        complete object if we aren't using the deleting destructor.
1035
        * rtti.c (build_headof): No longer static.
1036
        * cp-tree.h: Declare it.
1037
 
1038
2007-09-06  Jakub Jelinek  
1039
 
1040
        * decl.c (duplicate_decls): Set TREE_NOTHROW on __builtin_XX
1041
        decl if a prototype for XX is provided with throw().
1042
 
1043
        PR c++/33289
1044
        * decl.c (builtin_function_1): Set DECL_ANTICIPATED also
1045
        on __*_chk non-__builtin_* decls.
1046
 
1047
2007-09-05  Paolo Carlini  
1048
 
1049
        PR c++/30302
1050
        * semantics.c (finish_id_expression): Use context_for_name_lookup
1051
        insted of DECL_CONTEXT, to see through anonymous structs and unions.
1052
        * class.c (finish_struct_anon): Deal correctly with anonymous
1053
        structs (vs unions, as GNU extension) in error messages.
1054
 
1055
2007-09-05  Jan Hubicka  
1056
 
1057
        * sematics.c (expand_body): Remove unnecesary import_export_decl
1058
        call, DECL_EXTERNAL checks and current_function_decl saving.
1059
 
1060
2007-09-05  Paolo Carlini  
1061
 
1062
        PR c++/29731 (again)
1063
        * parser.c (cp_parser_primary_expression): Return error_mark_node
1064
        when a statement-expression is found in a template-argument list.
1065
 
1066
2007-09-04  Jason Merrill  
1067
 
1068
        * except.c (initialize_handler_parm): Use
1069
        fold_build_cleanup_point_expr.
1070
 
1071
        PR c++/31419
1072
        * call.c (reference_binding): Don't look for user-defined conversions
1073
        to the same type.
1074
 
1075
        PR c++/31411
1076
        * except.c (initialize_handler_parm): Put a CLEANUP_POINT_EXPR inside
1077
        the MUST_NOT_THROW_EXPR.
1078
 
1079
2007-09-04  Richard Sandiford  
1080
 
1081
        * decl.c (cp_finish_decl): Call determine_visibility before
1082
        make_rtl_for_nonlocal_decl.
1083
 
1084
2007-09-04  Jason Merrill  
1085
 
1086
        PR c++/14032
1087
        * pt.c (most_specialized_class): Substitute outer template
1088
        arguments into the arguments of a member template partial
1089
        specialization.
1090
        (strip_innermost_template_args): New fn.
1091
 
1092
2007-09-03  Daniel Jacobowitz  
1093
 
1094
        * Make-lang.in (g++spec.o): Remove SHLIB_MULTILIB.
1095
 
1096
2007-09-03  Kaveh R. Ghazi  
1097
 
1098
        * call.c (name_as_c_string): Supply a TYPE for CONST_CAST.
1099
        * decl.c (cp_make_fname_decl): Likewise,
1100
        * parser.c (cp_parser_string_literal): Likewise,
1101
        * tree.c (pod_type_p, zero_init_p): Use CONST_CAST_TREE.
1102
        * typeck.c (cp_type_quals, cp_type_readonly, cp_has_mutable_p):
1103
        Likewise,
1104
 
1105
2007-09-02  Paolo Carlini  
1106
 
1107
        PR c++/33208
1108
        * typeck.c (build_unary_op): Fix error message for
1109
        Boolean expression as operand to operator--.
1110
 
1111
2007-09-01  Kaveh R. Ghazi  
1112
 
1113
        * tree.c (pod_type_p, zero_init_p): Use strip_array_types.
1114
        * typeck.c (cp_type_quals, cp_type_readonly, cp_has_mutable_p):
1115
        Likewise.
1116
 
1117
2007-08-31 Douglas Gregor 
1118
 
1119
        PR c++/32597
1120
        * init.c (build_default_init): Make extern.
1121
        * cp-tree.h (build_default_init): Declare here.
1122
        * pt.c (tsubst_expr): When the instantiation of the initializer of
1123
        a variable results in an empty list, default-initialize the
1124
        variable.
1125
        (tsubst_copy_and_build): When the instantiation of the initializer
1126
        in a new expression results in an empty initializer list,
1127
        default-initialize it.
1128
 
1129
2007-08-31  Douglas Gregor  
1130
 
1131
        * mangle.c (write_type): Change mangling of rvalue reference from
1132
        `RR' to `O'.
1133
 
1134
2007-08-31  Jakub Jelinek  
1135
 
1136
        * decl.c (duplicate_decls): Remove duplicated line.
1137
 
1138
2007-08-31  Paolo Carlini  
1139
 
1140
        PR c++/33210
1141
        * cxx-pretty-print.c (pp_cxx_unqualified_id): Deal with
1142
        BOUND_TEMPLATE_TEMPLATE_PARM.
1143
 
1144
2007-08-31  Paolo Carlini  
1145
 
1146
        PR c++/32113
1147
        * search.c (lookup_member): Check the name argument for
1148
        error_mark_node.
1149
 
1150
2007-08-31  Paolo Carlini  
1151
 
1152
        PR c++/33212
1153
        * parser.c (cp_parser_trait_expr): Check rerurn value of
1154
        cp_parser_type_id.
1155
 
1156
2007-08-30  Ollie Wild  
1157
 
1158
        * cvt.c (cp_convert_to_pointer): Remove force parameter. Call
1159
        convert_ptrmem for pointer to member conversions.
1160
        (convert_to_pointer_force): Update cp_convert_to_pointer call.
1161
        (ocp_convert): Update cp_convert_to_pointer call.
1162
        * typeck.c (convert_ptrmem): Add conditional for null pointers to
1163
        members.
1164
        (build_static_cast_1): Check can_convert for conversions in either
1165
        direction.
1166
        (get_delta_difference_1): New function.
1167
        (get_delta_difference): Refactor to call get_delta_difference_1.
1168
 
1169
2007-08-30  Jakub Jelinek  
1170
 
1171
        * decl.c (start_preparsed_function): Set
1172
        DECL_DISREGARD_INLINE_LIMITS for GNU_INLINE_P functions.
1173
 
1174
2007-08-28  Paolo Carlini  
1175
 
1176
        PR c++/33209
1177
        * error.c (dump_expr): Deal with TEMPLATE_TYPE_PARM and
1178
        BOUND_TEMPLATE_TEMPLATE_PARM.
1179
 
1180
2007-08-28  Jakub Jelinek  
1181
 
1182
        PR c++/32596
1183
        PR c++/32400
1184
        * pt.c (check_explicit_specialization): Set DECL_INTERFACE_KNOWN
1185
        and DECL_NOT_REALLY_EXTERN if tmpl_func is not public.
1186
 
1187
2007-08-27  Jason Merrill  
1188
 
1189
        PR c++/29000
1190
        * pt.c (build_non_dependent_expr, type_dependent_expression_p):
1191
        Look inside STMT_EXPR.
1192
        * semantics.c (stmt_expr_value_expr): New fn.
1193
        * cp-tree.h: Declare it.
1194
 
1195
        PR c++/28558
1196
        * decl.c (groktypename): Ignore attributes applied to class type.
1197
 
1198
2007-08-28  Richard Guenther  
1199
 
1200
        * decl.c (duplicate_decls): Merge DECL_DISREGARD_INLINE_LIMITS.
1201
 
1202
2007-08-28  Gabriel Dos Reis  
1203
 
1204
        * error.c (dump_expr): Handle COMPLEX_CST.
1205
        * cxx-pretty-print.c (pp_cxx_primary_expression): Likewise.
1206
        (pp_cxx_expression): Likewise.
1207
 
1208
2007-08-27  Alexandre Oliva  
1209
 
1210
        * decl.c (GNU_INLINE_P): New.
1211
        (duplicate_decls): Handle gnu_inline.  Merge attributes and
1212
        some flags in overriding definitions.
1213
        (redeclaration_error_message): Handle gnu_inline.
1214
        (start_preparsed_function): Likewise.
1215
 
1216
2007-08-25  Kaveh R. Ghazi  
1217
 
1218
        * call.c (sufficient_parms_p): Constify.
1219
        * class.c (same_signature_p): Likewise.
1220
        * cp-gimplify.c (is_invisiref_parm,
1221
        cxx_omp_privatize_by_reference): Likewise.
1222
        * cp-objcp-common.c (has_c_linkage): Likewise.
1223
        * cp-tree.h (NON_THUNK_FUNCTION_CHECK, THUNK_FUNCTION_CHECK,
1224
        sufficient_parms_p, same_signature_p, copy_fn_p, move_fn_p,
1225
        grok_ctor_properties, nothrow_libfn_p, skip_artificial_parms_for,
1226
        num_artificial_parms_for, comp_template_parms,
1227
        template_parameter_pack_p, any_dependent_template_arguments_p,
1228
        any_type_dependent_arguments_p, any_value_dependent_elements_p,
1229
        repo_export_class_p, cxx_omp_privatize_by_reference, pod_type_p,
1230
        zero_init_p, member_p, cp_lvalue_kind,
1231
        builtin_valid_in_constant_expr_p, decl_anon_ns_mem_p,
1232
        varargs_function_p, is_dummy_object, special_function_kind,
1233
        string_conv_p, type_unknown_p, comp_except_specs, compparms,
1234
        comp_cv_qualification, is_bitfield_expr_with_lowered_type,
1235
        unlowered_expr_type, ptr_reasonably_similar, cp_type_readonly,
1236
        cp_has_mutable_p, at_least_as_qualified_p,
1237
        invalid_nonstatic_memfn_p, lvalue_or_else, lvalue_p): Likewise.
1238
        * decl.c (copy_fn_p, move_fn_p, grok_ctor_properties): Likewise.
1239
        * except.c (nothrow_libfn_p): Likewise.
1240
        * method.c (skip_artificial_parms_for, num_artificial_parms_for):
1241
        Likewise.
1242
        * pt.c (comp_template_parms, template_parameter_pack_p,
1243
        any_type_dependent_arguments_p, any_value_dependent_elements_p,
1244
        any_dependent_template_arguments_p): Likewise.
1245
        * repo.c (repo_export_class_p): Likewise.
1246
        * semantics.c (anon_aggr_type_p): Likewise.
1247
        * tree.c (lvalue_p_1, real_lvalue_p, lvalue_p,
1248
        builtin_valid_in_constant_expr_p, decl_anon_ns_mem_p,
1249
        varargs_function_p, member_p, is_dummy_object, pod_type_p,
1250
        zero_init_p, special_function_p): Likewise.
1251
        * typeck.c (comp_array_types, type_unknown_p, comp_except_specs,
1252
        comp_array_types, at_least_as_qualified_p, comp_cv_qualification,
1253
        compparms, invalid_nonstatic_memfn_p,
1254
        is_bitfield_expr_with_lowered_type, unlowered_expr_type,
1255
        string_conv_p, ptr_reasonably_similar, cp_type_readonly,
1256
        cp_has_mutable_p, lvalue_or_else): Likewise.
1257
 
1258
2007-08-25  Paolo Bonzini  
1259
 
1260
        * decl.c (cp_tree_node_structure): Kill TINST_LEVEL case.
1261
        * cp-objcp-common.c (cp_tree_size): Ditto.
1262
        * tree.c (cp_walk_subtrees): Ditto
1263
        * cp-tree.def (TINST_LEVEL): Go away.
1264
        * cp-tree.h (struct tinst_level_s): Rename to struct tinst_level,
1265
        move together with other non-tree structs.
1266
        (enum cp_tree_node_structure_enum): Nuke TS_CP_TINST_LEVEL.
1267
        (union lang_tree_node): Eliminate tinst_level field.
1268
        (TINST_DECL, TINST_LOCATION, TINST_IN_SYSTEM_HEADER_P): Annihilate.
1269
        (current_instantiation, outermost_tinst_level): Return
1270
        a "struct tinst_level *".
1271
 
1272
        * error.c (print_instantiation_partial_context): Change second
1273
        parameter to a "struct tinst_level *".  Replace accessor macros
1274
        with field access.
1275
        (print_instantiation_full_context): Likewise.
1276
        * lex.c (in_main_input_context): Likewise.
1277
 
1278
        * pt.c (struct pending_templates): New.
1279
        (pending_templates, last_pending_template): Use it as a type.
1280
        (current_tinst_level): Change typo to "struct tinst_level *"
1281
        (reopen_tinst_level): Accept "struct tinst_level *", return decl.
1282
        (add_pending_template): Construct a "struct pending_template".
1283
        Replace TINST_LEVEL accessor macros with field access.
1284
        (push_tinst_level): Likewise, using GGC_NEW instead of make_node.
1285
        (pop_tinst_level): Likewise.
1286
        (instantiate_pending_templates): Likewise.  Factor common code used
1287
        when an instantiation has been done.
1288
        (outermost_tinst_level): Replace tree_last with loop.
1289
        (current_instantiation): Return a "struct tinst_level *".
1290
 
1291
2007-08-24  Ollie Wild  
1292
 
1293
        * name-lookup.c (add_decl_to_level): Remove addition to vtables chain.
1294
        * name-lookup.h (cp_binding_level): Remove vtables member.
1295
 
1296
2007-08-24  Richard Guenther  
1297
 
1298
        * tree.c (cp_cannot_inline_tree_fn): Remove.
1299
        * cp-tree.h (cp_cannot_inline_tree_fn): Likewise.
1300
        * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN):
1301
        Remove define.
1302
 
1303
2007-08-24  Jakub Jelinek  
1304
 
1305
        PR c++/32567
1306
        * typeck.c (build_unary_op) : Return
1307
        error_mark_node right away if build_expr_type_conversion
1308
        returned it.
1309
 
1310
        PR c++/32898
1311
        * name-lookup.c (set_decl_namespace): lookup_qualified_name failure
1312
        is error_mark_node rather than NULL_TREE.
1313
        * pt.c (check_explicit_specialization): Likewise.
1314
 
1315
        PR c++/31941
1316
        * error.c (resolve_virtual_fun_from_obj_type_ref): Handle
1317
        TARGET_VTABLE_USES_DESCRIPTORS targets properly.
1318
 
1319
2007-08-22  Jason Merrill  
1320
 
1321
        PR c++/29365
1322
        * pt.c (outermost_tinst_level): New function.
1323
        * lex.c (in_main_input_context): New function.
1324
        * cp-tree.h: Declare it.
1325
        * decl2.c (constrain_class_visibility): Use it to avoid warning
1326
        about uses of the anonymous namespace in the main input file.
1327
 
1328
2007-08-21  Jakub Jelinek  
1329
 
1330
        * init.c (build_new_1): Use get_target_expr instead of save_expr.
1331
 
1332
2007-08-20  Pawel Sikora  
1333
 
1334
        PR c++/7302
1335
        * class.c (finish_struct_1): Warn when a class has virtual
1336
        functions and accessible non-virtual destructor.
1337
 
1338
2007-08-20  Richard Guenther  
1339
 
1340
        PR c++/22369
1341
        PR c++/22451
1342
        * call.c (build_new_method_call): Convert initializer to
1343
        the basetype.
1344
        * init.c (build_aggr_init): Do not fiddle with types.
1345
        (build_vec_delete_1): Use correct type for POINTER_PLUS_EXPR.
1346
        * except.c (build_throw): Do not drop qualifiers for the
1347
        pointer type.
1348
        * typeck.c (get_member_function_from_ptrfunc): Do not
1349
        fiddle with types, instead convert.
1350
        (build_ptrmemfunc1): Convert to the target type for
1351
        initialization.
1352
        (gfc_trans_allocate): Convert result to target type.
1353
        * cp-objcp-common.c (cxx_get_alias_set): Pointers to
1354
        pointer-to-member structures shall have alias set zero as well.
1355
 
1356
2007-08-20  Richard Guenther  
1357
 
1358
        * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P):
1359
        Remove.
1360
        * cp-tree.h (cp_auto_var_in_fn_p): Remove.
1361
        (nonstatic_local_decl_p): Likewise.
1362
        * tree.c (cp_auto_var_in_fn_p): Remove.
1363
        * decl.c (nonstatic_local_decl_p): Remove.
1364
 
1365
2007-08-20  Richard Guenther  
1366
 
1367
        * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_WALK_SUBTREES):
1368
        Remove define.
1369
        * tree.h (cp_walk_tree): New define to walk_tree_1 with
1370
        cp_walk_subtrees lh parameter.
1371
        (cp_walk_tree_without_duplicates): New define to
1372
        walk_tree_without_duplicates_1 with cp_walk_subtrees lh parameter.
1373
        * tree.c (count_trees): Call
1374
        cp_walk_tree_without_duplicates.
1375
        (verify_stmt_tree): Call cp_walk_tree.
1376
        (break_out_target_exprs): Likewise.
1377
        (WALK_SUBTREE): Likewise.
1378
        * cp-gimplify.c (cp_genericize): Likewise.
1379
        * cp-pt.c (find_parameter_packs_r): Likewise.
1380
        (uses_parameter_packs): Likewise.
1381
        (make_pack_expansion): Likewise.
1382
        (check_for_bare_parameter_packs): Likewise.
1383
        (for_each_template_parm): Likewise.
1384
        * decl.c (check_default_argument): Call
1385
        cp_walk_tree_without_duplicates.
1386
        * except.c (build_throw): Likewise.
1387
        * decl2.c (type_visibility): Likewise.
1388
        * semantics.c (expand_or_defer_fn): Likewise.
1389
        (finalize_nrv): Call cp_walk_tree.
1390
 
1391
2007-08-20  Jakub Jelinek  
1392
 
1393
        PR c++/33025
1394
        * init.c (build_new_1): Rename placement_var variable to placement_expr.
1395
        Initialize it with save_expr rather than get_temp_regvar.
1396
 
1397
2007-08-17  Andrew Pinski  
1398
 
1399
        PR c++/28989
1400
        * tree.c (lvalue_p_1 ): SAVE_EXPRs are never
1401
        lvalues.
1402
 
1403
2007-08-17  Ollie Wild  
1404
 
1405
        PR c++/31749
1406
        * name-lookup.c (do_nonmember_using_decl): Shift implicit type
1407
        declarations into appropriate slots for comparison.  Fix type
1408
        comparison.
1409
 
1410
2007-08-17  Paolo Carlini  
1411
 
1412
        PR c++/32112
1413
        * error.c (dump_decl): Deal with UNBOUND_CLASS_TEMPLATE.
1414
        * cxx-pretty-print.c (pp_cxx_unqualified_id): Likewise.
1415
 
1416
2007-08-17  Paolo Carlini  
1417
 
1418
        PR c++/32870
1419
        * parser.c (cp_parser_class_head): Improve error message.
1420
 
1421
2007-08-16  Seongbae Park  
1422
 
1423
        * pt.c (instantiate_decl): Set input_location
1424
        for the function end.
1425
 
1426
2007-08-16  Kaveh R. Ghazi  
1427
 
1428
        * cp-objcp-common.c (cxx_warn_unused_global_decl, cp_expr_size):
1429
        Constify.
1430
        * cp-tree.h (local_variable_p, nonstatic_local_decl_p,
1431
        class_tmpl_impl_spec_p, cp_auto_var_in_fn_p, cp_type_quals,
1432
        cxx_incomplete_type_diagnostic, cxx_incomplete_type_error,
1433
        cxx_warn_unused_global_decl, cp_expr_size): Likewise.
1434
        * decl.c (local_variable_p, nonstatic_local_decl_p): Likewise.
1435
        * tree.c (class_tmpl_impl_spec_p, cp_auto_var_in_fn_p): Likewise.
1436
        * typeck.c (cp_type_quals): Likewise.
1437
        * typeck2.c (cxx_incomplete_type_diagnostic,
1438
        cxx_incomplete_type_error): Likewise.
1439
 
1440
2007-08-16  Paolo Carlini  
1441
 
1442
        PR c++/31132
1443
        * pt.c (tsubst_friend_function): When check_classfn
1444
        returns error_mark_node likewise return it.
1445
 
1446
2007-08-15  Jakub Jelinek  
1447
 
1448
        PR c++/32992
1449
        * typeck.c (check_return_expr): Don't NRV optimize vars in
1450
        anonymous unions.
1451
        * decl.c (finish_function): Comment fix.
1452
 
1453
2007-08-15  Paolo Carlini  
1454
 
1455
        PR c++/33035
1456
        * pt.c (push_template_decl_real): Depending on TYPE_P
1457
        use either TYPE_CONTEXT or DECL_CONTEXT.
1458
 
1459
2007-08-14  Mark Mitchell  
1460
 
1461
        * semantics.c (finish_omp_clauses): Strip a NOP_EXPR if
1462
        constructors and destructors return this.
1463
 
1464
2007-08-14  Paolo Carlini  
1465
 
1466
        PR c++/27211
1467
        * decl2.c (check_classfn): Return error_mark_node in case of error;
1468
        in that case, do not call add_method.
1469
        * decl.c (start_decl): Deal with check_classfn returning
1470
        error_mark_node.
1471
        (grokfndecl): Likewise.
1472
        * pt.c (tsubst_friend_function): Likewise.
1473
 
1474
2007-08-14  Andrew Pinski  
1475
 
1476
        PR c++/30428
1477
        * typeck.c (build_binary_op): Disallow vector float types with
1478
        BIT_IOR_EXPR, BIT_AND_EXPR, and BIT_XOR_EXPR.
1479
 
1480
2007-08-11  Ian Lance Taylor  
1481
 
1482
        * cp-objcp-common.c (cxx_get_alias_set): Change return type to
1483
        alias_set_type.
1484
        * cp-tree.h (cxx_get_alias_set): Update declaration.
1485
 
1486
2007-08-10  Ollie Wild  
1487
 
1488
        * name-lookup.c (do_nonmember_using_decl): Print an error for ambiguous
1489
        type lookups.
1490
        (ambiguous_decl): Construct tree of ambiguous types.  Remove extaneous
1491
        function parameter.
1492
        (unqualified_namespace_lookup): Fix ambiguous_decl call.
1493
        (lookup_using_namespace): Fix ambiguous_decl call.
1494
        (qualified_lookup_using_namespace): Fix ambiguous_decl call.
1495
 
1496
2007-08-10  Kaveh R. Ghazi  
1497
 
1498
        * call.c (name_as_c_string): Use CONST_CAST.
1499
        * decl.c (build_decl): Likewise.
1500
        * parser.c (cp_parser_string_literal): Likewise.
1501
 
1502
2007-08-10  Paolo Carlini  
1503
 
1504
        PR c++/17763
1505
        * error.c (dump_expr): Consistently use the *_cxx_*
1506
        variants of the pretty-print functions.
1507
 
1508
2007-08-10  Paolo Carlini  
1509
 
1510
        PR c++/22256
1511
        * decl.c (check_special_function_return_type): Just error
1512
        on return type specified for conversion operator.
1513
 
1514
2007-08-09  Daniel Berlin  
1515
 
1516
        * typeck2.c (readonly_error): Handle general expressions.
1517
        * error.c (dump_expr): Handle POINTER_PLUS_EXPR
1518
 
1519
2007-08-06  Dan Hipschman  
1520
 
1521
        * method.c (use_thunk): Use DECL_NAME instead of DECL_RTL to
1522
        access function name.
1523
 
1524
2007-08-04  Alfred Minarik  
1525
 
1526
        PR pch/13676
1527
        * lang-specs.h: Add .hp, .hxx, .hpp, .h, .HPP, .tcc as c++ header.
1528
        * g++spec.c (lang_specific_driver): Check them.
1529
 
1530
2007-08-06  Paolo Carlini  
1531
 
1532
        PR c++/19532
1533
        * pt.c (inline_needs_template_parms): Fix comment; change return type
1534
        to bool.
1535
 
1536
2007-08-05  Volker Reichelt  
1537
 
1538
        Revert:
1539
        2007-03-26  Dirk Mueller  
1540
 
1541
        * parser.c (cp_parser_member_declaration): Pedwarn
1542
        about stray semicolons after member declarations.
1543
 
1544
2007-08-02  Lee Millward  
1545
 
1546
        PR c++/30849
1547
        PR c++/30850
1548
        PR c++/30851
1549
        * parser.c (cp_parser_asm_definition): Detect and discard asm
1550
        statements with invalid inputs or outputs.
1551
         (cp_parser_asm_operand_list): Return error mark node if any
1552
         of the operands are invalid. Adjust documentation.
1553
 
1554
2007-08-02  Nick Clifton  
1555
 
1556
        * typeck.c: Change copyright header to refer to version 3 of the
1557
        GNU General Public License and to point readers at the COPYING3
1558
        file and the FSF's license web page.
1559
        * optimize.c, lang-specs.h, init.c, class.c, repo.c, decl.c,
1560
        config-lang.in, cp-tree.def, call.c, decl.h, ptree.c,
1561
        Make-lang.in, method.c, rtti.c, cp-objcp-common.c, g++spec.c,
1562
        cp-objcp-common.h, except.c, error.c, operators.def, cvt.c,
1563
        tree.c, mangle.c, cp-tree.h, dump.c, search.c, friend.c, expr.c,
1564
        cp-gimplify.c, cxx-pretty-print.c, cp-lang.c, typeck2.c, pt.c,
1565
        cxx-pretty-print.h, semantics.c, name-lookup.c, lex.c, decl2.c,
1566
        name-lookup.h, parser.c: Likewise.
1567
 
1568
2007-08-01  Kaveh R. Ghazi  
1569
 
1570
        PR middle-end/32668
1571
        * call.c (magic_varargs_p): Honor the "type generic" attribute.
1572
 
1573
2007-07-30  Paolo Carlini  
1574
 
1575
        PR c++/32108
1576
        * semantics.c (finish_label_stmt): Reject the __label__
1577
        extension outside function scopes.
1578
 
1579
2007-07-29  Kaveh R. Ghazi  
1580
 
1581
        * parser.c (eof_token): Un-constify.
1582
        (cp_lexer_new_main, cp_lexer_new_from_tokens, VEC_alloc,
1583
        cp_lexer_consume_token, cp_lexer_purge_token): Remove spurious
1584
        casts.
1585
 
1586
2007-07-28  Kazu Hirata  
1587
 
1588
        * pt.c, tree.c, typeck2.c: Fix comment typos.
1589
 
1590
2007-07-28  Simon Martin  
1591
            Mark Mitchell  
1592
 
1593
        PR c++/30917
1594
        * name-lookup.c (lookup_name_real): Non namespace-scope bindings can be
1595
        hidden due to friend declarations in local classes.
1596
 
1597
2007-07-27  Douglas Gregor  
1598
 
1599
        * typeck.c (structural_comptypes): Compare DECLTYPE_TYPE nodes.
1600
        * cp-tree.def (DECLTYPE_TYPE): New.
1601
        * error.c (dump_type): Dump DECLTYPE_TYPE nodes.
1602
        (dump_type_prefix): Ditto.
1603
        (dump_type_suffix): Ditto.
1604
        * tree.c (DECLTYPE_TYPE): Walk DECLTYPE_TYPE nodes.
1605
        * mangle.c (write_type): Handle DECLTYPE_TYPE.
1606
        * cp-tree.h (IS_AGGR_TYPE): DECLTYPE_TYPE nodes can be aggregate
1607
        types.
1608
        (DECLTYPE_TYPE_EXPR): New.
1609
        (DECLTYPE_TYPE_ID_EXPR_OR_MEMBER_ACCESS_P): New.
1610
        (finish_declared_type): Declare.
1611
        * cxx-pretty-print.c (pp_cxx_type_specifier_seq): Print
1612
        DECLTYPE_TYPE nodes.
1613
        (pp_cxx_type_id): Ditto.
1614
        * pt.c (for_each_template_parm_r): Walk DECLTYPE_TYPE children.
1615
        (tsubst): Substitute into a DECLTYPE_TYPE node.
1616
        (tsubst_copy): Ditto.
1617
        (unify): Cannot deduce anything from TYPEOF_TYPE or DECLTYPE_TYPE
1618
        nodes.
1619
        (dependent_type_p_r): DECLTYPE_TYPE types are always dependent.
1620
        * semantics.c (finish_typeof): TYPEOF_TYPE types need to use
1621
        structural equality (because we can't hash the expressions).
1622
        (finish_declared_type): New.
1623
        * lex.c (reswords): Add "decltype" keyword.
1624
        * parser.c cp_lexer_next_token_is_decl_specifier_keyword
1625
        (cp_parser_postfix_expression): Add member_access_only_p to
1626
        restrict postfix expression to member access expressions.
1627
        (cp_parser_unary_expression): Update call to
1628
        cp_parser_postfix_expression to reflect new parameter.
1629
        (cp_parser_declared_type): New.
1630
        (cp_parser_simple_type_specifier): Parse decltype types.
1631
 
1632
2007-07-27  Mark Mitchell  
1633
 
1634
        PR c++/32346
1635
        * call.c (convert_for_arg_passing): Only widen bitfields to their
1636
        declared types if necessary.
1637
 
1638
2007-07-25  Kaveh R. Ghazi  
1639
 
1640
        * parser.c (cp_parser_string_literal, cp_parser_sizeof_operand):
1641
        Constify.
1642
 
1643
2007-07-25  Kaveh R. Ghazi  
1644
 
1645
        * decl.c (typename_hash, typename_compare): Constify.
1646
        * mangle.c (hash_type, compare_type): Likewise.
1647
        * pt.c (eq_local_specializations, hash_local_specialization):
1648
        Likewise.
1649
        * tree.c (cplus_array_hash, cplus_array_compare, list_hash_eq,
1650
        list_hash): Likewise.
1651
        * typeck2.c (pat_compare): Likewise.
1652
 
1653
2007-07-24  Nathan Sidwell  
1654
 
1655
        * method.c (implicitly_declare_fn): Increase alignment if member
1656
        function pointer format requires it.
1657
 
1658
2007-07-24  Paolo Carlini  
1659
 
1660
        PR c++/29001
1661
        * typeck.c (check_return_expr): Do not pass a null argument
1662
        to null_ptr_cst_p.
1663
 
1664
2007-07-24  Paolo Carlini  
1665
 
1666
        PR c++/32561
1667
        * decl.c (redeclaration_error_message): Call DECL_ANON_UNION_VAR_P
1668
        only on VAR_DECL.
1669
 
1670
2007-07-22  Nathan Sidwell  
1671
 
1672
        PR c++/32839
1673
        * typeck.c (convert_arguments): Only use default args if we have
1674
        a function decl.
1675
 
1676
        PR c++/30818
1677
        * typeck.c (structural_comptypes): No need to check
1678
        resolve_typename_type return value here.
1679
        * cp-tree.h (TYPENAME_IS_RESOLVING_P): New.
1680
        * pt.c (resolve_typename_type): Follow typename typedefs.  Return
1681
        original type rather than error_mark_node in case of failure.
1682
        * parser.c (cp_parser_nested_name_specifier_opt): Adjust
1683
        resolve_typename_type result check.
1684
        (cp_parser_direct_declarator, cp_parser_head,
1685
        cp_parser_constructor_declarator_p): Likewise.
1686
 
1687
2007-07-12  Kazu Hirata  
1688
 
1689
        * pt.c (template_parms_variadic_p): Remove.
1690
        * cp-tree.h: Remove the prototype for template_parms_variadic_p.
1691
 
1692
2007-07-12  Jakub Jelinek  
1693
 
1694
        PR c++/30854
1695
        * error.c (dump_expr) : Pass true as last
1696
        argument to dump_aggr_init_expr_args instead of false.
1697
 
1698
2007-07-11  Douglas Gregor  
1699
 
1700
        * typeck.c (comptypes): When USE_CANONICAL_TYPES, use the
1701
        canonical types; otherwise, fall back to structural type
1702
        comparisons. If ENABLE_CHECKING and USE_CANONICAL_TYPES, give an
1703
        internal compiler error if the canonical types are wrong.
1704
 
1705
2007-07-11  Paolo Carlini  
1706
 
1707
        PR c++/32560
1708
        * parser.c (cp_parser_make_indirect_declarator): When the
1709
        the code argument is ERROR_MARK return cp_error_declarator.
1710
 
1711
2007-07-09  Geoffrey Keating  
1712
 
1713
        PR 32617
1714
        * decl.c (cxx_init_decl_processing): Don't set
1715
        force_align_functions_log.
1716
        (grokfndecl): Honour ptrmemfunc_vbit_in_pfn.
1717
        * typeck.c (cxx_alignof_expr): When alignof is used on a plain
1718
        FUNCTION_DECL, return its alignment.
1719
 
1720
2007-07-09  Richard Guenther  
1721
 
1722
        * decl.c (start_preparsed_function): Do not promote return type.
1723
 
1724
2007-07-08  Paolo Carlini  
1725
 
1726
        PR c++/30535
1727
        * pt.c (unify): Never pass error_mark_node to template_decl_level.
1728
 
1729
2007-07-07  Mark Mitchell  
1730
 
1731
        PR c++/32232
1732
        * pt.c (resolve_overloaded_unification): Robustify.  Return a
1733
        bool, not an int.
1734
        (type_unification_real): Adjust accordingly.
1735
 
1736
2007-07-06  Richard Guenther  
1737
 
1738
        * init.c (build_new_1): Use the correct pointer type.
1739
        * typeck2.c (build_m_component_ref): Likewise.
1740
 
1741
2007-07-05  Mark Mitchell  
1742
 
1743
        PR c++/32245
1744
        * init.c (build_zero_init): Always build an initializer for
1745
        non-static storage.
1746
        * typeck2.c (build_functional_cast): Use build_zero_init.
1747
 
1748
        PR c++/32251
1749
        * init.c (build_new_1): Always pass the allocation function to
1750
        build_op_delete_call.
1751
        * call.c (build_op_delete_call): Handle operator delete with a
1752
        variable-argument list.  Do not issue an error when no matching
1753
        deallocation function is available for a new operator.
1754
 
1755
        PR c++/31992
1756
        * cp-tree.h (any_value_dependent_elements_p): Declare it.
1757
        * decl.c (value_dependent_init_p): New function.
1758
        (cp_finish_decl): Use it.
1759
        * pt.c (value_dependent_expression_p): Use
1760
        any_value_dependent_elements_p.
1761
        * parser.c (cp_parser_primary_expression): Add comment about
1762
        treating dependent qualified names as integral
1763
        constant-expressions.
1764
 
1765
2007-07-04  Douglas Gregor  
1766
 
1767
        * decl.c (build_ptrmemfunc_type): Always use structural equality
1768
        tests when comparing pointer-to-member-function types, because the
1769
        handling of TYPE_GET_PTRMEMFUNC_TYPE currently defeats canonical
1770
        types.
1771
 
1772
2007-07-03  Mark Mitchell  
1773
 
1774
        * init.c (build_new): Tweak comment.
1775
 
1776
2007-06-29  Dave Brolley  
1777
 
1778
        PR c++/31743
1779
        * parser.c (cp_parser_new_type_id): Don't reduce a named array
1780
        type to its base type and number of elements here.
1781
        * init.c (build_new): Call complete_type_or_else to ensure that the
1782
        type is complete and to issue a diagnostic if it is not.
1783
        (build_new_1): Don't call complete_type_or_else here.
1784
 
1785
2007-07-03  Richard Guenther  
1786
 
1787
        PR c++/32609
1788
        * class.c (fixed_type_or_null): Re-lookup the hashtable slot
1789
        after recursing.
1790
 
1791
2007-07-02  Simon Baldwin  
1792
 
1793
        * parser.c (cp_parser_elaborated_type_specifier): Added a warning
1794
        for inner-style nested forward declarations that don't declare
1795
        anything useful.
1796
 
1797
2007-07-02  Jakub Jelinek  
1798
 
1799
        PR c++/31748
1800
        * semantics.c (finish_omp_clauses): Use %qD instead of %qE for
1801
        DECL_P in not a variable and appears more than once error messages.
1802
 
1803
2007-07-01  Ollie Wild  
1804
 
1805
        * name-lookup.c (ambiguous_decl): Fix case when new->value is hidden.
1806
        (select_decl): Remove function.
1807
        (unqualified_namespace_lookup): Populate binding by calling
1808
        ambiguous_decl.  Remove select_decl call.
1809
        (lookup_qualified_name): Remove select_decl call.
1810
        * decl.c (lookup_and_check_tag): Check for ambiguous references.
1811
        * parser.c (cp_parser_elaborated_type_specifier): Skip redundant error
1812
        generation when name lookup is ambiguous.
1813
 
1814
2007-06-29  Douglas Gregor  
1815
 
1816
        PR c++/31724
1817
        * init.c (build_new_1): Use structural equality on the copy of the
1818
        array type.
1819
 
1820
2007-06-28  Geoffrey Keating  
1821
 
1822
        * decl2.c (determine_visibility): Implement
1823
        flag_visibility_ms_compat effect on type info.
1824
        * decl.c (cxx_init_decl_processing): Implement
1825
        global effect of flag_visibility_ms_compat.
1826
 
1827
2007-06-28  Geoffrey Keating  
1828
 
1829
        * decl2.c (start_objects): Mark constructor-running function
1830
        as artificial.
1831
 
1832
2007-06-26  Simon Martin  
1833
 
1834
        PR c++/32111
1835
        * decl.c (grokdeclarator): Reset friendp for member functions declared
1836
        friend of their own class.
1837
 
1838
2007-06-23  Mark Mitchell  
1839
 
1840
        * decl2.c (determine_visibility): Don't look for dllexport here.
1841
        (determine_visibility_from_class): Tidy.
1842
 
1843
2007-06-18  Simon Baldwin 
1844
 
1845
        PR c++/31923
1846
        * parser.c (cp_parser_single_declaration): Added check for storage
1847
        class other than sc_none in parsed declaration, and a flag to indicate
1848
        if the call is part of an explicit template specialization parse.
1849
        * (cp_parser_explicit_specialization): Specialization check flag added
1850
        to call to cp_parser_single_declaration(), set true.
1851
        * (cp_parser_template_declaration_after_export): Specialization check
1852
        flag added to call to cp_parser_single_declaration(), set false.
1853
        * pt.c (check_explicit_specialization): Added code to copy visiblity
1854
        and linkage from the templated function to the explicit specialization.
1855
 
1856
2007-06-15  Andrew Pinski  
1857
 
1858
        * typeck.c (build_binary_op): For templates build the
1859
        expression in pieces to avoid the assert in build2_stat.
1860
        (get_member_function_from_ptrfunc):
1861
        Change over to using POINTER_PLUS_EXPR and convert
1862
        the second operand to sizetype.
1863
        * typeck2.c (build_m_component_ref):  Likewise.
1864
        * init.c (expand_virtual_init): Create a POINTER_PLUS_EXPR
1865
        instead of PLUS_EXPR for pointers.
1866
        (build_new_1): Likewise.
1867
        (build_vec_delete_1): Likewise.
1868
        (build_vec_delete): Likewise.
1869
        * class.c (build_base_path): Likewise.
1870
        (build_base_path): Likewise.
1871
        (convert_to_base_statically): Likewise.
1872
        (fixed_type_or_null): Handle POINTER_PLUS_EXPR.
1873
        (get_vtbl_decl_for_binfo): Handle POINTER_PLUS_EXPR
1874
        instead of PLUS_EXPR.
1875
        (dfs_accumulate_vtbl_inits): Create a POINTER_PLUS_EXPR
1876
        instead of PLUS_EXPR for pointers.
1877
        * call.c (build_special_member_call): Likewise.
1878
        * rtti.c (build_headof): Likewise.
1879
        Use sizetype instead of ptrdiff_type_node.
1880
        (tinfo_base_init): Create a POINTER_PLUS_EXPR
1881
        instead of PLUS_EXPR for pointers.
1882
        * except.c (expand_start_catch_block):  Do a
1883
        NEGATIVE and then a POINTER_PLUS_EXPR instead
1884
        of a MINUS_EXPR.
1885
        * cp-gimplify.c (cxx_omp_clause_apply_fn): Convert
1886
        PLUS_EXPR on pointer types over to use
1887
        POINTER_PLUS_EXPR and remove the conversion
1888
        to the pointer types.
1889
        * method.c (thunk_adjust): Use POINTER_PLUS_EXPR for
1890
        adding to a pointer type. Use size_int instead of
1891
        ssize_int. Convert the index to sizetype before
1892
        adding it to the pointer.
1893
 
1894
2007-06-15  Mark Mitchell  
1895
 
1896
        * cp-tree.h (DECL_VAR_MARKED_P): Remove.
1897
        (DECL_ANON_UNION_VAR_P): New macro.
1898
        * class.c (fixed_type_or_null): Tidy.  Use a hash table, rather
1899
        than DECL_VAR_MARKED_P, to keep track of which variables we have
1900
        seen.
1901
        * decl.c (redeclaration_error_message): Complain about redeclaring
1902
        anonymous union members at namespace scope.
1903
        * decl2.c (build_anon_union_vars): Set DECL_ANON_UNION_VAR_P.
1904
 
1905
2007-06-14  Geoff Keating  
1906
 
1907
        * decl2.c (determine_visibility): Ensure that functions with
1908
        hidden types as parameters are hidden.
1909
 
1910
        PR 31093
1911
        * decl2.c (determine_visibility): Remove duplicate code for
1912
        handling type info.
1913
 
1914
2007-06-12  Ian Lance Taylor  
1915
 
1916
        PR libstdc++/29286
1917
        * init.c (avoid_placement_new_aliasing): New static function.
1918
        (build_new_1): Call it.
1919
 
1920
2007-06-11  Rafael Ávila de Espíndola  
1921
 
1922
        * cp-objcp-common.h (LANG_HOOKS_SIGNED_TYPE): Remove.
1923
        (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
1924
 
1925
2007-06-08  Jakub Jelinek  
1926
 
1927
        PR c++/32177
1928
        * semantics.c (finish_omp_for): Call fold_build_cleanup_point_expr
1929
        on init, the non-decl cond operand and increment value.
1930
 
1931
2007-06-07  Simon Martin  
1932
 
1933
        PR c++/30759
1934
        * decl.c (check_initializer): Report an error when a brace enclosed
1935
        initializer is used for a non-aggregate type in C++98.
1936
        (redeclaration_error_message): Rewrote flag_cpp0x in terms of
1937
        cxx_dialect.
1938
        (grokdeclarator): Likewise.
1939
        (move_fn_p): Likewise.
1940
        * typeck.c (check_return_expr): Likewise.
1941
        * call.c (reference_binding): Likewise.
1942
        * error.c (cp_cpp_error): Likewise.
1943
        * pt.c (check_default_tmpl_args): Likewise.
1944
        (tsubst): Likewise.
1945
        * lex.c (init_reswords): Likewise.
1946
        * parser.c (p_parser_primary_expression): Likewise.
1947
        (TOKEN_PRECEDENCE): Likewise.
1948
        (cp_parser_init_declarator): Likewise.
1949
        (cp_parser_ptr_operator): Likewise.
1950
        (cp_parser_parameter_declaration): Likewise.
1951
        (cp_parser_enclosed_template_argument_list): Likewise.
1952
        (cp_parser_skip_to_end_of_template_parameter_list): Likewise.
1953
        (cp_parser_next_token_ends_template_argument_p): Likewise.
1954
 
1955
2007-06-04  Simon Baldwin  
1956
 
1957
        * decl.c (grokdeclarator): Readability change.  Moved case labels
1958
        into direct switch statement scope.
1959
 
1960
2007-06-04  Paolo Carlini  
1961
 
1962
        * call.c (convert_like_real): Remove pointless code.
1963
 
1964
2007-05-31  Mark Mitchell  
1965
 
1966
        * decl.c (get_atexit_fn_ptr_type): New function.
1967
        (get_atexit_node): Use it.
1968
        (start_cleanup_fn): Likewise.
1969
        (register_dtor_fn): Use the object's destructor, instead of a
1970
        separate cleanup function, where possible.
1971
        * cp-tree.h (CPTI_ATEXIT_FN_PTR_TYPE): New enumerator.
1972
        (atexit_fn_ptr_type_node): New macro.
1973
        * decl2.c (build_cleanup): Use build_address.
1974
 
1975
2007-05-31  Daniel Berlin  
1976
 
1977
        * typeck.c (build_binary_op): Include types in error.
1978
 
1979
2007-05-31  Jakub Jelinek  
1980
 
1981
        PR c++/31806
1982
        * decl.c (cp_finish_decl): Also clear was_readonly if a static var
1983
        needs runtime initialization.
1984
 
1985
2007-05-31  Paolo Carlini  
1986
 
1987
        PR c++/32158
1988
        * semantics.c (finish_trait_expr): Complete the types.
1989
 
1990
2007-05-30  Russell Yanofsky 
1991
             Douglas Gregor 
1992
             Pedro Lamarao 
1993
             Howard Hinnant 
1994
 
1995
        PR c++/7412
1996
        PR c++/29939
1997
        * typeck.c (comptypes): Don't consider rvalue and lvalue
1998
        reference types to be equivalent.
1999
        (check_return_expr): Move from certain lvalues when returning
2000
        them.
2001
        * decl.c (grokdeclarator): Implement reference collapsing.
2002
        (copy_fn_p): Don't consider constructors taking rvalue references
2003
        to be copy constructors.
2004
        (move_fn_p): New.
2005
        * call.c (conversion): New "rvaluedness_matches_p" member.
2006
        (convert_class_to_reference): Require reference type as first
2007
        parameter instead of base type.
2008
        (reference_binding): Add logic to handle rvalue references.
2009
        (implicit_conversion): Update inaccurate comment.
2010
        (convert_like_real): Disable creation of temporaries that are
2011
        impossible to initialize for types with move constructors.
2012
        (build_over_call): Elide move constructors when possible.
2013
        (maybe_handle_implicit_object): Set "rvaluedness_matches_p".
2014
        (maybe_handle_ref_bind): Return conversion instead of type node.
2015
        (compare_ics): Add logic to use "rvaluedness_matches_p" values to
2016
        determine preferred conversion sequences.
2017
        * cp-tree.h (TYPE_REF_IS_RVALUE): New.
2018
        (LOOKUP_PREFER_RVALUE): New.
2019
        (DECL_MOVE_CONSTRUCTOR_P): New.
2020
        (struct cp_declarator): Add "reference" member for reference
2021
        types, with new "rvalue_ref" flag.
2022
        (cp_build_reference_type): Declare.
2023
        (move_fn_p): Declare.
2024
        * error.c (dump_type_prefix): Format rvalue reference types
2025
        correctly in error messages.
2026
        * except.c (build_throw): Move from certain lvalues when
2027
        throwing.
2028
        * mangle.c (write_type): Mangle rvalue references differently
2029
        than regular references.
2030
        * parser.c (make_reference_declarator): Add boolean parameter for
2031
        rvalue references.
2032
        (cp_parser_make_indirect_declarator): New.
2033
        (cp_parser_new_declarator_opt): Call
2034
        cp_parser_make_indirect_declarator.
2035
        (cp_parser_conversion_declarator_opt): Ditto.
2036
        (cp_parser_declarator): Ditto.
2037
        (cp_parser_ptr_operator): Parse "&&" tokens into rvalue reference
2038
        declarators.
2039
        * pt.c (tsubst): Implement reference collapsing.
2040
        (maybe_adjust_types_for_deduction): Implement special template
2041
        parameter deduction rule for rvalue references.
2042
        (type_unification_real): Update calls to
2043
        maybe_adjust_types_for_deduction.
2044
        (try_one_overload): Ditto.
2045
        (unify_pack_expansion): Ditto.
2046
        * tree.c (lvalue_p_1): Handle rvalue reference types.
2047
        (cp_build_reference_type): New.
2048
 
2049
2007-05-30  Jakub Jelinek  
2050
 
2051
        PR c++/31809
2052
        * decl.c (cp_finish_decl): Clear TREE_READONLY flag on TREE_STATIC
2053
        variables that need runtime initialization.
2054
 
2055
2007-05-28  Andrew Pinski  
2056
 
2057
        PR c++/31339
2058
        * typeck.c (build_unary_op 
2059
        case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,
2060
        case POSTDECREMENT_EXPR>): Return the error_mark_node
2061
        if either the real or imaginary parts would an
2062
        error_mark_node.
2063
 
2064
2007-05-25  Simon Martin  
2065
            Manuel Lopez-Ibanez  
2066
 
2067
        PR c++/31745
2068
        * parser.c (cp_parser_skip_to_closing_brace): Return true if the next
2069
        token is a closing brace, false if there are no tokens left.
2070
        (cp_parser_namespace_alias_definition): Only consume the next token if
2071
        it is a closing brace.
2072
 
2073
        * parser.c (cp_parser_class_specifier): Likewise.
2074
 
2075
2007-05-25  H.J. Lu  
2076
 
2077
        * semantics.c (finish_member_declaration): Fix a typo in the
2078
        last checkin.
2079
 
2080
2007-05-25  Douglas Gregor 
2081
 
2082
        PR c++/31431
2083
        PR c++/31432
2084
        PR c++/31434
2085
        PR c++/31435
2086
        PR c++/31437
2087
        PR c++/31438
2088
        PR c++/31442
2089
        PR c++/31443
2090
        PR c++/31444
2091
        PR c++/31445
2092
        * error.c (dump_type): Dump TYPE_ARGUMENT_PACK nodes.
2093
        * cp-tree.h (check_for_bare_parameter_packs): Returns bool.
2094
        * pt.c (check_for_bare_parameter_packs): Return bool indicated
2095
        whether everything was okay. Fix indentation.
2096
        (push_template_decl_real): Check for bare parameter packs in
2097
        function parameters; where errors occur, mark the parameter types
2098
        with ERROR_MARK_NODEs to avert ICEs.
2099
        (coerce_template_parameter_pack): New.
2100
        (coerce_template_parms): Moved parameter pack coercion into
2101
        coerce_template_parameter_pack, and permit it anywhere in the
2102
        template parameter list (not just at the end). Parameter and
2103
        argument indices can vary (somewhat) separately now, so add
2104
        PARM_IDX and ARG_IDX.
2105
        (fn_type_unification): Don't set an argument pack as incomplete if
2106
        no argument pack was deduced.
2107
        (type_unification_real): If a type parameter is a parameter pack
2108
        and has not otherwise been deduced, it will be deduced to an empty
2109
        parameter pack.
2110
        (more_specialized_fn): Use the actual lengths of the argument
2111
        lists when comparing against expansions.
2112
        * semantics.c (finish_member_declaration): If a field's type has
2113
        bare parameter packs, error and set its type to ERROR_MARK_NODE.
2114
 
2115
2007-05-24  Danny Smith  
2116
 
2117
        PR target/27067
2118
        * mangle.c (mangle_decl): Call targetm.mangle_decl_assembler_name.
2119
 
2120
2007-05-22  Ollie Wild  
2121
 
2122
        * name-lookup.c (ambiguous_decl): Adds check for hidden types.
2123
        (unqualified_namespace_lookup): Adds check for hidden types.
2124
 
2125
2007-05-22  Ollie Wild  
2126
 
2127
        * decl.c (duplicate_decls): Verify namespace names are unique.
2128
 
2129
2007-05-21  Mark Mitchell  
2130
 
2131
        * decl.c (cxx_maybe_build_cleanup): Handle
2132
        __attribute__((cleanup)).
2133
 
2134
2007-05-19  Manuel Lopez-Ibanez  
2135
 
2136
        * cvt.c (cp_convert_and_check): Don't check warnings if the
2137
        conversion failed.
2138
 
2139
2007-05-18  Geoffrey Keating  
2140
 
2141
        * mangle.c (write_real_cst): Use 'unsigned long' for %lx.
2142
 
2143
2007-05-14  Paolo Carlini  
2144
 
2145
        PR c++/29928
2146
        * rtti.c (get_tinfo_decl_dynamic, get_typeid): Try to complete the
2147
        type only if is a class type (5.2.8/4).
2148
 
2149
2007-05-14  Rafael Ávila de Espíndola  
2150
 
2151
        * cp-objcp-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
2152
        * decl.c (grokdeclarator): Use unsigned_type_for instead of
2153
        c_common_unsigned_type.
2154
 
2155
2007-05-11  Silvius Rus  
2156
 
2157
        * typeck.c (build_indirect_ref): Add call to
2158
        strict_aliasing_warning.
2159
        (build_reinterpret_cast_1): Condition call to
2160
        strict_aliasing_warning.
2161
 
2162
2007-05-11  Jan Hubicka  
2163
 
2164
        * semantics.c (expand_or_defer_fn): Do not call c_record_cdtor_fn.
2165
        * decl2.c (start_objects): ctors and dtors are no longer public.
2166
        (cp_write_global_declarations): Do not call c_build_cdtor_fns.
2167
 
2168
2007-05-07  Andrew Pinski  
2169
 
2170
        * typeck.c (build_unary_op): Remove code that used to
2171
        handle non lvalue increments/decrements.
2172
 
2173
2007-05-07  Mike Stump  
2174
 
2175
        * parser.c (check_empty_body): Add.
2176
        (cp_parser_iteration_statement): Add call to check_empty_body.
2177
 
2178
2007-05-05  Geoffrey Keating  
2179
 
2180
        PR 31775
2181
        * mangle.c (write_mangled_name): Mangle static variable names.
2182
        (write_unqualified_name): Use local-source-name for
2183
        namespace-scope static variables.
2184
 
2185
2007-05-04  Dirk Mueller  
2186
 
2187
        * cp-tree.h (DECL_MAIN_P): only if -ffreestanding is
2188
        not in effect.
2189
 
2190
2007-05-02  Seongbae Park  
2191
 
2192
        PR c++/31663
2193
        * decl2.c (constrain_class_visibility):
2194
        Use strip_pointer_or_array_types instead of strip_array_types.
2195
 
2196
2007-04-28  Andrew Pinski  
2197
 
2198
        PR C++/30221
2199
        * decl.c (reshape_init_r): Don't reshape the first element if it
2200
        is a pointer to member function.
2201
 
2202
2007-04-27  Simon Baldwin  
2203
 
2204
        * decl.c (grokparms): Changed message format from %qD to %qE.
2205
 
2206
2007-04-27  Douglas Gregor  
2207
 
2208
        * error.c (maybe_warn_variadic_templates): Variadic templates are
2209
        now in C++0x, so only warn about them in C++98 mode.
2210
 
2211
2007-04-26  Andrew Pinski  
2212
 
2213
        PR C++/30016
2214
        * typeck.c (build_reinterpret_cast_1): Only allow conversion to
2215
        integeral types from vectors types.
2216
 
2217
2007-04-26  Jakub Jelinek  
2218
 
2219
        PR c++/31598
2220
        * semantics.c (finish_omp_clauses): Don't create CP_OMP_CLAUSE_INFO
2221
        for type dependent OMP_CLAUSE_DECLs.
2222
 
2223
2007-04-24  Mark Mitchell  
2224
 
2225
        PR c++/31338
2226
        * cp-tree.h (ARITHMETIC_TYPE): Include COMPLEX_TYPE.
2227
        * typeck.c (type_after_usual_arithmetic_conversions): Adjust, as
2228
        COMPLEX_TYPE is now an ARITHMETIC_TYPE.
2229
        * init.c (build_zero_init): Adjust, as
2230
        COMPLEX_TYPE is now a SCALAR_TYPE.
2231
        * typeck2.c (digest_init): Allow brace-enclosed initializers for
2232
        COMPLEX_TYPE, even though that is now a SCALAR_TYPE.
2233
 
2234
2007-04-25  Paolo Carlini  
2235
 
2236
        * semantics.c (classtype_has_nothrow_copy_or_assign_p): Adjust
2237
        per N2255; rename as classtype_has_nothrow_assign_or_copy_p.
2238
        (trait_expr_value): Adjust.
2239
 
2240
2007-04-23  Simon Baldwin  
2241
 
2242
        * decl.c (grokparms): Added new error for duplicate function
2243
        parameters names in function prototypes, to match gcc behavior.
2244
 
2245
2007-04-23  Jan Hubicka  
2246
 
2247
        * decl2.c (finish_objects): Do not call target constructor/destructor
2248
        bits dirrectly.
2249
 
2250
2007-04-21  Andrew Pinski  
2251
 
2252
        * cp-tree.h (lang_tree_node): Use GENERIC_NEXT
2253
        instead of checking GIMPLE_STMT_P in chain_next.
2254
 
2255
2007-04-17  Mark Mitchell  
2256
 
2257
        PR c++/31513
2258
        * call.c (convert_for_arg_passing): Convert bitfields to their
2259
        declared types.
2260
 
2261
2007-04-17  Simon Martin  
2262
 
2263
        PR c++/31517
2264
        * pt.c (value_dependent_expression_p): Handle MODOP_EXPRs.
2265
 
2266
2007-04-16  Seongbae Park 
2267
 
2268
        PR c++/29365
2269
        * decl2.c (constrain_class_visibility):
2270
        Do not warn about the use of anonymous namespace in the main input file.
2271
 
2272
2007-04-15  Mark Mitchell  
2273
 
2274
        * cp-tree.h (current_template_parms): Fix typo in comment.
2275
 
2276
2007-04-15  Kazu Hirata  
2277
 
2278
        * cp-tree.h, error.c: Fix comment typos.
2279
 
2280
2007-04-13  Jason Merrill  
2281
 
2282
        PR c++/31074
2283
        * call.c (reference_binding): Add c_cast_p parm.  If true,
2284
        add quals to TO as needed to make it reference-compatible.
2285
 
2286
2007-04-11  Jan Hubicka  
2287
 
2288
        * class.c (convert_to_base_statically): Fold produced tree; verify
2289
        that we are not processing template_decl.
2290
 
2291
2007-04-09  Mark Mitchell  
2292
 
2293
        PR c++/31449
2294
        * class.c (build_base_path): Ensure that the converted pointer has
2295
        the same cv-qualification as the input.
2296
 
2297
2007-04-09  Paolo Carlini  
2298
 
2299
        * tree.c (cp_tree_equal): Deal with TRAIT_EXPR.
2300
 
2301
2007-04-08  Steven Bosscher  
2302
 
2303
        * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS):
2304
        Do not set it.
2305
        (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do not set it.
2306
        * tree.c (cp_add_pending_fn_decls): Remove.
2307
        * cp-tree.h (cp_add_pending_fn_decls): Remove prototype.
2308
 
2309
2007-04-07  Daniel Berlin  
2310
 
2311
        Revert change removing staticp.
2312
 
2313
2007-04-06  Daniel Berlin  
2314
 
2315
        * cp-objcp-common.c (cxx_staticp): Remove.
2316
        * cp-objcp-common.h (LANG_HOOKS_STATICP): Remove.
2317
        * cp-tree.h (cxx_staticp):
2318
 
2319
2007-04-04  Danny Smith  
2320
 
2321
        * class.c (check_for_override): Don't remove dllmport attribute
2322
        of virtual methods.
2323
 
2324
2007-04-03  Jakub Jelinek  
2325
 
2326
        PR c++/30847
2327
        * typeck.c (build_modify_expr): For COND_EXPR on LHS, if RHS has void
2328
        type issue error and return early.
2329
 
2330
2007-03-30  Jason Merrill  
2331
 
2332
        PR c++/31187
2333
        * typeck.c (cp_type_readonly): New fn.
2334
        * cp-tree.h: Declare it.
2335
        * decl.c (start_decl): Set implicit DECL_THIS_STATIC here.
2336
        (cp_finish_decl): Not here.
2337
 
2338
2007-03-31  Richard Guenther  
2339
 
2340
        * optimize.c (maybe_clone_body): Replace splay-tree usage by
2341
        pointer-map.
2342
 
2343
2007-03-31  Douglas Gregor  
2344
 
2345
        PR c++/31138
2346
        PR c++/31140
2347
        PR c++/31141
2348
        * parser.c (declarator_can_be_parameter_pack): New.
2349
        (cp_parser_template_parameter): Only parse the `...' if the
2350
        declarator can be a parameter pack.
2351
        (cp_parser_parameter_declaration): Ditto. Also, handle when TYPE
2352
        is NULL.
2353
        * pt.c (find_parameter_packs_r): Look into the bounds on integer
2354
        types (they could be used as array bounds).
2355
        (check_for_bare_parameter_packs): Deal with TEMPLATE_PARM_INDEX.
2356
        (tsubst_pack_expansion): Handle failure to expand parameter
2357
        packs.
2358
 
2359
2007-03-30  Paolo Carlini  
2360
 
2361
        PR c++/26099
2362
        * cp-tree.h (enum cp_trait_kind, struct tree_trait_expr,
2363
        TRAIT_EXPR_TYPE1, TRAIT_EXPR_TYPE2, TRAIT_EXPR_KIND): Add.
2364
        (enum cp_tree_node_structure_enum, union lang_tree_node): Update.
2365
        (CLASS_TYPE_NON_UNION_P): Add.
2366
        (struct lang_type_class): Add has_complex_dflt.
2367
        (TYPE_HAS_COMPLEX_DFLT, TYPE_HAS_TRIVIAL_DFLT): Add.
2368
        (locate_copy, locate_ctor, locate_dtor, finish_trait_expr): Declare.
2369
        * cp-tree.def: Add TRAIT_EXPR.
2370
        * cp-objcp-common.c (cp_tree_size): Add TRAIT_EXPR case.
2371
        * lex.c (struct resword): Add __has_nothrow_assign,
2372
        __has_nothrow_constructor, __has_nothrow_copy, __has_trivial_assign,
2373
        __has_trivial_constructor, __has_trivial_copy,
2374
        __has_trivial_destructor, __has_virtual_destructor, __is_abstract,
2375
        __is_base_of, __is_class, __is_convertible_to, __is_empty, __is_enum,
2376
        __is_pod, __is_polymorphic, __is_union.
2377
        * parser.c (cp_parser_primary_expression): Deal with the new RIDs.
2378
        (cp_parser_trait_expr): New.
2379
        * semantics.c (finish_trait_expr, trait_expr_value
2380
        classtype_has_nothrow_copy_or_assign_p): New.
2381
        * method.c (locate_copy, locate_ctor, locate_dtor): Do not define
2382
        as static.
2383
        * decl.c (cp_tree_node_structure): Add TRAIT_EXPR.
2384
        * class.c (check_bases, check_field_decl, check_bases_and_members):
2385
        Deal with TYPE_HAS_COMPLEX_DFLT (t) too.
2386
        * pt.c (uses_template_parms, tsubst_copy_and_build,
2387
        value_dependent_expression_p, type_dependent_expression_p): Deal with
2388
        TRAIT_EXPR.
2389
        * tree.c (cp_walk_subtrees): Deal with TRAIT_EXPR.
2390
 
2391
2007-03-29  Richard Guenther  
2392
 
2393
        * tree.c (cp_walk_subtrees): Do not set input_location.
2394
 
2395
2007-03-28  Simon Martin  
2396
 
2397
        PR c++/29077
2398
        * decl.c (grokfndecl): Properly setup decl if it is a constructor or a
2399
        destructor.
2400
 
2401
2007-03-28 Douglas Gregor 
2402
 
2403
        * parser.c (struct cp_parser): Update comment for
2404
        greater_than_is_operator_p.
2405
        (cp_parser_primary_expression): In C++0x mode, a cast operator can
2406
        be terminated with a `>>' token when !GREATER_THAN_IS_OPERATOR_P.
2407
        (TOKEN_PRECEDENCE): In C++0x mode, `>>' is treated like `>' when
2408
        !GREATER_THAN_IS_OPERATOR_P.
2409
        (cp_parser_binary_expression): When -Wc++0x-compat, warn about
2410
        `>>' operators that will become two `>' tokens in C++0x.
2411
        (cp_parser_parameter_declaration): Treat `>>' like `>' in C++0x
2412
        mode, allowing it to terminate default arguments.
2413
        (cp_parser_enclosed_template_argument_list): In C++0x mode, treat
2414
        `>>' like two consecutive `>' tokens.
2415
        (cp_parser_skip_to_end_of_template_parameter_list): Ditto.
2416
        (cp_parser_next_token_ends_template_argument_p): In C++0x, `>>'
2417
        ends a template argument.
2418
 
2419
2007-03-28  Douglas Gregor  
2420
 
2421
        * decl.c (redeclaration_error_message): Complain when redeclaring
2422
        a friend function with default template arguments (C++0x mode only).
2423
        * cp-tree.h (check_default_tmpl_args): Declare.
2424
        * pt.c (check_default_tmpl_args): In C++0x mode, permit default
2425
        template arguments in function templates. Add support for checking
2426
        the default template arguments of friend templates.
2427
        (push_template_decl_real): Fix call to check_default_tmpl_args.
2428
        (type_unification_real): If a template parameter has not been
2429
        deduced but provides a default template argument, substitute into
2430
        that default template argument.
2431
        * parser.c (cp_parser_init_declarator): When declaring (but not
2432
        defining!) a function template in C++0x mode, check for default
2433
        template arguments.
2434
 
2435
2007-03-28 Douglas Gregor 
2436
 
2437
        PR c++/29993
2438
        * decl.c (grokdeclarator): Deal with cv-qualified function type
2439
        typedefs in the same way for member and non-member functions.
2440
 
2441
2007-03-26  Dirk Mueller  
2442
 
2443
        * parser.c (cp_parser_member_declaration): Pedwarn
2444
        about stray semicolons after member declarations.
2445
 
2446
2007-03-26  Paolo Carlini  
2447
 
2448
        PR c++/30500
2449
        * pt.c (instantiate_decl): Set in_system_header.
2450
 
2451
2007-03-22  Mark Mitchell  
2452
 
2453
        * cp-tree.h (current_tempalte_parms): Improve documentation.
2454
        * pt.c (current_template_args): Likewise.
2455
 
2456
        PR c++/30863
2457
        * parser.c (cp_parser_parse_and_diagnose_invalid_type_name): Do
2458
        not consume tokens when failing.
2459
 
2460
2007-03-22  Jim Wilson  
2461
            Mark Mitchell  
2462
 
2463
        PR c++/31273
2464
        * call.c (standard_conversion): Use type_decays_to.  Keep FCODE
2465
        consistent with FROM.
2466
 
2467
2007-03-22  Gabriel Dos Reis  
2468
 
2469
        * error.c (dump_expr): Handle dependent names that designate types.
2470
        * cxx-pretty-print.c (pp_cxx_unqualified_id): Handle TYPENAME_TYPE.
2471
 
2472
2007-03-17  Kazu Hirata  
2473
 
2474
        * cp-tree.def, parser.c, pt.c: Fix comment typos.
2475
 
2476
2007-03-16  Manuel Lopez-Ibanez  
2477
 
2478
        * cvt.c (cp_convert_and_check) : Define.
2479
        * cp-tree.h (cp_convert_and_check): Declare.
2480
        * call.c (convert_conversion_warnings): Rename to
2481
        conversion_null_warnings.  The warning for floating-point to
2482
        integer is handled by convert_and_check in convert_like_real.
2483
        (convert_like_real): convert_conversion_warnings was renamed as
2484
        conversion_null_warnings.
2485
        * typeck.c (build_binary_op): Use cp_convert_and_check to warn for
2486
        overflow and changes of value during conversion.
2487
 
2488
2007-03-15  Manuel Lopez-Ibanez  
2489
 
2490
        PR c++/30891
2491
        * parser.c (cp_parser_statement): If 'namespace' is found, this
2492
        only can be a namespace alias definition, so parse it now.
2493
        (cp_parser_namespace_alias_definition): if we find an open brace
2494
        instead of '=', then this is actually a misplaced namespace
2495
        definition.
2496
 
2497
2007-03-15  Manuel Lopez-Ibanez  
2498
 
2499
        PR c++/24924
2500
        * decl.c (cxx_init_decl_processing): Move command-line options
2501
        processing to c-opts.c.
2502
 
2503
2007-03-15  Douglas Gregor  
2504
 
2505
        * ptree.c (cxx_print_type): Use formatting markup for integers
2506
        when printing template parameter index/level/orig level.
2507
        (cxx_print_xnode): Ditto.
2508
        * cp-tree.h (TEMPLATE_PARM_PARAMETER_PACK): Use TREE_LANG_FLAG_0.
2509
        (struct template_parm_index_s): Remove the PARAMETER_PACK member.
2510
        Make INDEX, LEVEL, and ORIG_LEVEL integers instead of
2511
        HOST_WIDE_INTs.
2512
        (struct saved_scope): Make X_PROCESSING_TEMPLATE_DECL an int,
2513
        rather than a HOST_WIDE_INT.
2514
        Turn X_PROCESSING_EXPLICIT_INSTANTIATION, SKIP_EVALUATION, and
2515
        NEED_POP_FUNCTION_CONTEXT into bool bitfields; reorder fields for
2516
        better bit-packing.
2517
        (struct language_function): Make RETURNS_VALUE, RETURNS_NULL,
2518
        RETURNS_ABNORMALLY, IN_FUNCTION_TRY_HANDLER, and
2519
        IN_BASE_INITIALIZER bool bitfields.
2520
        (struct cp_declarator): Make KIND a 4-bit field. Make
2521
        PARAMETER_PACK_P a bool bitfield just after KIND.
2522
        * pt.c (uses_parameter_packs): Destroy the pointer set.
2523
        (make_pack_expansion): Ditto.
2524
        (check_for_bare_parameter_packs): Ditto.
2525
        * name-lookup.c (push_to_top_level): Make need_pop a bool value.
2526
 
2527
2007-03-14  Andrew Pinski  
2528
 
2529
        PR c++/31165
2530
        * call.c  (convert_default_arg): Instead of copying the node,
2531
        unshare it.
2532
 
2533
2007-03-15  Dirk Mueller  
2534
 
2535
        PR c++/30860
2536
        * call.c (convert_conversion_warnings): New..
2537
        (convert_like_real): .. factored out from here.
2538
        (convert_conversion_warnings): Add warning about
2539
        false being converted to NULL in argument passing.
2540
 
2541
2007-03-14  Dirk Mueller  
2542
 
2543
        * semantics.c (c_finish_if_stmt): Call empty_if_body_warning.
2544
        (finish_do_body): Warn about empty body in do/while statement.
2545
 
2546
2007-03-14  Manuel Lopez-Ibanez  
2547
 
2548
        * class.c (warn_hidden): Add OPT_Woverloaded_virtual to warning.
2549
 
2550
2007-03-14  Manuel Lopez-Ibanez  
2551
 
2552
        PR c/21438
2553
        * typeck.c (build_binary_op): Call warn_for_div_zero instead of
2554
        warning.
2555
 
2556
2007-03-13  Alexandre Oliva  
2557
 
2558
        * repo.c (init_repo): Initialize random_seed saved options.
2559
        (finish_repo): Adjust.
2560
 
2561
2007-03-13  Mark Mitchell  
2562
 
2563
        PR bootstrap/30899
2564
        * Make-lang.in (doc/g++.1): Use $< to specify the location from
2565
        which to copy.
2566
 
2567
2007-03-12  Seongbae Park 
2568
 
2569
        * decl.c (compute_array_index_type): New warning flag warn_vla.
2570
 
2571
2007-03-12  Mark Mitchell  
2572
 
2573
        PR c++/30108
2574
        * call.c (convert_default_arg): Copy non-constant arguments.
2575
 
2576
2007-03-11  Mark Mitchell  
2577
 
2578
        PR c++/31038
2579
        * parser.c (cp_parser_postfix_expression): Disallow compound
2580
        literals in constant expressions.
2581
 
2582
        PR c++/30328
2583
        * semantics.c (finish_typeof): Use unlowered_expr_type.
2584
 
2585
2007-03-10  Mark Mitchell  
2586
 
2587
        PR c++/30274
2588
        * cp-tree.h (unlowered_expr_type): New function.
2589
        * typeck.c (is_bitfield_expr_with_lowered_type): Handle
2590
        COMPOUND_EXPR, MODIFY_EXPR, and SAVE_EXPR.
2591
        (unlowered_expr_type): New function.
2592
        (build_unary_op): Disallow predecrements of bool bitfields.
2593
        * call.c (build_conditional_expr): Use unlowered_expr_type.
2594
        * pt.c (type_unification_real): Likewise.
2595
 
2596
2007-03-09  Douglas Gregor  
2597
 
2598
        PR c++/20599
2599
        * typeck.c (check_return_expr): Check for bare parameter packs.
2600
        (comptypes): Compare template parameter packs and
2601
        type pack expansions.
2602
        * decl.c (grokdeclarator): Deal with the declaration of function
2603
        parameter packs.
2604
        (grokparms): Verify that the (optional) function parameter pack is
2605
        at the end of the parameter list.
2606
        (xref_basetypes): Handle pack expansions in the base class.
2607
        (cp_tree_node_structure): Handle ARGUMENT_PACK_SELECT.
2608
        * cp-tree.def (TYPE_ARGUMENT_PACK): New.
2609
        (NONTYPE_ARGUMENT_PACK): New.
2610
        (TYPE_PACK_EXPANSION): New.
2611
        (EXPR_PACK_EXPANSION): New.
2612
        (ARGUMENT_PACK_SELECT): New.
2613
        * cp-objcp-common.c (cp_tree_size): Compute size of
2614
        (NON)TYPE_ARGUMENT_PACK, (TYPE|EXPR)_PACK_EXPANSION, and
2615
        ARGUMENT_PACK_SELECT.
2616
        * error.c (dump_template_argument): Print template argument packs.
2617
        (dump_template_argument_list): Ditto.
2618
        (dump_template_parameter): Dump `...' for template type parameter
2619
        packs.
2620
        (dump_type): Dump TYPE_PACK_EXPANSION nodes.
2621
        (dump_parameters): Print function parameter packs.
2622
        (dump_template_parms): Print template argument packs.
2623
        (dump_expr): Dump EXPR_PACK_EXPANSION nodes.
2624
        (maybe_warn_variadic_templates): New.
2625
        * operators.def: Add ellipsis operator for EXPR_PACK_EXPANSION.
2626
        * tree.c (cp_walk_subtrees): Walk BASELINK, TYPE_ARGUMENT_PACK,
2627
        NONTYPE_ARGUMENT_PACK, TYPE_PACK_EXPANSION, EXPR_PACK_EXPANSION,
2628
        CAST_EXPR.
2629
        * mangle.c (write_type): Mangle TYPE_PACK_EXPANSION.
2630
        (write_template_arg): Write argument packs as separate arguments.
2631
        * cp-tree.h (struct template_parm_index_s): Add flag that
2632
        indicates that the template parameter is actually a parameter
2633
        pack.
2634
        (struct tree_argument_pack_select): New.
2635
        (enum cp_tree_node_structure_enum): Add TS_CP_ARGUMENT_PACK_SELECT.
2636
        (union lang_tree_node): Add argument_pack_select.
2637
        (FUNCTION_PARAMETER_PACK_P): New.
2638
        (PACK_EXPANSION_P): New.
2639
        (PACK_EXPANSION_PATTERN): New.
2640
        (SET_PACK_EXPANSION_PATTERN): New.
2641
        (PACK_EXPANSION_PARAMETER_PACKS): New.
2642
        (ARGUMENT_PACK_P): New.
2643
        (ARGUMENT_PACK_ARGS): New.
2644
        (SET_ARGUMENT_PACK_ARGS): New.
2645
        (ARGUMENT_PACK_INCOMPLETE_P): New.
2646
        (ARGUMENT_PACK_EXPLICIT_ARGS): New.
2647
        (TEMPLATE_PARM_PARAMETER_PACK): New.
2648
        (TEMPLATE_TYPE_PARAMETER_PACK): New.
2649
        (ARGUMENT_PACK_SELECT_FROM_PACK): New.
2650
        (ARGUMENT_PACK_SELECT_INDEX): New.
2651
        (ARGUMENT_PACK_SELECT_ARG): New.
2652
        (struct cp_declarator): Add parameter_pack_p flag.
2653
        (maybe_warn_variadic_templates): Declare.
2654
        (process_template_parm): Add bool parameter IS_PARAMETER_PACK, to
2655
        indicate a template parameter pack.
2656
        (uses_parameter_packs): Declare.
2657
        (template_parameter_pack_p): Declare.
2658
        (template_parms_variadic_p): Declare.
2659
        (make_pack_expansion): Declare.
2660
        (check_for_bare_parameter_packs): Declare.
2661
        * cxx-pretty-print.c (pp_cxx_unary_expression): Print
2662
        sizeof... expressions.
2663
        (pp_cxx_expression): Print pack expansions and non-type argument
2664
        packs.
2665
        (pp_cxx_exception_specification): Print pack expansions.
2666
        (pp_cxx_direct_declarator): Print ellipsis for parameter packs.
2667
        (pp_cxx_ctor_initializer): Print pack expansions.
2668
        (pp_cxx_type_id): Print pack expansions.
2669
        (pp_cxx_template_argument_list): Print argument packs.
2670
        (pp_cxx_template_parameter): Print ellipsis for template parameter
2671
        packs.
2672
        * pt.c (comp_template_parms): Compare template parameter packs.
2673
        (template_parameter_pack_p): New.
2674
        (template_parms_variadic_p): New.
2675
        (template_args_variadic_p): New.
2676
        (make_ith_pack_parameter_name): New.
2677
        (struct find_parameter_pack_data): New.
2678
        (find_parameter_packs_r): New.
2679
        (uses_parameter_packs): New.
2680
        (make_pack_expansion): New.
2681
        (check_for_bare_parameter_packs): New.
2682
        (expand_template_argument_pack): New.
2683
        (reduce_template_parm_level): Propagate parameter pack flag.
2684
        (process_template_parm): Add is_parameter_pack parameter to state
2685
        when the parameter is actually a parameter pack. Create template
2686
        parameter packs when is_parameter_pack is true.
2687
        (current_template_args): The argument for a template parameter
2688
        pack is an argument pack containing a single pack expansion.
2689
        (process_partial_specialization): When checking that non-type
2690
        argument expressions do not involve template parameters, loop over
2691
        the arguments in argument packs separately.
2692
        (push_template_decl_real): Check that the type of the declaration
2693
        does not have any bare parameter packs. Check that primary
2694
        templates have no more than one parameter pack, and that it comes
2695
        at the end of the template parameter list.
2696
        (convert_template_argument): Handle coercions for pack expansion
2697
        expressions by coercing the pattern then rebuilding the expansion.
2698
        (coerce_template_parms): When coercing the arguments for a
2699
        variadic template, pack "extra" arguments into an argument pack.
2700
        (coerce_template_template_parms): Cannot coerce between parameter
2701
        packs and non-pack parameters.
2702
        (template_args_equal): Compare PACK_EXPANSION_P expressions.
2703
        (comp_template_args): Expand all template arguments packs before
2704
        comparing template argument lists.
2705
        (mangle_class_name_for_template): Make argument packs as separate
2706
        template arguments.
2707
        (for_each_template_parm_r): No need to handle BASELINK.
2708
        (instantiate_class_template): Handle pack expansions in the base
2709
        class list.
2710
        (tsubst_pack_expansion): New.
2711
        (tsubst_template_args): Handle substitutions of argument packs and
2712
        pack expansion into template argument lists.
2713
        (tsubst_decl): Expand function parameter packs into separate
2714
        function parameters.
2715
        (tsubst_arg_types): Expand a type pack expansion into separate
2716
        argument types.
2717
        (tsubst_exception_specification): Handle pack expansions in
2718
        exception specifiers.
2719
        (tsubst): See through ARGUMENT_PACK_SELECT arguments when
2720
        replacing a template parameter with its argument. If we encounter
2721
        a substitution for an argument pack, just return the parameter
2722
        itself.
2723
        (tsubst_copy): sizeof(X...) returns the number of elements in
2724
        parameter pack X.  See through ARGUMENT_PACK_SELECT when the
2725
        PARM_DECL is a parameter pack.
2726
        (tsubst_expr): Expression pack expansions and argument packs
2727
        cannot show up here; they will all be handled through function
2728
        calls, sizeof, and template argument lists.
2729
        (tsubst_copy_and_build): sizeof(X...) returns the number of
2730
        elements in parameter pack X.  Handle pack expansions in TREE_LIST
2731
        and CONSTRUCTOR nodes.
2732
        (fn_type_unification): Handle "incomplete" explicit template
2733
        argument lists that specify some of the arguments for a template
2734
        parameter pack.
2735
        (type_unification_real): Unify arguments against pack expansions.
2736
        (template_parm_level_and_index): New, helper function.
2737
        (unify_pack_expansion): New.
2738
        (unify): Unify argument packs on an argument-by-argument basis,
2739
        handling variadic argument packs as well.
2740
        (more_specialized_fn): Handle unification of function parameter
2741
        packs. All things being equal, prefer non-variadic function
2742
        templates to variadic function templates.
2743
        (more_specialized_class): Prefer the variadic class template
2744
        partial specialization that binds fewer arguments to a parameter
2745
        pack.
2746
        (regenerate_decl_from_template): Expand function parameter packs
2747
        into separate parameters.
2748
        (instantiate_decl): Ditto.
2749
        (tsubst_initializer_list): Handle pack expansions for base-class
2750
        initializers.
2751
        (dependent_type_p_r): Determine dependent types in argument packs
2752
        and pack expansions.
2753
        (value_dependent_expression_p): Determine value-dependence of
2754
        non-type argument packs.
2755
        (dependent_template_arg_p): Handle argument packs.
2756
        * semantics.c (finish_cond): Check for bare parameter packs.
2757
        (finish_expr_stmt): Ditto.
2758
        (finish_for_expr): Ditto.
2759
        (finish_switch_cond): Ditto.
2760
        (finish_mem_initializers): Ditto.
2761
        * name-lookup.c (arg_assoc_type): Handle pack expansions and
2762
        argument packs.
2763
        * decl2.c (cp_build_parm_decl): Mark function parameter packs.
2764
        * parser.c (make_declarator): Declarator is not an expansion.
2765
        (make_pointer_declarator): Transfer parameter pack flag to outer
2766
        declarator.
2767
        (make_reference_declarator): Ditto.
2768
        (make_ptrmem_declarator): Ditto.
2769
        (make_call_declarator): Ditto.
2770
        (make_array_declarator): Ditto.
2771
        (cp_parser_postfix_expression): Allow pack expansion expressions
2772
        in the argument list for a call expression.
2773
        (cp_parser_parenthesized_expression_list): Add new parameter
2774
        ALLOW_EXPANSION_P. When true, parse the ellipsis to mean "expand
2775
        into separate arguments."
2776
        (cp_parser_new_placement): Allow pack expansion expressions.
2777
        (cp_parser_new_initializer): Ditto.
2778
        (cp_parser_mem_initializer_list): Allow ellipsis to create a
2779
        base-class initializer expansion.
2780
        (cp_parser_mem_initializer): Ditto.
2781
        (cp_parser_template_parameter_list): Keep track of whether the
2782
        template parameter is a template parameter pack.
2783
        (cp_parser_template_parameter): Parse the ellipsis to indicate a
2784
        template parameter pack.
2785
        (cp_parser_type_parameter): Ditto.
2786
        (cp_parser_template_argument_list): Parse the ellipsis to indicate
2787
        a pack expansion.
2788
        (cp_parser_direct_declarator): Parse the ellipsis to indicate that
2789
        this declarator is a parameter pack.
2790
        (cp_parser_parameter_declaration): The ellipsis does not end the
2791
        parameter declaration, because it might be a parameter pack. Parse
2792
        the ellipsis to indicate a parameter pack.
2793
        (cp_parser_initializer): Allow pack expansions.
2794
        (cp_parser_initializer_list): Allow ellipsis to create an
2795
        initializer expansion.
2796
        (cp_parser_base_clause): Allow ellipsis to create a base specifier
2797
        expansion.
2798
        (cp_parser_type_id_list): Allow ellipsis to create an exception
2799
        specifier expansion.
2800
        (cp_parser_attribute_list): Don't allow pack expansions.
2801
        (cp_parser_functional_cast): Allow pack expansions.
2802
        (cp_parser_sizeof_operand): Allow ellipsis following "sizeof" to
2803
        compute the length of a parameter pack.
2804
        (cp_parser_next_token_ends_template_argument_p): An ellipsis can
2805
        end a template argument.
2806
        * tree.c (cp_walk_subtrees): Walk BASELINK, TYPE_ARGUMENT_PACK,
2807
        NONTYPE_ARGUMENT_PACK, TYPE_PACK_EXPANSION, EXPR_PACK_EXPANSION,
2808
        CAST_EXPR.
2809
 
2810
2007-03-09  Dirk Mueller  
2811
 
2812
        * call.c (build_new_op): Call warn_logical_operator.
2813
 
2814
2007-03-08  Volker Reichelt  
2815
 
2816
        PR c++/30852
2817
        * semantics.c (finish_offsetof): Handle COMPOUND_EXPR.
2818
 
2819
        PR c++/30534
2820
        * pt.c (any_template_arguments_need_structural_equality_p):
2821
        Robustify.
2822
 
2823
2007-03-08  Alexandre Oliva  
2824
 
2825
        * decl.c (grokdeclarator): Disable warnings for anonymous
2826
        bitfields.
2827
 
2828
2007-03-05  Volker Reichelt  
2829
 
2830
        * typeck2.c (readonly_error): Always emit a hard error.
2831
        Remove last argument.
2832
        * cp-tree.h (readonly_error): Adjust prototype.
2833
        * semantics.c (finish_asm_stmt): Adjust call to readonly_error.
2834
        * typeck.c (build_unary_op): Likewise.
2835
        (build_modify_expr): Likewise.
2836
 
2837
2007-03-04  Simon Martin  
2838
 
2839
        PR c++/30895
2840
        * tree.c (cp_tree_equal): Properly handle COMPLEX_CST trees.
2841
 
2842
2007-03-03  Manuel Lopez-Ibanez  
2843
 
2844
        PR c++/15787
2845
        * parser.c (struct cp_parser): New IN_IF_STMT.
2846
        (cp_parser_statement_seq_opt): Handle an unexpected 'else',
2847
        returning if parsing the body of an 'if' statement or issuing an
2848
        error and continuing.
2849
        (cp_parser_selection_statement): Set IN_IF_STMT bit when parsing
2850
        body of 'if'.
2851
        (cp_parser_jump_statement): Mask new IN_IF_STMT bit.
2852
 
2853
2007-03-02  Simon Martin  
2854
 
2855
        PR c++/28253
2856
        * class.c (update_vtable_entry_for_fn): Properly handle invalid overriders
2857
        for thunks.
2858
 
2859
2007-03-02  Geoffrey Keating  
2860
 
2861
        * g++spec.c (lang_specific_driver): Add -lstdc++ when compiling
2862
        Objective-C++.  Don't exit early if -shared-libgcc needs to be
2863
        added.
2864
 
2865
2007-03-02  Manuel Lopez-Ibanez  
2866
 
2867
        * typeck.c (common_base_type): Delete unused function.
2868
 
2869
2007-03-01  Brooks Moses  
2870
 
2871
        * Make-lang.in: Add dummy lang.install-pdf target.
2872
 
2873
2007-03-01  Simon Baldwin 
2874
 
2875
        PR c++/23689
2876
        * decl.c (check_tag_decl): Added new warning for typedef ignored
2877
        when it precedes an otherwise valid non-typedef declaration.
2878
 
2879
2007-02-28  Sandra Loosemore  
2880
 
2881
        * typeck.c (build_function_call): Store converted arguments
2882
        in a stack-allocated array instead of building a list.
2883
        (convert_arguments): Store arguments in the array passed in as an
2884
        argument, and return the actual number of arguments.
2885
        * call.c (build_call): Delete, and replace with...
2886
        (build_call_n, build_call_a): New.
2887
        (build_op_delete_call): Rewrite to avoid constructing argument lists.
2888
        (build_over_call): Store converted arguments in a stack-allocated
2889
        array instead of building a list.
2890
        (build_cxx_call): Pass arguments in an array instead of as a list.
2891
        (build_java_interface_fn_ref): Rewrite to avoid constructing
2892
        argument lists.
2893
        * tree.h: Update declarations to reflect above changes.
2894
        * method.c (use_thunk): Use a stack-allocated array to hold
2895
        the arguments instead of a list.
2896
        * rtti.c (throw_bad_cast): Update call to cxx_call.
2897
        (throw_bad_typeid): Likewise.
2898
        (build_dynamic_cast_1): Likewise.
2899
        * init.c (build_builtin_delete_call): Use build_call_n.
2900
        * decl.c (expand_static_init): Likewise.
2901
        * except.c (cp_protect_cleanup_actions): Likewise.
2902
        * cp-gimplify.c (genericize_eh_spec_block): Likewise.
2903
        (gimplify_must_not_throw_expr): Likewise.
2904
        (cxx_omp_apply_fn): Use build_call_a.
2905
 
2906
2007-02-26  Mark Mitchell  
2907
 
2908
        * semantics.c (expand_or_defer_fn): Call c_record_cdtor_fn.
2909
        * decl2.c (cp_write_gloabl_declarations): Call c_build_cdtor_fns.
2910
 
2911
2007-02-25  Mark Mitchell  
2912
 
2913
        * cp-tree.h (static_ctors): Remove.
2914
        * cp-tree.h (static_dtors): Likewise.
2915
        * cp-objcp-common.c (decl_shadowed_for_var_lookup): Adjust for
2916
        refactoring of tree_map hierarchy.
2917
        (decl_shadowed_for_var_insert): Likewise.
2918
        * semantics.c (expand_body): Use c_expand_body.
2919
        (expand_or_defer_fn): Don't update static_ctors or static_dtors.
2920
        * decl2.c (static_ctors): Remove.
2921
        (static_dtors): Likewise.
2922
        (generate_ctor_or_dtor_function): Pass NULL_TREE to
2923
        objc_generate_static_init_call.  Do not call static_[cd]tors.
2924
        (generate_ctor_and_dtor_functions_for_priority): Do not check for
2925
        static_[cd]tors.
2926
        (cp_write_global_declarations): Likewise.
2927
 
2928
2007-02-23  Richard Guenther  
2929
 
2930
        * class.c (note_name_declared_in_class): Make declaration
2931
        changes meaning a pedwarn.
2932
 
2933
2007-02-22  Michael Matz  
2934
 
2935
        PR c++/29433
2936
        * cp-tree.h (TFF_UNQUALIFIED_NAME): New formatting flag.
2937
        * error.c (dump_aggr_type, dump_simple_decl, dump_decl,
2938
        dump_function_decl): Guard emitting outer scopes by new flag.
2939
        * cp-lang.c (cxx_dwarf_name): New function.
2940
        (LANG_HOOKS_DWARF_NAME): Define to cxx_dwarf_name.
2941
        * pt.c (classtype_mangled_name, mangle_class_name_for_template):
2942
        Remove functions.
2943
        (push_template_decl_real, lookup_template_class): Remove calls
2944
        to above functions.
2945
 
2946
2007-02-19  Mark Mitchell  
2947
 
2948
        * call.c (build_new_method_call): Ensure that explicit calls of
2949
        destructors have type "void".
2950
 
2951
2007-02-19  Manuel Lopez-Ibanez  
2952
 
2953
        * typeck.c (build_binary_op): Replace -Wstring-literal-comparison
2954
        and -Walways-true with -Waddress.
2955
        * cvt.c (convert_to_void): Replace unconditional warning with
2956
        -Waddress.
2957
 
2958
2007-02-18  Kazu Hirata  
2959
 
2960
        * decl.c, tree.c: Fix comment typos.
2961
 
2962
2007-02-15  Andrew Pinski  
2963
 
2964
        PR C++/30158
2965
        * semantics.c (finish_stmt_expr_expr): Set TREE_TYPE of the
2966
        statement expression if we had an error mark node.
2967
 
2968
2007-02-15  Sandra Loosemore  
2969
            Brooks Moses  
2970
            Lee Millward  
2971
 
2972
        * cp-tree.def (AGGR_INIT_EXPR): Adjust documentation.
2973
        Change class to tcc_vl_exp.
2974
 
2975
        * call.c (build_call): Use build_call_list instead
2976
        of build3.
2977
        (build_over_call): Likewise.
2978
        (build_new_method_call): Use build_min_non_dep_call_list
2979
        instead of build_min_non_dep.
2980
 
2981
        * error.c (dump_call_expr_args): New function.
2982
        (dump_aggr_init_expr_args): New function.
2983
        (dump_expr) : Use them.
2984
        Update to use new CALL_EXPR and AGGR_INIT_EXPR accessor macros.
2985
 
2986
        * cvt.c (convert_to_void): Use build_call_array instead
2987
        of build3; use new AGGR_INIT_EXPR accessor macros.
2988
 
2989
        * mangle.c (write_expression): Use TREE_OPERAND_LENGTH
2990
        instead of TREE_CODE_LENGTH.
2991
 
2992
        * dump.c (cp_dump_tree) : Update to use new
2993
        AGGR_INIT_EXPR accessor macros.
2994
 
2995
        * cp-gimplify.c (cp_gimplify_init_expr): Use
2996
        AGGR_INIT_EXPR_SLOT to set the slot operand.
2997
 
2998
        * cp-tree.h (AGGR_INIT_EXPR_FN): New macro.
2999
        (AGGR_INIT_EXPR_SLOT): New macro.
3000
        (AGGR_INIT_EXPR_ARG): New macro.
3001
        (aggr_init_expr_nargs): New macro.
3002
        (AGGR_INIT_EXPR_ARGP): New macro.
3003
        (aggr_init_expr_arg_iterator): New.
3004
        (init_aggr_init_expr_arg_iterator): New.
3005
        (next_aggr_init_expr_arg): New.
3006
        (first_aggr_init_expr_arg): New.
3007
        (more_aggr_init_expr_args_p): New.
3008
        (FOR_EACH_AGGR_INIT_EXPR_ARG): New.
3009
        (stabilize_aggr_init): New declaration.
3010
        (build_min_non_dep_call_list): Likewise.
3011
 
3012
        * tree.c (process_aggr_init_operands): New function.
3013
        (build_aggr_init_array) New function.
3014
        (build_cplus_new): Update to use new CALL_EXPR and
3015
        AGGR_INIT_EXPR accessor macros. Replace use of build3 with
3016
        build_aggr_init_array.
3017
        (build_min_non_dep_call_list) New function.
3018
        (build_min_nt): Assert input code parameter is not a variable
3019
        length expression class.
3020
        (build_min, build_min_non_dep): Likewise.
3021
        (cp_tree_equal) : Iterate through the arguments
3022
        to check for equality instead of recursing. Handle tcc_vl_exp
3023
        tree code classes.
3024
        (stabilize_call): Update to only handle CALL_EXPRs, not
3025
        AGGR_INIT_EXPRs; use new CALL_EXPR accessor macros.
3026
        (stabilize_aggr_init): New function.
3027
        (stabilize_init): Use it.
3028
 
3029
        * cxx-pretty-print.c (pp_cxx_postfix_expression)
3030
        : Update to use new CALL_EXPR and
3031
        AGGR_INIT_EXPR accessor macros and argument iterators.
3032
 
3033
        * pt.c (tsubst_copy) : Replace build_nt with
3034
        build_vl_exp. Iterate through the operands, recursively
3035
        processing each one.
3036
        (tsubst_copy_and_build) : Update to use new
3037
        CALL_EXPR accessor macros.
3038
        (value_dependent_expression_p) : Handle tcc_vl_exp
3039
        tree code classes. Use TREE_OPERAND_LENGTH instead of
3040
        TREE_CODE_LENGTH.
3041
 
3042
        * semantics.c (finish_call_expr): Use build_nt_call_list
3043
        instead of build_nt.
3044
        (simplify_aggr_init_expr): Update to use new AGGR_INIT_EXPR
3045
        accessor macros. Use build_call_array to construct the
3046
        CALL_EXPR node instead of build3
3047
 
3048
        * decl2.c (build_offset_ref_call_from_tree): Use
3049
        build_nt_call_list and build_min_non_dep_call_list instead
3050
        of build_min_nt and build_min_non_dep.
3051
 
3052
        * parser.c (cp_parser_postfix_expression) :
3053
        Use build_nt_call_list instead of build_min_nt.
3054
 
3055
2007-02-15  Manuel Lopez-Ibanez  
3056
 
3057
        PR c++/28943
3058
        * call.c (build_conditional_expr): Improve error message.
3059
 
3060
2007-02-13  Dirk Mueller  
3061
 
3062
        * friend.c (do_friend): Annotate warning about friend
3063
        declarations in templates with OPT_Wnon_template_friend.
3064
        Convert informal message from warning() to inform().
3065
 
3066
2007-02-12  Simon Martin  
3067
            Mark Mitchell  
3068
 
3069
        PR c++/14622
3070
        * pt.c (do_decl_instantiation): Detect type mismatches in explicit
3071
        instantiations for variables.
3072
 
3073
2007-02-12  Manuel Lopez-Ibanez  
3074
 
3075
        PR middle-end/7651
3076
        * cp-gimplify.c (gimplify_expr_stmt): Don't check extra_warnings.
3077
        Check warn_unused_value just once.
3078
 
3079
2007-02-11  Mark Mitchell  
3080
 
3081
        PR c++/26988
3082
        * pt.c (determine_specialization): Use skip_artificial_parms_for.
3083
        (fn_type_unificiation): Likewise.
3084
        (get_bindings): Likewise.
3085
 
3086
o2007-02-06  Mark Mitchell  
3087
 
3088
        PR target/29487
3089
        * decl.c (finish_function): Use DECL_REPLACEABLE.
3090
        * tree.c (cp_cannot_inline_tree_fn): Likewise.
3091
 
3092
2007-02-10  Gabriel Dos Reis  
3093
 
3094
        * parser.c (cp_parser_primary_expression): Reformat overly long lines.
3095
 
3096
2007-02-10  Richard Henderson  , Jakub Jelinek  
3097
 
3098
        * decl.c (grokvardecl): Don't error if !have_tls.
3099
        (grokdeclarator): Likewise.
3100
        * parser.c (cp_parser_omp_threadprivate): Likewise.
3101
 
3102
2007-02-07  Jakub Jelinek  
3103
 
3104
        PR c++/30703
3105
        * cp-gimplify.c (cp_genericize_r): Don't dereference invisiref
3106
        parameters and result decls in omp clauses.
3107
        (cxx_omp_privatize_by_reference): Pass also invisiref PARM_DECLs
3108
        by reference.
3109
 
3110
2007-02-05  Dirk Mueller  
3111
 
3112
        PR bootstrap/30510
3113
        * parser.c (cp_parser_class_specifier): Always initialize bases.
3114
 
3115
2007-02-05  Paolo Bonzini  
3116
 
3117
        * cp-tree.h (OMP_ATOMIC_CODE): Delete.
3118
        (OMP_ATOMIC_DEPENDENT_P): Rewrite.
3119
        * pt.c (tsubst_expr): Adjust for new format of dependent OMP_ATOMIC
3120
        expressions.
3121
        * semantics.c (finish_omp_atomic): Store a whole expression node
3122
        in operand 1, and integer_zero_node in operand 0, for dependent
3123
        OMP_ATOMIC.  Rewrite to make flow easier to understand.
3124
 
3125
2007-02-03  Gabriel Dos Reis  
3126
 
3127
        * decl.c (grokdeclarator): Use OPT_Wreturn_type instead of 0.
3128
 
3129
2007-02-04  Kazu Hirata  
3130
 
3131
        * class.c, cp-tree.h, decl.c, decl2.c, g++spec.c, init.c,
3132
        parser.c, pt.c, tree.c, typeck.c: Follow spelling conventions.
3133
 
3134
2007-02-03  Douglas Gregor  
3135
 
3136
        * parser.c (cp_lexer_get_preprocessor_token): Attach the C++0x
3137
        keyword warning to -Wc++0x-compat.
3138
 
3139
2007-02-03  Gabriel Dos Reis  
3140
 
3141
        * decl.c (grokdeclarator): Update documentation.
3142
 
3143
2007-02-02  Jakub Jelinek  
3144
 
3145
        PR c++/30536
3146
        * decl.c (grokdeclarator): If __thread is used together with
3147
        a storage class other than extern and static, clear thread_p
3148
        after issuing diagnostics and fall through to checking the
3149
        storage class.
3150
 
3151
2007-01-30  Roger Sayle  
3152
 
3153
        * error.c (dump_type_suffix): Avoid use of cp_build_binary_op when
3154
        calculating the size of an array (to avoid recursive errors).
3155
 
3156
2007-01-30  Manuel Lopez-Ibanez  
3157
 
3158
        PR c++/24745
3159
        * typeck.c (build_binary_op): Fix logic for warning. Move warning
3160
        to -Wpointer-arith.
3161
        * call.c (convert_like_real): Don't warn when converting to
3162
        boolean type.
3163
 
3164
2007-01-29  Manuel Lopez-Ibanez  
3165
 
3166
        * decl.c (pop_label): Replace warning with call to
3167
        warn_for_unused_label.
3168
 
3169
2007-01-28  Andrew Pinski  
3170
 
3171
        PR C++/28988
3172
        * semantics.c (finish_pseudo_destructor_expr): Check the
3173
        destrutor name by calling check_dtor_name.
3174
 
3175
2007-01-24  Douglas Gregor  
3176
 
3177
        * lex.c (D_CPP0X): Rename.
3178
        (D_CXX0X): To this.
3179
        (reswords): D_CPP0X -> D_CXX0X.
3180
        (init_reswords): Ditto.
3181
        * parser.c (cp_lexer_get_preprocessor_token): Warn about the use
3182
        of C++0x keywords as identifiers.
3183
 
3184
2007-01-23  Simon Martin  
3185
 
3186
        PR c++/27492
3187
        * decl.c (duplicate_decls): Don't reset DECL_INVALID_OVERRIDER_P for
3188
        function decls.
3189
 
3190
2007-01-23  Ian Lance Taylor  
3191
 
3192
        * typeck.c (convert_for_assignment): Only warn about a = b = c
3193
        when converting to bool.
3194
 
3195
2007-01-23  Roger Sayle  
3196
 
3197
        * call.c (null_ptr_cst_p): Replace use of TREE_CONSTANT_OVERFLOW with
3198
        TREE_OVERFLOW.
3199
        * typeck.c (ignore_overflows): Remove the remaining uses of
3200
        TREE_CONSTANT_OVERFLOW.
3201
 
3202
2007-01-20  Jan Hubicka  
3203
 
3204
        * decl2.c (start_objects, start_static_storage_duration_function):
3205
        Do not make the functions uninlinable.
3206
 
3207
2007-01-17  Ian Lance Taylor  
3208
 
3209
        * class.c (add_method): Call VEC_reserve_exact rather than passing
3210
        a negative size to VEC_reserve.
3211
 
3212
2007-01-11  Simon Martin  
3213
 
3214
        PR c++/29573
3215
        * tree.c (cp_tree_equal): Properly handle MODOP_EXPR trees.
3216
 
3217
2007-01-10  Mark Mitchell  
3218
 
3219
        PR c++/28999
3220
        * decl.c (make_typename_type): If the qualified name is not a
3221
        type, issue an error.
3222
        * parser.c (cp_parser_elaborated_type_specifier): Fix comment
3223
        formatting.
3224
 
3225
2007-01-08  Geoffrey Keating  
3226
 
3227
        * rtti.c: Include target.h.
3228
        (emit_support_tinfos): If ! targetm.cxx.library_rtti_comdat (),
3229
        don't emit typeinfo for fundamental types as weak.
3230
        * Make-lang.in (cp/rtti.o): Update and correct dependencies.
3231
 
3232
2007-01-08  Richard Guenther  
3233
 
3234
        * cvt.c (cp_convert_to_pointer): Use build_int_cst_type.
3235
 
3236
2007-01-08  Mark Shinwell  
3237
 
3238
        * call.c (standard_conversion): Pass flag to
3239
        vector_types_convertible_p to disallow emission of note.
3240
        * typeck.c (convert_for_assignment): Pass flag to
3241
        vector_types_convertible_p to allow emission of note.
3242
        (ptr_reasonably_similar): Pass flag to vector_types_convertible_p
3243
        to disallow emission of note.
3244
 
3245
2007-01-07  Manuel Lopez-Ibanez  
3246
 
3247
        PR c++/28986
3248
        * typeck.c (build_binary_op): Call overflow_warning if
3249
        TREE_OVERFLOW_P is true for the result and not for any of the
3250
        operands.
3251
 
3252
2007-01-06  Lee Millward  
3253
 
3254
        PR c++/19439
3255
        * class.c (add_method): Don't wait until template
3256
        instantiation time to complain about duplicate methods.
3257
 
3258
2007-01-05  Manuel Lopez-Ibanez  
3259
 
3260
        PR c/19978
3261
        * semantics.c (finish_unary_op_expr): Warn only if result
3262
        overflowed and operands did not.
3263
 
3264
2007-01-05  Ian Lance Taylor  
3265
 
3266
        * typeck.c (build_binary_op): Warn about comparing a non-weak
3267
        address to NULL.
3268
 
3269
2007-01-05  Douglas Gregor  
3270
 
3271
        * pt.c (tsubst): Propagate the need for structural equality checks
3272
        when reducing the level of template parameters.
3273
 
3274
2007-01-03  Kazu Hirata  
3275
 
3276
        * pt.c: Fix a comment typo.
3277
 
3278
2007-01-02  Ian Lance Taylor  
3279
 
3280
        * semantics.c (maybe_convert_cond): Optionally warn when using an
3281
        assignment as a condition.
3282
        * typeck.c (convert_for_assignment): Optionally warn about
3283
        assigning the result of an assignment to a bool.
3284
 
3285
2007-01-02  Douglas Gregor  
3286
 
3287
        * pt.c (canonical_template_parms): Correct typo in comment.
3288
 
3289
2007-01-02  Douglas Gregor  
3290
 
3291
        * typeck.c (structural_comptypes): Renamed from "comptypes".
3292
        (comptypes): Use canonical type information to perform fast type
3293
        comparison. When VERIFY_CANONICAL_TYPES, verify that the
3294
        canonical type comparison returns the same results as we would see
3295
        from the current, structural check. Support COMPARE_STRUCTURAL
3296
        when we need structural checks.
3297
        * decl.c (typename_compare): Fix comment.
3298
        (build_typename_type): TYPENAME_TYPE nodes require structural
3299
        equality checks, because they resolve different based on the
3300
        current class type.
3301
        (make_unbound_class_template): UNBOUND_CLASS_TEMPLATE nodes
3302
        require structural equality checks (for now).
3303
        (build_ptrmemfunc_type): Build the canonical pointer to member
3304
        function type.
3305
        (compute_array_index_type): Whenever we build a new index type
3306
        to represent the size of an array in a template, we need to mark
3307
        this index type as requiring structural equality. This goes for
3308
        arrays with value-dependent sizes with the current ABI, or all
3309
        arrays with ABI-1.
3310
        * tree.c (cplus_array_hash): New.
3311
        (struct cplus_array_info): New.
3312
        (cplus_array_compare): New.
3313
        (cplus_array_htab): New.
3314
        (build_cplus_array_type_1): Use a hash table to cache the array
3315
        types we build. Build the canonical array type for each array
3316
        type.
3317
        (cp_build_qualified_type_real): When building a cv-qualified array
3318
        type, use the hash table of array types and build canonical array
3319
        types as necessary.
3320
        (bind_template_template_parm): BOUND_TEMPLATE_TEMPLATE_PARM nodes
3321
        use structural equality (for now).
3322
        * cp-tree.h (COMPARE_STRUCTURAL): New.
3323
        * pt.c (canonical_template_parms): New.
3324
        (canonical_type_parameter): New.
3325
        (process_template_parm): Find the canonical type parameter.
3326
        (lookup_template_class): When we have named the primary template
3327
        type, set the canonical type for our template class to the primary
3328
        template type. If any of the template arguments need structural
3329
        equality checks, the template class needs structural equality
3330
        checks.
3331
        (tsubst): When reducing the level of a template template
3332
        parameter, we require structural equality tests for the resulting
3333
        parameter because its template parameters have not had their types
3334
        canonicalized. When reducing a template type parameter, find the
3335
        canonical reduced type parameter.
3336
        (any_template_arguments_need_structural_equality_p): New.
3337
 
3338
 
3339
Copyright (C) 2007 Free Software Foundation, Inc.
3340
 
3341
Copying and distribution of this file, with or without modification,
3342
are permitted in any medium without royalty provided the copyright
3343
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.