OSDN Git Service

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