OSDN Git Service

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