OSDN Git Service

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