OSDN Git Service

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