OSDN Git Service

ea352c9138312929bba21d4d7487a6eb640a125d
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
1 2007-05-31  Daniel Berlin  <dberlin@dberlin.org>
2
3         * typeck.c (build_binary_op): Include types in error.
4
5 2007-05-31  Jakub Jelinek  <jakub@redhat.com>
6
7         PR c++/31806
8         * decl.c (cp_finish_decl): Also clear was_readonly if a static var
9         needs runtime initialization.
10
11 2007-05-31  Paolo Carlini  <pcarlini@suse.de>
12
13         PR c++/32158
14         * semantics.c (finish_trait_expr): Complete the types.
15
16 2007-05-30  Russell Yanofsky <russ@yanofsky.org>
17             Douglas Gregor <doug.gregor@gmail.com>
18             Pedro Lamarao <pedro.lamarao@mndfck.org>
19             Howard Hinnant <howard.hinnant@gmail.com>
20
21         PR c++/7412
22         PR c++/29939
23         * typeck.c (comptypes): Don't consider rvalue and lvalue
24         reference types to be equivalent.
25         (check_return_expr): Move from certain lvalues when returning
26         them.
27         * decl.c (grokdeclarator): Implement reference collapsing.
28         (copy_fn_p): Don't consider constructors taking rvalue references
29         to be copy constructors.
30         (move_fn_p): New.
31         * call.c (conversion): New "rvaluedness_matches_p" member.
32         (convert_class_to_reference): Require reference type as first
33         parameter instead of base type.
34         (reference_binding): Add logic to handle rvalue references.
35         (implicit_conversion): Update inaccurate comment.
36         (convert_like_real): Disable creation of temporaries that are
37         impossible to initialize for types with move constructors.
38         (build_over_call): Elide move constructors when possible.
39         (maybe_handle_implicit_object): Set "rvaluedness_matches_p".
40         (maybe_handle_ref_bind): Return conversion instead of type node.
41         (compare_ics): Add logic to use "rvaluedness_matches_p" values to
42         determine preferred conversion sequences.
43         * cp-tree.h (TYPE_REF_IS_RVALUE): New.
44         (LOOKUP_PREFER_RVALUE): New.
45         (DECL_MOVE_CONSTRUCTOR_P): New.
46         (struct cp_declarator): Add "reference" member for reference
47         types, with new "rvalue_ref" flag.
48         (cp_build_reference_type): Declare.
49         (move_fn_p): Declare.
50         * error.c (dump_type_prefix): Format rvalue reference types
51         correctly in error messages.
52         * except.c (build_throw): Move from certain lvalues when
53         throwing.
54         * mangle.c (write_type): Mangle rvalue references differently
55         than regular references.
56         * parser.c (make_reference_declarator): Add boolean parameter for
57         rvalue references.
58         (cp_parser_make_indirect_declarator): New.
59         (cp_parser_new_declarator_opt): Call
60         cp_parser_make_indirect_declarator. 
61         (cp_parser_conversion_declarator_opt): Ditto.
62         (cp_parser_declarator): Ditto.
63         (cp_parser_ptr_operator): Parse "&&" tokens into rvalue reference
64         declarators.
65         * pt.c (tsubst): Implement reference collapsing.
66         (maybe_adjust_types_for_deduction): Implement special template
67         parameter deduction rule for rvalue references.
68         (type_unification_real): Update calls to
69         maybe_adjust_types_for_deduction.
70         (try_one_overload): Ditto.
71         (unify_pack_expansion): Ditto.
72         * tree.c (lvalue_p_1): Handle rvalue reference types.
73         (cp_build_reference_type): New.
74
75 2007-05-30  Jakub Jelinek  <jakub@redhat.com>
76
77         PR c++/31809
78         * decl.c (cp_finish_decl): Clear TREE_READONLY flag on TREE_STATIC
79         variables that need runtime initialization.
80
81 2007-05-28  Andrew Pinski  <Andrew_pinski@playstation.sony.com>
82
83         PR c++/31339
84         * typeck.c (build_unary_op <case PREINCREMENT_EXPR,
85         case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,
86         case POSTDECREMENT_EXPR>): Return the error_mark_node
87         if either the real or imaginary parts would an
88         error_mark_node.
89         
90 2007-05-25  Simon Martin  <simartin@users.sourceforge.net>
91             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
92
93         PR c++/31745
94         * parser.c (cp_parser_skip_to_closing_brace): Return true if the next
95         token is a closing brace, false if there are no tokens left.
96         (cp_parser_namespace_alias_definition): Only consume the next token if
97         it is a closing brace.
98
99         * parser.c (cp_parser_class_specifier): Likewise.
100
101 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
102
103         * semantics.c (finish_member_declaration): Fix a typo in the
104         last checkin.
105
106 2007-05-25  Douglas Gregor <doug.gregor@gmail.com>
107
108         PR c++/31431
109         PR c++/31432
110         PR c++/31434
111         PR c++/31435
112         PR c++/31437
113         PR c++/31438
114         PR c++/31442
115         PR c++/31443
116         PR c++/31444
117         PR c++/31445
118         * error.c (dump_type): Dump TYPE_ARGUMENT_PACK nodes.
119         * cp-tree.h (check_for_bare_parameter_packs): Returns bool.
120         * pt.c (check_for_bare_parameter_packs): Return bool indicated
121         whether everything was okay. Fix indentation.
122         (push_template_decl_real): Check for bare parameter packs in
123         function parameters; where errors occur, mark the parameter types
124         with ERROR_MARK_NODEs to avert ICEs.
125         (coerce_template_parameter_pack): New.
126         (coerce_template_parms): Moved parameter pack coercion into
127         coerce_template_parameter_pack, and permit it anywhere in the
128         template parameter list (not just at the end). Parameter and
129         argument indices can vary (somewhat) separately now, so add
130         PARM_IDX and ARG_IDX.
131         (fn_type_unification): Don't set an argument pack as incomplete if
132         no argument pack was deduced.
133         (type_unification_real): If a type parameter is a parameter pack
134         and has not otherwise been deduced, it will be deduced to an empty
135         parameter pack.
136         (more_specialized_fn): Use the actual lengths of the argument
137         lists when comparing against expansions.
138         * semantics.c (finish_member_declaration): If a field's type has
139         bare parameter packs, error and set its type to ERROR_MARK_NODE.
140
141 2007-05-24  Danny Smith  <dannysmith@users.sourceforge.net>
142
143         PR target/27067
144         * mangle.c (mangle_decl): Call targetm.mangle_decl_assembler_name.
145
146 2007-05-22  Ollie Wild  <aaw@google.com>
147
148         * name-lookup.c (ambiguous_decl): Adds check for hidden types.
149         (unqualified_namespace_lookup): Adds check for hidden types.
150
151 2007-05-22  Ollie Wild  <aaw@google.com>
152
153         * decl.c (duplicate_decls): Verify namespace names are unique.
154
155 2007-05-21  Mark Mitchell  <mark@codesourcery.com>
156
157         * decl.c (cxx_maybe_build_cleanup): Handle
158         __attribute__((cleanup)).
159
160 2007-05-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
161
162         * cvt.c (cp_convert_and_check): Don't check warnings if the
163         conversion failed.
164
165 2007-05-18  Geoffrey Keating  <geoffk@apple.com>
166
167         * mangle.c (write_real_cst): Use 'unsigned long' for %lx.
168
169 2007-05-14  Paolo Carlini  <pcarlini@suse.de>
170
171         PR c++/29928
172         * rtti.c (get_tinfo_decl_dynamic, get_typeid): Try to complete the
173         type only if is a class type (5.2.8/4).
174
175 2007-05-14  Rafael Avila de Espindola  <espindola@google.com>
176
177         * cp-objcp-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
178         * decl.c (grokdeclarator): Use unsigned_type_for instead of
179         c_common_unsigned_type.
180
181 2007-05-11  Silvius Rus  <rus@google.com>
182
183         * cp/typeck.c (build_indirect_ref): Add call to
184         strict_aliasing_warning.
185         (build_reinterpret_cast_1): Condition call to
186         strict_aliasing_warning. 
187
188 2007-05-11  Jan Hubicka  <jh@suse.cz>
189
190         * semantics.c (expand_or_defer_fn): Do not call c_record_cdtor_fn.
191         * decl2.c (start_objects): ctors and dtors are no longer public.
192         (cp_write_global_declarations): Do not call c_build_cdtor_fns.
193         
194 2007-05-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
195
196         * typeck.c (build_unary_op): Remove code that used to
197         handle non lvalue increments/decrements.
198
199 2007-05-07  Mike Stump  <mrs@apple.com>
200
201         * parser.c (check_empty_body): Add.
202         (cp_parser_iteration_statement): Add call to check_empty_body.
203
204 2007-05-05  Geoffrey Keating  <geoffk@apple.com>
205
206         PR 31775
207         * mangle.c (write_mangled_name): Mangle static variable names.
208         (write_unqualified_name): Use local-source-name for
209         namespace-scope static variables.
210
211 2007-05-04  Dirk Mueller  <dmueller@suse.de>
212
213         * cp-tree.h (DECL_MAIN_P): only if -ffreestanding is
214         not in effect.
215
216 2007-05-02  Seongbae Park  <seongbae.park@gmail.com>
217
218         PR c++/31663
219         * decl2.c (constrain_class_visibility): 
220         Use strip_pointer_or_array_types instead of strip_array_types.
221
222 2007-04-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
223
224         PR C++/30221
225         * decl.c (reshape_init_r): Don't reshape the first element if it
226         is a pointer to member function.
227
228 2007-04-27  Simon Baldwin  <simonb@google.com>
229
230         * decl.c (grokparms): Changed message format from %qD to %qE.
231
232 2007-04-27  Douglas Gregor  <doug.gregor@gmail.com>
233
234         * error.c (maybe_warn_variadic_templates): Variadic templates are
235        now in C++0x, so only warn about them in C++98 mode.
236         
237 2007-04-26  Andrew Pinski  <andrew_pinski@playstation.sony.com>
238
239         PR C++/30016
240         * typeck.c (build_reinterpret_cast_1): Only allow conversion to
241         integeral types from vectors types.
242
243 2007-04-26  Jakub Jelinek  <jakub@redhat.com>
244
245         PR c++/31598
246         * semantics.c (finish_omp_clauses): Don't create CP_OMP_CLAUSE_INFO
247         for type dependent OMP_CLAUSE_DECLs.
248
249 2007-04-24  Mark Mitchell  <mark@codesourcery.com>
250
251         PR c++/31338
252         * cp-tree.h (ARITHMETIC_TYPE): Include COMPLEX_TYPE.
253         * typeck.c (type_after_usual_arithmetic_conversions): Adjust, as
254         COMPLEX_TYPE is now an ARITHMETIC_TYPE.
255         * init.c (build_zero_init): Adjust, as
256         COMPLEX_TYPE is now a SCALAR_TYPE.
257         * typeck2.c (digest_init): Allow brace-enclosed initializers for
258         COMPLEX_TYPE, even though that is now a SCALAR_TYPE.
259
260 2007-04-25  Paolo Carlini  <pcarlini@suse.de>
261
262         * semantics.c (classtype_has_nothrow_copy_or_assign_p): Adjust
263         per N2255; rename as classtype_has_nothrow_assign_or_copy_p.
264         (trait_expr_value): Adjust.
265
266 2007-04-23  Simon Baldwin  <simonb@google.com>
267
268         * decl.c (grokparms): Added new error for duplicate function
269         parameters names in function prototypes, to match gcc behavior.
270
271 2007-04-23  Jan Hubicka  <jh@suse.cz>
272
273         * cp/decl2.c (finish_objects): Do not call target constructor/destructor
274         bits dirrectly.
275
276 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
277
278         * cp-tree.h (lang_tree_node): Use GENERIC_NEXT
279         instead of checking GIMPLE_STMT_P in chain_next.
280
281 2007-04-17  Mark Mitchell  <mark@codesourcery.com>
282
283         PR c++/31513
284         * call.c (convert_for_arg_passing): Convert bitfields to their
285         declared types.
286
287 2007-04-17  Simon Martin  <simartin@users.sourceforge.net>
288
289         PR c++/31517
290         * pt.c (value_dependent_expression_p): Handle MODOP_EXPRs.
291
292 2007-04-16  Seongbae Park <seongbae.park@gmail.com>
293
294         PR c++/29365
295
296         * cp/decl2.c (constrain_class_visibility):
297         Do not warn about the use of anonymous namespace in the main input file.
298
299 2007-04-15  Mark Mitchell  <mark@codesourcery.com>
300
301         * cp-tree.h (current_template_parms): Fix typo in comment.
302
303 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
304
305         * cp-tree.h, error.c: Fix comment typos.
306
307 2007-04-13  Jason Merrill  <jason@redhat.com>
308
309         PR c++/31074
310         * call.c (reference_binding): Add c_cast_p parm.  If true,
311         add quals to TO as needed to make it reference-compatible.
312
313 2007-04-11  Jan Hubicka  <jh@suse.cz>
314
315         * cp/class.c (convert_to_base_statically): Fold produced tree; verify
316         that we are not processing template_decl.
317
318 2007-04-09  Mark Mitchell  <mark@codesourcery.com>
319
320         PR c++/31449
321         * class.c (build_base_path): Ensure that the converted pointer has
322         the same cv-qualification as the input.
323
324 2007-04-09  Paolo Carlini  <pcarlini@suse.de>
325
326         * tree.c (cp_tree_equal): Deal with TRAIT_EXPR.
327
328 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
329
330         * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS):
331         Do not set it.
332         (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do not set it.
333         * tree.c (cp_add_pending_fn_decls): Remove.
334         * cp-tree.h (cp_add_pending_fn_decls): Remove prototype.
335
336 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
337
338         Revert change removing staticp.
339
340 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
341
342         * cp-objcp-common.c (cxx_staticp): Remove.
343         * cp-objcp-common.h (LANG_HOOKS_STATICP): Remove.
344         * cp-tree.h (cxx_staticp):      
345
346 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
347
348         * class.c (check_for_override): Don't remove dllmport attribute
349         of virtual methods.
350
351 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
352
353         PR c++/30847
354         * typeck.c (build_modify_expr): For COND_EXPR on LHS, if RHS has void
355         type issue error and return early.
356
357 2007-03-30  Jason Merrill  <jason@redhat.com>
358
359         PR c++/31187
360         * typeck.c (cp_type_readonly): New fn.
361         * cp-tree.h: Declare it.
362         * decl.c (start_decl): Set implicit DECL_THIS_STATIC here.
363         (cp_finish_decl): Not here.
364
365 2007-03-31  Richard Guenther  <rguenther@suse.de>
366
367         * optimize.c (maybe_clone_body): Replace splay-tree usage by
368         pointer-map.
369
370 2007-03-31  Douglas Gregor  <doug.gregor@gmail.com>
371
372         PR c++/31138
373         PR c++/31140
374         PR c++/31141
375         * parser.c (declarator_can_be_parameter_pack): New.
376         (cp_parser_template_parameter): Only parse the `...' if the
377         declarator can be a parameter pack.
378         (cp_parser_parameter_declaration): Ditto. Also, handle when TYPE
379         is NULL.
380         * pt.c (find_parameter_packs_r): Look into the bounds on integer
381         types (they could be used as array bounds). 
382         (check_for_bare_parameter_packs): Deal with TEMPLATE_PARM_INDEX.
383         (tsubst_pack_expansion): Handle failure to expand parameter
384         packs.
385         
386 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
387
388         PR c++/26099
389         * cp-tree.h (enum cp_trait_kind, struct tree_trait_expr,
390         TRAIT_EXPR_TYPE1, TRAIT_EXPR_TYPE2, TRAIT_EXPR_KIND): Add.
391         (enum cp_tree_node_structure_enum, union lang_tree_node): Update.
392         (CLASS_TYPE_NON_UNION_P): Add.
393         (struct lang_type_class): Add has_complex_dflt.
394         (TYPE_HAS_COMPLEX_DFLT, TYPE_HAS_TRIVIAL_DFLT): Add.
395         (locate_copy, locate_ctor, locate_dtor, finish_trait_expr): Declare.
396         * cp-tree.def: Add TRAIT_EXPR.
397         * cp-objcp-common.c (cp_tree_size): Add TRAIT_EXPR case.
398         * lex.c (struct resword): Add __has_nothrow_assign,
399         __has_nothrow_constructor, __has_nothrow_copy, __has_trivial_assign,
400         __has_trivial_constructor, __has_trivial_copy,
401         __has_trivial_destructor, __has_virtual_destructor, __is_abstract,
402         __is_base_of, __is_class, __is_convertible_to, __is_empty, __is_enum,
403         __is_pod, __is_polymorphic, __is_union.
404         * parser.c (cp_parser_primary_expression): Deal with the new RIDs.
405         (cp_parser_trait_expr): New.
406         * semantics.c (finish_trait_expr, trait_expr_value
407         classtype_has_nothrow_copy_or_assign_p): New.
408         * method.c (locate_copy, locate_ctor, locate_dtor): Do not define
409         as static.
410         * decl.c (cp_tree_node_structure): Add TRAIT_EXPR.
411         * class.c (check_bases, check_field_decl, check_bases_and_members):
412         Deal with TYPE_HAS_COMPLEX_DFLT (t) too.
413         * pt.c (uses_template_parms, tsubst_copy_and_build,
414         value_dependent_expression_p, type_dependent_expression_p): Deal with
415         TRAIT_EXPR.
416         * tree.c (cp_walk_subtrees): Deal with TRAIT_EXPR.
417
418 2007-03-29  Richard Guenther  <rguenther@suse.de>
419
420         * tree.c (cp_walk_subtrees): Do not set input_location.
421
422 2007-03-28  Simon Martin  <simartin@users.sourceforge.net>
423
424         PR c++/29077
425         * decl.c (grokfndecl): Properly setup decl if it is a constructor or a
426         destructor.
427
428 2007-03-28 Douglas Gregor <doug.gregor@gmail.com>
429
430         * parser.c (struct cp_parser): Update comment for
431         greater_than_is_operator_p.
432         (cp_parser_primary_expression): In C++0x mode, a cast operator can
433         be terminated with a `>>' token when !GREATER_THAN_IS_OPERATOR_P.
434         (TOKEN_PRECEDENCE): In C++0x mode, `>>' is treated like `>' when
435         !GREATER_THAN_IS_OPERATOR_P.
436         (cp_parser_binary_expression): When -Wc++0x-compat, warn about
437         `>>' operators that will become two `>' tokens in C++0x.
438         (cp_parser_parameter_declaration): Treat `>>' like `>' in C++0x
439         mode, allowing it to terminate default arguments.
440         (cp_parser_enclosed_template_argument_list): In C++0x mode, treat
441         `>>' like two consecutive `>' tokens.
442         (cp_parser_skip_to_end_of_template_parameter_list): Ditto.
443         (cp_parser_next_token_ends_template_argument_p): In C++0x, `>>'
444         ends a template argument.
445
446 2007-03-28  Douglas Gregor  <doug.gregor@gmail.com>
447
448         * decl.c (redeclaration_error_message): Complain when redeclaring
449         a friend function with default template arguments (C++0x mode only).
450         * cp-tree.h (check_default_tmpl_args): Declare.
451         * pt.c (check_default_tmpl_args): In C++0x mode, permit default
452         template arguments in function templates. Add support for checking
453         the default template arguments of friend templates.
454         (push_template_decl_real): Fix call to check_default_tmpl_args.
455         (type_unification_real): If a template parameter has not been
456         deduced but provides a default template argument, substitute into
457         that default template argument.
458         * parser.c (cp_parser_init_declarator): When declaring (but not
459         defining!) a function template in C++0x mode, check for default
460         template arguments.
461
462 2007-03-28 Douglas Gregor <doug.gregor@gmail.com>
463
464         PR c++/29993
465         * decl.c (grokdeclarator): Deal with cv-qualified function type
466         typedefs in the same way for member and non-member functions.
467
468 2007-03-26  Dirk Mueller  <dmueller@suse.de>
469
470         * parser.c (cp_parser_member_declaration): Pedwarn
471         about stray semicolons after member declarations.
472
473 2007-03-26  Paolo Carlini  <pcarlini@suse.de>
474
475         PR c++/30500
476         * pt.c (instantiate_decl): Set in_system_header.
477
478 2007-03-22  Mark Mitchell  <mark@codesourcery.com>
479
480         * cp-tree.h (current_tempalte_parms): Improve documentation.
481         * pt.c (current_template_args): Likewise.
482
483         PR c++/30863
484         * parser.c (cp_parser_parse_and_diagnose_invalid_type_name): Do
485         not consume tokens when failing.
486
487 2007-03-22  Jim Wilson  <wilson@specifix.com>
488             Mark Mitchell  <mark@codesourcery.com>
489
490         PR c++/31273
491         * call.c (standard_conversion): Use type_decays_to.  Keep FCODE
492         consistent with FROM.
493
494 2007-03-22  Gabriel Dos Reis  <gdr@integrable-solutions.net>
495
496         * error.c (dump_expr): Handle dependent names that designate types.
497         * cxx-pretty-print.c (pp_cxx_unqualified_id): Handle TYPENAME_TYPE.
498
499 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
500
501         * cp-tree.def, parser.c, pt.c: Fix comment typos.
502
503 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
504
505         * cvt.c (cp_convert_and_check) : Define.
506         * cp-tree.h (cp_convert_and_check): Declare.
507         * call.c (convert_conversion_warnings): Rename to
508         conversion_null_warnings.  The warning for floating-point to
509         integer is handled by convert_and_check in convert_like_real.
510         (convert_like_real): convert_conversion_warnings was renamed as
511         conversion_null_warnings.
512         * typeck.c (build_binary_op): Use cp_convert_and_check to warn for
513         overflow and changes of value during conversion.
514
515 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
516
517         PR c++/30891
518         * parser.c (cp_parser_statement): If 'namespace' is found, this
519         only can be a namespace alias definition, so parse it now.
520         (cp_parser_namespace_alias_definition): if we find an open brace
521         instead of '=', then this is actually a misplaced namespace
522         definition.
523         
524 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
525
526         PR c++/24924
527         * decl.c (cxx_init_decl_processing): Move command-line options
528         processing to c-opts.c.
529         
530 2007-03-15  Douglas Gregor  <doug.gregor@gmail.com>
531
532         * ptree.c (cxx_print_type): Use formatting markup for integers
533         when printing template parameter index/level/orig level.
534         (cxx_print_xnode): Ditto.
535         * cp-tree.h (TEMPLATE_PARM_PARAMETER_PACK): Use TREE_LANG_FLAG_0.
536         (struct template_parm_index_s): Remove the PARAMETER_PACK member.
537         Make INDEX, LEVEL, and ORIG_LEVEL integers instead of
538         HOST_WIDE_INTs.
539         (struct saved_scope): Make X_PROCESSING_TEMPLATE_DECL an int,
540         rather than a HOST_WIDE_INT.
541         Turn X_PROCESSING_EXPLICIT_INSTANTIATION, SKIP_EVALUATION, and
542         NEED_POP_FUNCTION_CONTEXT into bool bitfields; reorder fields for
543         better bit-packing.
544         (struct language_function): Make RETURNS_VALUE, RETURNS_NULL,
545         RETURNS_ABNORMALLY, IN_FUNCTION_TRY_HANDLER, and
546         IN_BASE_INITIALIZER bool bitfields.
547         (struct cp_declarator): Make KIND a 4-bit field. Make
548         PARAMETER_PACK_P a bool bitfield just after KIND.
549         * pt.c (uses_parameter_packs): Destroy the pointer set.
550         (make_pack_expansion): Ditto.
551         (check_for_bare_parameter_packs): Ditto.
552         * name-lookup.c (push_to_top_level): Make need_pop a bool value.
553         
554 2007-03-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
555
556         PR c++/31165
557         * call.c  (convert_default_arg): Instead of copying the node,
558         unshare it.
559
560 2007-03-15  Dirk Mueller  <dmueller@suse.de>
561
562         PR c++/30860
563         * call.c (convert_conversion_warnings): New..
564         (convert_like_real): .. factored out from here.
565         (convert_conversion_warnings): Add warning about
566         false being converted to NULL in argument passing.
567
568 2007-03-14  Dirk Mueller  <dmueller@suse.de>
569
570         * cp/semantics.c (c_finish_if_stmt): Call empty_if_body_warning.
571         (finish_do_body): Warn about empty body in do/while statement.
572
573 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
574
575         * class.c (warn_hidden): Add OPT_Woverloaded_virtual to warning.
576         
577 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
578
579         PR c/21438
580         * typeck.c (build_binary_op): Call warn_for_div_zero instead of
581         warning.
582         
583 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
584
585         * cp/repo.c (init_repo): Initialize random_seed saved options.
586         (finish_repo): Adjust.
587
588 2007-03-13  Mark Mitchell  <mark@codesourcery.com>
589
590         PR bootstrap/30899
591         * Make-lang.in (doc/g++.1): Use $< to specify the location from
592         which to copy.
593
594 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
595
596         * decl.c (compute_array_index_type): New warning flag warn_vla.
597
598 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
599
600         PR c++/30108
601         * call.c (convert_default_arg): Copy non-constant arguments.
602
603 2007-03-11  Mark Mitchell  <mark@codesourcery.com>
604
605         PR c++/31038
606         * parser.c (cp_parser_postfix_expression): Disallow compound
607         literals in constant expressions.
608
609         PR c++/30328
610         * semantics.c (finish_typeof): Use unlowered_expr_type.
611         
612 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
613
614         PR c++/30274
615         * cp-tree.h (unlowered_expr_type): New function.
616         * typeck.c (is_bitfield_expr_with_lowered_type): Handle
617         COMPOUND_EXPR, MODIFY_EXPR, and SAVE_EXPR.
618         (unlowered_expr_type): New function.
619         (build_unary_op): Disallow predecrements of bool bitfields.
620         * call.c (build_conditional_expr): Use unlowered_expr_type.
621         * pt.c (type_unification_real): Likewise.
622
623 2007-03-09  Douglas Gregor  <doug.gregor@gmail.com>
624
625         PR c++/20599
626         * typeck.c (check_return_expr): Check for bare parameter packs.
627         (comptypes): Compare template parameter packs and
628         type pack expansions.
629         * decl.c (grokdeclarator): Deal with the declaration of function
630         parameter packs.
631         (grokparms): Verify that the (optional) function parameter pack is
632         at the end of the parameter list.
633         (xref_basetypes): Handle pack expansions in the base class.
634         (cp_tree_node_structure): Handle ARGUMENT_PACK_SELECT.
635         * cp-tree.def (TYPE_ARGUMENT_PACK): New.
636         (NONTYPE_ARGUMENT_PACK): New.
637         (TYPE_PACK_EXPANSION): New.
638         (EXPR_PACK_EXPANSION): New.
639         (ARGUMENT_PACK_SELECT): New.
640         * cp-objcp-common.c (cp_tree_size): Compute size of
641         (NON)TYPE_ARGUMENT_PACK, (TYPE|EXPR)_PACK_EXPANSION, and
642         ARGUMENT_PACK_SELECT.
643         * error.c (dump_template_argument): Print template argument packs.
644         (dump_template_argument_list): Ditto.
645         (dump_template_parameter): Dump `...' for template type parameter
646         packs.
647         (dump_type): Dump TYPE_PACK_EXPANSION nodes.
648         (dump_parameters): Print function parameter packs.
649         (dump_template_parms): Print template argument packs.
650         (dump_expr): Dump EXPR_PACK_EXPANSION nodes.
651         (maybe_warn_variadic_templates): New.
652         * operators.def: Add ellipsis operator for EXPR_PACK_EXPANSION.
653         * tree.c (cp_walk_subtrees): Walk BASELINK, TYPE_ARGUMENT_PACK,
654         NONTYPE_ARGUMENT_PACK, TYPE_PACK_EXPANSION, EXPR_PACK_EXPANSION,
655         CAST_EXPR. 
656         * mangle.c (write_type): Mangle TYPE_PACK_EXPANSION.
657         (write_template_arg): Write argument packs as separate arguments.
658         * cp-tree.h (struct template_parm_index_s): Add flag that
659         indicates that the template parameter is actually a parameter
660         pack.
661         (struct tree_argument_pack_select): New.
662         (enum cp_tree_node_structure_enum): Add TS_CP_ARGUMENT_PACK_SELECT.
663         (union lang_tree_node): Add argument_pack_select.
664         (FUNCTION_PARAMETER_PACK_P): New.
665         (PACK_EXPANSION_P): New.
666         (PACK_EXPANSION_PATTERN): New.
667         (SET_PACK_EXPANSION_PATTERN): New.
668         (PACK_EXPANSION_PARAMETER_PACKS): New.
669         (ARGUMENT_PACK_P): New.
670         (ARGUMENT_PACK_ARGS): New.
671         (SET_ARGUMENT_PACK_ARGS): New.
672         (ARGUMENT_PACK_INCOMPLETE_P): New.
673         (ARGUMENT_PACK_EXPLICIT_ARGS): New.
674         (TEMPLATE_PARM_PARAMETER_PACK): New.
675         (TEMPLATE_TYPE_PARAMETER_PACK): New.
676         (ARGUMENT_PACK_SELECT_FROM_PACK): New.
677         (ARGUMENT_PACK_SELECT_INDEX): New.
678         (ARGUMENT_PACK_SELECT_ARG): New.
679         (struct cp_declarator): Add parameter_pack_p flag.
680         (maybe_warn_variadic_templates): Declare.
681         (process_template_parm): Add bool parameter IS_PARAMETER_PACK, to
682         indicate a template parameter pack. 
683         (uses_parameter_packs): Declare.
684         (template_parameter_pack_p): Declare.
685         (template_parms_variadic_p): Declare.
686         (make_pack_expansion): Declare.
687         (check_for_bare_parameter_packs): Declare.
688         * cxx-pretty-print.c (pp_cxx_unary_expression): Print
689         sizeof... expressions. 
690         (pp_cxx_expression): Print pack expansions and non-type argument
691         packs.
692         (pp_cxx_exception_specification): Print pack expansions. 
693         (pp_cxx_direct_declarator): Print ellipsis for parameter packs.
694         (pp_cxx_ctor_initializer): Print pack expansions.
695         (pp_cxx_type_id): Print pack expansions.
696         (pp_cxx_template_argument_list): Print argument packs.
697         (pp_cxx_template_parameter): Print ellipsis for template parameter
698         packs.
699         * pt.c (comp_template_parms): Compare template parameter packs.
700         (template_parameter_pack_p): New.
701         (template_parms_variadic_p): New.
702         (template_args_variadic_p): New.
703         (make_ith_pack_parameter_name): New.
704         (struct find_parameter_pack_data): New.
705         (find_parameter_packs_r): New.
706         (uses_parameter_packs): New.
707         (make_pack_expansion): New.
708         (check_for_bare_parameter_packs): New.
709         (expand_template_argument_pack): New.
710         (reduce_template_parm_level): Propagate parameter pack flag.
711         (process_template_parm): Add is_parameter_pack parameter to state
712         when the parameter is actually a parameter pack. Create template
713         parameter packs when is_parameter_pack is true.
714         (current_template_args): The argument for a template parameter
715         pack is an argument pack containing a single pack expansion.
716         (process_partial_specialization): When checking that non-type
717         argument expressions do not involve template parameters, loop over
718         the arguments in argument packs separately.
719         (push_template_decl_real): Check that the type of the declaration
720         does not have any bare parameter packs. Check that primary
721         templates have no more than one parameter pack, and that it comes
722         at the end of the template parameter list.
723         (convert_template_argument): Handle coercions for pack expansion
724         expressions by coercing the pattern then rebuilding the expansion.
725         (coerce_template_parms): When coercing the arguments for a
726         variadic template, pack "extra" arguments into an argument pack.
727         (coerce_template_template_parms): Cannot coerce between parameter
728         packs and non-pack parameters.
729         (template_args_equal): Compare PACK_EXPANSION_P expressions.
730         (comp_template_args): Expand all template arguments packs before
731         comparing template argument lists.
732         (mangle_class_name_for_template): Make argument packs as separate
733         template arguments.
734         (for_each_template_parm_r): No need to handle BASELINK. 
735         (instantiate_class_template): Handle pack expansions in the base
736         class list.
737         (tsubst_pack_expansion): New.
738         (tsubst_template_args): Handle substitutions of argument packs and
739         pack expansion into template argument lists.
740         (tsubst_decl): Expand function parameter packs into separate
741         function parameters.
742         (tsubst_arg_types): Expand a type pack expansion into separate
743         argument types.
744         (tsubst_exception_specification): Handle pack expansions in
745         exception specifiers.
746         (tsubst): See through ARGUMENT_PACK_SELECT arguments when 
747         replacing a template parameter with its argument. If we encounter
748         a substitution for an argument pack, just return the parameter
749         itself. 
750         (tsubst_copy): sizeof(X...) returns the number of elements in
751         parameter pack X.  See through ARGUMENT_PACK_SELECT when the
752         PARM_DECL is a parameter pack.
753         (tsubst_expr): Expression pack expansions and argument packs
754         cannot show up here; they will all be handled through function
755         calls, sizeof, and template argument lists.
756         (tsubst_copy_and_build): sizeof(X...) returns the number of
757         elements in parameter pack X.  Handle pack expansions in TREE_LIST
758         and CONSTRUCTOR nodes.
759         (fn_type_unification): Handle "incomplete" explicit template
760         argument lists that specify some of the arguments for a template
761         parameter pack.
762         (type_unification_real): Unify arguments against pack expansions.
763         (template_parm_level_and_index): New, helper function.
764         (unify_pack_expansion): New.
765         (unify): Unify argument packs on an argument-by-argument basis,
766         handling variadic argument packs as well.
767         (more_specialized_fn): Handle unification of function parameter
768         packs. All things being equal, prefer non-variadic function
769         templates to variadic function templates.
770         (more_specialized_class): Prefer the variadic class template
771         partial specialization that binds fewer arguments to a parameter
772         pack.
773         (regenerate_decl_from_template): Expand function parameter packs
774         into separate parameters.
775         (instantiate_decl): Ditto.
776         (tsubst_initializer_list): Handle pack expansions for base-class
777         initializers.
778         (dependent_type_p_r): Determine dependent types in argument packs
779         and pack expansions.
780         (value_dependent_expression_p): Determine value-dependence of
781         non-type argument packs.
782         (dependent_template_arg_p): Handle argument packs.
783         * semantics.c (finish_cond): Check for bare parameter packs.
784         (finish_expr_stmt): Ditto.
785         (finish_for_expr): Ditto.
786         (finish_switch_cond): Ditto.
787         (finish_mem_initializers): Ditto.
788         * name-lookup.c (arg_assoc_type): Handle pack expansions and
789         argument packs.
790         * decl2.c (cp_build_parm_decl): Mark function parameter packs.
791         * parser.c (make_declarator): Declarator is not an expansion.
792         (make_pointer_declarator): Transfer parameter pack flag to outer
793         declarator.
794         (make_reference_declarator): Ditto.
795         (make_ptrmem_declarator): Ditto.
796         (make_call_declarator): Ditto.
797         (make_array_declarator): Ditto.
798         (cp_parser_postfix_expression): Allow pack expansion expressions
799         in the argument list for a call expression.
800         (cp_parser_parenthesized_expression_list): Add new parameter
801         ALLOW_EXPANSION_P. When true, parse the ellipsis to mean "expand
802         into separate arguments."
803         (cp_parser_new_placement): Allow pack expansion expressions.
804         (cp_parser_new_initializer): Ditto.
805         (cp_parser_mem_initializer_list): Allow ellipsis to create a
806         base-class initializer expansion.
807         (cp_parser_mem_initializer): Ditto.
808         (cp_parser_template_parameter_list): Keep track of whether the
809         template parameter is a template parameter pack.
810         (cp_parser_template_parameter): Parse the ellipsis to indicate a
811         template parameter pack.
812         (cp_parser_type_parameter): Ditto.
813         (cp_parser_template_argument_list): Parse the ellipsis to indicate
814         a pack expansion.
815         (cp_parser_direct_declarator): Parse the ellipsis to indicate that
816         this declarator is a parameter pack.
817         (cp_parser_parameter_declaration): The ellipsis does not end the
818         parameter declaration, because it might be a parameter pack. Parse
819         the ellipsis to indicate a parameter pack.
820         (cp_parser_initializer): Allow pack expansions.
821         (cp_parser_initializer_list): Allow ellipsis to create an
822         initializer expansion.
823         (cp_parser_base_clause): Allow ellipsis to create a base specifier
824         expansion.
825         (cp_parser_type_id_list): Allow ellipsis to create an exception
826         specifier expansion.
827         (cp_parser_attribute_list): Don't allow pack expansions.
828         (cp_parser_functional_cast): Allow pack expansions.
829         (cp_parser_sizeof_operand): Allow ellipsis following "sizeof" to
830         compute the length of a parameter pack.
831         (cp_parser_next_token_ends_template_argument_p): An ellipsis can
832         end a template argument.
833         * tree.c (cp_walk_subtrees): Walk BASELINK, TYPE_ARGUMENT_PACK,
834         NONTYPE_ARGUMENT_PACK, TYPE_PACK_EXPANSION, EXPR_PACK_EXPANSION,
835         CAST_EXPR. 
836
837 2007-03-09  Dirk Mueller  <dmueller@suse.de>
838
839         * cp/call.c (build_new_op): Call warn_logical_operator.
840
841 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
842
843         PR c++/30852
844         * semantics.c (finish_offsetof): Handle COMPOUND_EXPR.
845
846         PR c++/30534
847         * pt.c (any_template_arguments_need_structural_equality_p):
848         Robustify.
849
850 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
851
852         * decl.c (grokdeclarator): Disable warnings for anonymous
853         bitfields.
854
855 2007-03-05  Volker Reichelt  <reichelt@netcologne.de>
856
857         * typeck2.c (readonly_error): Always emit a hard error.
858         Remove last argument.
859         * cp-tree.h (readonly_error): Adjust prototype.
860         * semantics.c (finish_asm_stmt): Adjust call to readonly_error.
861         * typeck.c (build_unary_op): Likewise.
862         (build_modify_expr): Likewise.
863
864 2007-03-04  Simon Martin  <simartin@users.sourceforge.net>
865
866         PR c++/30895
867         * tree.c (cp_tree_equal): Properly handle COMPLEX_CST trees.
868
869 2007-03-03  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
870
871         PR c++/15787
872         * parser.c (struct cp_parser): New IN_IF_STMT.
873         (cp_parser_statement_seq_opt): Handle an unexpected 'else',
874         returning if parsing the body of an 'if' statement or issuing an
875         error and continuing.
876         (cp_parser_selection_statement): Set IN_IF_STMT bit when parsing
877         body of 'if'.
878         (cp_parser_jump_statement): Mask new IN_IF_STMT bit.
879         
880 2007-03-02  Simon Martin  <simartin@users.sourceforge.net>
881
882         PR c++/28253
883         * class.c (update_vtable_entry_for_fn): Properly handle invalid overriders
884         for thunks.
885
886 2007-03-02  Geoffrey Keating  <geoffk@apple.com>
887
888         * g++spec.c (lang_specific_driver): Add -lstdc++ when compiling
889         Objective-C++.  Don't exit early if -shared-libgcc needs to be
890         added.
891
892 2007-03-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
893
894         * typeck.c (common_base_type): Delete unused function.
895         
896 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
897
898         * Make-lang.in: Add dummy lang.install-pdf target.
899
900 2007-03-01  Simon Baldwin <simonb@google.com>
901
902         PR c++/23689
903         * decl.c (check_tag_decl): Added new warning for typedef ignored
904         when it precedes an otherwise valid non-typedef declaration.
905
906 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
907
908         * typeck.c (build_function_call): Store converted arguments
909         in a stack-allocated array instead of building a list.
910         (convert_arguments): Store arguments in the array passed in as an
911         argument, and return the actual number of arguments.
912         * call.c (build_call): Delete, and replace with...
913         (build_call_n, build_call_a): New.
914         (build_op_delete_call): Rewrite to avoid constructing argument lists.
915         (build_over_call): Store converted arguments in a stack-allocated
916         array instead of building a list.
917         (build_cxx_call): Pass arguments in an array instead of as a list.
918         (build_java_interface_fn_ref): Rewrite to avoid constructing
919         argument lists.
920         * tree.h: Update declarations to reflect above changes.
921         * method.c (use_thunk): Use a stack-allocated array to hold
922         the arguments instead of a list.
923         * rtti.c (throw_bad_cast): Update call to cxx_call.
924         (throw_bad_typeid): Likewise.
925         (build_dynamic_cast_1): Likewise.
926         * init.c (build_builtin_delete_call): Use build_call_n.
927         * decl.c (expand_static_init): Likewise.
928         * except.c (cp_protect_cleanup_actions): Likewise.
929         * cp-gimplify.c (genericize_eh_spec_block): Likewise.
930         (gimplify_must_not_throw_expr): Likewise.
931         (cxx_omp_apply_fn): Use build_call_a.
932
933 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
934
935         * semantics.c (expand_or_defer_fn): Call c_record_cdtor_fn.
936         * decl2.c (cp_write_gloabl_declarations): Call c_build_cdtor_fns.
937
938 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
939
940         * cp-tree.h (static_ctors): Remove.
941         * cp-tree.h (static_dtors): Likewise.
942         * cp-objcp-common.c (decl_shadowed_for_var_lookup): Adjust for
943         refactoring of tree_map hierarchy.
944         (decl_shadowed_for_var_insert): Likewise.
945         * semantics.c (expand_body): Use c_expand_body.
946         (expand_or_defer_fn): Don't update static_ctors or static_dtors.
947         * decl2.c (static_ctors): Remove.
948         (static_dtors): Likewise.
949         (generate_ctor_or_dtor_function): Pass NULL_TREE to
950         objc_generate_static_init_call.  Do not call static_[cd]tors.
951         (generate_ctor_and_dtor_functions_for_priority): Do not check for
952         static_[cd]tors.
953         (cp_write_global_declarations): Likewise.
954
955 2007-02-23  Richard Guenther  <rguenther@suse.de>
956
957         * class.c (note_name_declared_in_class): Make declaration
958         changes meaning a pedwarn.
959
960 2007-02-22  Michael Matz  <matz@suse.de>
961
962         PR c++/29433
963         * cp-tree.h (TFF_UNQUALIFIED_NAME): New formatting flag.
964         * error.c (dump_aggr_type, dump_simple_decl, dump_decl,
965         dump_function_decl): Guard emitting outer scopes by new flag.
966         * cp-lang.c (cxx_dwarf_name): New function.
967         (LANG_HOOKS_DWARF_NAME): Define to cxx_dwarf_name.
968         * pt.c (classtype_mangled_name, mangle_class_name_for_template):
969         Remove functions.
970         (push_template_decl_real, lookup_template_class): Remove calls
971         to above functions.
972
973 2007-02-19  Mark Mitchell  <mark@codesourcery.com>
974
975         * call.c (build_new_method_call): Ensure that explicit calls of
976         destructors have type "void".
977
978 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
979
980         * typeck.c (build_binary_op): Replace -Wstring-literal-comparison
981         and -Walways-true with -Waddress.
982         * cvt.c (convert_to_void): Replace unconditional warning with
983         -Waddress.
984
985 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
986
987         * decl.c, tree.c: Fix comment typos.
988
989 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
990
991         PR C++/30158
992         * semantics.c (finish_stmt_expr_expr): Set TREE_TYPE of the 
993         statement expression if we had an error mark node.
994                 
995 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
996             Brooks Moses  <brooks.moses@codesourcery.com>
997             Lee Millward  <lee.millward@codesourcery.com>
998
999         * cp-tree.def (AGGR_INIT_EXPR): Adjust documentation.
1000         Change class to tcc_vl_exp.
1001
1002         * call.c (build_call): Use build_call_list instead 
1003         of build3. 
1004         (build_over_call): Likewise.
1005         (build_new_method_call): Use build_min_non_dep_call_list 
1006         instead of build_min_non_dep.
1007
1008         * error.c (dump_call_expr_args): New function.
1009         (dump_aggr_init_expr_args): New function.
1010         (dump_expr) <AGGR_INIT_EXPR, CALL_EXPR, INDIRECT_REF>: Use them. 
1011         Update to use new CALL_EXPR and AGGR_INIT_EXPR accessor macros.
1012
1013         * cvt.c (convert_to_void): Use build_call_array instead
1014         of build3; use new AGGR_INIT_EXPR accessor macros.
1015
1016         * mangle.c (write_expression): Use TREE_OPERAND_LENGTH
1017         instead of TREE_CODE_LENGTH.
1018
1019         * dump.c (cp_dump_tree) <AGGR_INIT_EXPR>: Update to use new
1020         AGGR_INIT_EXPR accessor macros.
1021
1022         * cp-gimplify.c (cp_gimplify_init_expr): Use 
1023         AGGR_INIT_EXPR_SLOT to set the slot operand.
1024
1025         * cp-tree.h (AGGR_INIT_EXPR_FN): New macro.
1026         (AGGR_INIT_EXPR_SLOT): New macro.
1027         (AGGR_INIT_EXPR_ARG): New macro.
1028         (aggr_init_expr_nargs): New macro.
1029         (AGGR_INIT_EXPR_ARGP): New macro.
1030         (aggr_init_expr_arg_iterator): New.
1031         (init_aggr_init_expr_arg_iterator): New.
1032         (next_aggr_init_expr_arg): New.
1033         (first_aggr_init_expr_arg): New.
1034         (more_aggr_init_expr_args_p): New.
1035         (FOR_EACH_AGGR_INIT_EXPR_ARG): New.
1036         (stabilize_aggr_init): New declaration.
1037         (build_min_non_dep_call_list): Likewise.
1038
1039         * tree.c (process_aggr_init_operands): New function.
1040         (build_aggr_init_array) New function.
1041         (build_cplus_new): Update to use new CALL_EXPR and
1042         AGGR_INIT_EXPR accessor macros. Replace use of build3 with
1043         build_aggr_init_array.
1044         (build_min_non_dep_call_list) New function.
1045         (build_min_nt): Assert input code parameter is not a variable
1046         length expression class.
1047         (build_min, build_min_non_dep): Likewise.
1048         (cp_tree_equal) <CALL_EXPR>: Iterate through the arguments
1049         to check for equality instead of recursing. Handle tcc_vl_exp
1050         tree code classes.
1051         (stabilize_call): Update to only handle CALL_EXPRs, not 
1052         AGGR_INIT_EXPRs; use new CALL_EXPR accessor macros.
1053         (stabilize_aggr_init): New function.
1054         (stabilize_init): Use it.
1055
1056         * cxx-pretty-print.c (pp_cxx_postfix_expression)
1057         <AGGR_INIT_EXPR, CALL_EXPR>: Update to use new CALL_EXPR and
1058         AGGR_INIT_EXPR accessor macros and argument iterators.
1059         
1060         * pt.c (tsubst_copy) <CALL_EXPR>: Replace build_nt with
1061         build_vl_exp. Iterate through the operands, recursively 
1062         processing each one.
1063         (tsubst_copy_and_build) <CALL_EXPR>: Update to use new
1064         CALL_EXPR accessor macros.
1065         (value_dependent_expression_p) <default>: Handle tcc_vl_exp
1066         tree code classes. Use TREE_OPERAND_LENGTH instead of 
1067         TREE_CODE_LENGTH.
1068
1069         * semantics.c (finish_call_expr): Use build_nt_call_list
1070         instead of build_nt.
1071         (simplify_aggr_init_expr): Update to use new AGGR_INIT_EXPR 
1072         accessor macros. Use build_call_array to construct the 
1073         CALL_EXPR node instead of build3
1074         
1075         * decl2.c (build_offset_ref_call_from_tree): Use 
1076         build_nt_call_list and build_min_non_dep_call_list instead
1077         of build_min_nt and build_min_non_dep.
1078
1079         * parser.c (cp_parser_postfix_expression) <CPP_OPEN_PAREN>:
1080         Use build_nt_call_list instead of build_min_nt.
1081
1082 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1083
1084         PR c++/28943
1085         * call.c (build_conditional_expr): Improve error message.
1086         
1087 2007-02-13  Dirk Mueller  <dmueller@suse.de>
1088
1089         * friend.c (do_friend): Annotate warning about friend
1090         declarations in templates with OPT_Wnon_template_friend.
1091         Convert informal message from warning() to inform().
1092
1093 2007-02-12  Simon Martin  <simartin@users.sourceforge.net>
1094             Mark Mitchell  <mark@codesourcery.com>
1095
1096         PR c++/14622
1097         * pt.c (do_decl_instantiation): Detect type mismatches in explicit
1098         instantiations for variables.
1099
1100 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1101
1102         PR middle-end/7651
1103         * cp-gimplify.c (gimplify_expr_stmt): Don't check extra_warnings.
1104         Check warn_unused_value just once.
1105
1106 2007-02-11  Mark Mitchell  <mark@codesourcery.com>
1107
1108         PR c++/26988
1109         * pt.c (determine_specialization): Use skip_artificial_parms_for.
1110         (fn_type_unificiation): Likewise.
1111         (get_bindings): Likewise.
1112
1113 o2007-02-06  Mark Mitchell  <mark@codesourcery.com>
1114
1115         PR target/29487
1116         * decl.c (finish_function): Use DECL_REPLACEABLE.
1117         * tree.c (cp_cannot_inline_tree_fn): Likewise.
1118
1119 2007-02-10  Gabriel Dos Reis  <gdr@integrable-solutions.net>
1120
1121         * parser.c (cp_parser_primary_expression): Reformat overly long lines.
1122
1123 2007-02-10  Richard Henderson  <rth@redhat.com>, Jakub Jelinek  <jakub@redhat.com>
1124
1125         * decl.c (grokvardecl): Don't error if !have_tls.
1126         (grokdeclarator): Likewise.
1127         * parser.c (cp_parser_omp_threadprivate): Likewise.
1128
1129 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
1130
1131         PR c++/30703
1132         * cp-gimplify.c (cp_genericize_r): Don't dereference invisiref
1133         parameters and result decls in omp clauses.
1134         (cxx_omp_privatize_by_reference): Pass also invisiref PARM_DECLs
1135         by reference.
1136
1137 2007-02-05  Dirk Mueller  <dmueller@suse.de>
1138
1139         PR bootstrap/30510
1140         * parser.c (cp_parser_class_specifier): Always initialize bases.
1141
1142 2007-02-05  Paolo Bonzini  <bonzini@gnu.org>
1143
1144         * cp-tree.h (OMP_ATOMIC_CODE): Delete.
1145         (OMP_ATOMIC_DEPENDENT_P): Rewrite.
1146         * pt.c (tsubst_expr): Adjust for new format of dependent OMP_ATOMIC
1147         expressions.
1148         * semantics.c (finish_omp_atomic): Store a whole expression node
1149         in operand 1, and integer_zero_node in operand 0, for dependent
1150         OMP_ATOMIC.  Rewrite to make flow easier to understand.
1151
1152 2007-02-03  Gabriel Dos Reis  <gdr@integrable-solutions.net>
1153
1154         * decl.c (grokdeclarator): Use OPT_Wreturn_type instead of 0.
1155
1156 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
1157
1158         * class.c, cp-tree.h, decl.c, decl2.c, g++spec.c, init.c,
1159         parser.c, pt.c, tree.c, typeck.c: Follow spelling conventions.
1160
1161 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
1162
1163        * parser.c (cp_lexer_get_preprocessor_token): Attach the C++0x
1164        keyword warning to -Wc++0x-compat.
1165         
1166 2007-02-03  Gabriel Dos Reis  <gdr@integrable-solutions.net>
1167
1168         * decl.c (grokdeclarator): Update documentation.
1169
1170 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
1171
1172         PR c++/30536
1173         * decl.c (grokdeclarator): If __thread is used together with
1174         a storage class other than extern and static, clear thread_p
1175         after issuing diagnostics and fall through to checking the
1176         storage class.
1177
1178 2007-01-30  Roger Sayle  <roger@eyesopen.com>
1179
1180         * error.c (dump_type_suffix): Avoid use of cp_build_binary_op when
1181         calculating the size of an array (to avoid recursive errors).
1182
1183 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1184
1185         PR c++/24745
1186         * typeck.c (build_binary_op): Fix logic for warning. Move warning
1187         to -Wpointer-arith.
1188         * call.c (convert_like_real): Don't warn when converting to
1189         boolean type.
1190         
1191 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1192
1193         * decl.c (pop_label): Replace warning with call to
1194         warn_for_unused_label.
1195
1196 2007-01-28  Andrew Pinski  <pinskia@gmail.com>
1197
1198         PR C++/28988
1199         * semantics.c (finish_pseudo_destructor_expr): Check the
1200         destrutor name by calling check_dtor_name.
1201
1202 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
1203
1204         * lex.c (D_CPP0X): Rename.
1205         (D_CXX0X): To this.
1206         (reswords): D_CPP0X -> D_CXX0X.
1207         (init_reswords): Ditto.
1208         * parser.c (cp_lexer_get_preprocessor_token): Warn about the use
1209         of C++0x keywords as identifiers.
1210
1211 2007-01-23  Simon Martin  <simartin@users.sourceforge.net>
1212
1213         PR c++/27492
1214         * decl.c (duplicate_decls): Don't reset DECL_INVALID_OVERRIDER_P for
1215         function decls.
1216
1217 2007-01-23  Ian Lance Taylor  <iant@google.com>
1218
1219         * typeck.c (convert_for_assignment): Only warn about a = b = c
1220         when converting to bool.
1221
1222 2007-01-23  Roger Sayle  <roger@eyesopen.com>
1223
1224         * call.c (null_ptr_cst_p): Replace use of TREE_CONSTANT_OVERFLOW with
1225         TREE_OVERFLOW.
1226         * typeck.c (ignore_overflows): Remove the remaining uses of
1227         TREE_CONSTANT_OVERFLOW.
1228
1229 2007-01-20  Jan Hubicka  <jh@suse.cz>
1230
1231         * decl2.c (start_objects, start_static_storage_duration_function):
1232         Do not make the functions uninlinable.
1233
1234 2007-01-17  Ian Lance Taylor  <iant@google.com>
1235
1236         * class.c (add_method): Call VEC_reserve_exact rather than passing
1237         a negative size to VEC_reserve.
1238
1239 2007-01-11  Simon Martin  <simartin@users.sourceforge.net>
1240
1241         PR c++/29573
1242         * tree.c (cp_tree_equal): Properly handle MODOP_EXPR trees.
1243
1244 2007-01-10  Mark Mitchell  <mark@codesourcery.com>
1245
1246         PR c++/28999
1247         * decl.c (make_typename_type): If the qualified name is not a
1248         type, issue an error.
1249         * parser.c (cp_parser_elaborated_type_specifier): Fix comment
1250         formatting.
1251
1252 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
1253
1254         * rtti.c: Include target.h.
1255         (emit_support_tinfos): If ! targetm.cxx.library_rtti_comdat (),
1256         don't emit typeinfo for fundamental types as weak.
1257         * Make-lang.in (cp/rtti.o): Update and correct dependencies.
1258
1259 2007-01-08  Richard Guenther  <rguenther@suse.de>
1260
1261         * cvt.c (cp_convert_to_pointer): Use build_int_cst_type.
1262
1263 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
1264
1265         * call.c (standard_conversion): Pass flag to
1266         vector_types_convertible_p to disallow emission of note.
1267         * typeck.c (convert_for_assignment): Pass flag to
1268         vector_types_convertible_p to allow emission of note.
1269         (ptr_reasonably_similar): Pass flag to vector_types_convertible_p
1270         to disallow emission of note.
1271
1272 2007-01-07  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1273
1274         PR c++/28986
1275         * typeck.c (build_binary_op): Call overflow_warning if
1276         TREE_OVERFLOW_P is true for the result and not for any of the
1277         operands.
1278         
1279 2007-01-06  Lee Millward  <lee.millward@codesourcery.com>
1280
1281        PR c++/19439
1282        * class.c (add_method): Don't wait until template
1283        instantiation time to complain about duplicate methods.
1284         
1285 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1286
1287         PR c/19978
1288         * semantics.c (finish_unary_op_expr): Warn only if result
1289         overflowed and operands did not.
1290
1291 2007-01-05  Ian Lance Taylor  <iant@google.com>
1292
1293         * typeck.c (build_binary_op): Warn about comparing a non-weak
1294         address to NULL.
1295
1296 2007-01-05  Douglas Gregor  <doug.gregor@gmail.com>
1297
1298         * pt.c (tsubst): Propagate the need for structural equality checks
1299         when reducing the level of template parameters.
1300
1301 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
1302
1303         * pt.c: Fix a comment typo.
1304
1305 2007-01-02  Ian Lance Taylor  <iant@google.com>
1306
1307         * semantics.c (maybe_convert_cond): Optionally warn when using an
1308         assignment as a condition.
1309         * typeck.c (convert_for_assignment): Optionally warn about
1310         assigning the result of an assignment to a bool.
1311
1312 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
1313
1314         * pt.c (canonical_template_parms): Correct typo in comment.
1315         
1316 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
1317
1318         * typeck.c (structural_comptypes): Renamed from "comptypes".
1319         (comptypes): Use canonical type information to perform fast type
1320         comparison. When VERIFY_CANONICAL_TYPES, verify that the
1321         canonical type comparison returns the same results as we would see
1322         from the current, structural check. Support COMPARE_STRUCTURAL
1323         when we need structural checks.
1324         * decl.c (typename_compare): Fix comment.
1325         (build_typename_type): TYPENAME_TYPE nodes require structural
1326         equality checks, because they resolve different based on the
1327         current class type.
1328         (make_unbound_class_template): UNBOUND_CLASS_TEMPLATE nodes
1329         require structural equality checks (for now).
1330         (build_ptrmemfunc_type): Build the canonical pointer to member
1331         function type.
1332         (compute_array_index_type): Whenever we build a new index type
1333         to represent the size of an array in a template, we need to mark
1334         this index type as requiring structural equality. This goes for
1335         arrays with value-dependent sizes with the current ABI, or all
1336         arrays with ABI-1.
1337         * tree.c (cplus_array_hash): New.
1338         (struct cplus_array_info): New.
1339         (cplus_array_compare): New.
1340         (cplus_array_htab): New.
1341         (build_cplus_array_type_1): Use a hash table to cache the array
1342         types we build. Build the canonical array type for each array
1343         type.
1344         (cp_build_qualified_type_real): When building a cv-qualified array
1345         type, use the hash table of array types and build canonical array
1346         types as necessary.
1347         (bind_template_template_parm): BOUND_TEMPLATE_TEMPLATE_PARM nodes
1348         use structural equality (for now).
1349         * cp-tree.h (COMPARE_STRUCTURAL): New.
1350         * pt.c (canonical_template_parms): New.
1351         (canonical_type_parameter): New.
1352         (process_template_parm): Find the canonical type parameter.
1353         (lookup_template_class): When we have named the primary template
1354         type, set the canonical type for our template class to the primary
1355         template type. If any of the template arguments need structural
1356         equality checks, the template class needs structural equality
1357         checks.
1358         (tsubst): When reducing the level of a template template
1359         parameter, we require structural equality tests for the resulting
1360         parameter because its template parameters have not had their types
1361         canonicalized. When reducing a template type parameter, find the
1362         canonical reduced type parameter.
1363         (any_template_arguments_need_structural_equality_p): New.
1364