OSDN Git Service

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