OSDN Git Service

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