OSDN Git Service

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