OSDN Git Service

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