OSDN Git Service

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