OSDN Git Service

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