OSDN Git Service

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