OSDN Git Service

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