decl.c (grokparms): Changed message format from %qD to %qE.
[official-gcc.git] / gcc / cp / ChangeLog
blob11f1396b71f5f8b798354b57e57e1063527e6098
1 2007-04-27  Simon Baldwin  <simonb@google.com>
3         * decl.c (grokparms): Changed message format from %qD to %qE.
5 2007-04-27  Douglas Gregor  <doug.gregor@gmail.com>
7         * error.c (maybe_warn_variadic_templates): Variadic templates are
8        now in C++0x, so only warn about them in C++98 mode.
9         
10 2007-04-26  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12         PR C++/30016
13         * typeck.c (build_reinterpret_cast_1): Only allow conversion to
14         integeral types from vectors types.
16 2007-04-26  Jakub Jelinek  <jakub@redhat.com>
18         PR c++/31598
19         * semantics.c (finish_omp_clauses): Don't create CP_OMP_CLAUSE_INFO
20         for type dependent OMP_CLAUSE_DECLs.
22 2007-04-24  Mark Mitchell  <mark@codesourcery.com>
24         PR c++/31338
25         * cp-tree.h (ARITHMETIC_TYPE): Include COMPLEX_TYPE.
26         * typeck.c (type_after_usual_arithmetic_conversions): Adjust, as
27         COMPLEX_TYPE is now an ARITHMETIC_TYPE.
28         * init.c (build_zero_init): Adjust, as
29         COMPLEX_TYPE is now a SCALAR_TYPE.
30         * typeck2.c (digest_init): Allow brace-enclosed initializers for
31         COMPLEX_TYPE, even though that is now a SCALAR_TYPE.
33 2007-04-25  Paolo Carlini  <pcarlini@suse.de>
35         * semantics.c (classtype_has_nothrow_copy_or_assign_p): Adjust
36         per N2255; rename as classtype_has_nothrow_assign_or_copy_p.
37         (trait_expr_value): Adjust.
39 2007-04-23  Simon Baldwin  <simonb@google.com>
41         * decl.c (grokparms): Added new error for duplicate function
42         parameters names in function prototypes, to match gcc behavior.
44 2007-04-23  Jan Hubicka  <jh@suse.cz>
46         * cp/decl2.c (finish_objects): Do not call target constructor/destructor
47         bits dirrectly.
49 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
51         * cp-tree.h (lang_tree_node): Use GENERIC_NEXT
52         instead of checking GIMPLE_STMT_P in chain_next.
54 2007-04-17  Mark Mitchell  <mark@codesourcery.com>
56         PR c++/31513
57         * call.c (convert_for_arg_passing): Convert bitfields to their
58         declared types.
60 2007-04-17  Simon Martin  <simartin@users.sourceforge.net>
62         PR c++/31517
63         * pt.c (value_dependent_expression_p): Handle MODOP_EXPRs.
65 2007-04-16  Seongbae Park <seongbae.park@gmail.com>
67         PR c++/29365
69         * cp/decl2.c (constrain_class_visibility):
70         Do not warn about the use of anonymous namespace in the main input file.
72 2007-04-15  Mark Mitchell  <mark@codesourcery.com>
74         * cp-tree.h (current_template_parms): Fix typo in comment.
76 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
78         * cp-tree.h, error.c: Fix comment typos.
80 2007-04-13  Jason Merrill  <jason@redhat.com>
82         PR c++/31074
83         * call.c (reference_binding): Add c_cast_p parm.  If true,
84         add quals to TO as needed to make it reference-compatible.
86 2007-04-11  Jan Hubicka  <jh@suse.cz>
88         * cp/class.c (convert_to_base_statically): Fold produced tree; verify
89         that we are not processing template_decl.
91 2007-04-09  Mark Mitchell  <mark@codesourcery.com>
93         PR c++/31449
94         * class.c (build_base_path): Ensure that the converted pointer has
95         the same cv-qualification as the input.
97 2007-04-09  Paolo Carlini  <pcarlini@suse.de>
99         * tree.c (cp_tree_equal): Deal with TRAIT_EXPR.
101 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
103         * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS):
104         Do not set it.
105         (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do not set it.
106         * tree.c (cp_add_pending_fn_decls): Remove.
107         * cp-tree.h (cp_add_pending_fn_decls): Remove prototype.
109 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
111         Revert change removing staticp.
113 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
115         * cp-objcp-common.c (cxx_staticp): Remove.
116         * cp-objcp-common.h (LANG_HOOKS_STATICP): Remove.
117         * cp-tree.h (cxx_staticp):      
119 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
121         * class.c (check_for_override): Don't remove dllmport attribute
122         of virtual methods.
124 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
126         PR c++/30847
127         * typeck.c (build_modify_expr): For COND_EXPR on LHS, if RHS has void
128         type issue error and return early.
130 2007-03-30  Jason Merrill  <jason@redhat.com>
132         PR c++/31187
133         * typeck.c (cp_type_readonly): New fn.
134         * cp-tree.h: Declare it.
135         * decl.c (start_decl): Set implicit DECL_THIS_STATIC here.
136         (cp_finish_decl): Not here.
138 2007-03-31  Richard Guenther  <rguenther@suse.de>
140         * optimize.c (maybe_clone_body): Replace splay-tree usage by
141         pointer-map.
143 2007-03-31  Douglas Gregor  <doug.gregor@gmail.com>
145         PR c++/31138
146         PR c++/31140
147         PR c++/31141
148         * parser.c (declarator_can_be_parameter_pack): New.
149         (cp_parser_template_parameter): Only parse the `...' if the
150         declarator can be a parameter pack.
151         (cp_parser_parameter_declaration): Ditto. Also, handle when TYPE
152         is NULL.
153         * pt.c (find_parameter_packs_r): Look into the bounds on integer
154         types (they could be used as array bounds). 
155         (check_for_bare_parameter_packs): Deal with TEMPLATE_PARM_INDEX.
156         (tsubst_pack_expansion): Handle failure to expand parameter
157         packs.
158         
159 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
161         PR c++/26099
162         * cp-tree.h (enum cp_trait_kind, struct tree_trait_expr,
163         TRAIT_EXPR_TYPE1, TRAIT_EXPR_TYPE2, TRAIT_EXPR_KIND): Add.
164         (enum cp_tree_node_structure_enum, union lang_tree_node): Update.
165         (CLASS_TYPE_NON_UNION_P): Add.
166         (struct lang_type_class): Add has_complex_dflt.
167         (TYPE_HAS_COMPLEX_DFLT, TYPE_HAS_TRIVIAL_DFLT): Add.
168         (locate_copy, locate_ctor, locate_dtor, finish_trait_expr): Declare.
169         * cp-tree.def: Add TRAIT_EXPR.
170         * cp-objcp-common.c (cp_tree_size): Add TRAIT_EXPR case.
171         * lex.c (struct resword): Add __has_nothrow_assign,
172         __has_nothrow_constructor, __has_nothrow_copy, __has_trivial_assign,
173         __has_trivial_constructor, __has_trivial_copy,
174         __has_trivial_destructor, __has_virtual_destructor, __is_abstract,
175         __is_base_of, __is_class, __is_convertible_to, __is_empty, __is_enum,
176         __is_pod, __is_polymorphic, __is_union.
177         * parser.c (cp_parser_primary_expression): Deal with the new RIDs.
178         (cp_parser_trait_expr): New.
179         * semantics.c (finish_trait_expr, trait_expr_value
180         classtype_has_nothrow_copy_or_assign_p): New.
181         * method.c (locate_copy, locate_ctor, locate_dtor): Do not define
182         as static.
183         * decl.c (cp_tree_node_structure): Add TRAIT_EXPR.
184         * class.c (check_bases, check_field_decl, check_bases_and_members):
185         Deal with TYPE_HAS_COMPLEX_DFLT (t) too.
186         * pt.c (uses_template_parms, tsubst_copy_and_build,
187         value_dependent_expression_p, type_dependent_expression_p): Deal with
188         TRAIT_EXPR.
189         * tree.c (cp_walk_subtrees): Deal with TRAIT_EXPR.
191 2007-03-29  Richard Guenther  <rguenther@suse.de>
193         * tree.c (cp_walk_subtrees): Do not set input_location.
195 2007-03-28  Simon Martin  <simartin@users.sourceforge.net>
197         PR c++/29077
198         * decl.c (grokfndecl): Properly setup decl if it is a constructor or a
199         destructor.
201 2007-03-28 Douglas Gregor <doug.gregor@gmail.com>
203         * parser.c (struct cp_parser): Update comment for
204         greater_than_is_operator_p.
205         (cp_parser_primary_expression): In C++0x mode, a cast operator can
206         be terminated with a `>>' token when !GREATER_THAN_IS_OPERATOR_P.
207         (TOKEN_PRECEDENCE): In C++0x mode, `>>' is treated like `>' when
208         !GREATER_THAN_IS_OPERATOR_P.
209         (cp_parser_binary_expression): When -Wc++0x-compat, warn about
210         `>>' operators that will become two `>' tokens in C++0x.
211         (cp_parser_parameter_declaration): Treat `>>' like `>' in C++0x
212         mode, allowing it to terminate default arguments.
213         (cp_parser_enclosed_template_argument_list): In C++0x mode, treat
214         `>>' like two consecutive `>' tokens.
215         (cp_parser_skip_to_end_of_template_parameter_list): Ditto.
216         (cp_parser_next_token_ends_template_argument_p): In C++0x, `>>'
217         ends a template argument.
219 2007-03-28  Douglas Gregor  <doug.gregor@gmail.com>
221         * decl.c (redeclaration_error_message): Complain when redeclaring
222         a friend function with default template arguments (C++0x mode only).
223         * cp-tree.h (check_default_tmpl_args): Declare.
224         * pt.c (check_default_tmpl_args): In C++0x mode, permit default
225         template arguments in function templates. Add support for checking
226         the default template arguments of friend templates.
227         (push_template_decl_real): Fix call to check_default_tmpl_args.
228         (type_unification_real): If a template parameter has not been
229         deduced but provides a default template argument, substitute into
230         that default template argument.
231         * parser.c (cp_parser_init_declarator): When declaring (but not
232         defining!) a function template in C++0x mode, check for default
233         template arguments.
235 2007-03-28 Douglas Gregor <doug.gregor@gmail.com>
237         PR c++/29993
238         * decl.c (grokdeclarator): Deal with cv-qualified function type
239         typedefs in the same way for member and non-member functions.
241 2007-03-26  Dirk Mueller  <dmueller@suse.de>
243         * parser.c (cp_parser_member_declaration): Pedwarn
244         about stray semicolons after member declarations.
246 2007-03-26  Paolo Carlini  <pcarlini@suse.de>
248         PR c++/30500
249         * pt.c (instantiate_decl): Set in_system_header.
251 2007-03-22  Mark Mitchell  <mark@codesourcery.com>
253         * cp-tree.h (current_tempalte_parms): Improve documentation.
254         * pt.c (current_template_args): Likewise.
256         PR c++/30863
257         * parser.c (cp_parser_parse_and_diagnose_invalid_type_name): Do
258         not consume tokens when failing.
260 2007-03-22  Jim Wilson  <wilson@specifix.com>
261             Mark Mitchell  <mark@codesourcery.com>
263         PR c++/31273
264         * call.c (standard_conversion): Use type_decays_to.  Keep FCODE
265         consistent with FROM.
267 2007-03-22  Gabriel Dos Reis  <gdr@integrable-solutions.net>
269         * error.c (dump_expr): Handle dependent names that designate types.
270         * cxx-pretty-print.c (pp_cxx_unqualified_id): Handle TYPENAME_TYPE.
272 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
274         * cp-tree.def, parser.c, pt.c: Fix comment typos.
276 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
278         * cvt.c (cp_convert_and_check) : Define.
279         * cp-tree.h (cp_convert_and_check): Declare.
280         * call.c (convert_conversion_warnings): Rename to
281         conversion_null_warnings.  The warning for floating-point to
282         integer is handled by convert_and_check in convert_like_real.
283         (convert_like_real): convert_conversion_warnings was renamed as
284         conversion_null_warnings.
285         * typeck.c (build_binary_op): Use cp_convert_and_check to warn for
286         overflow and changes of value during conversion.
288 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
290         PR c++/30891
291         * parser.c (cp_parser_statement): If 'namespace' is found, this
292         only can be a namespace alias definition, so parse it now.
293         (cp_parser_namespace_alias_definition): if we find an open brace
294         instead of '=', then this is actually a misplaced namespace
295         definition.
296         
297 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
299         PR c++/24924
300         * decl.c (cxx_init_decl_processing): Move command-line options
301         processing to c-opts.c.
302         
303 2007-03-15  Douglas Gregor  <doug.gregor@gmail.com>
305         * ptree.c (cxx_print_type): Use formatting markup for integers
306         when printing template parameter index/level/orig level.
307         (cxx_print_xnode): Ditto.
308         * cp-tree.h (TEMPLATE_PARM_PARAMETER_PACK): Use TREE_LANG_FLAG_0.
309         (struct template_parm_index_s): Remove the PARAMETER_PACK member.
310         Make INDEX, LEVEL, and ORIG_LEVEL integers instead of
311         HOST_WIDE_INTs.
312         (struct saved_scope): Make X_PROCESSING_TEMPLATE_DECL an int,
313         rather than a HOST_WIDE_INT.
314         Turn X_PROCESSING_EXPLICIT_INSTANTIATION, SKIP_EVALUATION, and
315         NEED_POP_FUNCTION_CONTEXT into bool bitfields; reorder fields for
316         better bit-packing.
317         (struct language_function): Make RETURNS_VALUE, RETURNS_NULL,
318         RETURNS_ABNORMALLY, IN_FUNCTION_TRY_HANDLER, and
319         IN_BASE_INITIALIZER bool bitfields.
320         (struct cp_declarator): Make KIND a 4-bit field. Make
321         PARAMETER_PACK_P a bool bitfield just after KIND.
322         * pt.c (uses_parameter_packs): Destroy the pointer set.
323         (make_pack_expansion): Ditto.
324         (check_for_bare_parameter_packs): Ditto.
325         * name-lookup.c (push_to_top_level): Make need_pop a bool value.
326         
327 2007-03-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
329         PR c++/31165
330         * call.c  (convert_default_arg): Instead of copying the node,
331         unshare it.
333 2007-03-15  Dirk Mueller  <dmueller@suse.de>
335         PR c++/30860
336         * call.c (convert_conversion_warnings): New..
337         (convert_like_real): .. factored out from here.
338         (convert_conversion_warnings): Add warning about
339         false being converted to NULL in argument passing.
341 2007-03-14  Dirk Mueller  <dmueller@suse.de>
343         * cp/semantics.c (c_finish_if_stmt): Call empty_if_body_warning.
344         (finish_do_body): Warn about empty body in do/while statement.
346 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
348         * class.c (warn_hidden): Add OPT_Woverloaded_virtual to warning.
349         
350 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
352         PR c/21438
353         * typeck.c (build_binary_op): Call warn_for_div_zero instead of
354         warning.
355         
356 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
358         * cp/repo.c (init_repo): Initialize random_seed saved options.
359         (finish_repo): Adjust.
361 2007-03-13  Mark Mitchell  <mark@codesourcery.com>
363         PR bootstrap/30899
364         * Make-lang.in (doc/g++.1): Use $< to specify the location from
365         which to copy.
367 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
369         * decl.c (compute_array_index_type): New warning flag warn_vla.
371 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
373         PR c++/30108
374         * call.c (convert_default_arg): Copy non-constant arguments.
376 2007-03-11  Mark Mitchell  <mark@codesourcery.com>
378         PR c++/31038
379         * parser.c (cp_parser_postfix_expression): Disallow compound
380         literals in constant expressions.
382         PR c++/30328
383         * semantics.c (finish_typeof): Use unlowered_expr_type.
384         
385 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
387         PR c++/30274
388         * cp-tree.h (unlowered_expr_type): New function.
389         * typeck.c (is_bitfield_expr_with_lowered_type): Handle
390         COMPOUND_EXPR, MODIFY_EXPR, and SAVE_EXPR.
391         (unlowered_expr_type): New function.
392         (build_unary_op): Disallow predecrements of bool bitfields.
393         * call.c (build_conditional_expr): Use unlowered_expr_type.
394         * pt.c (type_unification_real): Likewise.
396 2007-03-09  Douglas Gregor  <doug.gregor@gmail.com>
398         PR c++/20599
399         * typeck.c (check_return_expr): Check for bare parameter packs.
400         (comptypes): Compare template parameter packs and
401         type pack expansions.
402         * decl.c (grokdeclarator): Deal with the declaration of function
403         parameter packs.
404         (grokparms): Verify that the (optional) function parameter pack is
405         at the end of the parameter list.
406         (xref_basetypes): Handle pack expansions in the base class.
407         (cp_tree_node_structure): Handle ARGUMENT_PACK_SELECT.
408         * cp-tree.def (TYPE_ARGUMENT_PACK): New.
409         (NONTYPE_ARGUMENT_PACK): New.
410         (TYPE_PACK_EXPANSION): New.
411         (EXPR_PACK_EXPANSION): New.
412         (ARGUMENT_PACK_SELECT): New.
413         * cp-objcp-common.c (cp_tree_size): Compute size of
414         (NON)TYPE_ARGUMENT_PACK, (TYPE|EXPR)_PACK_EXPANSION, and
415         ARGUMENT_PACK_SELECT.
416         * error.c (dump_template_argument): Print template argument packs.
417         (dump_template_argument_list): Ditto.
418         (dump_template_parameter): Dump `...' for template type parameter
419         packs.
420         (dump_type): Dump TYPE_PACK_EXPANSION nodes.
421         (dump_parameters): Print function parameter packs.
422         (dump_template_parms): Print template argument packs.
423         (dump_expr): Dump EXPR_PACK_EXPANSION nodes.
424         (maybe_warn_variadic_templates): New.
425         * operators.def: Add ellipsis operator for EXPR_PACK_EXPANSION.
426         * tree.c (cp_walk_subtrees): Walk BASELINK, TYPE_ARGUMENT_PACK,
427         NONTYPE_ARGUMENT_PACK, TYPE_PACK_EXPANSION, EXPR_PACK_EXPANSION,
428         CAST_EXPR. 
429         * mangle.c (write_type): Mangle TYPE_PACK_EXPANSION.
430         (write_template_arg): Write argument packs as separate arguments.
431         * cp-tree.h (struct template_parm_index_s): Add flag that
432         indicates that the template parameter is actually a parameter
433         pack.
434         (struct tree_argument_pack_select): New.
435         (enum cp_tree_node_structure_enum): Add TS_CP_ARGUMENT_PACK_SELECT.
436         (union lang_tree_node): Add argument_pack_select.
437         (FUNCTION_PARAMETER_PACK_P): New.
438         (PACK_EXPANSION_P): New.
439         (PACK_EXPANSION_PATTERN): New.
440         (SET_PACK_EXPANSION_PATTERN): New.
441         (PACK_EXPANSION_PARAMETER_PACKS): New.
442         (ARGUMENT_PACK_P): New.
443         (ARGUMENT_PACK_ARGS): New.
444         (SET_ARGUMENT_PACK_ARGS): New.
445         (ARGUMENT_PACK_INCOMPLETE_P): New.
446         (ARGUMENT_PACK_EXPLICIT_ARGS): New.
447         (TEMPLATE_PARM_PARAMETER_PACK): New.
448         (TEMPLATE_TYPE_PARAMETER_PACK): New.
449         (ARGUMENT_PACK_SELECT_FROM_PACK): New.
450         (ARGUMENT_PACK_SELECT_INDEX): New.
451         (ARGUMENT_PACK_SELECT_ARG): New.
452         (struct cp_declarator): Add parameter_pack_p flag.
453         (maybe_warn_variadic_templates): Declare.
454         (process_template_parm): Add bool parameter IS_PARAMETER_PACK, to
455         indicate a template parameter pack. 
456         (uses_parameter_packs): Declare.
457         (template_parameter_pack_p): Declare.
458         (template_parms_variadic_p): Declare.
459         (make_pack_expansion): Declare.
460         (check_for_bare_parameter_packs): Declare.
461         * cxx-pretty-print.c (pp_cxx_unary_expression): Print
462         sizeof... expressions. 
463         (pp_cxx_expression): Print pack expansions and non-type argument
464         packs.
465         (pp_cxx_exception_specification): Print pack expansions. 
466         (pp_cxx_direct_declarator): Print ellipsis for parameter packs.
467         (pp_cxx_ctor_initializer): Print pack expansions.
468         (pp_cxx_type_id): Print pack expansions.
469         (pp_cxx_template_argument_list): Print argument packs.
470         (pp_cxx_template_parameter): Print ellipsis for template parameter
471         packs.
472         * pt.c (comp_template_parms): Compare template parameter packs.
473         (template_parameter_pack_p): New.
474         (template_parms_variadic_p): New.
475         (template_args_variadic_p): New.
476         (make_ith_pack_parameter_name): New.
477         (struct find_parameter_pack_data): New.
478         (find_parameter_packs_r): New.
479         (uses_parameter_packs): New.
480         (make_pack_expansion): New.
481         (check_for_bare_parameter_packs): New.
482         (expand_template_argument_pack): New.
483         (reduce_template_parm_level): Propagate parameter pack flag.
484         (process_template_parm): Add is_parameter_pack parameter to state
485         when the parameter is actually a parameter pack. Create template
486         parameter packs when is_parameter_pack is true.
487         (current_template_args): The argument for a template parameter
488         pack is an argument pack containing a single pack expansion.
489         (process_partial_specialization): When checking that non-type
490         argument expressions do not involve template parameters, loop over
491         the arguments in argument packs separately.
492         (push_template_decl_real): Check that the type of the declaration
493         does not have any bare parameter packs. Check that primary
494         templates have no more than one parameter pack, and that it comes
495         at the end of the template parameter list.
496         (convert_template_argument): Handle coercions for pack expansion
497         expressions by coercing the pattern then rebuilding the expansion.
498         (coerce_template_parms): When coercing the arguments for a
499         variadic template, pack "extra" arguments into an argument pack.
500         (coerce_template_template_parms): Cannot coerce between parameter
501         packs and non-pack parameters.
502         (template_args_equal): Compare PACK_EXPANSION_P expressions.
503         (comp_template_args): Expand all template arguments packs before
504         comparing template argument lists.
505         (mangle_class_name_for_template): Make argument packs as separate
506         template arguments.
507         (for_each_template_parm_r): No need to handle BASELINK. 
508         (instantiate_class_template): Handle pack expansions in the base
509         class list.
510         (tsubst_pack_expansion): New.
511         (tsubst_template_args): Handle substitutions of argument packs and
512         pack expansion into template argument lists.
513         (tsubst_decl): Expand function parameter packs into separate
514         function parameters.
515         (tsubst_arg_types): Expand a type pack expansion into separate
516         argument types.
517         (tsubst_exception_specification): Handle pack expansions in
518         exception specifiers.
519         (tsubst): See through ARGUMENT_PACK_SELECT arguments when 
520         replacing a template parameter with its argument. If we encounter
521         a substitution for an argument pack, just return the parameter
522         itself. 
523         (tsubst_copy): sizeof(X...) returns the number of elements in
524         parameter pack X.  See through ARGUMENT_PACK_SELECT when the
525         PARM_DECL is a parameter pack.
526         (tsubst_expr): Expression pack expansions and argument packs
527         cannot show up here; they will all be handled through function
528         calls, sizeof, and template argument lists.
529         (tsubst_copy_and_build): sizeof(X...) returns the number of
530         elements in parameter pack X.  Handle pack expansions in TREE_LIST
531         and CONSTRUCTOR nodes.
532         (fn_type_unification): Handle "incomplete" explicit template
533         argument lists that specify some of the arguments for a template
534         parameter pack.
535         (type_unification_real): Unify arguments against pack expansions.
536         (template_parm_level_and_index): New, helper function.
537         (unify_pack_expansion): New.
538         (unify): Unify argument packs on an argument-by-argument basis,
539         handling variadic argument packs as well.
540         (more_specialized_fn): Handle unification of function parameter
541         packs. All things being equal, prefer non-variadic function
542         templates to variadic function templates.
543         (more_specialized_class): Prefer the variadic class template
544         partial specialization that binds fewer arguments to a parameter
545         pack.
546         (regenerate_decl_from_template): Expand function parameter packs
547         into separate parameters.
548         (instantiate_decl): Ditto.
549         (tsubst_initializer_list): Handle pack expansions for base-class
550         initializers.
551         (dependent_type_p_r): Determine dependent types in argument packs
552         and pack expansions.
553         (value_dependent_expression_p): Determine value-dependence of
554         non-type argument packs.
555         (dependent_template_arg_p): Handle argument packs.
556         * semantics.c (finish_cond): Check for bare parameter packs.
557         (finish_expr_stmt): Ditto.
558         (finish_for_expr): Ditto.
559         (finish_switch_cond): Ditto.
560         (finish_mem_initializers): Ditto.
561         * name-lookup.c (arg_assoc_type): Handle pack expansions and
562         argument packs.
563         * decl2.c (cp_build_parm_decl): Mark function parameter packs.
564         * parser.c (make_declarator): Declarator is not an expansion.
565         (make_pointer_declarator): Transfer parameter pack flag to outer
566         declarator.
567         (make_reference_declarator): Ditto.
568         (make_ptrmem_declarator): Ditto.
569         (make_call_declarator): Ditto.
570         (make_array_declarator): Ditto.
571         (cp_parser_postfix_expression): Allow pack expansion expressions
572         in the argument list for a call expression.
573         (cp_parser_parenthesized_expression_list): Add new parameter
574         ALLOW_EXPANSION_P. When true, parse the ellipsis to mean "expand
575         into separate arguments."
576         (cp_parser_new_placement): Allow pack expansion expressions.
577         (cp_parser_new_initializer): Ditto.
578         (cp_parser_mem_initializer_list): Allow ellipsis to create a
579         base-class initializer expansion.
580         (cp_parser_mem_initializer): Ditto.
581         (cp_parser_template_parameter_list): Keep track of whether the
582         template parameter is a template parameter pack.
583         (cp_parser_template_parameter): Parse the ellipsis to indicate a
584         template parameter pack.
585         (cp_parser_type_parameter): Ditto.
586         (cp_parser_template_argument_list): Parse the ellipsis to indicate
587         a pack expansion.
588         (cp_parser_direct_declarator): Parse the ellipsis to indicate that
589         this declarator is a parameter pack.
590         (cp_parser_parameter_declaration): The ellipsis does not end the
591         parameter declaration, because it might be a parameter pack. Parse
592         the ellipsis to indicate a parameter pack.
593         (cp_parser_initializer): Allow pack expansions.
594         (cp_parser_initializer_list): Allow ellipsis to create an
595         initializer expansion.
596         (cp_parser_base_clause): Allow ellipsis to create a base specifier
597         expansion.
598         (cp_parser_type_id_list): Allow ellipsis to create an exception
599         specifier expansion.
600         (cp_parser_attribute_list): Don't allow pack expansions.
601         (cp_parser_functional_cast): Allow pack expansions.
602         (cp_parser_sizeof_operand): Allow ellipsis following "sizeof" to
603         compute the length of a parameter pack.
604         (cp_parser_next_token_ends_template_argument_p): An ellipsis can
605         end a template argument.
606         * tree.c (cp_walk_subtrees): Walk BASELINK, TYPE_ARGUMENT_PACK,
607         NONTYPE_ARGUMENT_PACK, TYPE_PACK_EXPANSION, EXPR_PACK_EXPANSION,
608         CAST_EXPR. 
610 2007-03-09  Dirk Mueller  <dmueller@suse.de>
612         * cp/call.c (build_new_op): Call warn_logical_operator.
614 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
616         PR c++/30852
617         * semantics.c (finish_offsetof): Handle COMPOUND_EXPR.
619         PR c++/30534
620         * pt.c (any_template_arguments_need_structural_equality_p):
621         Robustify.
623 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
625         * decl.c (grokdeclarator): Disable warnings for anonymous
626         bitfields.
628 2007-03-05  Volker Reichelt  <reichelt@netcologne.de>
630         * typeck2.c (readonly_error): Always emit a hard error.
631         Remove last argument.
632         * cp-tree.h (readonly_error): Adjust prototype.
633         * semantics.c (finish_asm_stmt): Adjust call to readonly_error.
634         * typeck.c (build_unary_op): Likewise.
635         (build_modify_expr): Likewise.
637 2007-03-04  Simon Martin  <simartin@users.sourceforge.net>
639         PR c++/30895
640         * tree.c (cp_tree_equal): Properly handle COMPLEX_CST trees.
642 2007-03-03  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
644         PR c++/15787
645         * parser.c (struct cp_parser): New IN_IF_STMT.
646         (cp_parser_statement_seq_opt): Handle an unexpected 'else',
647         returning if parsing the body of an 'if' statement or issuing an
648         error and continuing.
649         (cp_parser_selection_statement): Set IN_IF_STMT bit when parsing
650         body of 'if'.
651         (cp_parser_jump_statement): Mask new IN_IF_STMT bit.
652         
653 2007-03-02  Simon Martin  <simartin@users.sourceforge.net>
655         PR c++/28253
656         * class.c (update_vtable_entry_for_fn): Properly handle invalid overriders
657         for thunks.
659 2007-03-02  Geoffrey Keating  <geoffk@apple.com>
661         * g++spec.c (lang_specific_driver): Add -lstdc++ when compiling
662         Objective-C++.  Don't exit early if -shared-libgcc needs to be
663         added.
665 2007-03-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
667         * typeck.c (common_base_type): Delete unused function.
668         
669 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
671         * Make-lang.in: Add dummy lang.install-pdf target.
673 2007-03-01  Simon Baldwin <simonb@google.com>
675         PR c++/23689
676         * decl.c (check_tag_decl): Added new warning for typedef ignored
677         when it precedes an otherwise valid non-typedef declaration.
679 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
681         * typeck.c (build_function_call): Store converted arguments
682         in a stack-allocated array instead of building a list.
683         (convert_arguments): Store arguments in the array passed in as an
684         argument, and return the actual number of arguments.
685         * call.c (build_call): Delete, and replace with...
686         (build_call_n, build_call_a): New.
687         (build_op_delete_call): Rewrite to avoid constructing argument lists.
688         (build_over_call): Store converted arguments in a stack-allocated
689         array instead of building a list.
690         (build_cxx_call): Pass arguments in an array instead of as a list.
691         (build_java_interface_fn_ref): Rewrite to avoid constructing
692         argument lists.
693         * tree.h: Update declarations to reflect above changes.
694         * method.c (use_thunk): Use a stack-allocated array to hold
695         the arguments instead of a list.
696         * rtti.c (throw_bad_cast): Update call to cxx_call.
697         (throw_bad_typeid): Likewise.
698         (build_dynamic_cast_1): Likewise.
699         * init.c (build_builtin_delete_call): Use build_call_n.
700         * decl.c (expand_static_init): Likewise.
701         * except.c (cp_protect_cleanup_actions): Likewise.
702         * cp-gimplify.c (genericize_eh_spec_block): Likewise.
703         (gimplify_must_not_throw_expr): Likewise.
704         (cxx_omp_apply_fn): Use build_call_a.
706 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
708         * semantics.c (expand_or_defer_fn): Call c_record_cdtor_fn.
709         * decl2.c (cp_write_gloabl_declarations): Call c_build_cdtor_fns.
711 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
713         * cp-tree.h (static_ctors): Remove.
714         * cp-tree.h (static_dtors): Likewise.
715         * cp-objcp-common.c (decl_shadowed_for_var_lookup): Adjust for
716         refactoring of tree_map hierarchy.
717         (decl_shadowed_for_var_insert): Likewise.
718         * semantics.c (expand_body): Use c_expand_body.
719         (expand_or_defer_fn): Don't update static_ctors or static_dtors.
720         * decl2.c (static_ctors): Remove.
721         (static_dtors): Likewise.
722         (generate_ctor_or_dtor_function): Pass NULL_TREE to
723         objc_generate_static_init_call.  Do not call static_[cd]tors.
724         (generate_ctor_and_dtor_functions_for_priority): Do not check for
725         static_[cd]tors.
726         (cp_write_global_declarations): Likewise.
728 2007-02-23  Richard Guenther  <rguenther@suse.de>
730         * class.c (note_name_declared_in_class): Make declaration
731         changes meaning a pedwarn.
733 2007-02-22  Michael Matz  <matz@suse.de>
735         PR c++/29433
736         * cp-tree.h (TFF_UNQUALIFIED_NAME): New formatting flag.
737         * error.c (dump_aggr_type, dump_simple_decl, dump_decl,
738         dump_function_decl): Guard emitting outer scopes by new flag.
739         * cp-lang.c (cxx_dwarf_name): New function.
740         (LANG_HOOKS_DWARF_NAME): Define to cxx_dwarf_name.
741         * pt.c (classtype_mangled_name, mangle_class_name_for_template):
742         Remove functions.
743         (push_template_decl_real, lookup_template_class): Remove calls
744         to above functions.
746 2007-02-19  Mark Mitchell  <mark@codesourcery.com>
748         * call.c (build_new_method_call): Ensure that explicit calls of
749         destructors have type "void".
751 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
753         * typeck.c (build_binary_op): Replace -Wstring-literal-comparison
754         and -Walways-true with -Waddress.
755         * cvt.c (convert_to_void): Replace unconditional warning with
756         -Waddress.
758 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
760         * decl.c, tree.c: Fix comment typos.
762 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
764         PR C++/30158
765         * semantics.c (finish_stmt_expr_expr): Set TREE_TYPE of the 
766         statement expression if we had an error mark node.
767                 
768 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
769             Brooks Moses  <brooks.moses@codesourcery.com>
770             Lee Millward  <lee.millward@codesourcery.com>
772         * cp-tree.def (AGGR_INIT_EXPR): Adjust documentation.
773         Change class to tcc_vl_exp.
775         * call.c (build_call): Use build_call_list instead 
776         of build3. 
777         (build_over_call): Likewise.
778         (build_new_method_call): Use build_min_non_dep_call_list 
779         instead of build_min_non_dep.
781         * error.c (dump_call_expr_args): New function.
782         (dump_aggr_init_expr_args): New function.
783         (dump_expr) <AGGR_INIT_EXPR, CALL_EXPR, INDIRECT_REF>: Use them. 
784         Update to use new CALL_EXPR and AGGR_INIT_EXPR accessor macros.
786         * cvt.c (convert_to_void): Use build_call_array instead
787         of build3; use new AGGR_INIT_EXPR accessor macros.
789         * mangle.c (write_expression): Use TREE_OPERAND_LENGTH
790         instead of TREE_CODE_LENGTH.
792         * dump.c (cp_dump_tree) <AGGR_INIT_EXPR>: Update to use new
793         AGGR_INIT_EXPR accessor macros.
795         * cp-gimplify.c (cp_gimplify_init_expr): Use 
796         AGGR_INIT_EXPR_SLOT to set the slot operand.
798         * cp-tree.h (AGGR_INIT_EXPR_FN): New macro.
799         (AGGR_INIT_EXPR_SLOT): New macro.
800         (AGGR_INIT_EXPR_ARG): New macro.
801         (aggr_init_expr_nargs): New macro.
802         (AGGR_INIT_EXPR_ARGP): New macro.
803         (aggr_init_expr_arg_iterator): New.
804         (init_aggr_init_expr_arg_iterator): New.
805         (next_aggr_init_expr_arg): New.
806         (first_aggr_init_expr_arg): New.
807         (more_aggr_init_expr_args_p): New.
808         (FOR_EACH_AGGR_INIT_EXPR_ARG): New.
809         (stabilize_aggr_init): New declaration.
810         (build_min_non_dep_call_list): Likewise.
812         * tree.c (process_aggr_init_operands): New function.
813         (build_aggr_init_array) New function.
814         (build_cplus_new): Update to use new CALL_EXPR and
815         AGGR_INIT_EXPR accessor macros. Replace use of build3 with
816         build_aggr_init_array.
817         (build_min_non_dep_call_list) New function.
818         (build_min_nt): Assert input code parameter is not a variable
819         length expression class.
820         (build_min, build_min_non_dep): Likewise.
821         (cp_tree_equal) <CALL_EXPR>: Iterate through the arguments
822         to check for equality instead of recursing. Handle tcc_vl_exp
823         tree code classes.
824         (stabilize_call): Update to only handle CALL_EXPRs, not 
825         AGGR_INIT_EXPRs; use new CALL_EXPR accessor macros.
826         (stabilize_aggr_init): New function.
827         (stabilize_init): Use it.
829         * cxx-pretty-print.c (pp_cxx_postfix_expression)
830         <AGGR_INIT_EXPR, CALL_EXPR>: Update to use new CALL_EXPR and
831         AGGR_INIT_EXPR accessor macros and argument iterators.
832         
833         * pt.c (tsubst_copy) <CALL_EXPR>: Replace build_nt with
834         build_vl_exp. Iterate through the operands, recursively 
835         processing each one.
836         (tsubst_copy_and_build) <CALL_EXPR>: Update to use new
837         CALL_EXPR accessor macros.
838         (value_dependent_expression_p) <default>: Handle tcc_vl_exp
839         tree code classes. Use TREE_OPERAND_LENGTH instead of 
840         TREE_CODE_LENGTH.
842         * semantics.c (finish_call_expr): Use build_nt_call_list
843         instead of build_nt.
844         (simplify_aggr_init_expr): Update to use new AGGR_INIT_EXPR 
845         accessor macros. Use build_call_array to construct the 
846         CALL_EXPR node instead of build3
847         
848         * decl2.c (build_offset_ref_call_from_tree): Use 
849         build_nt_call_list and build_min_non_dep_call_list instead
850         of build_min_nt and build_min_non_dep.
852         * parser.c (cp_parser_postfix_expression) <CPP_OPEN_PAREN>:
853         Use build_nt_call_list instead of build_min_nt.
855 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
857         PR c++/28943
858         * call.c (build_conditional_expr): Improve error message.
859         
860 2007-02-13  Dirk Mueller  <dmueller@suse.de>
862         * friend.c (do_friend): Annotate warning about friend
863         declarations in templates with OPT_Wnon_template_friend.
864         Convert informal message from warning() to inform().
866 2007-02-12  Simon Martin  <simartin@users.sourceforge.net>
867             Mark Mitchell  <mark@codesourcery.com>
869         PR c++/14622
870         * pt.c (do_decl_instantiation): Detect type mismatches in explicit
871         instantiations for variables.
873 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
875         PR middle-end/7651
876         * cp-gimplify.c (gimplify_expr_stmt): Don't check extra_warnings.
877         Check warn_unused_value just once.
879 2007-02-11  Mark Mitchell  <mark@codesourcery.com>
881         PR c++/26988
882         * pt.c (determine_specialization): Use skip_artificial_parms_for.
883         (fn_type_unificiation): Likewise.
884         (get_bindings): Likewise.
886 o2007-02-06  Mark Mitchell  <mark@codesourcery.com>
888         PR target/29487
889         * decl.c (finish_function): Use DECL_REPLACEABLE.
890         * tree.c (cp_cannot_inline_tree_fn): Likewise.
892 2007-02-10  Gabriel Dos Reis  <gdr@integrable-solutions.net>
894         * parser.c (cp_parser_primary_expression): Reformat overly long lines.
896 2007-02-10  Richard Henderson  <rth@redhat.com>, Jakub Jelinek  <jakub@redhat.com>
898         * decl.c (grokvardecl): Don't error if !have_tls.
899         (grokdeclarator): Likewise.
900         * parser.c (cp_parser_omp_threadprivate): Likewise.
902 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
904         PR c++/30703
905         * cp-gimplify.c (cp_genericize_r): Don't dereference invisiref
906         parameters and result decls in omp clauses.
907         (cxx_omp_privatize_by_reference): Pass also invisiref PARM_DECLs
908         by reference.
910 2007-02-05  Dirk Mueller  <dmueller@suse.de>
912         PR bootstrap/30510
913         * parser.c (cp_parser_class_specifier): Always initialize bases.
915 2007-02-05  Paolo Bonzini  <bonzini@gnu.org>
917         * cp-tree.h (OMP_ATOMIC_CODE): Delete.
918         (OMP_ATOMIC_DEPENDENT_P): Rewrite.
919         * pt.c (tsubst_expr): Adjust for new format of dependent OMP_ATOMIC
920         expressions.
921         * semantics.c (finish_omp_atomic): Store a whole expression node
922         in operand 1, and integer_zero_node in operand 0, for dependent
923         OMP_ATOMIC.  Rewrite to make flow easier to understand.
925 2007-02-03  Gabriel Dos Reis  <gdr@integrable-solutions.net>
927         * decl.c (grokdeclarator): Use OPT_Wreturn_type instead of 0.
929 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
931         * class.c, cp-tree.h, decl.c, decl2.c, g++spec.c, init.c,
932         parser.c, pt.c, tree.c, typeck.c: Follow spelling conventions.
934 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
936        * parser.c (cp_lexer_get_preprocessor_token): Attach the C++0x
937        keyword warning to -Wc++0x-compat.
938         
939 2007-02-03  Gabriel Dos Reis  <gdr@integrable-solutions.net>
941         * decl.c (grokdeclarator): Update documentation.
943 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
945         PR c++/30536
946         * decl.c (grokdeclarator): If __thread is used together with
947         a storage class other than extern and static, clear thread_p
948         after issuing diagnostics and fall through to checking the
949         storage class.
951 2007-01-30  Roger Sayle  <roger@eyesopen.com>
953         * error.c (dump_type_suffix): Avoid use of cp_build_binary_op when
954         calculating the size of an array (to avoid recursive errors).
956 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
958         PR c++/24745
959         * typeck.c (build_binary_op): Fix logic for warning. Move warning
960         to -Wpointer-arith.
961         * call.c (convert_like_real): Don't warn when converting to
962         boolean type.
963         
964 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
966         * decl.c (pop_label): Replace warning with call to
967         warn_for_unused_label.
969 2007-01-28  Andrew Pinski  <pinskia@gmail.com>
971         PR C++/28988
972         * semantics.c (finish_pseudo_destructor_expr): Check the
973         destrutor name by calling check_dtor_name.
975 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
977         * lex.c (D_CPP0X): Rename.
978         (D_CXX0X): To this.
979         (reswords): D_CPP0X -> D_CXX0X.
980         (init_reswords): Ditto.
981         * parser.c (cp_lexer_get_preprocessor_token): Warn about the use
982         of C++0x keywords as identifiers.
984 2007-01-23  Simon Martin  <simartin@users.sourceforge.net>
986         PR c++/27492
987         * decl.c (duplicate_decls): Don't reset DECL_INVALID_OVERRIDER_P for
988         function decls.
990 2007-01-23  Ian Lance Taylor  <iant@google.com>
992         * typeck.c (convert_for_assignment): Only warn about a = b = c
993         when converting to bool.
995 2007-01-23  Roger Sayle  <roger@eyesopen.com>
997         * call.c (null_ptr_cst_p): Replace use of TREE_CONSTANT_OVERFLOW with
998         TREE_OVERFLOW.
999         * typeck.c (ignore_overflows): Remove the remaining uses of
1000         TREE_CONSTANT_OVERFLOW.
1002 2007-01-20  Jan Hubicka  <jh@suse.cz>
1004         * decl2.c (start_objects, start_static_storage_duration_function):
1005         Do not make the functions uninlinable.
1007 2007-01-17  Ian Lance Taylor  <iant@google.com>
1009         * class.c (add_method): Call VEC_reserve_exact rather than passing
1010         a negative size to VEC_reserve.
1012 2007-01-11  Simon Martin  <simartin@users.sourceforge.net>
1014         PR c++/29573
1015         * tree.c (cp_tree_equal): Properly handle MODOP_EXPR trees.
1017 2007-01-10  Mark Mitchell  <mark@codesourcery.com>
1019         PR c++/28999
1020         * decl.c (make_typename_type): If the qualified name is not a
1021         type, issue an error.
1022         * parser.c (cp_parser_elaborated_type_specifier): Fix comment
1023         formatting.
1025 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
1027         * rtti.c: Include target.h.
1028         (emit_support_tinfos): If ! targetm.cxx.library_rtti_comdat (),
1029         don't emit typeinfo for fundamental types as weak.
1030         * Make-lang.in (cp/rtti.o): Update and correct dependencies.
1032 2007-01-08  Richard Guenther  <rguenther@suse.de>
1034         * cvt.c (cp_convert_to_pointer): Use build_int_cst_type.
1036 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
1038         * call.c (standard_conversion): Pass flag to
1039         vector_types_convertible_p to disallow emission of note.
1040         * typeck.c (convert_for_assignment): Pass flag to
1041         vector_types_convertible_p to allow emission of note.
1042         (ptr_reasonably_similar): Pass flag to vector_types_convertible_p
1043         to disallow emission of note.
1045 2007-01-07  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1047         PR c++/28986
1048         * typeck.c (build_binary_op): Call overflow_warning if
1049         TREE_OVERFLOW_P is true for the result and not for any of the
1050         operands.
1051         
1052 2007-01-06  Lee Millward  <lee.millward@codesourcery.com>
1054        PR c++/19439
1055        * class.c (add_method): Don't wait until template
1056        instantiation time to complain about duplicate methods.
1057         
1058 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1060         PR c/19978
1061         * semantics.c (finish_unary_op_expr): Warn only if result
1062         overflowed and operands did not.
1064 2007-01-05  Ian Lance Taylor  <iant@google.com>
1066         * typeck.c (build_binary_op): Warn about comparing a non-weak
1067         address to NULL.
1069 2007-01-05  Douglas Gregor  <doug.gregor@gmail.com>
1071         * pt.c (tsubst): Propagate the need for structural equality checks
1072         when reducing the level of template parameters.
1074 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
1076         * pt.c: Fix a comment typo.
1078 2006-01-02  Ian Lance Taylor  <iant@google.com>
1080         * semantics.c (maybe_convert_cond): Optionally warn when using an
1081         assignment as a condition.
1082         * typeck.c (convert_for_assignment): Optionally warn about
1083         assigning the result of an assignment to a bool.
1085 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
1087         * pt.c (canonical_template_parms): Correct typo in comment.
1088         
1089 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
1091         * typeck.c (structural_comptypes): Renamed from "comptypes".
1092         (comptypes): Use canonical type information to perform fast type
1093         comparison. When VERIFY_CANONICAL_TYPES, verify that the
1094         canonical type comparison returns the same results as we would see
1095         from the current, structural check. Support COMPARE_STRUCTURAL
1096         when we need structural checks.
1097         * decl.c (typename_compare): Fix comment.
1098         (build_typename_type): TYPENAME_TYPE nodes require structural
1099         equality checks, because they resolve different based on the
1100         current class type.
1101         (make_unbound_class_template): UNBOUND_CLASS_TEMPLATE nodes
1102         require structural equality checks (for now).
1103         (build_ptrmemfunc_type): Build the canonical pointer to member
1104         function type.
1105         (compute_array_index_type): Whenever we build a new index type
1106         to represent the size of an array in a template, we need to mark
1107         this index type as requiring structural equality. This goes for
1108         arrays with value-dependent sizes with the current ABI, or all
1109         arrays with ABI-1.
1110         * tree.c (cplus_array_hash): New.
1111         (struct cplus_array_info): New.
1112         (cplus_array_compare): New.
1113         (cplus_array_htab): New.
1114         (build_cplus_array_type_1): Use a hash table to cache the array
1115         types we build. Build the canonical array type for each array
1116         type.
1117         (cp_build_qualified_type_real): When building a cv-qualified array
1118         type, use the hash table of array types and build canonical array
1119         types as necessary.
1120         (bind_template_template_parm): BOUND_TEMPLATE_TEMPLATE_PARM nodes
1121         use structural equality (for now).
1122         * cp-tree.h (COMPARE_STRUCTURAL): New.
1123         * pt.c (canonical_template_parms): New.
1124         (canonical_type_parameter): New.
1125         (process_template_parm): Find the canonical type parameter.
1126         (lookup_template_class): When we have named the primary template
1127         type, set the canonical type for our template class to the primary
1128         template type. If any of the template arguments need structural
1129         equality checks, the template class needs structural equality
1130         checks.
1131         (tsubst): When reducing the level of a template template
1132         parameter, we require structural equality tests for the resulting
1133         parameter because its template parameters have not had their types
1134         canonicalized. When reducing a template type parameter, find the
1135         canonical reduced type parameter.
1136         (any_template_arguments_need_structural_equality_p): New.
1138 2006-12-31  Simon Martin  <simartin@users.sourceforge.net>
1140         PR c++/29731
1141         * parser.c (cp_parser_primary_expression): Return error_mark_node when
1142         a statement-expression is found outside of a function body.
1144 2006-12-28  Kazu Hirata  <kazu@codesourcery.com>
1146         * cp-tree.h (TYPE_NAMESPACE_SCOPE_P, TYPE_FUNCTION_SCOPE_P):
1147         Remove.
1149         * decl2.c: Fix a comment typo.
1151 2006-12-21  Andrew Pinski  <pinskia@gmail.com>
1153         PR C++/30225
1154         * decl.c (cxx_builtin_function): Only copy the decl if adding
1155         it to the std namespace.
1157 2006-12-21  Andrew Pinski  <pinskia@gmail.com>
1159         PR C++/30168
1160         * optimize.c (update_cloned_parm): Copy DECL_GIMPLE_REG_P also.
1162 2006-12-22  Kazu Hirata  <kazu@codesourcery.com>
1164         * decl.c: Fix a coment typo.
1166 2006-12-18  Ian Lance Taylor  <iant@google.com>
1168         * decl.c (start_preparsed_function): Add support for
1169         -Wmissing-declarations.
1171 2006-12-16  Simon Martin  <simartin@users.sourceforge.net>
1173         PR c++/29475
1174         * cp-tree.h (struct deferred_access_check): New structure to represent a
1175         deferred access check. It replaces the previous representation as a tree.
1176         (get_deferred_access_checks): Return a vector of struct
1177         deferred_access_check instead of a tree list.
1178         (perform_access_checks): Take a vector of struct deferred_access_check
1179         instead of a tree list.
1180         * semantics.c (struct deferred_access): Store the deferred access checks
1181         as a vector of struct deferred_access_check instead of a tree list.
1182         (push_deferring_access_checks): Handle the change in struct
1183         deferred_access.
1184         (get_deferred_access_checks): Likewise.
1185         (pop_to_parent_deferring_access_checks): Likewise.
1186         (perform_or_defer_access_check): Likewise.
1187         (perform_access_checks): Take a vector of struct deferred_access_check
1188         instead of a tree list.
1189         * parser.c (struct tree_check): New structure to store various data
1190         associated with a CPP_NESTED_NAME_SPECIFIER or CPP_TEMPLATE_ID token.
1191         (struct cp_token): Changed the value field to be a union with a pointer to
1192         a struct tree_check for CPP_NESTED_NAME_SPECIFIER or CPP_TEMPLATE_ID
1193         tokens and a tree field for all other tokens.
1194         (eof_token): Adjusted due to the change in struct cp_token.
1195         (cp_lexer_get_preprocessor_token): Likewise.
1196         (cp_lexer_purge_token): Likewise.
1197         (cp_lexer_purge_tokens_after): Likewise.
1198         (cp_lexer_print_token): Likewise.
1199         (cp_parser_error): Likewise.
1200         (cp_parser_identifier): Likewise.
1201         (cp_parser_string_literal): Likewise.
1202         (cp_parser_primary_expression): Likewise.
1203         (cp_parser_unqualified_id): Likewise.
1204         (cp_parser_parenthesized_expression_list): Likewise.
1205         (cp_parser_storage_class_specifier_opt): Likewise.
1206         (cp_parser_function_specifier_opt): Likewise.
1207         (cp_parser_type_specifier): Likewise.
1208         (cp_parser_simple_type_specifier): Likewise.
1209         (cp_parser_initializer_list): Likewise.
1210         (cp_parser_member_specification_opt): Likewise.
1211         (cp_parser_attribute_list): Likewise.
1212         (cp_parser_objc_expression): Likewise.
1213         (cp_parser_objc_protocol_qualifiers): Likewise.
1214         (cp_parser_objc_selector): Likewise.
1215         (cp_parser_objc_declaration): Likewise.
1216         (cp_parser_objc_statement): Likewise.
1217         (cp_parser_omp_clause_name): Likewise.
1218         (cp_parser_omp_clause_default): Likewise.
1219         (cp_parser_omp_clause_schedule): Likewise.
1220         (cp_parser_omp_parallel): Likewise.
1221         (cp_parser_initial_pragma): Likewise.
1222         (pragma_lex): Likewise.
1223         (cp_parser_pre_parsed_nested_name_specifier): Likewise.
1224         (cp_parser_nested_name_specifier_opt): Likewise.
1225         Use cp_token::u::tree_check_value to save the token's value, the
1226         associated deferred checks and its qualifying scope.
1227         (cp_parser_template_id): Likewise.
1228         (cp_parser_template_declaration_after_export): Adjusted the call to
1229         get_deferred_access_checks.
1230         (cp_parser_init_declarator): Take the access checks as a vector of struct
1231         deferred_access_check instead of a tree list.
1232         (cp_parser_single_declaration): Likewise.
1233         (cp_parser_perform_template_parameter_access_checks): Likewise.
1234         (cp_parser_simple_declaration): Adjusted the call to
1235         cp_parser_init_declarator.
1236         (cp_parser_explicit_specialization): Adjusted the call to
1237         cp_parser_single_declaration.
1239 2006-12-13  Ian Lance Taylor  <iant@google.com>
1241         PR c++/19564
1242         PR c++/19756
1243         * parser.c (cp_parser_expression_stack_entry): Add field
1244         lhs_type.
1245         (cp_parser_binary_expression): Track tree code of left hand side
1246         of expression.  Use it when calling build_x_binary_op.
1247         (cp_parser_selection_statement): Add if_p parameter.  Change all
1248         callers.  Warn about ambiguous else.
1249         (cp_parser_statement): Add if_p parameter.  Change all callers.
1250         (cp_parser_implicitly_scoped_statement): Likewise.
1251         * typeck.c (build_x_binary_op): Add parameters arg1_code and
1252         arg2_code.  Change all callers.  Call warn_about_parentheses.
1253         * cp-tree.h (build_x_binary_op): Update declaration.
1255 2006-12-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1257         * decl.c (build_enumerator): Update error message to match C
1258         front-end.
1259         
1260 2006-12-11  Jan Hubicka  <jh@suse.cz>
1262         * decl2.c (var_finalized_p): Update for renamed varpool functions.
1264 2006-12-09  Zack Weinberg  <zackw@panix.com>
1266         * parser.c (yydebug, enum pragma_omp_clause): Delete.
1268 2006-12-07  Mark Mitchell  <mark@codesourcery.com>
1270         PR c++/29732
1271         * cp-tree.h (DECL_USE_TEMPLATE): Mention partial specializations.
1272         (explicit_class_specialization_p): Declare.
1273         * pt.c (explicit_class_specialization_p): New function.
1274         * parser.c (cp_parser_init_declarator): Check correct number of
1275         template parameters for in-class function definitions.
1276         (cp_parser_check_declrator_template_parameters): Stop looking for
1277         template classes when we find an explicit specialization.
1279 2006-12-07  Lee Millward  <lee.millward@codesourcery.com>
1281         PR c++/29980
1282         * cp_parser_elaborated_type_specifier: Check
1283         the return value of check_elaborated_type_specifier.
1285 2006-12-06  Mark Mitchell  <mark@codesourcery.com>
1287         PR c++/29730
1288         * parser.c (cp_parser_init_declarator): Reject initialization of
1289         functions.
1291 2006-12-05  Mark Mitchell  <mark@codesourcery.com>
1293         PR c++/29729
1294         * decl2.c (check_member_template): Move check for member
1295         templates in local classes to ...
1296         * parser.c (cp_parser_template_declaration_after_export):
1297         ... here.
1299         PR c++/29728
1300         * decl.c (check_array_designated_initializer): New function.
1301         (maybe_deduce_size_from_array_init): Use it.
1302         (reshape_init_array): Likewise.
1304 2006-12-05  Aldy Hernandez  <aldyh@redhat.com>
1306         Merge from gimple-tuples-branch.
1308         2006-10-05  Aldy Hernandez  <aldyh@redhat.com>
1310         * cp-gimplify.c (cp_gimplify_expr): Adjust for GIMPLE_MODIFY_STMT.
1311         (cxx_omp_clause_apply_fn): Adjust for GIMPLE_MODIFY_STMT.
1312         (cxx_omp_clause_copy_ctor): Same.
1313         (cxx_omp_clause_assign_op): Same.
1315         2006-09-28  Aldy Hernandez  <aldyh@redhat.com>
1317         * cp-tree.h (union lang_tree_node): Gimple statements do not
1318         have a TREE_CHAIN.
1319         (TREE_INDIRECT_USING): Look in base.
1321 2006-12-04  Jan Hubicka  <jh@suse.cz>
1323         * cp-objcp-common.c (cp_expr_size): Return NULL in the case
1324         size is undefined.
1326 2006-12-04  Mark Mitchell  <mark@codesourcery.com>
1328         PR c++/29733
1329         * pt.c (tsubst_decl): Disallow variables of function type.
1331         PR c++/29632
1332         * call.c (add_builtin_candidate): Do not permit NULL pointer
1333         constants to be compared with template parameters.
1335 2006-12-04  Eric Botcazou  <ebotcazou@adacore.com>
1337         * pt.c (for_each_template_parm_r) <INTEGER_TYPE>: New case.
1338         Call for_each_template_parm on TYPE_MIN_VALUE and TYPE_MAX_VALUE.
1340 2006-12-03  Richard Henderson  <rth@redhat.com>
1341             Andrew Pinski  <pinskia@gmail.com>
1343         PR C++/14329
1344         * error.c (cp_printer) <'D'>: Handle DECL_DEBUG_EXPR.
1346 2006-12-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1348         PR C++/30033
1349         * decl.c (cp_tree_node_structure): Handle STATIC_ASSERT.
1351 2006-12-02  Kazu Hirata  <kazu@codesourcery.com>
1353         * name-lookup.c: Follow spelling conventions.
1355 2006-12-01  Geoffrey Keating  <geoffk@apple.com>
1357         * decl.c (poplevel): Check DECL_INITIAL invariant.
1358         (duplicate_decls): Preserve DECL_INITIAL when eliminating
1359         a new definition in favour of an old declaration.
1360         (start_preparsed_function): Define and document value of
1361         DECL_INITIAL before and after routine.
1362         (finish_function): Check DECL_INITIAL invariant.
1363         * parser.c
1364         (cp_parser_function_definition_from_specifiers_and_declarator):
1365         Skip duplicate function definitions.
1367 2006-12-01  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1369         PR c++/30022
1370         * typeck.c (type_after_usual_arithmetic_conversions):
1371         Fix assertion for vector types.
1372         (build_binary_op): Use temporary for inner type of vector types.
1374 2006-12-01  Ryan Mansfield  <rmansfield@qnx.com>
1376         PR c++/29066
1377         * typeck.c (build_binary_op):  Fix pointer to member function
1378         comparison for ptrmemfunc_vbit_in_delta targets.
1380 2006-12-01  Dirk Mueller  <dmueller@suse.de>
1382         PR c++/18313
1383         * decl.c (grokdeclarator): Warn for type qualifiers on return
1384         type for non-dependent types.
1385         * pt.c (tsubst_function_type): Warn for type qualifiers on
1386         return type for dependent types.
1388 2006-11-30  Geoffrey Keating  <geoffk@apple.com>
1390         * rtti.c (get_tinfo_decl): Handle return value from
1391         pushdecl_top_level_and_finish.
1393 2006-11-29  Lee Millward  <lee.millward@codesourcery.com>
1395         PR c++/29022
1396         * parser.c (cp_parser_class_head): Move processing
1397         of any base classes to...
1398         (cp_parser_class_specifier) ...here. Take an extra
1399         tree* parameter for any base classes. Only process
1400         them if the opening brace was found.
1402 2006-11-28  Jakub Jelinek  <jakub@redhat.com>
1404         PR c++/29735
1405         * decl.c (grokfndecl): Check main's type after applying
1406         attributes, not before.
1408 2006-11-27  Mark Mitchell  <mark@codesourcery.com>
1410         * class.c (build_vcall_offset_vtbl_entries): Do not add vcall
1411         entries for a primary construction virtual table.
1413 2006-11-26  Mark Mitchell  <mark@codesourcery.com>
1415         PR c++/29886
1416         * parser.c (cp_parser): Add in_function_body.
1417         (cp_parser_new): Initialize it.
1418         (cp_parser_primary_expression): Use parser->in_function_body
1419         instead of at_function_scope_p.
1420         (cp_parser_asm_definition): Likewise.
1421         (cp_parser_direct_declarator): Likewise.
1422         (cp_parser_class_specifier): Clear parser->in_function_body.
1423         (cp_parser_constructor_declarator_p): Use parser->in_function_body
1424         instead of at_function_scope_p.
1425         (cp_parser_function_body_after_declarator): Set
1426         parser->in_function_body.
1428 2006-11-21      Douglas Gregor <doug.gregor@gmail.com>
1430         * cp-tree.def (STATIC_ASSERT): New.
1431         * cp-objcp-common.c (cp_tree_size): Handle STATIC_ASSERT.
1432         * error.c (dump_decl): Handle STATIC_ASSERT.
1433         * cp-tree.h (STATIC_ASSERT_CONDITION): New.
1434         (STATIC_ASSERT_MESSAGE): New.
1435         (STATIC_ASSERT_SOURCE_LOCATION): New.
1436         (struct tree_static_assert): New.
1437         (enum cp_tree_node_structure_enum): Add TS_CP_STATIC_ASSERT.
1438         (union lang_tree_node): Add static_assertion.
1439         (finish_static_assert): Declare.
1440         * cxx-pretty-print.c (pp_cxx_statement): Handle STATIC_ASSERT.
1441         (pp_cxx_declaration): Handle STATIC_ASSERT.
1442         * pt.c (instantiate_class_template): Handle
1443         STATIC_ASSERT members.
1444         (tsubst_expr): Handle STATIC_ASSERT statements.
1445         * semantics.c (finish_static_assert): New.
1446         * lex.c (D_CPP0X): New.
1447         (reswords): Add static_assert keyword.
1448         (init_reswords): If not flag_cpp0x, mask out C++0x keywords.
1449         * parser.c (cp_parser_block_declaration): Parse static
1450         assertions.
1451         (cp_parser_static_assert): New.
1452         (cp_parser_member_declaration): Parse static assertions.
1454 2006-11-21  Jakub Jelinek  <jakub@redhat.com>
1456         PR c++/29570
1457         * decl.c (cp_finish_decl): Check for value dependent brace enclosed
1458         scalar initializer.
1460         PR c++/29734
1461         * cp-tree.h (WANT_VECTOR): Define.
1462         (WANT_ARITH): Add WANT_VECTOR.
1463         * cvt.c (build_expr_type_conversion): Handle vector types.
1464         * typeck.c (build_unary_op): Add WANT_VECTOR to
1465         build_expr_type_conversion flags.
1467 2006-11-20  Simon Martin  <simartin@users.sourceforge.net>
1469         PR c++/29475
1470         * cp-tree.h (enforce_access, perform_or_defer_access_check): Added an
1471         extra argument that represents the declaration to use to print
1472         potential error messages.
1473         * init.c (build_offset_ref): Adjusted the call to
1474         perform_or_defer_access_check.
1475         * class.c (alter_access, resolve_address_of_overloaded_function):
1476         Likewise.
1477         * decl.c (make_typename_type, make_unbound_class_template): Likewise.
1478         * search.c (lookup_member): Likewise.
1479         * friend.c (add_friend): Likewise.
1480         * parser.c (cp_parser_template_id,
1481         cp_parser_pre_parsed_nested_name_specifier): Likewise.
1482         * semantics.c (finish_non_static_data_member,
1483         check_accessibility_of_qualified_id, finish_id_expression): Likewise.
1484         (pop_to_parent_deferring_access_checks, perform_access_checks,
1485         perform_or_defer_access_check): Adjusted the call to enforce_access.
1486         * call.c (enforce_access): Use the new extra argument to build the
1487         error message.
1488         (build_op_delete_call): Adjusted the call to
1489         perform_or_defer_access_check.
1490         (build_over_call): Likewise.
1492 2006-11-16  Dirk Mueller  <dmueller@suse.de>
1494         * name-lookup.c (begin_scope): Use GGC_CNEW instead of
1495         GGC_NEW and memset.
1497 2006-11-13  Roger Sayle  <roger@eyesopen.com>
1499         * rtti.c (get_pseudo_ti_init): Ensure that the offset field of the
1500         base type info initializer has the correct type.
1502 2006-11-13  Mark Mitchell  <mark@codesourcery.com>
1504         PR c++/29518
1505         * pt.c (coerce_template_parms): Do not skip_evaluation while
1506         substituting template arguments.
1508 2006-11-11  Richard Guenther  <rguenther@suse.de>
1510         * typeck.c (build_unary_op): Remove handling of FIX_CEIL_EXPR,
1511         FIX_FLOOR_EXPR and FIX_ROUND_EXPR.
1513 2006-11-03  Roger Sayle  <roger@eyesopen.com>
1515         * call.c (build_op_delete_call): Test user-visible type against
1516         size_type_node, instead of against the internal type, sizetype.
1517         * class.c (type_requires_array_cookie): Likewise.
1518         * mangle.c (write_builtin_type) <INTEGER_TYPE>: Remove special
1519         handling of TYPE_IS_SIZETYPE.
1520         * typeck.c (type_after_usual_arithmetic_conversions): Remove
1521         special case handling of TYPE_IS_SIZETYPE.
1522         (comptypes): Likewise.
1524 2006-11-01  Danny Smith  <dannysmith@users.sourceforge.net>
1526         * decl.c (get_atexit_node): Reference atexit, not __cxa_exit.
1527         if targetm.cxx.use_atexit_for cxa_atexit.
1528         (start_cleanup_fn): Likewise.
1529         (register_dtor_fn): Likewise.
1531 2006-09-25  Geoffrey Keating  <geoffk@apple.com>
1533         * decl2.c (cp_write_global_declarations): Rename from
1534         cp_finish_file.
1535         * cp-lang.c (finish_file): Don't call cp_finish_file.
1536         * cp-tree.h (cp_write_global_declarations): Rename from
1537         cp_finish_file.
1538         * cp-objcp-common.h (LANG_HOOKS_WRITE_GLOBALS): Define to
1539         cp_write_global_declarations.
1541 2006-10-31  Geoffrey Keating  <geoffk@apple.com>
1543         * name-lookup.c (get_anonymous_namespace_name): New.
1544         (push_namespace_with_attribs): Use get_anonymous_namespace_name.
1545         * decl2.c (start_objects): Update for rename of
1546         get_file_function_name_long.
1548 2006-10-30  Dirk Mueller  <dmueller@suse.de>
1550         PR c++/28704
1551         * decl.c (grokdeclarator): Duplicate diagnostic message
1552         for easier translation.
1553         * decl.c (grokdeclarator): Fix line-wrapping.
1555 2006-10-30  Dirk Mueller  <dmueller@suse.de>
1557         PR c++/6321
1558         * decl.c (grokfndecl): Use check_main_parameter_types.
1560 2006-10-30  Dirk Mueller  <dmueller@suse.de>
1562         PR c++/28669
1563         * decl.c (grokfndecl): Duplicate warning message for
1564         easier translation.
1566 2006-10-30  Dirk Mueller  <dmueller@suse.de>
1568         * typeck.c (build_unary_op): Fix indenting. Use G_().
1570 2006-10-29  Dirk Mueller  <dmueller@suse.de>
1572         PR c++/29089
1573         * typeck.c (build_unary_op): Duplicate warning message
1574         for easier translation.
1576 2006-10-29  Dirk Mueller  <dmueller@suse.de>
1578         PR c++/16307
1579         * typeck.c (build_array_ref): Warn for char subscriptions
1580         on pointers.
1582 2006-10-29  Kazu Hirata  <kazu@codesourcery.com>
1584         * decl.c: Fix a comment typo.
1586 2006-10-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1588         PR C++/29295
1589         * typeck.c (build_unary_op): Use same_type_p when comparing to
1590         boolean type.
1592 2006-10-29  Dirk Mueller  <dmueller@suse.de>
1594         PR c++/29033
1595         * typeck.c (build_binary_op): Duplicate warning message
1596         for better translation.
1598 2006-10-23  Rafael Avila de Espindola  <rafael.espindola@gmail.com>
1600         * decl.c (builtin_function_1): Move common code to
1601         add_builtin_function.
1602         (builtin_function): Rename to cxx_builtin_function.
1603         Change the signature.
1604         * call.c: Include langhooks.h.
1605         (build_java_interface_fn_ref):  Replace calls to
1606         builtin_function with add_builtin_function.
1607         * Make-lang.in (cp/call.o): Depend on langhooks.h.
1608         * cp-objcp-common.h (LANG_HOOKS_BUILTIN_FUNCTION): Define as
1609         cxx_builtin_function.
1610         * cp-tree.h (builtin_function): Rename to cxx_builtin_function.
1611         Change the signature.
1613 2006-10-22  Nathan Sidwell  <nathan@codesourcery.com>
1615         PR c++/20647
1616         * rtti.c (tinfo_base_init): The type info string is always global.
1618 2006-10-20  Lee Millward  <lee.millward@codesourcery.com>
1619             Mark Mitchell <mark@codesourcery.com>
1621         PR c++/28053
1622         * decl2.c (grokbitfield): Detect invalid non-integral
1623         types earlier when possible.
1625 2006-10-18  Mark Shinwell  <shinwell@codesourcery.com>
1627         PR c++/26884
1628         * typeck2.c (digest_init): Raise error upon attempts to
1629         initialize arrays with variables.
1631 2006-10-17  Lee Millward  <lee.millward@codesourcery.com>
1633         PR c++/27952
1634         * cp-tree.h (xref_basetypes): Return bool instead of void.
1635         * decl.c (xref_basetypes): Adjust definition. Return false
1636         if the class bases are invalid.
1637         * parser.c (cp_parser_class_head): Check the return value
1638         from xref_basetypes.
1640 2006-10-17  Mark Mitchell  <mark@codesourcery.com>
1642         PR c++/28261
1643         * parser.c (cp_lexer_next_token_is_decl_specifier_keyword): Add
1644         comment.
1646         PR c++/28261
1647         * parser.c (cp_lexer_next_token_is_decl_specifier_keyword): New
1648         function.
1649         (cp_parser_constructor_declarator_p): Use it.
1650         (cp_parser_check_type_definition): Return a value indicating
1651         whether or not the definition is valid.
1652         (cp_parser_enum_specifier): Skip invalid enum definitions.
1654 2006-10-17  Mark Mitchell  <mark@codesourcery.com>
1656         PR c++/29039
1657         * typeck2.c (build_functional_cast): Don't zero-initialize
1658         non-PODs; instead, call their constructors.
1659         * method.c (synthesize_method): Always build mem-initializers, if
1660         we're synthesizing the default constructor.
1662 2006-10-17  Mark Mitchell  <mark@codesourcery.com>
1664         PR c++/27270
1665         * decl.c (reshape_init_class): Move check for designated
1666         to ...
1667         * parser.c (cp_parser_initializer_list): ... here.
1668         * pt.c (tsubst_copy_and_build): Use finish_compound_literal.
1670 2006-10-16  Mark Mitchell  <mark@codesourcery.com>
1672         PR c++/27270
1673         * typeck2.c (process_init_constructor_array): Reword comment.
1674         * pt.c (tsubst_copy_and_built): Call reshape_init before calling
1675         digest_init.
1677         PR c++/29408
1678         * parser.c (cp_parser_using_declaration): Stop parsing when
1679         something goes wrong with an access declaration.
1681         PR c++/29435
1682         * typeck.c (cxx_sizeof_or_alignof_type): Complete non-dependent
1683         types when their sizes are required.  Refine test for VLAs.
1685         PR c++/28211
1686         * parser.c (cp_parser_template_argument): Don't consider "&var" a
1687         possible constant-expression.
1688         * pt.c (convert_nontype_argument): Refine handling of arguments of
1689         pointer type.
1691 2006-10-13  Mark Mitchell  <mark@codesourcery.com>
1693         PR c++/28506
1694         * parser.c (function_declarator_p): New function.
1695         (cp_parser_init_declarator): Use it.
1696         (cp_parser_member_declaration): Likewise.
1698 2006-10-12  Mark Mitchell  <mark@codesourcery.com>
1700         PR c++/29318
1701         * rtti.c (get_tinfo_decl): Refuse to create type info objects for
1702         variably modified types.
1704 2006-10-12 Lee Millward <lee.millward@codesourcery.com>
1706        PR c++/27961
1707        * decl.c (start_decl): Return error_mark_node if a
1708        function is initialized like a variable.
1709        (check_var_type): If a variable of field is declared void,
1710        set the type to error_mark_node.
1711        (grokdeclarator): Check the return type of check_var_type.
1712        * class.c (finish_struct_1): Robustify.
1714 2006-10-11  Mark Mitchell  <mark@codesourcery.com>
1716         PR c++/29175
1717         * decl.c (check_initializer): Issue errors about trying to
1718         initialize arrays whose elements have variable size.
1720 2006-10-11  Lee Millward  <lee.millward@codesourcery.com>
1722         PR c++/29024
1723         * cp-tree (struct cp_decl_specifier_seq): Rename to
1724         conflicting_specifiers_p
1725         * parser.c (cp_parser_set_storage_class): Set
1726         conflicting_specifiers_p for the input decl specifier
1727         if a typedef specifier is present. Rename uses of
1728         multiple_specifiers_p to conflicting_specifiers_p.
1729         (cp_parser_decl_specifier_seq) <RID_TYPEDEF>: If a storage
1730         class specifier has already been set for this declaration,
1731         set conflicting_specifiers_p to true on the decl_specs.
1732         * decl.c (grokdeclarator): Rename uses of
1733         multiple_specifiers_p to conflicting_specifiers_p.
1735 2006-10-10  Brooks Moses  <bmoses@stanford.edu>
1737         * Make-lang.in: Added "c++.pdf" target support.
1739 2006-10-10  Richard Guenther  <rguenther@suse.de>
1741         PR rtl-optimization/29323
1742         * decl.c (finish_function): Set TREE_NOTHROW only for
1743         functions that bind local.
1745 2006-10-09  Richard Henderson  <rth@redhat.com>
1747         Revert emutls patch.
1749 2006-10-04  Richard Henderson  <rth@redhat.com>
1750             Jakub Jelinek  <jakub@redhat.com>
1752         * decl.c (grokvardecl): Don't error if !have_tls.
1753         (grokdeclarator): Likewise.
1754         * parser.c (cp_parser_omp_threadprivate): Likewise.
1756 2006-10-03  Mark Mitchell  <mark@codesourcery.com>
1758         PR c++/29020
1759         * friend.c (do_friend): Improve comments; add assertion.
1760         * parser.c (cp_parser_nested_name_specifier_opt): Resolve
1761         typenames for qualified names used in declarations, even when
1762         caching qualified name lookup.
1764         PR c++/29138
1765         * decl2.c (grokfield): Don't handle access declarations here.
1766         * parser.c (cp_parser_using_declaration): Handle access
1767         declarations too.
1768         (cp_parser_block_declaration): Adjust calls to
1769         cp_parser_using_declaration.
1770         (cp_parser_member_declaration): Likewise.  Use
1771         cp_parser_using_declaration to look for access_declarations.
1773 2006-10-03  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1775         PR c++/29291
1776         * init.c (build_new): Check for invalid init.
1778 2006-10-02  Mark Mitchell  <mark@codesourcery.com>
1780         PR c++/29226
1781         * typeck.c (cxx_sizeof_or_alignof_type): Tidy.  In templates, do
1782         not try to actually evaluate sizeof for a VLA type.
1784 2006-10-01  Mark Mitchell  <mark@codesourcery.com>
1786         PR c++/29105
1787         * pt.c (tsubst_baselink): Substituteinto the qualifying scope.
1788         * semantics.c (baselink_for_fns): Build a baselink, even when
1789         processing a template.
1791         PR c++/29080
1792         * parser.c (cp_parser_postfix_dot_deref_expression): Use
1793         BASELINK_ACCESS_BINFO as the qualifying scope when calling
1794         adjust_result_of_qualified_name_lookup.
1796 2006-09-25  Lee Millward  <lee.millward@codesourcery.com>
1798         PR c++/27329
1799         PR c++/26938
1800         * cp-tree.h (redeclare_class_template): Adjust declaration
1801         to return bool instead of void.
1802         * pt.c (redeclare_class_template): Update definition.
1803         Return false on error.
1804         * decl.c (xref_tag): Return error_mark_node if
1805         redeclare_class_template returned false.
1807         PR c++/27667
1808         * cp-tree.h (begin_specialization): Return bool
1809         instead of void.
1810         * pt.c (check_specialization_scope): Likwise.
1811         Adjust comment. Return false if a specialization
1812         isn't permitted in the current scope.
1813         (begin_specialization): Use the return value of
1814         check_specialization_scope.
1815         * parser.c (cp_parser_explicit_specialization): If
1816         begin_specialization returned false, skip the rest
1817         of the specialization.
1819 2006-09-21  Mark Mitchell  <mark@codesourcery.com>
1821         PR c++/29016
1822         * typeck.c (build_unary_op): Don't form an ADDR_EXPR around a
1823         BASELINK.
1825 2006-09-21  Lee Millward  <lee.millward@codesourcery.com>
1827         PR c++/28861
1828         * decl.c (shadow_tag): Return error_mark_node
1829         if maybe_process_partial_specialization failed.
1831         PR c++/28303
1832         * decl.c (grokdeclarator): Return error_mark_node on
1833         declaration with two or more data types.
1835 2006-09-20  Danny Smith  <dannysmith@users.sourceforge.net>
1837         PR target/27650
1838         * class.c (check_for_override): Remove dllimport from virtual
1839         methods.
1841 2006-09-18  Steven Bosscher  <steven@gcc.gnu.org>
1843         PR c++/29087
1844         * parser.c (cp_parser_labeled_statement): Return nothing.  Do
1845         not take in_statement_expr and in_compound as arguments.  Rename
1846         to cp_parser_label_for_labeled_statement.  Parse only the label,
1847         not the statement.
1848         (cp_parser_statement): Parse the statement of a labeled-statement
1849         from here, using tail recursion.
1851 2006-09-14  Andrew Pinski  <pinskia@physics.uc.edu>
1853         PR C++/29002
1854         * init.c (build_zero_init): If we have an error mark node for
1855         the array size, return.
1857 2006-09-10  Mark Mitchell  <mark@codesourcery.com>
1859         PR c++/28991
1860         * cp-objcp-common.c (cxx_staticp): New function.
1861         * cp-objcp-common.h (LANG_HOOOKS_STATICP): Use it.
1862         * cp-tree.h (cxx_staticp): New function.
1864 2006-09-09  Jason Merrill  <jason@redhat.com>
1866         PR c++/28996
1867         * cvt.c (convert_to_void): Strip COMPONENT_REF to functions.
1869 2006-09-08  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1871         PR c++/28858
1872         * parser.c (cp_parser_skip_until_found): Rename to
1873         cp_parser_skip_to_end_of_template_parameter_list.  Remove last two
1874         parameters.  Track levels of '< ... >'.  Stop at '{', '}', or ';'.
1875         Reorganize.  Adjust comment.
1876         (cp_parser_template_declaration_after_export): Adjust call.
1877         (cp_parser_enclosed_template_argument_list): Likewise.
1879 2006-09-07  Andrew Pinski  <pinskia@physics.uc.edu>
1881         PR C++/28906
1882         * init.c (build_new_1): Build a distinct type copy
1883         for the array type that was returned from
1884         build_cplus_array_type.
1886 2006-09-07  Jason Merrill  <jason@redhat.com>
1888         PR c++/27371
1889         * cvt.c (convert_to_void): Enable previous change.
1891         PR c++/26957
1892         * method.c (use_thunk): Clear DECL_HAS_VALUE_EXPR_P on copied
1893         parms.
1895 2006-09-07  Simon Martin  <simartin@users.sourceforge.net>
1897         PR c++/28284
1898         * pt.c (fold_non_dependent_expr): Make sure expr is not
1899         dereferenced if it is NULL.
1901 2006-09-06  Zak Kipling  <zak@transversal.com>
1903         PR c++/26195
1904         * decl.c (make_rtl_for_nonlocal_decl),
1905         (start_preparsed_function): Don't use lbasename on
1906         input_filename when calling get_fileinfo.
1907         * semantics.c (begin_class_definition): Likewise.
1908         * lex.c (cxx_make_type): Likewise.
1909         (handle_pragma_interface): Call get_fileinfo on input_filename,
1910         not on the parameter to the directive.
1912 2006-09-06  Mark Mitchell  <mark@codesourcery.com>
1914         PR c++/28903
1915         * pt.c (tsubst): Use fold_non_dependent_expr to fold array
1916         dimensions.
1918         PR c++/28886
1919         * pt.c (unify): Avoid unnecessary calls to fold_build2 for array
1920         dimensions.
1922 2006-09-06  Jason Merrill  <jason@redhat.com>
1924         PR c++/27371
1925         * cvt.c (convert_to_void): Strip useless TARGET_EXPR.
1926         * cp-tree.h (TARGET_EXPR_IMPLICIT_P): New macro.
1927         * tree.c (build_cplus_new): Set it.
1929         PR c++/26696
1930         * cvt.c (convert_to_void): Replace a subexpression with no side
1931         effects with void_zero_node.
1932         * tree.c (is_overloaded_fn): Look through COMPONENT_REF.
1933         (get_first_fn): Ditto.
1934         * decl.c (grokdeclarator): No need to look through COMPONENT_REF.
1936 2006-09-05  Jason Merrill  <jason@redhat.com>
1938         PR c++/26571
1939         * parser.c (cp_parser_diagnose_invalid_type_name): Handle the case
1940         where the name is a type used incorrectly.
1942         PR c++/26671
1943         * typeck.c (maybe_warn_about_returning_address_of_local): Look
1944         through COMPONENT_REF and ARRAY_REF.
1946         PR c++/26102
1947         * name-lookup.c (do_class_using_decl): Try to find the base even
1948         if bases_dependent_p.
1949         * pt.c (type_dependent_expression_p): A USING_DECL is dependent.
1951         PR c++/19809
1952         * pt.c (tsubst_friend_function): Set DECL_INITIAL before pushdecl.
1954 2006-09-04  Nathan Sidwell  <nathan@codesourcery.com>
1956         PR 23287 Revert my 2006-09-01 patch.
1957         * parser.c: Reverted.
1958         * pt.c: Reverted.
1960 2006-09-02  Lee Millward  <lee.millward@codesourcery.com>
1962         PR c++/27670
1963         PR c++/27493
1964         PR c++/27494
1965         PR c++/27397
1966         * parser.c (cp_parser_template_parameter_list): Add
1967         invalid template parameters to the parameter list as
1968         error_mark_node.
1970 2006-09-02  Jakub Jelinek  <jakub@redhat.com>
1972         PR c++/28878
1973         * except.c (build_throw): Only set current_function_returns_abnormally
1974         if cfun is not NULL.
1976         PR c++/26917
1977         * repo.c (repo_file): Remove.
1978         (open_repo_file, reopen_repo_file_for_write): Return fopened
1979         FILE * instead of setting global repo_file variable.
1980         (init_repo): Adjust caller.
1981         (finish_repo): Likewise.  Return instead of goto out before
1982         reopen_repo_file_for_write has been called.
1984 2006-09-01  Nathan Sidwell  <nathan@codesourcery.com>
1986         PR c++/28705
1987         * semantics.c (finish_call_expr): Add assert.
1988         * name-lookup.c (lookup_arg_dependent): Check we found an overload
1989         or an object.
1991         PR c++/23287
1992         * parser.c (cp_parser_id_expression): Add member_p
1993         argument. Update all callers.
1994         (cp_parser_unqualified_id): Likewise.  Lookup a destructor name in
1995         the object's scope, if valid.
1996         (cp_parser_global_scope_opt): Add object_scope_valid_p.  Update
1997         callers.
1998         (cp_parser_postfix_dot_deref_expression): Set object_scope.
1999         * pt.c (tsubst_copy_and_build): Lookup dependent dtor name here.
2001 2006-08-30  Jason Merrill  <jason@redhat.com>
2003         PR c++/26670
2004         * class.c (check_field_decls): Don't unset TYPE_PACKED until all
2005         the fields have been processed.
2007 2006-08-29  Andrew Pinski  <pinskia@physics.uc.edu>
2009         PR C++/28349
2010         * call.c (build_x_va_arg): Remove the reference type
2011         from the type before creating the pointer type.
2013 2006-08-29  J"orn Rennecke  <joern.rennecke@st.com>
2015         PR c++/28139
2016         * except.c (expand_start_catch_block): Use correct types for bitwise
2017         copy.
2019 2006-08-28  Jason Merrill  <jason@redhat.com>
2021         PR c++/26670
2022         * class.c (check_field_decls): Unset TYPE_PACKED (t) if one of the
2023         fields can't be packed.
2025         PR c++/26577
2026         * cvt.c (convert_to_void): Don't automatically load from volatiles
2027         of TREE_ADDRESSABLE type.
2029 2006-08-28  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2031         PR c++/28860
2032         * cp-tree.h (maybe_process_partial_specialization): Return
2033         tree instead of void.
2034         * parser.c (cp_parser_class_head): Use return value of
2035         maybe_process_partial_specialization.
2036         * pt.c (maybe_process_partial_specialization): Return error_mark_node
2037         for broken specializations, TYPE otherwise.  Check for template
2038         template parameters.
2040 2006-08-27  Mark Mitchell  <mark@codesourcery.com>
2042         PR c++/28058
2043         * pt.c (register_specialization): Return error_mark_node for
2044         specialization-after-instantiation.
2045         * decl2.c (mark_used): Mark the main function used when one of its
2046         clones is used.
2048 2006-08-27  Lee Millward  <lee.millward@codesourcery.com>
2050         PR c++/26573
2051         * class.c (check_field_decls): Don't issue error about
2052         local classes containing static data members.
2054 2006-08-26  Joseph S. Myers  <joseph@codesourcery.com>
2056         PR c++/24009
2057         * parser.c (struct cp_token): Add input_file_stack_index.
2058         (eof_token): Update.
2059         (cp_lexer_get_preprocessor_token): Save input_file_stack_tick.
2060         (cp_lexer_set_source_position_from_token): Restore input file
2061         stack.
2063 2006-08-26  Lee Millward  <lee.millward@codesourcery.com>
2065         PR c++/28736
2066         PR c++/28737
2067         PR c++/28738
2068         * pt.c (process_template_parm): Store invalid template
2069         parameters as a TREE_LIST with a TREE_VALUE of error_mark_node.
2070         (push_inline_template_parms_recursive): Check for template
2071         parameters having a TREE_VALUE of error_mark_node rather than
2072         check the parameter itself.
2073         (mangle_class_name_for_template): Likewise.
2074         (comp_template_parms): When comparing the individual template
2075         parameters, return 1 if either is error_mark_node.
2076         (current_template_args): Robustify.
2077         (redeclare_class_template): Likewise.
2079 2006-08-26  Mark Mitchell  <mark@codesourcery.com>
2081         PR c++/28588
2082         * class.c (resolve_address_of_overloaded_function): Add
2083         access_path parameter.  Perform access checks.
2084         (instantiate_type): Adjust call to
2085         resolve_address_of_overloaded_function.  Remove unnecessary code.
2086         * tree.c (is_overloaded_fn): Document.  Return 2 when there are
2087         acutally multiple functions.
2088         (really_overloaded_fn): Use is_overloaded_fn.
2089         * mangle.c (write_expression): Handle BASELINKs.
2090         * cp-tree.h (really_overloaded_fn): Return bool.
2091         (baselink_for_fns): Declare.
2092         * search.c (lookup_member): Check access for single static
2093         functions here.
2094         * pt.c (convert_nontype_argument_function): Handle BASELINKs.
2095         (tsubst_copy_and_build): Generate BASELINKs for template-ids.
2096         * semantics.c (finish_call_expr): Use baselink_for_fns.
2097         (baselink_for_fns): New function.
2098         (finish_id_expression): Use it.
2099         * parser.c (cp_parser_template_argument): Don't strip BASELINKs.
2101         PR c++/28595
2102         * pt.c (tsubst): Issue errors about attempts to create VLAs at
2103         template-instantiation time.
2105 2006-08-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2107         PR c++/28853
2108         * typeck2.c (cxx_incomplete_type_diagnostic): Handle template
2109         template parameters.  Improve error message for template type
2110         parameters.
2112         PR c++/28852
2113         * cp-tree.h (grok_op_properties): Return bool instead of void.
2114         * decl.c (grokfndecl): Discard invalid operator declarations.
2115         (copy_fn_p): Revert change for PR 27547.
2116         (grok_op_properties): Return error status (true on success).
2117         * pt.c (tsubst_decl): Discard invalid operator declarations.
2119 2006-08-25  Mark Mitchell  <mark@codesourcery.com>
2121         PR c++/28056
2122         * decl.c (grokdeclarator): Disallow declarations with qualified
2123         names in local scopes.
2125 2006-08-25  Nathan Sidwell  <nathan@codesourcery.com>
2127         PR c++/27787
2128         * decl.c (make_typename_type): Only try and resolve it when
2129         context is not dependent.  Refactor.
2130         * decl2.c (check_classfn): Push to class scope before looking for
2131         the function.
2133 2006-08-24  Danny Smith   <dannysmith@users.sourceforge.net>
2135         PR driver/28528
2136         * g++spec.c (lang_specific_driver): Always check if we need to
2137         swallow a space-separated  arg to '-x'.
2138         * lang-specs.h: Don't create ouput files for '-xc++-header'
2139         if -fsyntax-only.
2141 2006-08-23  Jason Merrill  <jason@redhat.com>
2143         PR c++/27714
2144         * pt.c (push_template_decl_real): A friend template with class
2145         scope isn't primary.
2147 2006-08-23  Benjamin Smedberg <benjamin@smedbergs.us>
2149         PR c++/28687
2150         * rtti.c (build_dynamic_cast, build_dynamic_cast_1):
2151         Move -fno-rtti check to be more specific.
2153 2006-08-22  Jason Merrill  <jason@redhat.com>
2155         PR c++/23372
2156         * call.c (build_over_call): Don't make a copy here if build_call
2157         will make one too.
2159 2006-08-22  Andrew Pinski  <pinskia@physics.uc.edu>
2161         PR C++/28450
2162         * cp/init.c (build_zero_init): Handle VECTOR_TYPE and
2163         COMPLEX_TYPEs.
2165 2006-08-22  Simon Martin  <simartin@users.sourceforge.net>
2167         PR c++/28420
2168         * parser.c (cp_parser_postfix_expression): Make sure that the
2169         saved value for parser->type_definition_forbidden_message is
2170         restored before returning to avoid an invalid free().
2172 2006-08-22  Jason Merrill  <jason@redhat.com>
2174         PR c++/28659
2175         * typeck.c (merge_types): If either of the types have the right
2176         attributes, return that one.
2178         * tree.c (cp_build_type_attribute_variant): Make sure we aren't
2179         doing this to class types.
2180         * typeck.c (original_type): Deal with type quals properly.
2182 2006-08-21  Jason Merrill  <jason@redhat.com>
2184         PR c++/27115
2185         * semantics.c (finish_stmt_expr_expr): Don't try to voidify here,
2186         just leave the expression as it is.
2187         (finish_stmt_expr): If the statement-expression has class type,
2188         wrap it in a TARGET_EXPR.
2189         * cp-gimplify.c (cp_gimplify_init_expr): Don't bother with
2190         CLEANUP_POINT_EXPR.
2191         * except.c (build_throw): Give the CLEANUP_POINT_EXPR void type.
2193 2006-08-21  Lee Millward  <lee.millward@codesourcery.com>
2195         PR c++/26269
2196         * decl.c (duplicate_decls): Return early if either
2197         newdecl or olddecl is error_mark_node.
2199          PR c++/28505
2200         * decl.c (grokdeclarator): Return early after
2201         issuing diagnostic about an incomplete type.
2203         PR c++/28741
2204         * tree.c (decl_anon_ns_mem_p): Robustify.
2205         * decl2.c (determine_visibility): Likewise.
2207 2006-08-20  Mark Mitchell  <mark@codesourcery.com>
2209         PR c++/28341
2210         * tree.c (cast_valid_in_integral_constant_expression_p): New
2211         function.
2212         * cp-tree.h (tsubst_copy_and_build): Adjust prototype.
2213         * pt.c (tsubst_expr): Add integral_constant_expression_p
2214         parameter.
2215         (fold_non_dependent_expr): Adjust callers of
2216         tsubst_{expr,copy_and_build}.
2217         (tsubst_friend_function): Likewise.
2218         (tsubst_template_arg): Likewise.
2219         (tsubst_default_argument): Likewise.
2220         (tsubst_decl): Likewise.
2221         (tsubst): Likewise.
2222         (tsubst_omp_clasuses): Likewise.
2223         (regenerate_decl_fromp_template): Likewise.
2224         (instantiate_decl): Likewise.
2225         (tsubst_initializer_list): Likewise.
2226         (tsubst_enum): Likewise.
2227         (tsubst_expr): Use RECUR throughout.
2228         (tsubst_copy_and_build): Change definition of RECUR.  Do not allow
2229         invalid casts in integral constant expressions.
2230         * parser.c (cp_parser_postfix_expression): Use
2231         cast_valid_in_integral_constant_expression_p.
2232         (cp_parser_cast_expression): Likewise.
2233         (cp_parser_functional_cast): Likewise.
2235         PR c++/28346
2236         * pt.c (tsubst_qualified_id): Do not strip references from
2237         OFFSET_REFs.
2239 2006-08-17  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2241         PR c++/28606
2242         * parser.c (cp_parser_diagnose_invalid_type_name): Handle BIT_NOT_EXPR.
2243         Fix formatting.
2244         (cp_parser_parse_and_diagnose_invalid_type_name): Tighten condition
2245         for valid type-names.
2246         (cp_parser_unqualified_id): Fix error handling for destructors.
2248         PR c++/28710
2249         * decl.c (xref_tag): Improve error message.  Return early on error.
2251         PR c++/28711
2252         * pt.c (tsubst_copy_and_build) <case CONSTRUCTOR>: Robustify.
2254 2006-08-17  Paolo Bonzini  <bonzini@gnu.org>
2256         PR c++/28573
2257         * semantics.c (finish_offsetof): Add new argument to fold_offsetof.
2259 2006-08-16  Andrew Pinski  <pinskia@physics.uc.edu>
2261         PR c++/28302
2262         * typeck.c (build_unary_op <case BIT_NOT_EXPR:>): Don't call
2263         perform_integral_promotions for non integral type.
2265 2006-08-16  Jason Merrill  <jason@redhat.com>
2267         PR c++/28385
2268         * pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Ignore quals from template
2269         if arg is a function.
2271 2006-08-16  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2273         PR c++/28593
2274         * init.c (build_new): Return early on invalid placement.
2276 2006-08-15  Lee Millward  <lee.millward@codesourcery.com>
2278         PR c++/28594
2279         * pt.c (process_template_parm): Robustify.
2281 2006-08-14  Steve Ellcey  <sje@cup.hp.com>
2283         PR c++/28288
2284         PR c++/14556
2285         * operators.def: Remove <?, ?>, <?=, and >?= operators.
2286         * parser.c: Remove CPP_MIN, CPP_MAX, CPP_MIN_EQ, and CPP_MAX_EQ.
2287         (cp_parser_warn_min_max): Remove.
2289 2006-08-11  Jason Merrill  <jason@redhat.com>
2291         PR c++/28559
2292         * parser.c (cp_parser_elaborated_type_specifier): Also ignore
2293         attributes applied to a TYPENAME_TYPE.
2295 2006-08-09  Lee Millward  <lee.millward@codesourcery.com>
2297         PR c++/28637
2298         * pt.c (coerce_template_parms): Copy across the
2299         invalid template arguments to the new template inner arguments.
2300         (retrieve_specialization): Robustify.
2302         PR c++/28638
2303         * pt.c (coerce_template_template_parms): Robustify.
2305         PR c++/28639
2306         * error.c (dump_template_parms): Robustify.
2308         PR c++/28640
2309         * pt.c (redeclare_class_template): Robustify.
2311         PR c++/28641
2312         * pt.c (type_unification_real): Robustify.
2314 2006-08-03  Lee Millward  <lee.millward@codesourcery.com>
2316         PR c++/28347
2317         * decl.c (start_decl): Return error_mark_node if a
2318         diagnostic was issed for an invalid typedef initialization.
2320 2006-08-03  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2322         PR c++/27508
2323         * parser.c (cp_parser_unqualified_id): Check for invalid scopes
2324         when parsing destructor names.
2326         PR c++/28274
2327         * decl.c (duplicate_decls): Call check_default_args here.
2328         (start_preparsed_function): Do not call check_default_args.
2329         * name-lookup.c (pushdecl_maybe_friend): Only call
2330         check_default_args if duplicate_decls got bypassed.
2332 2006-08-02  Richard Guenther  <rguenther@suse.de>
2334         PR c++/28479
2335         Revert
2336         2006-07-05  Richard Guenther  <rguenther@suse.de>
2337         Andrew Pinski  <pinskia@gcc.gnu.org>
2339         PR c++/27084
2340         * cp-objcp-common.c (cxx_types_compatible_p): Ignore
2341         top level qualifiers for pointer type comparisons.
2343 2006-08-02  Mark Mitchell  <mark@codesourcery.com>
2345         PR c++/28557
2346         * pt.c (tsubst_baselink): Substitute into BASELINK_OPTYPE.
2348 2006-07-31  Mark Mitchell  <mark@codesourcery.com>
2350         PR c++/28523
2351         * tree.c (stabilize_expr): Tweak documentation.  Add assertion.
2352         (stabilize_call): Tweak documentation.
2353         (stabilize_init): Only call stabilize_call for calls.
2355 2006-08-01  Steve Ellcey  <sje@cup.hp.com>
2357         PR c++/28432
2358         * decl2.c (check_classfn): Remove early return.
2359         * search.c (lookup_member): Return NULL with bad type.
2361 2006-08-01  Steve Ellcey  <sje@cup.hp.com>
2363         PR c++/28256
2364         * decl.c (check_initializer): Check for 1 initializer on scalar types.
2366 2006-08-01  Daniel Jacobowitz  <dan@codesourcery.com>
2368         PR debug/23336
2369         * pt.c (tsubst_copy_and_build): Mark used enum types.
2370         * semantics.c (finish_id_expression): Likewise.
2372 2006-07-31  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2374         PR c++/6634
2375         * decl.c (grokdeclarator): Check whether "long" or "short" was
2376         specified for non-integral types.
2378 2006-07-28  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2380         * Make-lang.in: Use $(HEADER_H) instead of header.h in dependencies.
2382 2006-07-28  Lee Millward  <lee.millward@codesourcery.com>
2384         PR c++/27668
2385         PR c++/27962
2386         * pt.c (process_template_parm) Store invalid template
2387         parameters as error_mark_node in the paramater list.
2388         (push_inline_template_parms_recursive): Handle invalid
2389         template parameters.
2390         (comp_template_parms): Likewise.
2391         (check_default_tmpl_arg): Likewise.
2392         (coerce_template_template_parms): Likewise.
2393         (mangle_class_name_for_template): Likewise.
2394         (tsubst_template_parms): Likewise.
2395         * error.c (dump_template_argument_list): Likewise.
2397 2006-07-28  Kazu Hirata  <kazu@codesourcery.com>
2399         * cp-tree.h: Fix a comment typo.
2401 2006-07-24  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2403         PR c++/27572
2404         * decl.c (grokdeclarator): Return error_mark_node after invalid
2405         typedef.
2407 2006-07-23  Daniel Jacobowitz  <dan@codesourcery.com>
2409         PR c++/28460
2410         * decl.c (grokvardecl): Use FROB_CONTEXT.
2411         * pt.c (register_specialization): Likewise.
2413 2006-07-23  Mark Mitchell  <mark@codesourcery.com>
2415         PR c++/28025
2416         * cp-tree.h (LOOKUP_HIDDEN): New macro.  Reformat comments.
2417         * name-lookup.c (unqualified_namespace_lookup): There is no way to
2418         have a hidden name in non-namespace scopes.
2419         * pt.c (tsubst_friend_class): Look for hidden names.
2420         * decl.c (lookup_and_check_tag): Fix typo in comment.
2422         * semantics.c (finish_compound_literal): Fix typo in comment.
2424 2006-07-21  Jason Merrill  <jason@redhat.com>
2426         * decl2.c (determine_visibility): Don't propagate visibility from
2427         type to decl.
2428         (constrain_class_visibility): Don't warn in system headers.
2429         Don't warn about pointer fields.
2431 2006-07-20  Mike Stump  <mrs@apple.com>
2433         * decl2.c (determine_visibility_from_class): Don't use hidden
2434         visibility for explicit instantiations.
2436 2006-07-21  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2438         PR c++/28250
2439         * pt.c (tsubst_expr): Only apply DECL_TEMPLATE_INSTANTIATED to
2440         valid decls.  Cleanup.
2442         PR c++/28363
2443         * semantics.c (check_template_template_default_arg): Simplify
2444         error handling.
2446 2006-07-20  Jason Merrill  <jason@redhat.com>
2448         PR c++/28407
2449         * decl.c (grokvardecl): Set DECL_THIS_STATIC on file-scope
2450         const variables with implicit internal linkage.
2451         * tree.c (decl_linkage): Only return lk_external if it's set.
2453         PR c++/28409
2454         * decl2.c (constrain_visibility): Ignore the anonymous namespace
2455         for extern "C" decls.
2456         (VISIBILITY_STATIC): Rename to VISIBILITY_ANON.
2458         * decl2.c (constrain_visibility): Remove specified and reason
2459         parameters.  Don't touch decls that already have explicit visibility.
2460         (determine_visibility): Do copy DECL_VISIBILITY_SPECIFIED from
2461         template.
2462         (determine_visibility_from_class): Reverse sense of
2463         DECL_VISIBILITY_SPECIFIED test for target-specific visibility rules.
2464         (constrain_class_visibility): Only complain about member visibility
2465         if the member type is another class.  Don't change visibility of the
2466         current class.
2468 2006-07-19  Mark Mitchell  <mark@codesourcery.com>
2470         PR c++/28338
2471         * decl.c (layout_var_decl): Don't call push_local_name here.
2472         (initialize_artificial_var): Assert artificiality.
2473         (cp_finish_decl): Call push_local_name here.
2475 2006-07-18  Mark Mitchell  <mark@codesourcery.com>
2477         PR c++/28337
2478         * typeck.c (build_binary_op): Short-circuit pointer arithmetic in
2479         templates.
2481 2006-07-18  Mark Mitchell  <mark@codesourcery.com>
2483         PR c++/28048
2484         * semantics.c (check_accessibility_of_qualified_id): Robustify.
2486         PR c++/28235
2487         * pt.c (tsubst_decl): Handling substitutions into a static data
2488         member from within the scope of the tempalte itself.
2490 2006-07-18  Lee Millward  <lee.millward@gmail.com>
2492         PR c++/28258
2493         * method.c (locate_copy): Check for non_reference
2494         returning error_mark_node.
2496         PR c++/28260
2497         * decl.c (duplicate_decls): Return error_mark_node
2498         on ambiguous declaration.
2500 2006-07-18  Steve Ellcey  <sje@cup.hp.com>
2502         PR c++/27495
2503         * search.c (adjust_result_of_qualified_name_lookup): Change
2504         assert to part of if statement.
2506 2006-07-17  Steve Ellcey  <sje@cup.hp.com>
2508         PR c++/28291
2509         * decl.c (reshape_init_class): Return error_mark_node on error.
2511 2006-07-17  Steve Ellcey  <sje@cup.hp.com>
2513         PR c++/28304
2514         * decl2.c (check_classfn): Return NULL_TREE on error.
2516 2006-07-17  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2518         PR c++/28250
2519         * name-lookup.c (pushdecl_maybe_friend): Return early on
2520         error_mark_node.
2521         * except.c (expand_start_catch_block): Use error_mark_node instead
2522         of NULL_TREE for invalid decls.
2523         * parser.c (cp_parser_exception_declaration): Return error_mark_node
2524         on invalid catch parameter. Simplify.
2526 2006-07-16  Jakub Jelinek  <jakub@redhat.com>
2528         PR c++/28370
2529         * decl2.c (note_vague_linkage_var): Removed.
2530         (finish_static_data_member_decl): Add decl to pending_statics vector
2531         directly.  Do it even for non-public decls.
2533 2006-07-15  Lee Millward  <lee.millward@gmail.com>
2535         PR c++/28292
2536         * decl2.c (acceptable_java_type): Robustify. Use
2537         proper Boolean return type instead of return 1.
2538         (check_java_method): Don't issue error about
2539         type not being an acceptable Java parameter if
2540         it's error_mark_node.
2542         PR c++/28269
2543         * parser.c (cp_parser_elaborated_type_specifier):
2544         Return early if an invalid type was detected.
2546 2006-07-15  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2548         PR c++/28249
2549         * parser.c (cp_parser_check_decl_spec): New function.
2550         (cp_parser_decl_specifier_seq): Factor out check for repeated
2551         decl-specifiers into cp_parser_check_decl_spec. Use it.
2552         (cp_parser_type_specifier_seq): Use it.
2554         PR c++/28294
2555         * semantics.c (finish_offsetof): Use TREE_OPERAND for COMPONENT_REFs
2556         only.
2558         PR c++/28387
2559         * decl2.c (cplus_decl_attributes): Check for invalid decls.
2561 2006-07-14  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2563         PR c++/28343
2564         * decl.c (cp_finish_decl): Check asmspec_tree for error_mark_node.
2565         * decl2.c (grokfield): Likewise.
2567 2006-07-12  Geoffrey Keating  <geoffk@apple.com>
2569         * decl2.c (determine_visibility): Don't change visibility of
2570         function locals because of -fvisibility-inlines-hidden.
2572 2006-07-12  Jason Merrill  <jason@redhat.com>
2574         PR c++/28217
2575         * semantics.c (note_decl_for_pch): Don't premangle templates.
2577 2006-07-12  Martin Michlmayr  <tbm@cyrius.com>
2579         * typeck.c (string_conv_p): Remove spurious quotation mark in
2580         warning.
2582 2006-07-07  Lee Millward  <lee.millward@gmail.com>
2583             Andrew Pinski  <pinskia@gmail.com>
2585         PR c++/27820
2586         * decl.c (define_label): Return error_mark_node on error.
2587         * semantics.c (finish_label_stmt): Don't call
2588         add_stmt for invalid labels.
2590 2006-07-06  Jason Merrill  <jason@redhat.com>
2592         PR c++/28279
2593         * decl2.c (finish_static_data_member_decl): Don't assert
2594         TREE_PUBLIC.
2596 2006-07-05  Jason Merrill  <jason@redhat.com>
2598         PR c++/13983
2599         PR c++/17519
2600         * class.c (check_field_decls): Check TYPE_PACKED after
2601         stripping array types.
2602         (finish_struct_bits): Don't copy TYPE_SIZE here.
2604         PR c++/18681
2605         * friend.c (is_friend): Fix DR 45 implementation.
2607 2006-07-05  Richard Guenther  <rguenther@suse.de>
2608         Andrew Pinski  <pinskia@gcc.gnu.org>
2610         PR c++/27084
2611         * cp-objcp-common.c (cxx_types_compatible_p): Ignore
2612         top level qualifiers for pointer type comparisons.
2614 2006-07-01  Jason Merrill  <jason@redhat.com>
2616         PR c++/28215
2617         * method.c (make_thunk): Unset DECL_USE_TEMPLATE and
2618         DECL_TEMPLATE_INFO.
2620 2006-06-30  Jason Merrill  <jason@redhat.com>
2622         PR c++/26577
2623         * call.c (build_new_method_call): Force evaluation of the
2624         instance pointer, not the object.
2626 2006-06-30  Kazu Hirata  <kazu@codesourcery.com>
2628         * decl2.c: Fix a comment typo.
2630 2006-06-30  Jason Merrill  <jason@redhat.com>
2632         PR c++/18698
2633         * decl2.c (grokfield): Only try to treat the decl as an access
2634         declaration if the scope is a class.
2636 2006-06-29  Jason Merrill  <jason@redhat.com>
2638         PR c++/26905
2639         PR c++/26612
2640         PR c++/27000
2641         PR c++/26984
2642         PR c++/19134
2643         * decl2.c (determine_visibility): Overhaul.
2644         (determine_visibility_from_class): Likewise.
2645         (min_vis_r, type_visibility, constrain_visibility): New fns.
2646         (constrain_visibility_for_template): Likewise.
2647         (constrain_class_visibility): Likewise.
2648         * decl.c (cp_finish_decl): Call determine_visibility for function
2649         decls, too.
2650         * name-lookup.c (pushtag): Call determine_visibility.
2651         * decl.c (duplicate_decls): Don't copy visibility from template to
2652         specialization.
2653         * pt.c (check_explicit_specialization): Likewise.
2654         (lookup_template_class, tsubst_decl): Call determine_visibility.
2655         * class.c (finish_struct_1): Call constrain_class_visibility.
2657         PR c++/26905
2658         PR c++/21675
2659         PR c++/17470
2660         * parser.c (cp_parser_explicit_instantiation): Pass the attributes
2661         to grokdeclarator.
2662         (cp_parser_type_specifier): Allow 'enum __attribute ((...)) E'.
2663         (cp_parser_enum_specifier): Likewise.
2664         (cp_parser_elaborated_type_specifier): Apply attributes if this
2665         declares only the class.
2666         (cp_parser_class_specifier): Apply leading attributes immediately.
2667         * semantics.c (begin_class_definition): Add attributes parameter,
2668         apply them to the type.
2670         PR c++/21581
2671         PR c++/25915
2672         * tree.c (decl_anon_ns_mem_p): New function.
2673         * cp-tree.h: Declare it.
2674         * decl2.c (determine_visibility): Make anonymous namespace
2675         members static.
2676         (min_vis_r, constrain_visibility): Likewise.
2677         * rtti.c (create_pseudo_type_info): Set TREE_PUBLIC on
2678         pseudo-types.
2679         * decl.c (cxx_init_decl_processing): Set TREE_PUBLIC on
2680         global_namespace.
2681         * name-lookup.c (push_namespace_with_attribs): Don't set TREE_PUBLIC
2682         on anonymous namespaces.
2684 2006-06-28  Jason Merrill  <jason@redhat.com>
2686         PR c++/27424
2687         * pt.c (convert_template_argument): Pass all template arguments
2688         on to coerce_template_template_parms.
2690 2006-06-25  Lee Millward  <lee.millward@gmail.com>
2691             Mark Mitchell <mark@codesuorcery.com>
2693         PR c++/28054
2694         * decl2.c (grokbitfied): Remove check for grokdeclarator
2695         returning NULL_TREE, instead check for error_mark_node
2696         to indicate failure.
2697         * decl.c (grokdeclarator): Adjust block comment.
2699 2006-06-25  Lee Millward  <lee.millward@gmail.com>
2701         PR c++/28051
2702         * mangle.c (mangle_conv_op_name_for_type): Check for
2703         invalid types.
2704         * name-lookup.c (push_class_level_binding): Robustify.
2705         (do_class_using_decl): Return early if name is error_mark_node.
2707 2006-06-23  Steve Ellcey  <sje@cup.hp.com>
2709         PR c++/28114
2710         * name-lookup.c (pushtag): Return if we have error_mark_node.
2712 2006-06-23  Steve Ellcey  <sje@cup.hp.com>
2714         PR c++/27019
2715         * typeck2.c (process_init_constructor_array): Set ce->value on errors.
2717 2006-06-23  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2719         PR c++/28112
2720         * parser.c (cp_parser_attribute_list): Skip attributes with invalid
2721         arguments.  Fix comment.
2723         PR c++/11468
2724         * init.c (build_new_1): Handle error_mark_nodes returned by
2725         build_java_class_ref.
2726         (build_java_class_ref): Do not abort compilation, but return
2727         error_mark_node.  Improve error message.  Fix indentation.
2729 2006-06-23  Danny Smith   <dannysmith@users.sourceforge.net>
2731         PR target/27789
2732         * decl.c (start_decl): Check that dllimports are not initialized.
2734 2006-06-22  Lee Millward  <lee.millward@gmail.com>
2736         PR c++/27805
2737         * typeck2.c (build_m_component_ref): Use error_operand_p.
2739         PR c++/27821
2740         * decl.c (grokdeclarator): Return error_mark_node on
2741         invalid uses of the scope resolution operator.
2743 2006-06-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2745         PR c++/28111
2746         * pt.c (determine_specialization): Check for invalid decls.
2748         PR c++/28110
2749         * pt.c (unify) <case TEMPLATE_PARM_INDEX>: Check for invalid
2750         parameters.
2752         PR c++/28109
2753         * rtti.c (get_tinfo_decl_dynamic): Robustify.
2755 2006-06-20  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2757         PR c++/28052
2758         * init.c (push_base_cleanups): Skip members with invalid types.
2759         * typeck.c (build_class_member_access_expr): Robustify.
2761 2006-06-19  Mark Mitchell  <mark@codesourcery.com>
2763         * pt.c (instantiate_template): Fix typo in comment.
2765 2006-06-19  Richard Guenther  <rguenther@suse.de>
2767         * parser.c (CP_LEXER_BUFFER_SIZE): Adjust to assure near
2768         power-of-two token vector size.
2770 2006-06-16  Mark Mitchell  <mark@codesourcery.com>
2772         PR c++/28016
2773         * decl.c (cp_finsh_decl): Do not emit uninstantiated static data
2774         members.
2776         PR c++/27979
2777         * call.c (standard_conversion): Strip cv-qualifiers from bitfield
2778         types.
2780         PR c++/27884
2781         * decl.c (have_extern_spec): Remove.
2782         (start_decl): Do not check have_extern_spec.
2783         (start_function): Likewise.
2784         * cp-tree.h (have_extern_spec): Remove.
2785         * parser.c (cp_parser_linkage_specification): Don't set
2786         have_extern_spec.
2787         (cp_parser_init_declarator): Likewise.
2788         (cp_parser_parameter_declaration): Do not treat parameters as
2789         within the scope of an unbraced linkage specification.
2791 2006-06-15  Mark Mitchell  <mark@codesourcery.com>
2793         PR c++/27689
2794         * cp-tree.h (CLASSTYPE_SPECIALIZATION_OF_PRIMARY_TEMPLATE_P): New
2795         macro.
2796         * pt.c (unify): Use it.
2798         PR c++/27666
2799         * call.c (build_conditional_expr): Robustify.
2801         PR c++/27640
2802         * pt.c (instantiate_template): Set processing_template_decl to
2803         zero while performing substitutions.
2805 2006-06-14  Mark Mitchell  <mark@codesourcery.com>
2807         PR c++/27665
2808         * parser.c (cp_parser_unqualified_id): Use constructor_name_p to
2809         identify destructors.
2810         (cp_parser_nested_name_specifier_opt): Remove invalid
2811         optimization.
2812         (cp_parser_template_id): Refine heuristic for determining whether
2813         we are entering a scope.
2815         PR c++/27648
2816         * parser.c (cp_parser_declarator): Robustify.
2818         PR c++/26559
2819         * pt.c (tsubst_expr): Use finish_omp_atomic.
2820         (value_dependent_expression_p): All CALL_EXPRs are dependent.
2821         * semantics.c (finish_omp_atomic): Rework to use standard
2822         paradigms for handling non-dependent expressions.
2824 2006-06-14  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2826         * typeck.c (build_modify_expr): Tidy diagnostic message.
2828 2006-06-14  Mark Mitchell  <mark@codesourcery.com>
2830         PR c++/28018
2831         * typeck.c (build_modify_expr): Disallow array assignment.
2833 2006-06-14  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2835         * cp-tree.def: Fix typo.
2837 2006-06-13  Mark Mitchell  <mark@codesourcery.com>
2839         PR c++/27227
2840         * decl.c (decls_match): Allow an extern "C" variable declarations
2841         from different namespaces to match.
2842         (duplicate_decls): Disallow redeclaring a variable with a
2843         different linkage specification.
2845 2006-06-13  Jakub Jelinek  <jakub@redhat.com>
2847         PR middle-end/27793
2848         * cp-tree.h (cxx_int_tree_map): New struct.
2849         (struct language_function): Add extern_decl_map field.
2850         * name-lookup.c (pushdecl_maybe_friend): Add x -> t mapping
2851         to cp_function_chain->extern_decl_map hash table instead of
2852         copying over DECL_UID.
2853         * cp-gimplify.c (cxx_int_tree_map_eq, cxx_int_tree_map_hash): New
2854         functions.
2855         (cp_genericize_r): Remap DECL_EXTERN local decls using
2856         cp_function_chain->extern_decl_map hash table.
2857         * decl.c (finish_function): Clear extern_decl_map.
2859 2006-06-12  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2861         PR c++/27601
2862         * semantics.c (finish_offsetof): Handle pseudo-destructors.
2864         PR c++/27933
2865         * name-lookup.c (lookup_qualified_name): Always return error_mark_node
2866         if lookup fails.
2868         PR c++/27951
2869         * decl2.c (finish_anon_union): Return early if build_anon_union_vars
2870         fails.
2872 2006-06-12  Roger Sayle  <roger@eyesopen.com>
2874         PR c++/21210
2875         * typeck2.c (build_functional_cast): Use cp_convert to construct
2876         non-aggregate initializers instead of the user-level build_c_cast.
2878 2006-06-07  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2880         PR c++/27601
2881         * cp-tree.h (finish_offsetof): Add prototype.
2882         * semantics.c (finish_offsetof): New function.
2883         * parser.c (cp_parser_builtin_offsetof): Call it instead of
2884         fold_offsetof.
2885         * pt.c (tsubst_copy_and_build): Likewise.
2887 2006-06-06  Mark Mitchell  <mark@codesourcery.com>
2889         PR c++/27177
2890         * call.c (standard_conversion): Require that the derived type be
2891         complete when performing a derived-to-base conversion.
2893 2006-06-04  Mark Mitchell  <mark@codesourcery.com>
2895         PR c++/27819
2896         * decl.c (cp_finish_decl): Process initializers for static data
2897         members with non-dependent initializers, even in templates.
2899         PR c++/27722
2900         * decl.c (maybe_deduce_size_from_array_init): If the declaration
2901         is erroneous, give it an erroneous type.
2902         (layout_var_decl): If the type is erroneous, give up.
2903         (check_initializer): Likewise.
2905         PR c++/27807
2906         * cp-tree.h (TYPE_OBJ_P): New macro.
2907         (TYPE_PTROB_P): Use it.
2908         (TYPE_REF_OBJ_P): Likewise.
2909         * semantics.c (finish_compound_literal): Do not permit compound
2910         literals of non-object types.
2912         PR c++/27806
2913         * typeck.c (original_type): Robustify.
2915 2006-06-05  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2917         PR c++/27804
2918         * init.c (constant_value_1): Return decl instead of error_mark_node
2919         for invalid initializers.
2921 2006-06-01  Andrew Pinski  <pinskia@physics.uc.edu>
2923         PR c++/27592
2924         * rtti.c (build_dynamic_cast_1): Call c_common_truthvalue_conversion
2925         on operand of the COND_EXPR for the null pointer check.
2927 2006-06-01  Andrew Pinski  <pinskia@physics.uc.edu>
2929         PR c++/26740
2930         * typeck.c (build_unary_op): Mark the function as being used.
2932 2006-06-01  Alexandre Oliva  <aoliva@redhat.com>
2934         PR c++/26660
2935         * parser.c (cp_parser_initial_pragma): Read one more token for
2936         caller after reading PCH file in.
2938 2006-05-31  Mark Mitchell  <mark@codesourcery.com>
2940         PR c++/27801
2941         * call.c (perform_implicit_conversion): Do not actually perform
2942         conversions in templates.
2944         PR c++/26496
2945         * call.c (resolve_args): Check for invalid uses of bound
2946         non-static member functions.
2947         * init.c (build_offset_ref): Return error_mark_node for errors.
2949         PR c++/27385
2950         * decl.c (reshape_init): Robustify.
2951         (reshape_init_array_1): Likewise.
2953 2006-05-30  Mark Mitchell  <mark@codesourcery.com>
2955         PR c++/27808
2956         * parser.c (cp_parser_decl_specifier_seq): Issue errors about
2957         "friend" specifiers that do not appear in class scopes.
2959         PR c++/27803
2960         * class.c (check_bitfield_decl): Ensure that all bitfields have
2961         integral type.
2963 2006-05-29  Kazu Hirata  <kazu@codesourcery.com>
2965         * pt.c (convert_nontype_argument): Fix a typo in an error
2966         message.
2968 2006-05-28  Kazu Hirata  <kazu@codesourcery.com>
2970         * decl.c, decl2.c, parser.c: Fix comment typos.  Follow
2971         spelling conventions.
2973 2006-05-24  Mark Mitchell  <mark@codesourcery.com>
2975         PR c++/20103
2976         * decl.c (cp_make_fname_decl): Don't set DECL_INITIAL to
2977         error_mark_node to indicate an initialization is OK.
2978         (start_decl): Likewise.  Adjust call to start_decl_1.
2979         (start_decl_1): Add initialized parameter.  Simplify.
2980         * except.c (initialize_handler_parm): Adjust call to
2981         setart_decl_1.
2982         (expand_start_catch_block): Let cp_finish_decl initialize catch
2983         parameters.
2984         * cp-tree.h (start_decl_1): Adjust prototype.
2985         * pt.c (tsubst_expr): Don't set DECL_INITIAL to error_mark_node.
2986         (instantiate_decl): Let cp_finish_decl handle initialization.
2987         * semantics.c (finish_compound_literal): Create a temporary
2988         variable for the literal.
2989         * typeck.c (build_unary_op): Remove COMPOUND_LITERAL_P special
2990         cases.
2991         * decl2.c (finish_static_data_member_decl): Don't set
2992         DECL_INITIAL.
2993         (grokfield): Do not try to initialize functions.
2995 2006-05-23  Mark Mitchell  <mark@codesourcery.com>
2997         PR c++/20173
2998         * pt.c (determine_specialization): Disallow partial
2999         specializations of templates.
3001 2006-05-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3003         PR c++/27716
3004         * typeck.c (build_modify_expr): Test arguments for error_operand_p.
3006         * decl.c (grokdeclarator): Return error_mark_node instead of NULL_TREE.
3008 2006-05-21  Mark Mitchell  <mark@codesourcery.com>
3010         PR c++/27210
3011         * cp-tree.h (cp_save_expr): New function.
3012         * init.c (build_new): Correct logic for zero-element array
3013         warning.  Use cp_save_expr.
3014         * tree.c (cp_save_expr): New function.
3016 2006-05-21  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3018         PR c++/27398
3019         * decl.c (grokdeclarator): Return error_mark_node instead of NULL_TREE
3020         or void_type_node.
3022 2006-05-19  Mike Stump  <mrs@apple.com>
3024         * typeck.c (default_conversion): Remove static.
3026 2006-05-19  Mark Mitchell  <mark@codesourcery.com>
3028         PR c++/26433
3029         * cp-tree.h (begin_function_try_block): Change prototype.
3030         (finish_function_handler_sequence): Likewise.
3031         * parser.c (cp_parser_function_try_block): Adjust calls.
3032         * pt.c (tsubst_expr): Adjust calls.
3033         * semantics.c (begin_function_try_block): Create an artificial
3034         outer scope.
3035         (finish_function_handler_sequence): Close it.
3037 2006-05-18  Mark Mitchell  <mark@codesourcery.com>
3039         PR c++/27471
3040         PR c++/27506
3041         * typeck.c (decay_conversion): Convert bitfields to their declared
3042         types here.  Improve documentation.  Avoid use of cp_convert.
3043         (default_conversion): Make it static.  Perform integral promotions
3044         before lvalue-to-rvalue, function-to-pointer, and array-to-pointer
3045         conversions.
3046         * init.c (build_init): Remove.
3047         (expand_default_init): Do not call rvalue.
3048         * call.c (null_ptr_cst_p): Robustify.
3049         (build_conditional_expr): Tidy.
3050         * except.c (build_throw): Do not perform lvalue-to-rvalue
3051         conversion on operand before initializing temporary.
3052         * tree.c (convert.h): Include it.
3053         (convert_bitfield_to_declared_type): Use convert_to_integer, not
3054         cp_convert.
3055         (rvalue): Don't convert bitfields to their declared type here.
3056         * cp-tree.h (build_init): Remove.
3057         (default_conversion): Likewise.
3058         * typeck2.c (build_m_component_ref): Do not perform
3059         lvalue-to-rvalue, function-to-pointer, or array-to-pointer
3060         conversions here.  Correct error message.
3062 2006-05-17  Mark Mitchell  <mark@codesourcery.com>
3064         PR c++/26122
3065         * decl2.c (check_member_template): Remove checks for virtual
3066         functions.
3067         * parser.c (cp_parser_function_specifier_opt): Complain about
3068         virtual templates.
3069         (cp_parser_pure_specifier): Likewise.
3071         PR c++/26068
3072         * parser.c (cp_parser_set_storage_class): Check for
3073         invalid uses of storage classes on unbraced linkage
3074         specifications.
3075         (cp_parser_decl_specifier_seq): Pass keywords, not storage classes,
3076         to cp_parser_set_storage_class.
3078 2006-05-17  Jakub Jelinek  <jakub@redhat.com>
3080         PR c++/27491
3081         * semantics.c (finish_compound_literal): Only set TREE_HAS_CONSTRUCTOR
3082         on CONSTRUCTORs.
3084         PR middle-end/27415
3085         * parser.c (cp_parser_omp_parallel): Set OMP_PARALLEL_COMBINED
3086         on combined parallel workshare constructs.
3087         * pt.c (tsubst_expr): Copy OMP_PARALLEL_COMBINED flag.
3089 2006-05-16  H.J. Lu  <hongjiu.lu@intel.com>
3091         PR driver/26885
3092         * Make-lang.in (GXX_OBJS): Replace gcc.o with $(GCC_OBJS).
3094 2006-05-15  Mark Mitchell  <mark@codesourcery.com>
3096         PR c++/27339
3097         * cp-tree.h (perform_access_checks): New function.
3098         * semantics.c (perform_access_checks): New function.
3099         (perform_deferred_access_checks): Use it.
3100         * parser.c (cp_parser_simple_declaration): Adjust call to
3101         cp_parser_init_declarator.
3102         (cp_parser_type_parameter): Do not defer checks in default
3103         arguments.
3104         (cp_parser_explicit_specialization): Adjust call to
3105         cp_parser_single_declaration.
3106         (cp_parser_init_declarator): Perform template-parameter access
3107         checks.
3108         (cp_parser_parameter_declaration): Do not defer checks for
3109         template parameter default arguments.
3110         (cp_parser_template_declaration_after_export): Gather access
3111         checks for template parameters, and pass them to
3112         cp_parser_single_declaration.
3113         (cp_parser_template_parameter_access_checks): New function.
3114         (cp_parser_single_declaration): Add checks parameter.
3116         PR c++/27505
3117         * call.c (convert_like_real): Convert bitfields to their declared
3118         types when forming an rvalue.
3119         * tree.c (convert_bitfield_to_declared_type): New function.
3120         (rvalue): Use it.
3121         * cp-tree.h (convert_bitfield_to_declare_type): Declare it.
3123 2006-05-15  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3125         PR c++/27582
3126         * pt.c (any_dependent_template_arguments_p): Return early on invalid
3127         argument list.
3129         PR c++/27581
3130         * search.c (adjust_result_of_qualified_name_lookup): Skip on
3131         invalid context_class.
3133         PR c++/27315
3134         * pt.c (do_decl_instantiation): Return early on invalid decl.
3136         PR c++/27559
3137         * pt.c (push_template_decl_real): Return error_mark_node instead
3138         of broken decl.
3140         PR c++/27496
3141         * pt.c (tsubst_friend_class): Return early on invalid friend
3142         declarations.
3144 2006-05-14  H.J. Lu  <hongjiu.lu@intel.com>
3146         * Make-lang.in (cp/decl.o): Add dependency on $(TARGET_H).
3147         (cp/decl2.o): Likewise.
3148         (cp/typeck.o): Likewise.
3149         (cp/cvt.o): Likewise.
3150         (cp/parser.o): Likewise.
3151         (cp/call.o): Replace target.h with $(TARGET_H).
3153 2006-05-14  Alexandre Oliva  <aoliva@redhat.com>
3155         * pt.c (build_non_dependent_expr): Leave ADDR_EXPR of
3156         COMPONENT_REF alone.
3158 2006-05-11  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3160         PR c++/27547
3161         * decl.c (copy_fn_p): Return early on non-member functions.
3163 2006-05-08  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3165         PR c++/27447
3166         * decl2.c (build_memfn_type): Skip invalid functions and class types.
3168 2006-05-06  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3170         PR c++/27427
3171         * pt.c (convert_nontype_argument): Return early on invalid arguments.
3173         * pt.c (process_template_parm): Remove superfluous temporary.
3175         PR c++/27430
3176         * pt.c (process_template_parm): Handle erroneous non-type parameters.
3178         PR c++/27423
3179         * typeck.c (convert_for_initialization): Skip erroneous types.
3181         PR c++/27422
3182         * typeck.c (convert_arguments): Return early on args with
3183         invalid types.
3185 2006-05-03  Aldy Hernandez  <aldyh@redhat.com>
3187         PR/21391
3188         * typeck.c (build_static_cast_1): Save casted types in used types
3189         hash table.
3190         (build_reinterpret_cast_1): Same.
3191         * rtti.c (build_dynamic_cast_1): Same.
3193 2006-05-04  Jakub Jelinek  <jakub@redhat.com>
3195         PR c++/27359
3196         * parser.c (cp_parser_omp_for_loop): Only call
3197         cp_parser_abort_tentative_parse if cp_parser_parse_definitely was not
3198         called.
3200 2006-05-02  Mark Mitchell  <mark@codesourcery.com>
3202         PR c++/27102
3203         * decl.c (grokdeclarator): Robustify checks for defining members
3204         of incomplete types.
3206         PR c++/27309
3207         * class.c (add_method): Call grok_special_member_properties.
3208         * decl.c (grokdeclarator): Don't call it here.
3209         (copy_fn_p): A TEMPLATE_DECL is never a copy constructor or
3210         assignment operator.  Set TYPE_HAS_CONSTURCTOR if DECL is a
3211         constructor.
3212         (start_method): Don't call grok_special_member_properties.
3213         * method.c (implicitly_declare_fn): Likewise.
3214         * pt.c (instantiate_class_template): Likewise.
3215         * decl2.c (grokfield): Likewise.
3217 2006-05-02  Jakub Jelinek  <jakub@redhat.com>
3219         PR middle-end/27337
3220         * cp-gimplify.c (cxx_omp_privatize_by_reference): New function.
3221         * cp-tree.h (cxx_omp_privatize_by_reference): New prototype.
3222         * cp-objcp-common.h (LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE): Define.
3224 2006-04-30  Mark Mitchell  <mark@codesourcery.com>
3226         PR c++/27094
3227         * pt.c (tsubst_default_argument): Increment function_depth around
3228         call to tsubst_expr.
3229         * parser.c (cp_parser_parameter_declaration): Likewise.
3230         * decl2.c (mark_used): Tidy.
3232 2006-04-30  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3234         PR c++/27278
3235         * decl.c (grok_op_properties): Skip operators with invalid args
3236         when checking for class-type or enum-type args.
3238 2006-04-29  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3240         PR c++/27279
3241         * decl.c (copy_fn_p): Skip functions with invalid first arg.
3243 2006-04-27  Mark Mitchell  <mark@codesourcery.com>
3245         PR c++/27292
3246         * tree.c (rvalue): Convert bitfields to their declared types.
3248         PR c++/27102
3249         * typeck2.c (cxx_incomplete_type_diagnostic): Handle
3250         TYPENAME_TYPE.
3252 2006-04-24  Mark Mitchell  <mark@codesourcery.com>
3254         PR c++/27292
3255         * typeck.c (decay_conversion): Don't adjust bitfield types.
3256         (perform_integral_promotions): Treat bitfield enums as enums, not
3257         as short integer types.
3258         * tree.c (rvalue): Convert bitfields to their correct types.
3260 2006-04-24  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3262         PR c++/19963
3263         * class.c (layout_class_type): Skip fields with invalid types.
3265 2006-04-23  Mark Mitchell  <mark@codesourcery.com>
3267         PR c++/26912
3268         * cp-tree.h (build_this_parm): Declare.
3269         (grok_method_quals): Remove.
3270         (build_memfn_type): Declare.
3271         (build_artificial_parm): Declare.
3272         (do_friend): Remove quals parameter.
3273         * decl.c (build_this_parm): New function.
3274         (grokfndecl): Use it.  Do not pass quals to grokclassfn.
3275         (grokdeclarator): Rename quals to memfn_quals.  Avoid allocating
3276         unnecessary TYPE_DECLs.  Correct qualification of member function
3277         types.  Tidy.
3278         * method.c (implicitly_declare_fn): Use build_this_parm.
3279         * friend.c (do_friend): Remove quals parameter.
3280         * decl2.c (grok_method_quals): Remove.
3281         (build_memfn_type): New function.
3282         (build_artificial_parm): Give it external linkage.
3283         (grokclassfn): Remove quals parameter.  Do not build "this"
3284         PARM_DECL here.
3286         PR c++/26534
3287         * cp-tree.h (is_bitfield_expr_with_lowered_type): New function.
3288         * typeck.c (is_bitfield_expr_with_lowered_type): New function.
3289         (decay_conversion): Convert bitfield expressions to the correct
3290         type.
3291         (build_modify_expr): Remove spurious conversions.
3292         * class.c (layout_class_type): Modify the type of bitfields to
3293         indicate a limited range.
3294         * call.c (standard_conversion): Adjust the type of bitfield
3295         expressions used in an rvalue context.
3296         (build_conditional_expr): Likewise.
3298 2006-04-22  Kazu Hirata  <kazu@codesourcery.com>
3300         * decl.c: Fix comment typos.
3302 2006-04-21  Eric Christopher  <echristo@apple.com>
3304         * decl.c: Fix typo in function name.
3306 2006-04-19  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3308         PR c++/26558
3309         * parser.c (cp_parser_class_name): Check for invalid typenames.
3310         Rearrange code.
3312         PR c++/26739
3313         * pt.c (tsubst_friend_function): Return early if
3314         pushdecl_namespace_level fails.
3316         PR c++/26036
3317         * typeck.c (convert_arguments): Return error_mark_node instead of
3318         error_mark_list.
3319         * cp-tree.h (error_mark_list): Remove declaration.
3320         * decl.c (error_mark_list): Remove definition.
3321         (cxx_init_decl_processing): Do not initialize error_mark_list.
3323         PR c++/10385
3324         * rtti.c (build_dynamic_cast_1): Check for invalid conversions
3325         before calling convert_to_reference.
3326         * cvt.c (convert_to_reference): Assert that reftype is a
3327         REFERENCE_TYPE.
3329 2006-04-19  Mark Mitchell  <mark@codesourcery.com>
3331         PR c++/27102
3332         * class.c (currently_open_class): Tidy.
3333         * decl.c (grokdeclarator): If we encounter an erroneous
3334         declarator, assume that we have already issued an error message
3335         and return.  Return error_mark_node instead of NULL_TREE in more
3336         places.  Issue errors about function definitions that do not have
3337         a function declarator.  Check for complete types for all function
3338         definitions.
3339         * cp-tree.h (cp_error_declarator): Remove.
3340         (currently_open_class): Change return type.
3341         * parser.c (cp_parser_id_expression): Add optional_p parameter.
3342         (cp_parser_parse_diagnose_invalid_type_name): Adjust calls.
3343         (cp_parser_id_expression): Likewise.
3344         (cp_parser_unqualified_id): If the name is optional, return
3345         NULL_TREE.
3346         (cp_parser_postfix_dot_deref_expression): Adjust calls.
3347         (cp_parser_type_parameter): Likewise.
3348         (cp_parser_unqualified_id): Likewise.
3349         (cp_parser_direct_declarator): Likewise.
3350         (cp_parser_declarator_id): Add optional_p parameter.
3351         (cp_parser_function_definition_from_specifiers_and_declarator):
3352         Assume that start_function indicates failure only if it has issued
3353         an error.
3354         (cp_parser_omp_var_list_no_open): Adjust calls.
3356 2006-04-17  Janis Johnson  <janis187@us.ibm.com>
3358         PR c++/26114, c++/26115
3359         * typeck.c (cxx_mark_addressable): Restore check for extra_warnings.
3360         * class.c (check_field_decls): Ditto.
3362 2006-04-17  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3364         * init.c (build_offset_ref): Remove superfluous temporary.
3366 2006-04-16  Mark Mitchell  <mark@codesourcery.com>
3368         PR c++/26365
3369         * typeck.c (finish_class_member_access_expr): Robustify
3371 2006-04-15  Kazu Hirata  <kazu@codesourcery.com>
3373         * Make-lang.in (cp/pt.o): Depend on vecprim.h.
3374         * pt.c: Include vecprim.h.
3375         (inline_parm_levels): Change the type to VEC(int,heap) *.
3376         (inline_parm_levels_used): Remove.
3377         (maybe_begin_member_template_processing,
3378         maybe_end_member_template_processing): Use VEC instead of
3379         VARRAY.
3381         * cp/call.c: Fix comment typos.
3383 2006-04-12  Mark Mitchell  <mark@codesourcery.com>
3385         * parser.c (cp_parser_init_declarator): Initialize local variables
3386         aggressively.
3388 2006-04-12  Roger Sayle  <roger@eyesopen.com>
3390         * parser.c (cp_parser_init_declarator): Initialise
3391         is_parenthesized_init to false to avoid compiler warning.
3393 2006-04-11  Mark Mitchell  <mark@codesourcery.com>
3395         * cp-tree.h (build_operator_new_call): Adjust prototype.
3396         (build_new_method_call): Likewise.
3397         (build_op_delete_call): Likewise.
3398         * init.c (build_raw_new_expr): New function.
3399         (build_new_1): Pass information as parameters, rather than
3400         bundling it into a NEW_EXPR.
3401         (build_new): Adjust accordingly.
3402         (build_vec_delete_1): Adjust for changes to build_op_delete_call.
3403         (build_delete): Likewise.
3404         * decl.c (finish_destructor_body): Likewise.
3405         * call.c (build_operator_new_call): Return the allocation function
3406         used.
3407         (build_op_delete_call): Take allocation function as parameter.
3408         (build_special_member_call): Adjust call to build_new_method_call.
3409         (build_new_method_call): Return function called.
3410         * pt.c (tsubst_copy_and_build): Adjust call to
3411         build_new_method_call.
3412         * semantics.c (finish_call_expr): Likewise.
3413         * parser.c (cp_parser_postfix_expression): Likewise.
3414         * typeck2.c (cxx_incomplete_type_diagnostic): Refer to
3415         "incomplete", not "undefined", types.
3417         PR c++/26295
3418         * decl.c (grokdeclarator): Remove namespace-handling code for
3419         pointers-to-members.
3420         * parser.c (cp_parser_ptr_operator): Check for qualified names
3421         using namespaces.
3423         PR c++/26122
3424         * parser.c (cp_parser_init_declarator): Adjust logic for deciding
3425         whether or not to look for a pure-specifier.
3426         (cp_parser_member_declaration): Likewise.
3428 2006-04-08  Kazu Hirata  <kazu@codesourcery.com>
3430         * decl2.c, pt.c, semantics.c: Fix comment typos.
3432 2006-04-06  Roger Sayle  <roger@eyesopen.com>
3434         * call.c (null_ptr_cst_p): Add explicit TREE_CONSTANT_OVERFLOW check.
3436 2006-04-05  Jason Merrill  <jason@redhat.com>
3438         * name-lookup.c (push_namespace_with_attribs): Temporarily disable
3439         default hidden visibility for anonymous namespace.
3441 2006-03-29  Roger Sayle  <roger@eyesopen.com>
3443         PR c++/22494
3444         * init.c (build_vec_delete_1): Convert BASE pointer's type to
3445         the base pointer type to avoid a type mismatch in the EQ_EXPR.
3447 2006-03-24  Carlos O'Donell  <carlos@codesourcery.com>
3449         * search.c (maybe_suppress_debug_info): If
3450         flag_emit_class_debug_always then don't suppress.
3452 2006-03-22  Jason Merrill  <jason@redhat.com>
3454         * name-lookup.c (push_namespace_with_attribs): Only apply hidden
3455         visibility to anonymous namespaces if HAVE_GAS_HIDDEN.
3457 2006-03-21  Jakub Jelinek  <jakub@redhat.com>
3459         PR c++/26691
3460         * cp-gimplify.c (cxx_omp_clause_apply_fn): Handle default arguments.
3462 2006-03-21  Jason Merrill  <jason@redhat.com>
3464         PR c++/21581
3465         * parser.c (cp_parser_declaration): Support attributes on
3466         anonymous namespaces.
3467         * name-lookup.c (push_namespace_with_attribs): Anonymous
3468         namespaces default to hidden visibility.
3470 2006-03-20  Jason Merrill  <jason@redhat.com>
3472         PR c++/21764, c++/19238
3473         * decl.c (cp_finish_decl): Call determine_visibility later.
3474         (start_preparsed_function): Likewise.
3475         * cp-tree.h (CP_TYPE_CONTEXT, TYPE_NAMESPACE_SCOPE_P): New macros.
3476         (TYPE_CLASS_SCOPE_P, TYPE_FUNCTION_SCOPE_P): New macros.
3477         * name-lookup.h (struct cp_binding_level): Add has_visibility
3478         bitfield.
3479         * name-lookup.c: Include c-pragma.h.
3480         (push_namespace_with_attribs): Split out from push_namespace.
3481         Push visibility if appropriate.  Set TREE_PUBLIC on namespaces.
3482         (leave_scope): Pop visibility if appropriate.
3483         * decl2.c (determine_visibility_from_class): Split out from...
3484         (determine_visibility): ...here.  Handle function scope and
3485         nested classes.
3486         (import_export_decl): Move visibility handling to
3487         determine_visibility_from_class.
3488         * parser.c (cp_parser_declaration, cp_parser_namespace_name): Allow
3489         attributes on namespace declarations.
3491 2006-03-15  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3493         PR c++/6634
3494         * decl.c (grokdeclarator): Do not accept long long double.
3495         Reorganize checks for invalid (combinations of) type modifiers.
3496         Quote modifiers in messages.
3498 2006-03-09  Jason Merrill  <jason@redhat.com>
3500         PR c++/16387, c++/16389
3501         * typeck.c (cxx_alignof_expr, cxx_sizeof_expr): New functions.
3502         (cxx_sizeof_or_alignof_expr): Split out from here.
3504 2006-03-09  Diego Novillo  <dnovillo@redhat.com>
3506         Merge from gomp-20050608-branch
3508         2006-02-02  Diego Novillo  <dnovillo@redhat.com>
3510                 * decl.c (pop_labels_1): Use appropriate pointer casting.
3511                 (poplevel_named_label_1): Likewise.
3512                 (named_label_entry_hash): Likewise.
3513                 (named_label_entry_eq): Likewise.
3514                 (check_goto): Likewise.
3515                 (define_label): Likewise.
3517         2006-01-26  Diego Novillo  <dnovillo@redhat.com>
3519                 * cp-tree.h (CP_OMP_CLAUSE_INFO): Use TREE_TYPE instead
3520                 of TREE_BLOCK.
3521                 * pt.c: Use OMP_CLAUSE_CODE and OMP_CLAUSE_OPERAND
3522                 instead of TREE_CODE/TREE_OPERAND.
3523                 * semantics.c: Likewise.
3524                 * parser.c: Likewise.
3526         2005-11-10  Diego Novillo  <dnovillo@redhat.com>
3528                 * parser.c (cp_parser_omp_threadprivate): Emit diagnostic if
3529                 target does not support TLS.
3531         2005-11-09  Jakub Jelinek  <jakub@redhat.com>
3533                 * decl.c (redeclaration_error_message): Don't error about
3534                 DECL_THREAD_LOCAL_P mismatches if CP_DECL_THREADPRIVATE_P
3535                 (olddecl).
3537         2005-11-08  Jakub Jelinek  <jakub@redhat.com>
3539                 PR c++/24735
3540                 * semantics.c (finish_omp_barrier, finish_omp_flush): New
3541                   functions.
3542                 * parser.c (cp_parser_omp_barrier): Call finish_omp_barrier.
3543                 (cp_parser_omp_flush): Call finish_omp_flush.
3544                 * cp-tree.h (finish_omp_barrier, finish_omp_flush): New
3545                   prototypes.
3547                 PR c++/24734
3548                 * pt.c (tsubst_expr): Handle OMP_MASTER and OMP_ORDERED.
3550         2005-11-03  Jakub Jelinek  <jakub@redhat.com>
3552                 * semantics.c (finish_omp_threadprivate): Error on class-scope
3553                 variables.
3555         2005-11-02  Jakub Jelinek  <jakub@redhat.com>
3557                 * parser.c (cp_parser_omp_all_clauses): If some clause
3558                 type is not allowed, don't remove just one of the
3559                 clauses, but all clauses added in that loop round.
3561                 * semantics.c (finish_omp_clauses): Fix function
3562                 comment. Don't handle non-const or mutable specially,
3563                 as const and not mutable is predetermined shared and
3564                 that leads to double error. Don't ICE if copyin var is
3565                 PARM_DECL.
3567                 PR c++/24613
3568                 * parser.c (cp_parser_pragma): Diagnose
3569                 PRAGMA_OMP_SECTION outside of PRAGMA_OMP_SECTIONS
3570                 construct.
3572                 * semantics.c (finish_omp_threadprivate): Error if V
3573                   is automatic variable or has incomplete type.
3575         2005-11-01  Diego Novillo  <dnovillo@redhat.com>
3577                 * parser.c (cp_parser_omp_all_clauses): Use
3578                 OMP_CLAUSE_CHAIN instead of TREE_CHAIN.
3580         2005-11-01  Diego Novillo  <dnovillo@redhat.com>
3582                 * parser.c (cp_parser_omp_all_clauses): When emitting an
3583                 error message, remove the invalid clause from the list.
3585         2005-10-31  Diego Novillo  <dnovillo@redhat.com>
3587                 * parser.c (cp_parser_omp_parallel): Do not allow 'nowait' in
3588                 combined parallel+workshare directives.
3590         2005-10-31  Richard Henderson  <rth@redhat.com>
3592                 * cp-objcp-common.h (LANG_HOOKS_OMP_CLAUSE_DTOR):
3593                 Use cxx_omp_clause_dtor.
3594                 * cp-tree.h (CP_OMP_CLAUSE_INFO): New.
3595                 (cxx_omp_clause_dtor): New.
3596                 * cp-gimplify.c (cxx_omp_clause_apply_fn): New.
3597                 (cxx_omp_clause_default_ctor): Use it.
3598                 (cxx_omp_clause_copy_ctor, cxx_omp_clause_assign_op):
3599                 Likewise.
3600                 (cxx_omp_clause_dtor): New.
3601                 * semantics.c (finish_omp_clauses): Rewrite cdtor
3602                 checking to fill in CP_OMP_CLAUSE_INFO.  Don't
3603                 specialcase LASTPRIVATE for removal.
3604                 (cxx_omp_clause_default_ctor, cxx_omp_clause_copy_ctor,
3605                 cxx_omp_clause_assign_op): Move to cp-gimplify.c.
3607         2005-10-28  Jakub Jelinek  <jakub@redhat.com>
3609                 * semantics.c (finish_omp_threadprivate): If
3610                   DECL_RTL_SET_P, call make_decl_rtl again so that
3611                   encode_section_info can update SYMBOL_REF's flags.
3613         2005-10-26  Jakub Jelinek  <jakub@redhat.com>
3615                 * semantics.c (finish_omp_for): Don't segfault if COND
3616                 or INCR is NULL.  If not calling c_finish_omp_for
3617                 right away and one of COND and INCR is NULL, issue
3618                 error and don't expand anything.
3620                 PR c++/24512
3621                 * cp-tree.h (finish_omp_for): Add PRE_BODY argument.
3622                 * semantics.c (finish_omp_for): Likewise.  Set
3623                 OMP_FOR_PRE_BODY to PRE_BODY if deferring, add it
3624                 into the current statement list if not processing
3625                 template decl or pass it to c_finish_omp_for.
3627                 * parser.c (cp_parser_omp_for_loop): Expand optional DECL_EXPRs
3628                 into PRE_BODY statement list.  Pass it to finish_omp_for.
3629                 * pt.c (tsubst_expr) <case OMP_FOR>: tsubst_expr also
3630                 OMP_FOR_PRE_BODY into PRE_BODY stmt list, pass it to
3631                 finish_omp_for.  Put all the statements into sk_omp
3632                 scope.
3634         2005-10-25  Jakub Jelinek  <jakub@redhat.com>
3636                 PR c++/24516
3637                 * parser.c (struct cp_parser): Rename in_iteration_statement
3638                 field to in_statement.
3639                 (IN_SWITCH_STMT, IN_ITERATION_STMT): Define.
3640                 (IN_OMP_BLOCK, IN_OMP_FOR): Change values.
3641                 (cp_parser_new, cp_parser_begin_omp_structured_block,
3642                 cp_parser_end_omp_structured_block,
3643                 cp_parser_omp_for_loop): Adjust for
3644                 in_iteration_statement renaming.
3645                 (cp_parser_selection_statement): Save
3646                 parser->in_iteration, or it temporarily with
3647                 IN_SWITCH_STMT for the
3648                 cp_parser_implicitly_scoped_statement call.
3649                 (cp_parser_iteration_statement): Adjust for
3650                 in_iteration_statement renaming.  Use
3651                 IN_ITERATION_STMT rather than true.
3652                 (cp_parser_jump_statement): Adjust for
3653                 in_iteration_statement renaming and new values.  Don't
3654                 error on break in a switch statement within OMP_FOR or
3655                 OpenMP structured block.
3657                 PR c++/24513
3658                 * parser.c (cp_parser_cache_group): Don't stop if next
3659                 token is CPP_PRAGMA_EOL and end is CPP_PRAGMA_EOL as
3660                 well.  If current token is CPP_PRAGMA, consume
3661                 everything until CPP_PRAGMA_EOL inclusive.
3663         2005-10-24  Jakub Jelinek  <jakub@redhat.com>
3665                 PR c++/24502
3666                 * semantics.c (finish_omp_for): Handle MODOP_EXPR in
3667                 addition to MODIFY_EXPR.
3669         2005-10-23  Richard Henderson  <rth@redhat.com>
3671                 * cp-gimplify.c (struct cp_gimplify_ctx): Remove.
3672                 (bc_label): New.
3673                 (begin_bc_block, finish_bc_block): Use it.
3674                 (push_context, pop_context): Remove.
3675                 (cp_genericize): Don't use them.  Assert bc_label is null.
3676                 * semantics.c (finish_omp_clauses): Create a fake data
3677                 element of TYPE for probing ctors.
3679         2005-10-23  Richard Henderson  <rth@redhat.com>
3681                 * cp-objcp-common.h (LANG_HOOKS_OMP_CLAUSE_DEFAULT_CTOR): New.
3682                 (LANG_HOOKS_OMP_CLAUSE_COPY_CTOR): New.
3683                 (LANG_HOOKS_OMP_CLAUSE_ASSIGN_OP): New.
3684                 (LANG_HOOKS_OMP_CLAUSE_DTOR): New.
3685                 * semantics.c (finish_omp_clauses): Look through
3686                 arrays when looking up special member calls.  Also
3687                 remove FIRSTPRIVATE when LASTPRIVATE fails.
3688                 (cxx_omp_clause_default_ctor, cxx_omp_clause_copy_ctor): New.
3689                 (cxx_omp_clause_assign_op): New.
3690                 * cp-tree.h: Declare them.
3692         2005-10-21  Richard Henderson  <rth@redhat.com>
3694                 * decl.c (check_previous_goto_1): Return false if error.
3695                 (check_switch_goto): Likewise.
3696                 (finish_case_label): Don't emit the case label on error.
3697                 * parser.c (struct cp_parser): Revert
3698                 in_switch_statement_p changes.
3699                 (cp_parser_labeled_statement,
3700                 cp_parser_selection_statement): Likewise.
3701                 (cp_parser_begin_omp_structured_block): Don't save...
3702                 (cp_parser_end_omp_structured_block): or restore
3703                 in_switch_statement_p.
3705         2005-10-21  Richard Henderson  <rth@redhat.com>
3707                 * semantics.c (finish_omp_threadprivate): Set
3708                 decl_flags.u2sel when necessary.
3710         2005-10-21  Richard Henderson  <rth@redhat.com>
3712                 * decl.c (poplevel_named_label_1): Restore creation of the
3713                 bad_decls list.
3714                 (decl_jump_unsafe): Check for error_mark_node types.
3715                 (check_goto): Don't check cdtor_label.  Don't use identify_goto.
3716                 * semantics.c (finish_return_stmt): Do check_omp_return before
3717                 converting to cdtor_label goto.
3719         2005-10-21  Richard Henderson  <rth@redhat.com>
3721                 PR c++/24451
3722                 * decl.c (check_omp_return): Return false on error.
3723                 * cp-tree.h (check_omp_return): Update decl.
3724                 * semantics.c (finish_return_stmt): Avoid adding
3725                 return on error.
3727         2005-10-21  Richard Henderson  <rth@redhat.com>
3729                 * cp-tree.h (struct language_function): Remove
3730                 x_named_label_uses.
3731                 Change x_named_labels to a hashtable.
3732                 (check_omp_return): Declare.
3733                 * decl.c (struct named_label_use_entry): Rename from
3734                 named_label_use_list.  Remove label_decl.
3735                 (struct named_label_entry): Rename from
3736                 named_label_list.  Remove old_value and next.  Change
3737                 in_try_scope and in_catch_scope to bool. Add
3738                 in_omp_scope.
3739                 (pop_labels_1): New.
3740                 (pop_labels): Use it.
3741                 (pop_local_label, poplevel_named_label_1): New.
3742                 (poplevel): Use them.
3743                 (named_label_entry_hash, named_label_entry_eq): New.
3744                 (make_label_decl): Create named_labels.  Move label
3745                 creation bits from lookup_label.
3746                 (declare_local_label): Tidy.
3747                 (identify_goto): Split out from ...
3748                 (check_previous_goto_1): Add exited_omp argument.
3749                 Handle omp scopes.
3751                 (use_label): Merge into...
3752                 (check_goto): ... here.  Handle omp scopes.
3753                 (check_omp_return): New.
3754                 (check_previous_gotos): Merge into...
3755                 (define_label): ... here.
3756                 (save_function_data): Remove x_named_label_uses reference.
3757                 (finish_function): Likewise.
3758                 * name-lookup.h (sk_omp): New.
3759                 * name-lookup.c (begin_scope): Handle it.
3760                 * parser.c (cp_parser_omp_for): Don't create extra
3761                 compound stmt.
3763                 (cp_parser_omp_sections): Likewise.
3764                 * semantics.c (finish_return_stmt): Call check_omp_return.
3765                 (begin_omp_structured_block): Use sk_omp.
3766                 (finish_omp_structured_block): Use do_poplevel.  Don't build a
3767                 MUST_NOT_THROW expression here.
3768                 (begin_omp_parallel, finish_omp_parallel): Don't create extra
3769                 compound statements.
3771         2005-10-21  Diego Novillo  <dnovillo@redhat.com>
3773                 PR 24455
3774                 * cp/cp-tree.h (struct lang_decl_flags): Add field
3775                 threadprivate_p.
3776                 (CP_DECL_IS_THREADPRIVATE): Define.
3777                 * cp/semantics.c (finish_omp_threadprivate): Set.  Do
3778                 not error out if CP_DECL_IS_THREADPRIVATE is set
3779                 already.
3780                 * cp/decl.c (duplicate_decls): Merge
3781                 CP_DECL_THREADPRIVATE_P.
3783         2005-10-20  Richard Henderson  <rth@redhat.com>
3785                 * cp-gimplify.c (cp_gimplify_omp_for): New.
3786                 (cp_gimplify_expr): Call it.
3787                 * cp-tree.h (OMP_FOR_GIMPLIFYING_P): New.
3788                 * parser.c (struct cp_parser): Rename
3789                 in_iteration_statement_p to in_iteration_statement and
3790                 change to unsigned char.  Similarly with
3791                 in_switch_statement.  Update all users.
3792                 (IN_OMP_BLOCK, IN_OMP_FOR): New.
3793                 (cp_parser_labeled_statement): Diagnose case labels
3794                 binding closer to an openmp block nested than the
3795                 switch.
3796                 (cp_parser_jump_statement): Diagnose break and
3797                 continue labels binding closer to an openmp block than
3798                 an iteration or switch.
3799                 (cp_parser_omp_for_loop): Mark in_iteration_statement
3800                 for an omp for.
3801                 (cp_parser_begin_omp_structured_block): New.
3802                 (cp_parser_end_omp_structured_block): New.
3803                 (cp_parser_omp_structured_block): Use them.
3804                 (cp_parser_omp_for, cp_parser_omp_sections_scope): Likewise.
3805                 (cp_parser_omp_parallel): Likewise.
3807         2005-10-20  Richard Henderson  <rth@redhat.com>
3809                 * semantics.c (begin_omp_structured_block): New.
3810                 (finish_omp_structured_block): New.
3811                 (begin_omp_parallel, finish_omp_parallel): Use them.
3812                 * parser.c (cp_parser_omp_structured_block): Likewise.
3813                 (cp_parser_omp_for): Likewise.
3814                 (cp_parser_omp_sections_scope): Likewise.
3815                 * cp-tree.h: Declare them.
3817         2005-10-20  Richard Henderson  <rth@redhat.com>
3819                 * parser.c (cp_parser_omp_master): Return the statement.
3820                 (cp_parser_omp_ordered): Likewise.
3821                 (cp_parser_omp_construct): Set the locus for them.
3823         2005-10-19  Richard Henderson  <rth@redhat.com>
3825                 * semantics.c (finish_omp_atomic): Revert to
3826                 uses_template_parms.
3828         2005-10-19  Richard Henderson  <rth@redhat.com>
3830                 * semantics.c (finish_omp_clauses): Avoid
3831                 DECL_THREAD_LOCAL_P on a PARM_DECL.  Remove some
3832                 stub asserts guaranteed to fail.
3834         2005-10-19  Richard Henderson  <rth@redhat.com>
3836                 * cp-tree.h (OMP_ATOMIC_DEPENDENT_P, OMP_ATOMIC_CODE): New.
3837                 (finish_omp_clauses, finish_omp_for, finish_omp_atomic): New.
3838                 * parser.c (cp_parser_omp_clause_copyin): Remove.
3839                 (cp_parser_omp_all_clauses): Use cp_parser_omp_var_list instead.
3840                 Call finish_omp_clauses.
3841                 (cp_parser_omp_clause_if): Don't do error checking here.
3842                 (cp_parser_omp_clause_num_threads): Likewise.
3843                 (cp_parser_omp_clause_schedule): Likewise.
3844                 (cp_parser_omp_atomic): Use finish_omp_atomic.
3845                 (cp_parser_omp_for_loop): Don't discard DECL_EXPR.
3846                 Don't decompose assignment statment here.  Use
3847                 finish_omp_for.
3849                 * pt.c (tsubst_omp_clauses): New.
3850                 (tsubst_expr): Handle OMP_PARALLEL, OMP_FOR, OMP_SECTIONS,
3851                 OMP_SINGLE, OMP_SECTION, OMP_CRITICAL, OMP_ATOMIC.
3852                 * semantics.c (finish_omp_clauses): New.
3853                 (begin_omp_parallel, finish_omp_parallel): Know Less about the
3854                 internals of the stmt_list stack.
3855                 (finish_omp_for, finish_omp_atomic): New.
3857         2005-10-18  Jakub Jelinek  <jakub@redhat.com>
3859                 * semantics.c (cxx_omp_predetermined_sharing): New function.
3860                 * cp-tree.h (cxx_omp_predetermined_sharing): New prototype.
3861                 * cp-objcp-common.h
3862                 (LANG_HOOKS_OMP_PREDETERMINED_SHARING): Redefine.
3864         2005-10-18  Richard Henderson  <rth@redhat.com>
3866                 * parser.c (cp_parser_omp_single): Use make_node and accessors
3867                 instead of build.
3869         2005-10-17  Richard Henderson  <rth@redhat.com>
3871                 * parser.c (cp_parser_omp_for_loop): Handle declarations.
3873         2005-10-12  Richard Henderson  <rth@redhat.com>
3875                 * Make-lang.in (CXX_C_OBJS): Add c-omp.o.
3876                 * cp-tree.h (begin_omp_parallel, finish_omp_parallel): Declare.
3877                 (finish_omp_threadprivate): Declare.
3878                 * parser.c (struct cp_lexer): Add in_pragma.
3879                 (cp_lexer_consume_token): Don't consume a PRAGMA_EOL
3880                 when in_pragma.
3881                 (cp_parser_skip_to_closing_parenthesis): Stop at PRAGMA_EOL.
3882                 (cp_parser_skip_to_end_of_statement): Likewise.
3883                 (cp_parser_skip_to_end_of_block_or_statement): Likewise.
3884                 (cp_parser_skip_to_closing_brace): Likewise.
3885                 (cp_parser_skip_to_pragma_eol): Reset in_pragma.
3886                 (cp_parser_require_pragma_eol): New.
3887                 (cp_parser_statement): Add in_compound argument;
3888                 update all callers.
3889                 Restart if a non-statement pragma seen outside a
3890                 compound.
3891                 (cp_parser_statement_seq_opt): Stop at PRAGMA_EOL.
3892                 (cp_parser_declaration_seq_opt): Likewise.
3893                 (cp_parser_member_specification_opt): Likewise.
3894                 (cp_parser_function_definition_after_decl): Likewise.
3895                 (cp_parser_skip_until_found): Likewise.
3896                 (cp_parser_cache_group): Likewise.
3897                 (enum pragma_omp_clause, cp_parser_omp_clause_name,
3898                 check_no_duplicate_clause,
3899                 cp_parser_omp_var_list_no_open,
3900                 cp_parser_omp_var_list, cp_parser_omp_clause_copyin,
3901                 cp_parser_omp_clause_default, cp_parser_omp_clause_if,
3902                 cp_parser_omp_clause_nowait,
3903                 cp_parser_omp_clause_num_threads,
3904                 cp_parser_omp_clause_ordered,
3905                 cp_parser_omp_clause_reduction,
3906                 cp_parser_omp_clause_schedule,
3907                 cp_parser_omp_all_clauses,
3908                 cp_parser_omp_structured_block, cp_parser_omp_atomic,
3909                 cp_parser_omp_barrier, cp_parser_omp_critical,
3910                 cp_parser_omp_flush, cp_parser_omp_for_loop,
3911                 cp_parser_omp_for, cp_parser_omp_master,
3912                 cp_parser_omp_ordered, cp_parser_omp_sections_scope,
3913                 cp_parser_omp_sections, cp_parser_omp_parallel,
3914                 cp_parser_omp_single, cp_parser_omp_threadprivate,
3915                 cp_parser_omp_construct): New.
3916                 (cp_parser_pragma): Handle OpenMP pragmas.
3917                 * semantics.c (finish_omp_threadprivate): New.
3918                 (begin_omp_parallel, finish_omp_parallel): New.
3920         2005-10-11  Richard Henderson  <rth@redhat.com>
3922                 * parser.c (struct cp_token): Add pragma_kind.
3923                 (eof_token): Initialize it.
3924                 (cp_lexer_handle_pragma): Remove.
3925                 (cp_parser_initial_pragma): New.
3926                 (cp_lexer_new_main): Use it.
3927                 (cp_lexer_get_preprocessor_token): Initialize pragma_kind.
3928                 (cp_lexer_print_token): Don't handle CPP_PRAGMA.
3929                 (cp_parser_skip_to_pragma_eol): New.
3930                 (cp_parser_error): Use it.
3931                 (pragma_lex): New.
3933         2005-10-09  Richard Henderson  <rth@redhat.com>
3935                 * lex.c (parse_strconst_pragma): Update for c_lex name change.
3936                 (handle_pragma_java_exceptions): Likewise.
3937                 * parser.c (cp_lexer_new_main): Likewise.
3939         2005-10-06  Richard Henderson  <rth@redhat.com>
3941                 * parser.c (cp_lexer_new_main): Comment out defer_pragmas.
3942                 (cp_lexer_handle_pragma): Comment out
3943                 cpp_handle_deferred_pragma.
3945         2005-10-01  Richard Henderson  <rth@redhat.com>
3947                 * name-lookup.c (lookup_name): Remove prefer_type argument.
3948                 (lookup_name_prefer_type): New function.
3949                 * name-lookup.h (lookup_name_prefer_type): Declare it.
3950                 * decl.c (lookup_and_check_tag): Use it.
3951                 * pt.c (tsubst_friend_class): Likewise. Update for
3952                 lookup_name change.
3953                 (lookup_template_class, tsubst_copy_and_build): Likewise.
3955 2006-03-06  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3957         PR c++/15759
3958         * tree.c (bot_manip): Don't call mark_used.
3960 2006-03-02  Mike Stump  <mrs@apple.com>
3962         * decl2.c (import_export_decl): Remove redundant call to
3963         targetm.cxx.key_method_may_be_inline ().
3965 2006-03-02  Richard Sandiford  <richard@codesourcery.com>
3967         * decl.c (start_decl): Use have_global_bss_p when deciding
3968         whether to make the decl common.
3970 2006-03-01  Mike Stump  <mrs@apple.com>
3972         PR darwin/25908
3973         * decl2.c (import_export_decl): Fix ABI breakage on darwin.
3975 2006-02-24  Geoffrey Keating  <geoffk@apple.com>
3977         * except.c (expand_start_catch_block): Handle
3978         flag_use_cxa_get_exception_ptr.
3980 2006-02-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3982         PR c++/26291
3983         * decl.c (grok_op_properties): Check for ellipsis in arguments of
3984         operators.
3986 2006-02-20  Rafael Ávila de Espíndola  <rafael.espindola@gmail.com>
3988         * Make-lang.in (C++): Remove.
3989         (.PHONY): Remove C++.
3991 2006-02-18  Mark Mitchell  <mark@codesourcery.com>
3993         PR c++/26266
3994         * cp-tree.h (cp_finish_decl): Adjust declaration.
3995         (grokbitfield): Likewise.
3996         (finish_static_data_member_decl): Likewise.
3997         * init.c (constant_value_1): Ensure processing_template_decl when
3998         folding non-dependent initializers for static data members of
3999         dependent types.  Return error_mark_node for erroneous
4000         initailizers.
4001         * class.c (get_vtable_decl): Use finish_decl, not cp_finish_decl.
4002         * decl.c (cp_make_fname_decl): Adjust call to cp_finish_decl.
4003         (cp_finish_decl): Add init_const_expr_p parameter.  Set
4004         DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P here.
4005         (finish_decl): Adjust call to cp_finish_decl.
4006         (compute_array_index_type): Robustify.
4007         (start_method): Use finish_decl, not cp_finish_decl.
4008         * rtti.c (emit_tinfo_decl): Likewise.
4009         * except.c (initialize_handler_parm): Adjust call to
4010         cp_finish_decl.
4011         (expand_start_catch_block): Likewise.
4012         * cvt.c (build_up_reference): Adjust call to cp_finish_decl.
4013         * pt.c (instantiate_class_template): Adjust call to
4014         finish_static_data_member_decl.
4015         (tsubst_expr): Use finish_decl, not cp_finish_decl.
4016         (instantiate_decl): Adjust call to cp_finish_decl.
4017         * name-lookup.c (pushdecl_top_level_1): Use finish_decl, not
4018         cp_finish_decl.
4019         * decl2.c (finish_static_data_member_decl): Add init_const_expr_p
4020         parameter.
4021         (grokfield): Likewise.
4022         * parser.c (cp_parser_condition): Check for constant initializers.
4023         (cp_parser_init_declarator): Adjust calls to grokfield and
4024         cp_finish_decl.  Don't set
4025         DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P here.
4026         (cp_parser_member_declaration): Likewise.
4027         (cp_parser_objc_class_ivars): Likewise.
4029 2006-02-14  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4031         * call.c (standard_conversion): Return NULL instead of 0.
4032         (build_user_type_conversion_1): Likewise.
4033         (tourney): Likewise.
4034         * decl.c (redeclaration_error_message): Likewise.
4035         * error.c (language_to_string): Likewise.
4037 2006-02-13  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4039         * cp-tree.h (warn_hidden): Remove prototype.
4040         * class.c (warn_hidden): Make static.
4042         * cp-tree.h (build_type_conversion): Remove prototype.
4043         * cvt.c (build_type_conversion): Add prototype, make static.
4045         * cp-tree.h (push_tinst_level): Remove prototype.
4046         (pop_tinst_level): Likewise.
4047         * pt.c (push_tinst_level): Add prototype, make static.
4048         (pop_tinst_level): Likewise.
4050 2006-02-13  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4052         * decl.c (grokdeclarator): Return NULL_TREE instead of 0.
4053         * typeck.c (unary_complex_lvalue): Likewise.
4055 2006-02-13  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4057         * lex.c (parse_strconst_pragma): Return error_mark_node instead of
4058         "(tree)-1" to indicate failure.  Simplify.
4059         (handle_pragma_interface): Test for error_mark_node instead of
4060         "(tree)-1".
4061         (handle_pragma_implementation): Likewise.
4063 2006-02-13  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4065         PR c++/26151
4066         * parser.c (cp_parser_decl_specifier_seq): Check for duplicate
4067         decl-specifiers.  Remove extra check for duplicate 'friend'.
4068         * decl.c (grokdeclarator): Remove check for duplicate
4069         decl-specifiers.  Set longlong together with long_p.
4071 2006-02-12  Jason Merrill  <jason@redhat.com>
4073         PR c++/24996
4074         * except.c (build_throw): Add a CLEANUP_POINT_EXPR inside the
4075         TRY_CATCH_EXPR or MUST_NOT_THROW_EXPR.
4077 2006-02-10  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4079         * class.c (debug_class): Remove extern.
4080         (debug_thunks): Likewise.
4082 2006-02-09  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4084         * typeck.c (string_conv_p): Don't test for flag_const_strings.
4086 2006-02-08  Jason Merrill  <jason@redhat.com>
4088         PR c++/25979
4089         * cp-gimplify.c (cp_gimplify_expr): Don't call
4090         cp_gimplify_init_expr for MODIFY_EXPRs.
4091         * typeck2.c (split_nonconstant_init_1): Use INIT_EXPR.
4093 2006-02-08  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4095         PR c++/26071
4096         * decl.c (grokdeclarator): Set dname also for destructor.
4098         PR c++/26070
4099         * decl.c (grokdeclarator): Clear storage_class together with staticp.
4101 2006-02-07  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4103         * cp-tree.h (tf_warning_or_error): Renamed from tf_warn_or_error.
4104         (cp_build_qualified_type): Propogate renaming.
4105         * call.c (convert_like_real): Likewise.
4106         * cvt.c (cp_convert_to_pointer, convert_to_reference): Likewise.
4107         * decl.c (make_typename_type, grokdeclarator): Likewise.
4108         * pt.c (tsubst_friend_function, instantiate_class_template,
4109         tsubst_default_argument, instantiate_decl,
4110         tsubst_initializer_list, tsubst_enum): Likewise.
4111         * semantics.c (finish_template_type): Likewise.
4112         * typeck.c (build_ptrmemfunc, convert_for_assignment): Likewise.
4114 2006-02-07  Dirk Mueller  <dmueller@suse.com>
4116         * typeck.c (build_binary_op): Annotate div-by-zero
4117         warnings to make -Wno-div-by-zero have an effect.
4119 2006-02-07  Mark Mitchell  <mark@codesourcery.com>
4121         PR c++/9737
4122         * pt.c (coerce_template_template_parms): Do not templates with
4123         excess default arguments to match template template parameters
4124         with fewer parameters.
4125         (coerce_template_parms): Add use_default_args parameter; use
4126         default arguments only when true.
4127         (lookup_template_class): Adjust call to coerce_template_parms.
4128         (fn_type_unification): Likewise.
4129         (unify): Likewise.
4130         (get_bindings): Likewise.
4131         (dependent_type_p): Add assertions.
4133 2006-02-06  Roger Sayle  <roger@eyesopen.com>
4135         * decl.c (grokdeclarator): Don't bother checking for CHAR_TYPE.
4136         * rtti.c (typeinfo_in_lib_p): Likewise.
4137         * cp-tree.h (INTEGRAL_CODE_P, CP_INTEGRAL_TYPE_P): Likewise.
4138         * name-lookup.c (arg_assoc_type): Likewise.
4140 2006-02-04  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4142         * cp-tree.h (tf_warn_or_error): New substituion flag.
4143         (cp_build_qualified_type): Use it.
4144         * call.c (convert_like_real): Likewise.
4145         * cvt.c (cp_convert_to_pointer): Likewise.
4146         (convert_to_reference): Likewise.
4147         * decl.c (make_typename_type): Likewise.
4148         (grokdeclarator): Likewise.
4149         * pt.c (tsubst_friend_function): Likewise.
4150         (tsubst_friend_class): Likewise.
4151         (instantiate_class_template): Likewise.
4152         (tsubst_default_argument): Likewise.
4153         (instantiate_decl): Likewise.
4154         (tsubst_initializer_list): Likewise.
4155         (tsubst_enum): Likewise.
4156         * semantics.c (finish_template_type): Likewise.
4157         * typeck.c (build_ptrmemfunc): Likewise.
4158         (convert_for_assignment): Likewise.
4160 2006-02-03  Lee Millward  <lee.millward@gmail.com>
4162         * typeck.c (string_conv_p): Pass appropiate
4163         OPT_Wxxxx values when calling warning().
4164         (build_array_ref, cxx_mark_addressable): Likewise.
4165         (check_return_expr): Likewise.
4167         * init.c (perform_member_init): Likewise.
4168         (sort_mem_initializers, emit_mem_initializers): Likewise.
4170         * class.c (check_field_decls): Likewise.
4171         (warn_about_ambiguous_bases): Likewise.
4173         * decl.c (pop_label, poplevel): Likewise.
4174         (duplicate_decls, grok_op_properties): Likewise.
4175         (start_preparsed_function, finish_function): Likewise.
4177         * name-lookup.c (pushdecl_maybe_friend): Likewise.
4178         (pushdecl_maybe_friend): Likewise.
4180         * parser.c (cp_parser_warn_min_max): Likewise.
4181         (cp_parser_cast_expression): Likewise.
4183         * method.c (lazily_declare_fn): Likewise.
4184         * cvt.c (convert_to_void): Likewise.
4185         * mangle.c (finish_mangling): Likewise.
4186         * cp-gimplify.c (gimplify_expr_stmt): Likewise.
4188 2006-02-03  Mark Mitchell  <mark@codesourcery.com>
4190         * name-lookup.c (do_class_using_decl): Use IDENTIFIER_TYPENAME_P,
4191         not IDENTIFIER_OPNAME_P.
4193 2006-01-31  Mark Mitchell  <mark@codesourcery.com>
4195         PR c++/25342
4196         * cp-tree.h (DECL_TEMPLATE_SPECIALIZATIONS): Revise
4197         documentation.
4198         * pt.c (determine_specialization): Use INNERMOST_TEMPLATE_PARMS,
4199         not TREE_VALUE.
4200         (instantiate_class_template): Simplify.
4201         (verify_class_unification): Remove.
4202         (unify): Document parameters.  Use INNERMOST_TEMPLATE_ARGS to
4203         permit multiple levels of template arguments.
4204         (more_specialized_class): Simplify.
4205         (get_class_bindings): Pass full arguments to unify.  Fold
4206         verify_class_unification into this function.  Return full
4207         arguments.
4208         (most_specialized_class): Adjust for changes to
4209         get_class_bindings.  Issue errors here for ambiguity.  Return the
4210         fully deduced arguments for the most specialized class, in
4211         addition to the partial specialization.
4213 2006-01-31  Ben Elliston  <bje@au.ibm.com>
4215         * mangle.c: Comment fix.
4217 2006-01-29  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4219         * Make-lang.in (cp-warn): Include CXX_COMPAT_WARN.
4220         * repo.c (extract_string, afgets): Use cast when converting from
4221         void *.
4223 2006-01-29  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4225         * call.c (alloc_conversion): Use cast when converting from void *.
4226         (alloc_conversions): Likewise.
4227         (add_candidate): Likewise.
4228         (print_z_candidates): Likewise.
4229         (add_warning): Likewise.
4230         * pt.c (retrieve_local_specialization): Likewise.
4231         (process_partial_specialization): Likewise.
4232         (mangle_class_name_for_template): Likewise.
4233         (tsubst_template_args): Likewise.
4234         * typeck2.c (pat_calc_hash): Likewise.
4235         (pat_compare): Likewise.
4236         (abstract_virtuals_error): Likewise.
4237         * class.c (method_name_cmp): Likewise.
4238         (resort_method_name_cmp): Likewise.
4239         (get_vfield_name): Likewise.
4240         * decl2.c (generate_ctor_and_dtor_functions_for_priority): Likewise.
4241         * lex.c (init_reswords): Likewise.
4242         * rtti.c (create_pseudo_type_info): Likewise.
4243         * search.c (dfs_lookup_base): Likewise.
4244         (dfs_dcast_hint_pre): Likewise.
4245         (dfs_dcast_hint_post): Likewise.
4246         * tree.c (hash_tree_cons): Likewise.
4247         * repo.c (extract_string): Likewise.
4248         (afgets): Likewise.
4249         * cp-objcp-common.c (decl_shadowed_for_var_lookup): Likewise.
4250         * g++spec.c (lang_specific_driver): Likewise.
4252 2006-01-28  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4254         * call.c (joust): Pass option code to warning.  Use inform for
4255         explanation.
4256         * class.c (check_bases): Likewise.
4257         (maybe_warn_about_overly_private_class): Likewise.
4258         (check_field_decls): Likewise.
4259         (layout_empty_base): Likewise.
4260         (layout_virtual_bases): Likewise.
4261         (layout_class_type): Likewise.
4263 2006-01-28  Mark Mitchell  <mark@codesourcery.com>
4265         PR c++/25999
4266         * decl.c (start_preparsed_function): Call maybe_apply_pragma_weak
4267         here, not ...
4268         (start_function): ... here.
4270 2006-01-28  Mark Mitchell  <mark@codesourcery.com>
4272         PR c++/25855
4273         * class.c (resolve_address_of_overloaded_function): Adjust use of
4274         return value from most_specialized_instantiation.
4275         * pt.c (determine_specialization): Avoid multiple calls to
4276         get_bindings.
4277         (most_specialized_instantiation): When a tie occurs, set the
4278         current presumed champion to the next template.  Return the
4279         TREE_LIST node containing the template, rather than the template
4280         itself.
4281         (most_specialized): Remove.
4282         * name-lookup.c (push_overloaded_decl): When duplicate_decls
4283         indicates a failed redeclaration, report that to callers.
4285 2006-01-26  Jason Merrill  <jason@redhat.com>
4287         PR c++/16021
4288         * name-lookup.c (parse_using_directive): Require strong using to
4289         name a nested namespace.
4291 2006-01-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4293         Revert:
4294         * cp-tree.h (do_poplevel): Remove prototype.
4295         * semantics.c (do_poplevel): Add prototype.  Make static.
4297         Revert:
4298         * cp-tree.h (default_conversion): Remove prototype.
4299         * typeck.c (default_conversion): Make static.
4301 2006-01-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4303         * cp-tree.h (get_primary_binfo): Remove prototype.
4304         (push_using_decl): Likewise.
4305         (current_template_args): Likewise.
4306         (more_specialized_class): Likewise.
4307         (mark_class_instantiated): Likewise.
4308         (default_conversion): Likewise.
4309         (pfn_from_ptrmemfunc): Likewise.
4310         * class.c (get_primary_binfo): Add prototype, make static, simplify.
4311         * name-lookup.c (push_using_decl): Make static.
4312         * pt.c (current_template_args): Likewise.
4313         (more_specialized_class): Likewise.
4314         (mark_class_instantiated): Likewise.
4315         * typeck.c (default_conversion): Make static.
4316         (pfn_from_ptrmemfunc): Add prototype, make static.
4318 2006-01-24  Dirk Mueller  <dmueller@suse.de>
4320         * typeck.c (build_binary_op): Use OPT_Wfloat_equal in warning().
4322 2006-01-24  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4324         PR c++/25552
4325         * parser.c (cp_parser_unqualified_id): Check that destructor name
4326         and scope match.
4327         * call.c (check_dtor_name): Do not expect a BIT_NOT_EXPR.
4328         Adjust comment.  Return early if possible.
4329         Use same_type_p to compare types.
4330         * typeck.c (lookup_destructor): Adjust call to check_dtor_name.
4332 2006-01-24  Mark Mitchell  <mark@codesourcery.com>
4334         * semantics.c: Remove outdated comment.
4336 2006-01-23  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4338         * cp-tree.h (do_poplevel): Remove prototype.
4339         * semantics.c (do_poplevel): Add prototype.  Make static.
4341         * cp-tree.h (original_type): Remove prototype.
4342         * typeck.c (original_type): Make static.
4344         * cp-tree.h (declare_global_var): Remove prototype.
4345         * decl.c (declare_global_var): Make static.
4347         * cp-tree.h (implicitly_declare_fn): Remove prototype.
4348         * method.c (implicitly_declare_fn): Make static.
4350         * cp-tree.h (fold_decl_constant_value): Remove prototype.
4351         * pt.c (fold_decl_constant_value): Make static.
4353         * cp-tree.h (build_x_delete): Remove prototype.
4354         * init.c (build_vec_delete_1): Call build_op_delete_call directly
4355         and not via build_x_delete.
4356         (build_x_delete): Remove.
4358         * cp-tree.h (get_vtt_name): Remove prototype.
4359         * class.c (get_vtt_name): Remove.
4360         (build_vtt): Call mangle_vtt_for_type instead of get_vtt_name.
4362 2006-01-22  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4364         * rtti.c (build_dynamic_cast): Fix comment.
4366 2006-01-22  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4368         PR c++/10891
4369         * rtti.c (build_dynamic_cast): Reject dynamic_cast use if
4370         -fno-rtti.
4372 2006-01-21  Mark Mitchell  <mark@codesourcery.com>
4374         PR c++/25895
4375         * class.c (build_base_path): Generate a NOP_EXPR instead of a
4376         COMPONENT_REF if the base and derived classes are at the same
4377         address.
4379         PR c++/25856
4380         * decl.c (begin_destructor_body): Robustify.
4382         PR c++/25858
4383         * parser.c (cp_parser_direct_declarator): Robustify.
4385 2006-01-20  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4387         * parser.c (cp_lexer_next_token_is_keyword): Simplify.
4389         * parser.c (clear_decl_specs): Remove prototype.
4391         * parser.c (cp_parser_expression_fn): Remove.
4393         * call.c (add_builtin_candidates): Remove superfluous return.
4394         * name-lookup.c (do_toplevel_using_decl): Likewise.
4395         * parser.c (cp_parser_type_specifier_seq): Likewise.
4396         (cp_parser_save_default_args): Likewise.
4398 2006-01-20  Dirk Mueller  <dmueller@suse.com>
4400         PR c++/5520
4401         * semantics.c (finish_if_stmt): Call empty_body_warning.
4402         * parser.c (cp_parser_implicitly_scoped_statement):
4403         Mark empty statement with an empty stmt.
4405 2006-01-19  Mark Mitchell  <mark@codesourcery.com>
4407         PR c++/22136
4408         * name-lookup.c (do_class_using_decl): Don't try to look up base
4409         classes in templates with dependent base types.
4411 2006-01-19  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4413         PR c++/25854
4414         * pt.c (maybe_process_partial_specialization): Return early on
4415         error_mark_node.
4417 2006-01-19  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4419         PR c++/16829
4420         * decl.c (start_preparsed_function): Check default arguments
4421         unconditionally.
4422         * name-lookup.c (pushdecl_maybe_friend): Check default arguments
4423         of all functions and function templates.
4424         * parser.c (cp_parser_late_parsing_default_args): Check default
4425         arguments.
4426         * decl2.c (check_default_args): Set missing default arguments to
4427         error_mark_node.
4429 2006-01-18  Mark Mitchell  <mark@codesourcery.com>
4431         PR c++/25836
4432         * cp-tree.h (push_class_stack): New function.
4433         (pop_class_stack): Likewise.
4434         * class.c (class_stack_node): Add hidden field.
4435         (pushclass): Clear it.
4436         (push_class_stack): New function.
4437         (pop_class_stack): Likewise.
4438         (currently_open_class): Ignore hidden classes.
4439         (currently_open_derived_class): Likewise.
4440         * name-lookup.c (push_to_top_level): Call push_class_stack.
4441         (pop_from_top_level): Call pop_class_stack.
4443 2006-01-18  Kazu Hirata  <kazu@codesourcery.com>
4445         * tree.c (find_tree_t, find_tree): Remove.
4446         * cp-tree.h: Remove the prototype for find_tree.
4448 2006-01-18  Jakub Jelinek  <jakub@redhat.com>
4450         * search.c (lookup_conversions_r): Fix a pasto.
4452 2006-01-17  Eric Christopher  <echristo@apple.com>
4454         * call.c (convert_like_real): When issuing conversion
4455         warnings, depend on OPT_Wconversion.
4456         * cvt.c (build_expr_type_conversion): Ditto.
4458 2006-01-17  Kazu Hirata  <kazu@codesourcery.com>
4460         * name-lookup.c (lookup_namespace_name): Remove.
4461         * name-lookup.h: Remove the prototype for
4462         lookup_namespace_name.
4464 2006-01-17  Jakub Jelinek  <jakub@redhat.com>
4466         PR c/25682
4467         * decl.c (compute_array_index_type): After issuing not an integral
4468         constant-expression error, set size to 1 to avoid ICEs later on.
4470 2006-01-16  Ian Lance Taylor  <ian@airs.com>
4472         * parser.c: Include "cgraph.h".
4473         (cp_parser_asm_definition): Call cgraph_add_asm_node rather than
4474         assemble_asm.
4476 2006-01-16  Rafael �ila de Esp�dola  <rafael.espindola@gmail.com>
4478         * g++spec.c (lang_specific_spec_functions): Remove.
4480 2006-01-15  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4482         * decl.c (check_initializer): Fix thinko.
4484 2006-01-14  Mark Mitchell  <mark@codesourcery.com>
4486         PR c++/25663
4487         * parser.c (cp_parser_direct_declarator): Use cp_parser_error
4488         instead of error.
4490 2006-01-13  Jason Merrill  <jason@redhat.com>
4492         * pt.c (check_explicit_specialization): Use CP_DECL_CONTEXT even more.
4494         * name-lookup.c (set_decl_namespace): Use CP_DECL_CONTEXT.
4495         * pt.c (check_explicit_specialization): Likewise.
4497 2006-01-12  Jason Merrill  <jason@redhat.com>
4499         PR libstdc++/24660
4500         * pt.c (check_explicit_specialization): Handle namespace
4501         association.
4502         * name-lookup.c (set_decl_namespace): Likewise.
4504 2006-01-12  Nathan Sidwell  <nathan@codesourcery.com>
4506         PR c++/24824
4507         * class.c (handle_using_decl): Pass correct scope to
4508         cp_emit_debug_info_for_using.
4510 2006-01-11  Nathan Sidwell  <nathan@codesourcery.com>
4512         PR c++/25386
4513         * tree.c (lvalue_p_1): Any part of a COMPONENT_REF affects
4514         packedness.
4516 2006-01-06  Gabriel Dos Reis  <gdr@integrablesolutions.net>
4518         * parser.c (cp_parser_primary_expression): Document the grammar
4519         for the built-in offsetof, a GNU extension.
4521 2006-01-04  Zdenek Dvorak <dvorakz@suse.cz>
4523         PR c++/25632
4524         * init.c (constant_value_1): Unshare use of DECL_INITIAL.  Fix a typo
4525         in condition.
4527 2006-01-04  Chris Lattner  <sabre@gnu.org>
4529         * typeck2.c: update copyright to 2006
4530         (split_nonconstant_init_1):  Set TREE_CONSTANT to true.
4532 2006-01-04  Mark Mitchell  <mark@codesourcery.com>
4534         PR c++/24782
4535         * parser.c (cp_parser_nested_name_specifier_opt): Preserve access
4536         checks, even when parsing tentatively.
4538 2006-01-04  Richard Henderson  <rth@redhat.com>
4540         Merge from gomp branch.
4541         * lex.c (handle_pragma_java_exceptions): Fix whitespace.
4542         * parser.c (struct cp_token): Add pragma_kind.
4543         (eof_token): Update to match.
4544         (struct cp_lexer): Add in_pragma; rearrange next for better packing.
4545         (cp_parser_initial_pragma): New.
4546         (cp_lexer_new_main): Use it.  Don't bother clearing
4547         c_lex_return_raw_strings.
4548         (cp_lexer_get_preprocessor_token): Always initialize keyword
4549         and pragma_kind fields.  Handle CPP_PRAGMA.
4550         (cp_lexer_consume_token): Don't allow CPP_PRAGMA_EOL when
4551         in_pragma is set.
4552         (cp_lexer_handle_pragma): Remove.  Update callers to cp_parser_pragma.
4553         (cp_lexer_print_token) <CPP_PRAGMA>: Don't print as a string.
4554         (cp_parser_skip_to_pragma_eol): New.
4555         (cp_parser_error): Use it.
4556         (cp_parser_skip_to_closing_parenthesis): Stop at CPP_PRAGMA_EOL;
4557         rearrange with switch statement.
4558         (cp_parser_skip_to_end_of_statement): Likewise.
4559         (cp_parser_skip_to_end_of_block_or_statement): Likewise.
4560         (cp_parser_skip_to_closing_brace): Likewise.
4561         (cp_parser_skip_until_found): Likewise.
4562         (cp_parser_statement): Add in_compound argument; update callers.
4563         Use it to decide how to handle pragma parsing.
4564         (cp_parser_labeled_statement): Add in_compound argument; pass
4565         it on to cp_parser_statement.
4566         (cp_parser_statement_seq_opt): Stop at CPP_PRAGMA_EOL.
4567         (cp_parser_declaration_seq_opt): Likewise.
4568         (cp_parser_parameter_declaration): Likewise.
4569         (cp_parser_member_specification_opt): Likewise.
4570         (cp_parser_function_definition_after_decl): Likewise.
4571         (cp_parser_cache_group): Handle CPP_PRAGMA/CPP_PRAGMA_EOL pairs.
4572         (cp_parser_pragma): New.
4573         (pragma_lex): New.
4575 2006-01-04  Dirk Mueller <dmueller@suse.com>
4577         * decl.c (finish_constructor_body): create simple
4578         compound stmt instead of a if(1) { } construct.
4580 2006-01-03  Mark Mitchell  <mark@codesourcery.com>
4582         PR c++/25492
4583         * name-lookup.c (push_class_level_binding): When a derived class
4584         provides a type binding, eliminate any type binding from a base
4585         class.
4587         PR c++/25625
4588         * repo.c (repo_emit_p): Always instantiate static data members
4589         initialized by constant expressions, so that there values are
4590         available.
4592 2006-01-02  Mark Mitchell  <mark@codesourcery.com>
4594         PR c++/25635
4595         * class.c (add_method): Set TYPE_HAS_CONVERSION for classes with a
4596         conversion operator.
4597         * decl.c (grokdeclarator): Do not set TYPE_HAS_CONVERSION here.
4599         PR c++/25638
4600         * class.c (add_method): Never associate more than one destructor
4601         with a single class.
4603         PR c++/25637
4604         * cp-tree.h (do_friend): Adjust prototype.
4605         * decl.c (grokfndecl): Make funcdef_flag a bool, not an int.
4606         (grokdeclarator): Likewise.  Refine check for invalid
4607         declarations/definitions of member functions outside of their own
4608         class.
4609         * friend.c (do_friend): Make funcdef_flag a bool, not an int.
4611         PR c++/25633
4612         * parser.c (cp_parser_mem_initializer_list): Check result of
4613         cp_parser_mem_initializer against error_mark_node, not NULL_TREE.
4614         (cp_parser_mem_initializer): Return error_mark_node for failure.
4616         PR c++/25634
4617         * parser.c (cp_parser_template_parameter_list): Call
4618         begin_template_parm_list and end_template_parm_list here.
4619         (cp_parser_type_parameter): Not here.
4620         (cp_parser_template_declaration_after_export): Or here.
4621         (cp_parser_elaborated_type_specifier): Call
4622         cp_parser_check_template_parameters.
4624         * tree.c (build_target_expr_with_type): Use force_target_expr.
4626         * decl2.c (mark_used): Fix typo in comment.
4628 2006-01-02  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4630         * parser.c (cp_parser_using_declaration): Skip name-lookup on
4631         invalid scope.
4633 2005-12-30  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4635         * cxx-pretty-print.c (pp_cxx_constant): New.  Print
4636         string-literal in parens if input program says so.
4637         (pp_cxx_primary_expression): Hand off constant printing to
4638         pp_cxx_constant.
4639         (pp_cxx_pretty_printer_init): Set pp->c_base.constant.
4640         (pp_cxx_expression): Use pp_cxx_constant for literals.
4641         * error.c (dump_expr): Use pp_constant for literals.
4643 2005-12-29  Nathan Sidwell  <nathan@codesourcery.com>
4645         * method.c (make_thunk): Don't set comdat_linkage here.
4646         (use_thunk): Make thunk one only here, if thunk target is
4647         DECL_ONE_ONLY.
4649 2005-12-26  Mark Mitchell  <mark@codesourcery.com>
4651         PR c++/25439
4652         * decl.c (grokdeclarator): Remove dead code.
4653         * ptree.c (cxx_print_xnode): Handle BASELINK.
4654         * parser.c (make_id_declarator): Add sfk parameter.
4655         (cp_parser_direct_declarator): Do not pass TYPE_DECLs to
4656         make_id_declarator.
4657         (cp_parser_declarator_id): Simplify BASELINKs here.
4658         (cp_parser_member_declaration): Adjust calls to
4659         make_id_declarator.
4661 2005-12-26  Mark Mitchell  <mark@codesourcery.com>
4663         PR c++/23171, c++/23172, c++/25417.
4664         * typeck.c (build_unary_op): Create temporary variables for
4665         compound literals whose addresses are taken.
4666         * init.c (expand_aggr_init_1): Use COMPOUND_LITERAL_P.
4667         * decl.c (reshape_init_vector): Likewise.
4668         (reshape_init): Give it external linkage.
4669         (check_initializer): Use COMPOUND_LITERAL_P.
4670         (initialize_artificial_var): Allow the initializer to be a
4671         CONSTRUCTOR.
4672         * call.c (make_temporary_var_for_ref_to_temp): Use
4673         create_temporary_var.
4674         * cp-tree.h (COMPOUND_LITERAL_P): New macro.
4675         (rehape_init): Declare.
4676         * typeck2.c (digest_init): Use COMPOUND_LITERAL_P.
4677         * semantics.c (finish_compound_literal): Use reshape_init.
4679 2005-12-23  Mark Mitchell  <mark@codesourcery.com>
4681         PR c++/24671
4682         * pt.c (instantiate_template): Handle SFINAE.
4684 2005-12-23  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4686         * decl.c (grokdeclarator): Improve diagnostic for friend
4687         declarations of class members.
4689 2005-12-22  Mark Mitchell  <mark@codesourcery.com>
4691         PR c++/25369
4692         * tree.c (really_overloaded_fn): Tweak comment.
4693         * pt.c (tsubst_call_declarator_parms): Remove.
4694         (tsubst_copy): Call mark_used on the member referenced by an
4695         OFFSET_REF.
4696         * semantics.c (finish_qualified_id_expr): Simplify.
4697         * decl2.c (mark_used): Accept BASELINKs.
4699         PR c++/25364
4700         * typeck.c (build_unary_op): Pass DECLs not names to
4701         build_offset_refs.
4702         * init.c (build_offset_ref): Do not do name lookup.  Do not call
4703         mark_used.
4704         * call.c (build_call): Simplify and tidy.
4705         * semantics.c (finish_qualified_id_expr): Call mark_used.
4707 2005-12-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4709         PR c++/23333
4710         * parser.c (cp_parser_pure_specifier): Check for PURE_ZERO to
4711         identify a single '0'.
4713 2005-12-20  Mark Mitchell  <mark@codesourcery.com>
4715         PR c++/21228
4716         * decl.c (use_eh_spec_block): New function.
4717         (store_parm_decls): Use it.
4718         (finish_function): Likewise.
4720 2005-12-19  Mark Mitchell  <mark@codesourcery.com>
4722         PR c++/24278
4723         * init.c (expand_member_init): Print messages about baseclasses
4724         using %T rather than %D.
4726         PR c++/24915
4727         * class.c (add_method): Do not treat templates as identical unless
4728         their return types are the same.
4730 2005-12-12  Mark Mitchell  <mark@codesourcery.com>
4732         PR c++/25300
4733         * tree.c (build_qualified_name): Return error_mark_node for
4734         erroneous input.
4736 2005-12-10  Mark Mitchell  <mark@codesourcery.com>
4738         PR c++/25337
4739         * pt.c (tsubst_copy_and_build): Permit dependent types for the
4740         object in a class member access expression.
4742 2005-12-10  Terry Laurenzo  <tlaurenzo@gmail.com>
4744         PR java/9861
4745         * mangle.c (write_bare_function_type): Mangle return type for
4746         methods of Java classes
4748 2005-12-08  Th�dore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
4750         * call.c (build_conditional_expr): Print types in error messages.
4752 2005-12-07  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4754         * expr.c (cxx_expand_expr): Call gcc_unreachable instead of abort.
4756 2005-12-07  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4758         * cp-gimplify.c (gimplify_cp_loop): Use fold_build3.
4760 2005-12-07  Rafael �ila de Esp�dola  <rafael.espindola@gmail.com>
4762         * Make-lang.in (c++.all.build, c++.install-normal): Remove.
4764 2005-12-07  Rafael �ila de Esp�dola  <rafael.espindola@gmail.com>
4766         * Make-lang.in: Remove all dependencies on s-gtype.
4768 2005-12-06  Aldy Hernandez  <aldyh@redhat.com>
4770         PR C++/24138
4771         * decl.c (reshape_init_array_1): Handle max_index of -1.
4773 2005-12-06  Roger Sayle  <roger@eyesopen.com>
4775         * typeck.c (build_binary_op): Issue warning if either operand of a
4776         comparison operator is a string literal, except for testing equality
4777         or inequality against NULL.
4779 2005-12-06  Roger Sayle  <roger@eyesopen.com>
4781         PR c++/25263
4782         * decl.c (compute_array_index_type): Check that itype is an
4783         INTEGER_CST node before testing/clearing TREE_OVERFLOW.
4785 2005-12-05  Daniel Berlin  <dberlin@dberlin.org>
4787         * ptree.c (cxx_print_decl): Update to check for decl_common
4788         structure.
4790 2005-12-02  Mark Mitchell  <mark@codesourcery.com>
4792         PR c++/24173
4793         * decl.c (duplicate_decls): Don't rely on DECL_TEMPLATE_INFO after
4794         clobbering newdecl.
4796 2005-12-02  Richard Guenther  <rguenther@suse.de>
4798         * semantics.c (simplify_aggr_init_expr): Use buildN instead
4799         of build.
4801 2005-12-02  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4803         * parser.c (cp_lexer_new_main): Usr GGC_RESIZEVEC instead of
4804         ggc_realloc.
4805         (cp_parser_template_argument_list): Use XRESIZEVEC instead of
4806         xrealloc.
4807         * class.c (pushclass): Likewise.
4809 2005-12-02  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4811         * decl2.c (get_priority_info): Use XNEW, not xmalloc.
4812         * decl.c (push_switch): Likewise.
4813         * lex.c (handle_pragma_implementation): Likewise.
4814         * cp-objcp-common.c (decl_shadowed_for_var_insert): Use GGC_NEW,
4815         not ggc_alloc.
4816         (cxx_initialize_diagnostics): Use XNEW, not xmalloc.
4817         * class.c (init_class_processing): Use XNEWVEC, not xmalloc.
4818         * g++spec.c (lang_specific_driver): Likewise.
4819         * mangle.c (save_partially_mangled_name): Likewise.
4820         * parser.c (cp_lexer_new_main): Use GGC_NEWVEC, not ggc_alloc.
4821         (cp_parser_template_argument_list): Use XNEWVEC, nto xmalloc.
4822         (cp_parser_sizeof_operand): Likewise.
4823         * repo.c (open_repo_file, open_repo_file): Likewise.
4825 2005-12-01  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4827         * parser.c (cp_parser_make_typename_type): Call make_typename_type
4828         with tf_none instead of magic value 0.
4829         (cp_parser_explicit_instantiation): Call do_type_instantiation
4830         with tf_error instead of magic value 1.
4831         (cp_parser_elaborated_type_specifier): Call make_typename_type
4832         with tf_error instead of magic value 1.
4833         (cp_parser_class_name): Likewise.
4834         (cp_parser_lookup_name): Likewise.
4836 2005-12-01  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4838         * parser.c (cp_parser_declaration): Set token2.type to CPP_EOF,
4839         not RID_MAX.
4841 2005-11-30  Jason Merrill  <jason@redhat.com>
4843         PR c++/21123
4844         * cp-gimplify.c (cp_genericize_r): Don't dereference invisible reference
4845         parms in a thunk.
4847 2005-11-30  Ben Elliston  <bje@au.ibm.com>
4849         * typeck.c (build_x_unary_op): Correct spelling in error message.
4851 2005-11-28  Nathan Sidwell  <nathan@codesourcery.com>
4853         PR c++/21166
4854         * class.c (check_field_decls): Only set DECL_PACKED on a field
4855         when its natural alignment is > BITS_PER_UNIT.
4857 2005-11-27  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4859         PR c++/24979
4860         * cp-tree.h (DECL_MAIN_P): Remove duplicate definition.
4862 2005-11-26  Richard Henderson  <rth@redhat.com>
4864         * lex.c: Update for pragma_lex rename.
4865         * parser.c: Likewise.
4867 2005-11-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4869         PR c++/9278
4870         * decl.c (grokparms): Do not allow typedef-names in a '(void)'
4871         parmlist.
4873 2005-11-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4875         * typeck2.c (process_init_constructor_union): Remove check for
4876         unnamed union members.
4878 2005-11-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4880         * name-lookup.c (lookup_name_real): Merge two if's.
4882 2005-11-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4884         * pt.c (instantiate_class_template): Clean-up.
4886 2005-11-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4888         * pt.c (template_class_depth_real): Remove. Move functionality to ...
4889         (template_class_depth): ... here, replacing count_specializations
4890         with 0.  Adjust comment.
4892 2005-11-24  Richard Guenther  <rguenther@suse.de>
4893         Dirk Mueller <dmueller@suse.de>
4895         PR c++/14024
4896         * typeck.c (build_reinterpret_cast_1): Use
4897         strict_aliasing_warning.
4899 2005-11-23  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4901         PR c++/24235
4902         * pt.c (check_instantiated_args): Reword diagnostic message about
4903         template argument involving local types.
4905 2005-11-23  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4907         PR c++/21667
4908         * typeck.c (build_array_ref): Avoid code duplicate.  Use common
4909         C/C++ diagnostic function warn_array_subscript_with_type_char.
4911 2005-11-21  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4913         PR c++/22238
4914         * error.c (resolve_virtual_fun_from_obj_type_ref): New.
4915         (dump_expr): Use it in <case CALL_EXPR>.
4917 2005-11-21  Richard Henderson  <rth@redhat.com>
4919         * cp-objcp-common.h, name-lookup.c, name-lookup.h: Revert 11-18 patch.
4921         * name-lookup.c (lookup_name): Remove prefer_type argument.
4922         (lookup_name_prefer_type): New.
4923         * decl.c (lookup_and_check_tag): Use them.
4924         * pt.c (tsubst_friend_class): Likewise.
4925         (lookup_template_class): Likewise.
4926         (tsubst_copy_and_build): Likewise.
4927         * name-lookup.h (lookup_name_prefer_type): New.
4928         (lookup_name): Remove declaration.
4930 2005-11-18  Mark Mitchell  <mark@codesourcery.com>
4932         PR c++/8355
4933         * decl.c (grokfndecl): Set up DECL_TEMPLATE_INFO before calling
4934         set_decl_namespace.
4935         * name-lookup.c (set_decl_namespace):
4937 2005-11-18  Mike Stump  <mrs@apple.com>
4939         * cp-objcp-common.h (LANG_HOOKS_LOOKUP_NAME): Add.
4940         * name-lookup.c (lookup_name_two): Remove.
4941         (lookup_name_one): Add.
4942         * name-lookup.h (lookup_name_two): Remove.
4943         (lookup_name_one): Add.
4945 2005-11-15  Jason Merrill  <jason@redhat.com>
4947         PR c++/24580
4948         * method.c (locate_copy): Also use skip_artificial_parms here.
4949         (synthesize_exception_spec): Use CLASS_TYPE_P rather than checking
4950         for RECORD_TYPE.
4951         (locate_ctor): Abort if we fail to find a default constructor.
4953 2005-11-15  Mike Stump  <mrs@apple.com>
4955         * name-lookup.c (lookup_name_two): Add.
4956         * name-lookup.h: Likewise.
4958 2005-11-15  Mark Mitchell  <mark@codesourcery.com>
4960         PR c++/24667
4961         * typeck.c (check_for_casting_away_constness): Use the diag_fn.
4962         (build_const_cast_1): Call it, for C-style casts.
4964 2005-11-14  Mark Mitchell  <mark@codesourcery.com>
4966         PR c++/24687
4967         * pt.c (check_explicit_specialization): Don't check for C linkage.
4968         (push_template_decl_real): Likewise.
4969         * parser.c (cp_parser_explicit_specialization): Check here.
4970         (cp_parser_template_declaration_after_export): And here.
4972         * parser.c (cp_lexer_get_preprocessor_token): Initialize keyword
4973         field.
4975 2005-11-14  Jason Merrill  <jason@redhat.com>
4977         PR c++/24580
4978         * method.c (locate_ctor): Skip all artificial parms, not just
4979         'this'.
4981 2005-11-14  Mark Mitchell  <mark@codesourcery.com>
4983         * parser.c (eof_token): Add initializer for ambiguous_p.
4985 2005-11-13  Mark Mitchell  <mark@codesourcery.com>
4987         PR c++/24817
4988         * decl.c (check_redeclaration_exception_specification): New
4989         function.
4990         (duplicate_decls): Use it.
4991         * error.c (fndecl_to_string): Print the template parameter list.
4993         PR c++/20293
4994         * cxx-pretty-print.c (pp_cxx_statement): Print qualifying scopes
4995         for namespaces.
4996         (pp_cxx_original_namespace_definition): Likewise.
4997         * name-lookup.c (ambiguous_decl): Don't issue error messages;
4998         instead return lists of ambiguous candidates.
4999         (select_decl): Handle ambiguous namespace lookups.
5000         * parser.c (cp_token): Add ambiguous_p.
5001         (cp_lexer_get_preprocessor_token): Set it.
5002         (cp_parser_diagnose_invalid_type_name): Avoid duplicate messages
5003         when a qualified name uses an invalid scope.
5004         (cp_parser_primary_expression): Print ambiguous candidates.
5005         (cp_parser_type_parameter): Adjust comment to reflect new
5006         parameter name for cp_parser_lookup_name.
5007         (cp_parser_template_argument): Likewise.
5008         (cp_parser_elaborated_type_specifier): Likewise.
5009         (cp_parser_namespace_name): Likewise.
5010         (cp_parser_class_name): Print ambiguous candidates.
5011         (cp_parser_lookup_name): Rename ambiguous_p parameter to
5012         ambiguous_decls.  Use it to return a list of ambiguous candiates
5013         when a lookup is ambiguous.
5014         (cp_parser_lookup_name_simple): Adjust comment to reflect new
5015         parameter name for cp_parser_lookup_name.
5017 2005-11-12  Jakub Jelinek  <jakub@redhat.com>
5019         PR c++/24780
5020         * typeck.c (complete_type): Set TYPE_NEEDS_CONSTRUCTING
5021         and TYPE_HAS_NONTRIVIAL_DESTRUCTOR flags for all variants
5022         of array type.
5024         PR c++/24761
5025         * pt.c (tsubst_copy_asm_operands): New function.
5026         (tsubst_expr) <case ASM_EXPR>: Use it.
5028 2005-11-08  Jakub Jelinek  <jakub@redhat.com>
5030         PR c++/19450
5031         * decl.c (redeclaration_error_message): Issue diagnostics about
5032         olddecl and newdecl disagreement on __thread property.
5033         (grokdeclarator): Set DECL_TLS_MODEL on class static variables.
5035 2005-11-08  Jason Merrill  <jason@redhat.com>
5037         PR c++/21123
5038         * method.c (use_thunk): Use build_cplus_new instead of
5039         force_target_expr.
5041 2005-11-06  Jason Merrill  <jason@redhat.com>
5042             James A. Morrison <phython@gcc.gnu.org>
5044         PR c++/17256
5045         * decl2.c (cp_finish_file): Fix conditions for undefined warning.
5046         Set TREE_NO_WARNING instead of TREE_PUBLIC.
5047         * pt.c (instantiate_pending_templates): Set DECL_INITIAL to avoid
5048         a warning on a function we didn't instantiate because of excessive
5049         recursion.
5051 2005-11-06  Mark Mitchell  <mark@codesourcery.com>
5053         * class.c (record_subobject_offsets): Don't record offsets past
5054         biggest empty class for non-empty base classes.
5055         (layout_class_type): Use TYPE_SIZE_UNIT, not TYPE_SIZE, when
5056         keeping track of the size of emptyclasses.
5058         PR c++/21308
5059         * class.c (sizeof_biggest_empty_class): New variable.
5060         (record_subobject_offsets): Don't record offsets past biggest
5061         empty class for data members.  Replace vbases_p parameter with
5062         is_data_member parameter.
5063         (build_base_field): Adjust call.
5064         (layout_class_type): Likewise.  Maintain
5065         sizeof_biggest_empty_class.
5067 2005-11-05  Kazu Hirata  <kazu@codesourcery.com>
5069         * decl2.c, init.c, typeck.c: Fix comment typos.
5071 2005-11-04  Richard Guenther  <rguenther@suse.de>
5073         PR c++/22487
5074         * init.c (build_vec_init): Build comparison of matching
5075         types.
5077 2005-11-03  Josh Conner  <jconner@apple.com>
5079         PR c++/19989
5080         pt.c (tsubst): Accept zero-length array if tf_error is set
5081         in complain flags.  Change error message for negative-
5082         length array.
5084 2005-11-04  Joseph S. Myers  <joseph@codesourcery.com>
5086         * cp-tree.h (cp_cpp_error), error.c (cp_cpp_error): Take va_list*
5087         parameter.
5089 2005-11-03  Joseph S. Myers  <joseph@codesourcery.com>
5091         PR c++/17964
5092         * error.c (cp_cpp_error): New function.
5093         * cp-tree.h (cp_cpp_error): Declare.
5094         * parser.c (cp_lexer_new_main): Set CPP option client_diagnostic
5095         and error callback after lexing.
5097 2005-11-03  Mark Mitchell  <mark@codesourcery.com>
5099         PR c++/21627
5100         * pt.c (register_specialization): Update inline flags on clones.y
5102 2005-11-03  Andrew Pinski  <pinskia@physics.uc.edu>
5104         PR c++/24582
5105         * decl.c (declare_local_label): Return 0 for variables
5106         with error_mark_node as their types.
5108 2005-11-02  Mark Mitchell  <mark@codesourcery.com>
5110         PR c++/22434
5111         * call.c (build_conditional_expr): Do bad conversions, if there's
5112         no other choice.
5114         PR c++/24560
5115         * parser.c (cp_parser_postfix_dot_deref_expression): Improve error
5116         message for use of overloaded functions on LHS of "." operator.
5118         PR c++/19253
5119         * parser.c (cp_parser_postfix_expression): Use
5120         cp_parser_elaborated_type_specifier to handle typename-types in
5121         functional casts.
5122         (cp_parser_enclosed_argument_list): Skip ahead to the end of the
5123         template argument list if the closing ">" is not found.
5125         PR c++/24569
5126         * pt.c (instantiate_decl): Use cp_finish_decl, not
5127         finish_static_data_member_decl.
5129 2005-10-28  Andrew Pinski  <pinskia@physics.uc.edu>
5131         * decl.c (grokfndecl): Remove the setting
5132         of the return type of the function type
5133         of main after erroring about must returning
5134         int.
5136 2005-10-28  Andrew Pinski  <pinskia@physics.uc.edu>
5138         PR C++/23229
5139         * decl.c (grokfndecl): Create a new function type
5140         after erroring out about main not returning int.
5142 2005-10-28  Josh Conner  <jconner@apple.com>
5144         PR c++/22153
5145         * parser.c (cp_parser_member_declaration): Detect and handle
5146         a template specialization.
5148 2005-10-28  Andrew Pinski  <pinskia@physics.uc.edu>
5150         PR C++/23426
5151         * decl.c (start_decl): Check that the decl is an
5152         error_mark_node before getting the type.
5153         Remove the check for the decl's type being an
5154         error_mark_node.
5156 2005-10-21  Mark Mitchell  <mark@codesourcery.com>
5158         PR c++/24260
5159         * parser.c (cp_parser_init_declarator): Pass attributes to
5160         grokfield.
5162 2005-10-20  Mark Mitchell  <mark@codesourcery.com>
5164         PR c++/22618
5165         * search.c (accessible_p): Check access in the outermost set of
5166         template parameters.
5168 2005-10-20  Richard Guenther  <rguenther@suse.de>
5170         * decl.c (grokdeclarator): Fix ambiguous pedwarn message.
5172 2005-10-18  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5174         PR c++/22293
5175         * decl.c (grokdeclarator): Reject unqualified destructors in
5176         friend declarations.
5178 2005-10-18  Mark Mitchell  <mark@codesourcery.com>
5180         PR c++/23293
5181         * pt.c (convert_template_argument): Use canonical type variants in
5182         template specializations.
5184 2005-10-18  Nathan Sidwell  <nathan@codesourcery.com>
5186         PR c++/21383
5187         * name-lookup.c (arg_assoc): Template args can be null in a
5188         template-id-expr.
5190         PR c++/22604
5191         * class.c (update_vtable_entry_for_fn): Don't process invalid
5192         covariant overriders.
5194         PR c++/23118
5195         * cp-tree.h (add_method): Add return value.
5196         * class.c (add_method): Return success indicator.
5197         * semantics.c (finish_member_declaration): Don't add an invalid
5198         method to the method list.
5200 2005-10-17  Mark Mitchell  <mark@codesourcery.com>
5202         PR c++/21908
5203         * call.c (build_new_method_call): Do not show VTT parameters to
5204         the user.
5206 2005-10-17  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5208         PR c++/23440
5209         * parser.c (cp_parser_statement): If the parser reached CPP_EOF,
5210         only complain about missing statement.
5212 2005-10-17  Nathan Sidwell  <nathan@codesourcery.com>
5214         PR c++/24386
5215         * cp-tree.h (BASELINK_QUALIFIED_P): New.
5216         * pt.c (tsubst_copy_and_build): <CALL_EXPR case>: Use it.
5217         * typeck.c (finish_class_member_access_expr): Set it.
5219         PR c++/21353
5220         * decl.c (check_default_argument): Don't check
5221         processing_template_decl or uses_template_parms here.
5222         (grokparms): Only call check_default_argument when not processing
5223         a template decl.
5224         * parser.c (cp_parser_late_parsing_default_arg): Call
5225         check_default_argument when not processing a template decl.
5227 2005-10-16  Mark Mitchell  <mark@codesourcery.com>
5229         PR c++/24389
5230         * decl2.c (mark_used): Use uses_template_parms instead of
5231         dependent_type_p.
5232         * init.c (constant_value_1): Handle uninstantiated templates
5233         specially.
5234         * pt.c (instantiate_decl): Add sanity check.
5236 2005-10-16  Mark Mitchell  <mark@codesourcery.com>
5238         PR c++/22173
5239         * typeck.c (check_template_keyword): Fix thinko.
5241 2005-10-16  Andrew Pinski  <pinskia@physics.uc.edu>
5243         PR c++/23959
5244         * decl.c (pop_switch): Only call c_do_switch_warnings
5245         when not processing templates.
5247 2005-10-16  Mark Mitchell  <mark@codesourcery.com>
5249         PR c++/22173
5250         * cp-tree.h (QUALIFIED_NAME_IS_TEMPLATE): New macro.
5251         (check_template_keyword): New function.
5252         (finish_id_expression): Change prototoype.
5253         (finish_qualified_id_expr): Change prototype.
5254         (build_qualified_name): New function.
5255         (finish_class_member_access_expr): Change prototype.
5256         * init.c (build_offset_ref): Use build_qualified_name.
5257         * mangle.c (write_expression): Likewise.
5258         * parser.c (cp_parser_primary_expression): Remove qualifying_class
5259         parameter.  Add address_p and template_arg_p.  Use
5260         build_qualified_name.
5261         (cp_parser_id_expression): Default *template_p to
5262         template_keyword_p.  Check for invalid uses of the template
5263         keyword.
5264         (cp_parser_postfix_expression): Eliminate special handling for
5265         qualified names.  Adjust call to cp_parser_primary_expression.
5266         (cp_parser_postfix_dot_deref_expression): Adjust call to
5267         cp_parser_id_expression and finish_class_member_access_expr.
5268         (cp_parser_template_argument_list): Add comment.
5269         (cp_parser_template_argument): Adjust use of
5270         cp_parser_primary_expression.  Remove call to
5271         finish_qualified_id_expr.
5272         (cp_parser_lookup_name): Use build_qualified_name.
5273         * pt.c (tsubst): Use build_qualified_name.
5274         (tsubst_qualified_id): Likewise.  Adjust call to
5275         finish_qualified_id_expr.
5276         (tsubst_copy): Use build_qualified_name.
5277         (tsubst_copy_and_build): Adjusts call to finish_id_expression and
5278         finish_class_member_access_expr.
5279         * semantics.c (finish_non_static_data_member): Use
5280         build_qualified_name.
5281         (finish_qualified_id_expr): Add template_p and template_arg_p
5282         parameters.
5283         (finish_id_expression): Remove qualifiying_class parameter.  Add
5284         template_p, done, address_p, and template_arg_p.  Use
5285         build_qualified_name.  Adjust calls to
5286         finish_class_member_acess_expr.
5287         * tree.c (build_qualified_name): New function.
5288         * typeck.c (check_template_keyword): New function.
5289         (finish_class_member_access_expr): Add template_p argument.  Check
5290         for invalid uses of the template keyword.
5292 2005-10-15  Mark Mitchell  <mark@codesourcery.com>
5294         PR c++/21347
5295         * class.c (maybe_warn_about_overly_private_class): Lazy
5296         constructors are public.
5298 2005-10-14  Mark Mitchell  <mark@codesourcery.com>
5300         PR c++/19565
5301         * call.c (convert_like_real): Rely on convert_and_check to issue
5302         warnings about overflow and conversion to unsigned.
5303         * decl.c (finish_enum): Use the location of the enumerators, not
5304         the closing brace of the enumeration, when reporting warnings
5305         about conversions.
5306         (build_enumerator): Use error_mark_node for erroneous values.
5307         * typeck2.c (digest_init): Remove reference to "signature pointer"
5308         from comment.
5310 2005-10-14  Nathan Sidwell  <nathan@codesourcery.com>
5312         PR c++/17796
5313         * optimize.c (update_cloned_parm): Add FIRST parameter. Use it.
5314         (maybe_clone_body): Track the first clone.
5316 2005-10-13  Nathan Sidwell  <nathan@codesourcery.com>
5318         PR c++/23984
5319         * class.c (build_base_path): The vtable is always the first thing
5320         in the vtt.
5322 2005-10-13  Mark Mitchell  <mark@codesourcery.com>
5324         PR c++/20721
5325         * cp-tree.h (DECL_NONTRIVIALLY_INITIALIZED_P): New macro.
5326         * decl.c (duplicate_decls): Merge it into new declarations.
5327         (decl_jump_unsafe): Use it, rather than DECL_INITIAL.
5328         (cp_finish_decl): Set it, when appropriate.
5330         PR c++/22180
5331         * call.c (build_new_method_call): Correct pretty-printing of
5332         destructor names.
5333         * pt.c (tsubst_qualified_id): Recognize invalid uses of "~T" as an
5334         identifier.
5336         PR c++/23694
5337         * decl.c (start_method): Return error_mark_node for errors.
5339         PR c++/23307
5340         * pt.c (push_template_decl_real): Complain about attempts to
5341         declare template variables.
5343         PR c++/22352
5344         * pt.c (tsubst_template_parms): Set processing_template_decl while
5345         processing the parameters.
5346         (tsubst_decl): Set processing_template_decl when substituting into
5347         a TEMPLATE_DECL.
5349         PR c++/22405
5350         * pt.c (most_specialized_instantiation): Robustify.
5352         PR c++/22464
5353         * semantics.c (finish_id_expression): Issue errors about uses of
5354         local variables in containing functions even in templates.
5356 2005-10-12  Danny Smith  <dannysmith@users.sourceforge.net>
5358         PR target/21801
5359         PR target/23589
5360         * class.c (finish_struct_1): Call
5361         targetm.cxx.adjust_class_at_definition.
5364 2005-10-12  Nathan Sidwell  <nathan@codesourcery.com>
5366         PR c++/21592
5367         * pt.c (build_non_dependent_expr): Don't wrap a COMPONENT_REF
5368         with already looked up member functions.  Assert we're not
5369         returning a NON_DEPENDENT_EXPR with unknown type.
5370         * typeck.c (finish_class_member_access_expr):  We can get
5371         non-template-id-expr baselinks.  If the lookup finds a baselink,
5372         remember it even inside templates.
5374         PR c++/23797
5375         * parser.c (cp_parser_functional_cast): Cope when TYPE is not a
5376         TYPE_DECL.  Use dependent_type_p to check type.
5377         * pt.c (uses_template_parms_p): Use dependent_type_p for a
5378         TYPE_DECL.
5379         (type_dependent_expression_p): Assert we've not been given a
5380         TYPE_DECL.
5382         PR c++/21117
5383         * decl.c (check_function_type): Correctly overwrite incomplete
5384         return type with void type.
5385         * typeck.c (check_return_expr): If the function's return type is
5386         void, don't try and convert a return expr.
5388 2005-10-12  David Edelsohn  <edelsohn@gnu.org>
5390         PR c++/23730
5391         * call.c (build_object_call): If BINFO is NULL, bypass
5392         lookup_fnfields and set fns to NULL_TREE.
5394 2005-10-12  Paolo Bonzini  <bonzini@gnu.org>
5396         PR c++/24052
5397         * error.c (dump_expr): Pass LABEL_DECL to dump_decl.  Print
5398         an ADDR_EXPR of a LABEL_DECL as &&.
5400 2005-10-12  Nathan Sidwell  <nathan@codesourcery.com>
5402         PR c++/19964
5403         * class.c (walk_subobject_offsets): Don't walk error_mark_node.
5405 2005-10-11  Ian Lance Taylor  <ian@airs.com>
5407         PR c++/8057
5408         * cvt.c (convert_to_void): Don't warn about unused values when
5409         processing a template declaration.
5411 2005-10-11  Mark Mitchell  <mark@codesourcery.com>
5413         PR c++/21089
5414         * call.c (convert_like_real): Use decl_constant_value, not
5415         integral_constant_value.
5416         * init.c (constant_value_1): New function.
5417         (integral_constant_value): Use it.
5418         (decl_constant_value): Likewise.
5419         * typeck.c (decay_conversion): Use decl_constant_value, not
5420         integral_constant_value.
5422         PR c++/21369
5423         * parser.c (cp_parser_elaborated_type_specifier): Don't treat
5424         class types as templates if the type is not appearing as part of a
5425         type definition or declaration.
5427 2005-10-10  Mark Mitchell  <mark@codesourcery.com>
5429         PR c++/24277
5430         * pt.c (instantiate_decl): Call finish_static_data_member_decl for
5431         static data members.
5433 2005-10-10  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
5434             Mark Mitchell  <mark@codesourcery.com>
5436         PR c++/23437
5437         * parser.c (cp_parser_template_argument_list): Do not treat
5438         contents of argument list as part of a constant expression.
5440 2005-10-10  Mark Mitchell  <mark@codesourcery.com>
5442         PR c++/24139
5443         * decl.c (grokdeclarator): Do not require template parameter lists
5444         for explicitly specialized class.
5445         * error.c (dump_aggr_type): Do not dump template arguments for
5446         non-primary specializations.
5447         (dump_function_name): Likewise.
5449         PR c++/24275
5450         * pt.c (instantiate_decl): Instantiate the initializer of
5451         a static data member in the namespace containing the class
5452         containing the static data member.
5454 2005-10-08  James A. Morrison  <phython@gcc.gnu.org>
5456         PR c++/22172
5457         * parser.c (cp_parser_postfix_expression) <RID_TYPENAME>: Treat nontype
5458         scopes as nondependent.
5460 2005-10-06  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5462         * call.c (resolve_args): Remove redundant test.
5464 2005-10-05  Paolo Bonzini  <bonzini@gnu.org>
5466         PR tree-optimization/21419
5467         PR tree-optimization/24146
5468         PR tree-optimization/24151
5470         * semantics.c (finish_asm_stmt): Call readonly_error if outputs are
5471         read-only.  Set ASM_VOLATILE_P for asms without outputs.
5473 2005-10-05  Nathan Sidwell  <nathan@codesourcery.com>
5475         PR c++/23513
5476         * call.c (joust): Adjust length count to more_specialized_fn.
5477         * pt.c (more_specialized_fn): Cope with non-static member vs
5478         non-member.
5480 2005-10-04  Andrew Pinski  <pinskia@physics.uc.edu>
5482         PR middle-end/23125
5483         * decl.c (make_rtl_for_nonlocal_decl): Use set_user_assembler_name
5484         instead of change_decl_assembler_name.
5486 2005-10-03  Alexandre Oliva  <aoliva@redhat.com>
5488         * error.c (dump_type) <UNKNOWN_TYPE>: Print reworded message.
5490 2005-10-03  Mark Mitchell  <mark@codesourcery.com>
5492         PR c++/17775
5493         * repo.c: Include flags.h.
5494         (finish_repo): Add -frandom-seed to the arguments.
5496 2005-10-02  Mark Mitchell  <mark@codesourcery.com>
5498         PR c++/22621
5499         * parser.c (cp_parser_template_argument): Don't turn "T::f" into
5500         "(*this).T::f".
5501         * pt.c (convert_nontype_argument): Remove ??? comment.
5503         PR c++/23840
5504         * tree.c (lvalue_p_1): A VA_ARG_EXPR with class type is an lvalue,
5505         when class rvalues are lvalues.
5507 2005-09-28  Mark Mitchell  <mark@codesourcery.com>
5509         PR c++/16782
5510         * decl.c (grokdeclarator): Always pedwarn about overqualified
5511         member names.
5513 2005-09-27  Mark Mitchell  <mark@codesourcery.com>
5515         PR c++/22147
5516         * name-lookup.c (maybe_process_template_type_declaration): Don't
5517         treat forward declarations of classes as templates just because
5518         we're processing_template_decl.
5519         * pt.c (tsubst_decl): Clear DECL_TEMPLATE_INFO for friend
5520         functions.
5522 2005-09-26  Jason Merrill  <jason@redhat.com>
5524         PR c++/13764
5525         * cp-tree.h (FUNCTION_NEEDS_BODY_BLOCK): New macro.
5526         * name-lookup.c (pushdecl_maybe_friend): Check it.
5527         * decl.c (begin_function_body): Do nothing if it's false.
5528         (finish_function_body): Ditto.
5529         (outer_curly_brace_block): New fn.
5530         (finish_function): Use it.
5532 2005-09-26  Richard Guenther  <rguenther@suse.de>
5534         PR middle-end/15855
5535         * decl2.c (do_static_destruction): Remove.
5536         (finish_static_initialization_or_destruction): Likewise.
5537         (DECL_EFFECTIVE_INIT_PRIORITY): New macro.
5538         (NEEDS_GUARD_P): Likewise.
5539         (do_static_initialization): Rename to
5540         do_static_initialization_or_destruction.  Process all
5541         initializers/destructors and handle common conditionalizing.
5542         (start_static_initialization_or_destruction): Rename to
5543         one_static_initialization_or_destruction.  Handle only
5544         decl-specific conditionalizing.
5545         (cp_finish_file): Call do_static_initialization_or_destruction.
5547 2005-09-22  Jakub Jelinek  <jakub@redhat.com>
5549         PR c++/21983
5550         * class.c (find_final_overrider): Move diagnostic about no unique final
5551         overrider to...
5552         (update_vtable_entry_for_fn): ... here.
5554 2005-09-21  Mark Mitchell  <mark@codesourcery.com>
5556         PR c++/23993
5557         * init.c (integral_constant_value): Use DECL_INTEGRAL_CONSTANT_VAR_P.
5559 2005-09-21  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5561         PR c++/23965
5562         * call.c (resolve_args): Return error_mark_node on arguments
5563         whose TREE_TYPE is error_mark_node.
5565 2005-09-20  Jakub Jelinek  <jakub@redhat.com>
5567         PR c++/23947
5568         * rtti.c (get_pseudo_ti_init): Recompute ti pointer after
5569         get_tinfo_ptr calls.
5571 2005-09-16  Mark Mitchell  <mark@codesourcery.com>
5573         PR c++/23914
5574         * parser.c (cp_parser_enclosed_template_argument_list): Make sure
5575         skip_evaluation is false when processing template arguments.
5577         PR c++/21514
5578         * pt.c (check_instantiated_args): Treat uses of anonymous types as
5579         causing type-deduction failure.
5581 2005-09-15  Jason Merrill  <jason@redhat.com>
5583         PR c++/23357
5584         * cp-tree.def (SIZEOF_EXPR, ALIGNOF_EXPR): Change code class to
5585         tcc_expression.
5587 2005-09-15  Mark Mitchell  <mark@codesourcery.com>
5589         PR c++/23896
5590         * pt.c (tsubst_aggr_type): Make sure skip_evaluation is false when
5591         processing template arguments.
5593         * pt.c (check_explicit_instantiation_namespace): Fix typo.
5595         PR c++/13140
5596         * decl.c (check_class_member_definition_namespace): New function.
5597         (grokfndecl): Use it.
5598         (grokvardecl): Likewise.
5599         (grokdecl): Improve documentation.
5600         * pt.c (check_explicit_instantiation_namespace): New function.
5601         (register_specialization): Call check_specialization_namespace
5602         when replacing an implicitly instantiated function.
5603         (check_explicit_specialization): Ensure that DECL_CONTEXT is set
5604         correctly for namespace-scope specializations.
5605         (do_decl_instantiation): Use
5606         check_explicit_instantiation_namespace.
5607         (do_type_instantiation): Likewise.
5609 2005-09-15  Nathan Sidwell  <nathan@codesourcery.com>
5611         PR c++/23725
5612         * error.c (dump_decl): <USING_DECL case> Use USING_DECL_SCOPE.
5614 2005-09-13  Bastian Blank <waldi@debian.org>
5616         PR c++/16171
5617         * mangle.c (find_substitution): Do not use special substitutions
5618         for identifiers not in std::.
5620 2005-09-13  Mark Mitchell  <mark@codesourcery.com>
5622         PR c++/23839
5623         * typeck.c (cxx_mark_addressable): Only check DECL_HARD_REGISTER
5624         for VAR_DECLs.
5626 2005-09-13  Mark Mitchell  <mark@codesourcery.com>
5628         PR c++/23842
5629         * pt.c (tsubst_default_argument): Do treat default argument
5630         expressions as occurring in the context of the function called.
5632 2005-09-12  Mark Mitchell  <mark@codesourcery.com>
5634         PR c++/23841
5635         * parser.c (cp_parser_primary_expression): Recognize the closing
5636         ">" of a template-argument-list after a floating-point literal as
5637         the end of a cast expression.
5639 2005-09-12  Mark Mitchell  <mark@codesourcery.com>
5641         PR c++/23789
5642         * cvt.c (perform_qualification_conversions): Don't create
5643         unnecessary NOP_EXPRs.
5644         * pt.c (tsubst_template_arg): Use fold_non_dependent_expr.
5646 2005-09-12  Ian Lance Taylor  <ian@airs.com>
5648         PR g++/7874
5649         * cp-tree.h (struct lang_decl_flags): Add hidden_friend_p
5650         bitfield.  Make dummy bitfield one bit smaller.
5651         (DECL_HIDDEN_FRIEND_P): Define.
5652         (pushdecl_maybe_friend): Declare.
5653         (pushdecl_top_level_maybe_friend): Declare.
5654         * decl.c (duplicate_decls): Add newdecl_is_friend parameter.
5655         Change prototype and all callers.  Add assertion that a
5656         DECL_ARTIFICIAL FUNCTION_DECL is not DECL_HIDDEN_FRIEND_P.  Set
5657         DECL_ANTICIPATED and DECL_HIDDEN_FRIEND_P in duplicated decl if
5658         appropriate.
5659         * name-lookup.c (supplement_binding): Don't ignore a
5660         DECL_HIDDEN_FRIEND_P.
5661         (pushdecl_maybe_friend): Break out contents of pushdecl.  Add
5662         is_friend parameter.  Set DECL_ANTICIPATED and
5663         DECL_HIDDEN_FRIEND_P for a friend function.
5664         (pushdecl): Just call pushdecl_maybe_friend.
5665         (pushdecl_with_scope): Add is_friend parameter.  Change prototype
5666         and all callers.
5667         (pushdecl_namespace_level): Likewise.
5668         (push_overloaded_decl): Likewise.  Check DECL_HIDDEN_FRIEND_P as
5669         well as DECL_ANTICIPATED when checking for a builtin.
5670         (do_nonmember_using_decl): Check DECL_HIDDEN_FRIEND_P as well as
5671         DECL_ANTICIPATED when checking for a builtin.
5672         (do_nonmember_using_decl): Likewise.
5673         (pushdecl_top_level_1): Add is_friend parameter.  Change all
5674         callers.
5675         (pushdecl_top_level_maybe_friend): New function.
5676         (remove_hidden_names): New function.
5677         (struct arg_lookup): Add args field.
5678         (friend_of_associated_class_p): New static function.
5679         (arg_assoc_namespace): Ignore hidden functions which are not
5680         friends of an associated class of some argument.
5681         (lookup_arg_dependent): Remove hidden functions from list passed
5682         in.  Initialize k.args.
5683         * name-lookup.h (remove_hidden_names): Declare.
5684         * friend.c (do_friend): Call pushdecl_maybe_friend instead of
5685         pushdecl.
5686         * call.c (add_function_candidate): Change DECL_ANTICIPATED test to
5687         an assertion, with a check for DECL_HIDDEN_FRIEND_P.
5688         (build_new_function_call): Add koenig_p parameter.  Change
5689         prototype and callers.
5690         * pt.c (register_specialization): Add is_friend parameter.  Change
5691         all callers.
5692         (push_template_decl_real): Change is_friend parameter to bool.
5693         Change prototype and all callers.
5694         (tsubst_friend_class): Call pushdecl_top_level_maybe_friend
5695         instead of pushdecl_top_level.
5697 2005-09-11  Richard Henderson  <rth@redhat.com>
5699         * decl2.c (build_anon_union_vars): Copy attributes from the base addr.
5700         * pt.c (tsubst_decl): Substitute in DECL_VALUE_EXPR.
5702 2005-09-09  Gabriel Dos Reis  <gdr@integrable-solutions.net>
5704         * parser.c (cp_parser_translation_unit): Simplify.  The while-block
5705         was actually executed at most once.
5707 2005-09-09  Richard Henderson  <rth@redhat.com>
5709         PR debug/20998
5710         * cp-tree.def (ALIAS_DECL): Remove.
5711         * cp-lang.c (cp_init_ts): Remove support for it.
5712         * error.c (dump_decl): Likewise.
5713         * name-lookup.c (pushdecl): Likewise.
5714         * semantics.c (finish_id_expression): Likewise.
5715         * decl2.c (build_anon_union_vars): Use a VAR_DECL with
5716         DECL_VALUE_EXPR instead.
5718 2005-09-09  Mark Mitchell  <mark@codesourcery.com>
5720         PR c++/22252
5721         * decl.c (start_preparsed_function): Do not pay attention to
5722         #pragma interface for implicitly-defined methods.
5723         * decl2.c (cp_finish_file): Do not complain about uses of inline
5724         functions that have bodies, even if we decided not to emit the
5725         body in this translation unit.
5726         * semantics.c (note_decl_for_pch): Do not mess with linkage.
5727         (expand_or_defer_fn): Make inline, non-template functions COMDAT
5728         at this point.
5730 2005-09-08  Richard Henderson  <rth@redhat.com>
5732         PR debug/23190
5733         * decl.c (wrapup_globals_for_namespace): Call
5734         emit_debug_global_declarations.
5735         * decl2.c (cp_finish_file): Likewise.
5737 2005-09-08  Mark Mitchell  <mark@codesourcery.com>
5739         PR c++/23691
5740         * decl2.c (mark_used): Instantiate static data members initialized
5741         by constants, even in a template.
5743 2005-09-08  Andrew Pinski  <pinskia@physics.uc.edu>
5745         PR obj-c++/16816
5746         * parser.c (cp_parser_objc_selector_expression): Treat CPP_SCOPE as
5747         two CPP_COLON.
5749 2005-09-07  Richard Guenther  <rguenther@suse.de>
5751         * cp-gimplify.c (cp_gimplify_expr): Create empty CONSTRUCTOR
5752         for EMPTY_CLASS_EXPR.
5754 2005-09-06  Jakub Jelinek  <jakub@redhat.com>
5756         PR c/23075
5757         * typeck.c (check_return_expr): Add no_warning argument.  Set
5758         *no_warning to true if "return-statement with no value, in function
5759         returning" warning has been issued.
5760         * cp-tree.h (check_return_expr): Adjust prototype.
5761         * semantics.c (finish_return_stmt): Set TREE_NO_WARNING if
5762         check_return_expr set *no_warning to true.
5764 2005-09-06  Mark Mitchell  <mark@codesourcery.com>
5766         * cp-tree.h (rvalue): New function.
5767         * call.c (build_conditional_expr): Use it.
5768         * init.c (build_new_1): Likewise.
5769         * rtti.c (build_dynamic_cast_1): Likewise.
5770         * tree.c (rvalue): New function.
5771         * typeck.c (build_unary_op): Use it.
5772         (build_static_cast_1): Likewise.
5774         PR c++/9782
5775         * init.c (build_new_1): Make sure the entire array type is
5776         complete, not just its element types.
5778 2005-09-06  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5780         * decl.c (check_elaborated_type_specifier): Remove redundant check.
5782 2005-09-06  Jakub Jelinek  <jakub@redhat.com>
5784         PR c++/23056
5785         * typeck.c (ignore_overflows): New helper function.
5786         (build_static_cast_1): Use it.
5788 2005-09-06  Kazu Hirata  <kazu@codesourcery.com>
5790         * cp-tree.h, decl.c, decl2.c, semantics.c: Fix comment typos.
5791         Follow spelling conventions.
5793 2005-09-05  Mark Mitchell  <mark@codesourcery.com>
5795         PR c++/23667
5796         * pt.c (tsubst_decl): Clear DECL_TEMPLATE_INSTANTIATED when
5797         copying a VAR_DECL.
5799 2005-09-05  Mark Mitchell  <mark@codesourcery.com>
5801         PR c++/21440
5802         * semantics.c (finish_stmt_expr_expr): Add an explicit
5803         initialization to the last statement in the statement-expression.
5804         * (finish_stmt_expr): Adjust accordingly.
5806 2005-09-03  Mark Mitchell  <mark@codesourcery.com>
5808         PR c++/23699
5809         * decl2.c (mark_used): Always instantiate static data members
5810         initialized by constant expressions.
5811         * pt.c (instantiate_decl): Instantiate the initializers for static
5812         data members initialized by constant expressions.
5814         PR c++/21687
5815         * semantics.c (expand_or_defer_fn): Do not call ggc_collect when
5816         finishing processing for a template function in a local class.
5817         Revert:
5818         2005-09-02  Mark Mitchell  <mark@codesourcery.com>
5819         * parser.c (cp_parser_class_specifier): Push/pop GC contexts
5820         around functions in local classes.
5822 2005-09-02  Mark Mitchell  <mark@codesourcery.com>
5824         PR c++/21687
5825         * parser.c (cp_parser_class_specifier): Push/pop GC contexts
5826         around functions in local classes.
5828 2005-08-31  Andrew Pinski  <pinskia@physics.uc.edu>
5830         PR obj-c++/23640
5831         * decl2.c (cp_finish_file): If this is obj-c++ and we need a static
5832         init, call generate_ctor_or_dtor_function.
5834 2005-08-31  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5836         PR c++/13377
5837         * parser.c (cp_parser_lookup_name): Pass LOOKUP_COMPLAIN to
5838         lookup_name_real on final parse.
5840 2005-08-31  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5842         PR c++/23639
5843         * semantics.c (qualified_name_lookup_error): Do not complain again
5844         on invalid scope.
5846 2005-08-30  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5848         PR c++/23586
5849         * parser.c (cp_parser_namespace_name): Move diagnostic for
5850         invalid namespace-name to here from ...
5851         * name-lookup.c (do_namespace_alias): ... here and ...
5852         (do_using_directive): ... here.  Remove dead code.
5854 2005-08-28  Mark Mitchell  <mark@codesourcery.com>
5856         PR c++/23099
5857         * cp-tree.h (saved_scope): Add skip_evaluation.
5858         * decl.c (start_decl): Use DECL_INITIALIZED_IN_CLASS_P, not
5859         DECL_INITIAL, to determine whether or not a static data member was
5860         initialized in the class-specifier.
5861         (cp_finish_decl): Add comment.
5862         * init.c (integral_constant_value): Subtitute into the
5863         initializers for static data members in templates.
5864         * name-lookup.c (push_to_top_level): Save skip_evaluation.
5865         (pop_from_top_level): Restore it.
5866         * pt.c (instantiate_class_template): Do not substitute into the
5867         intializers of static data members when instantiating a class.
5868         (regenerate_decl_from_template): Simplify.
5869         (instantiate_decl): Tidy.  Substitute into the initializer for a
5870         static data member even when the definition of the data member is
5871         not available.
5873 2005-08-26  Mark Mitchell  <mark@codesourcery.com>
5875         PR c++/19004
5876         * pt.c (uses_template_parms): Handle IDENTIFIER_NODE.
5877         (type_dependent_expression_p): Allow BASELINKs whose associated
5878         functions are simply a FUNCTION_DECL.
5880         PR c++/23491
5881         * cp-tree.h (build_vec_init): Adjust prototype.
5882         * init.c (perform_member_init): Adjust call to build_vec_init.
5883         (build_aggr_init): Likewise.
5884         (build_new_1): Do not call build_default_init for array types.
5885         (build_vec_init): Add explicit_default_init_p parameter.  Perform
5886         default initialization of vector elements when set.
5887         * typeck.c (build_modify_expr): Adjust call to build_vec_init.
5889 2005-08-25  Nathan Sidwell  <nathan@codesourcery.com>
5891         PR c++/20817
5892         * typeck.c (build_x_unary_op): Make sure OFFSET_REF is not for a
5893         ->*.
5895 2005-08-24  Nathan Sidwell  <nathan@codesourcery.com>
5897         PR c++/22454
5898         * parser.c (cp_lexer_peek_nth_token): Relax assert.
5900 2005-08-23  Nathan Sidwell  <nathan@codesourcery.com>
5902         PR c++/23044
5903         * pt.c (tsubst_qualified_id): A SCOPE_REF can still remain.
5905 2005-08-22  James E Wilson  <wilson@specifix.com>
5907         PR tree-optimization/23426
5908         * decl.c (grokdeclarator): Use TYPE_SIZE_UNIT not TYPE_SIZE for
5909         array size check.
5911 2005-08-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5913         PR c++/22233
5914         * pt.c (push_template_decl_real): Return error_mark_node if the
5915         number of template parameters does not match previous definition.
5917 2005-08-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5919         PR c++/23089
5920         * decl.c (require_complete_types_for_parms): Mark incomplete types
5921         as invalid.
5923 2005-08-19  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5925         * parser.c (cp_parser_nth_token_starts_template_argument_list_p):
5926         Fix typo in leading comment.
5928 2005-08-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5930         * name-lookup.c, ptree.c: Delete HOST_PTR_PRINTF.
5932 2005-08-15 Fariborz Jahanian <fjahanian@apple.com>
5934         * cp-tree.h (can_convert_arg, fn_type_unification): New argument.
5935         * call.c (add_template_candidate_real): Pass down 'flags' to
5936         fn_type_unification.
5937         (can_convert_arg): New 'flags' argument. Pass it to call to
5938         implicit_conversion instead of LOOKUP_NORMAL.
5939         (can_convert): Add LOOKUP_NORMAL to call to can_convert_arg.
5940         * class.c (resolve_address_of_overloaded_function): Ditto.
5941         (resolve_address_of_overloaded_function): Ditto.
5942         * decl.c (reshape_init, check_default_argument): Ditto.
5943         * typeck.c (build_ptrmemfunc): Ditto.
5944         * pt.c (type_unification_real): Add 'flags' argument.
5945         (fn_type_unification): Pass 'flags' to type_unification_real.
5946         (type_unification_real): Pass new 'flags' argument to call to
5947         can_convert_arg.
5949 2005-08-12  Giovanni Bajo  <giovannibajo@libero.it>
5950             Nathan Sidwell  <nathan@codesourcery.com>
5952         PR c++/21799
5953         PR c++/8271
5954         * pt.c (unify) <METHOD_TYPE>: Check this-pointer cv-qualifiers
5955         explicitly.
5957 2005-08-12  Nathan Sidwell  <nathan@codesourcery.com>
5959         PR c++/21799
5960         Revert my 2005-07-08 patch
5961         * pt.c (type_unification_real): Remove is_method_argument and
5962         assoicated checks.
5963         (fn_type_unification, unify): Adjust type_unification_real calls.
5965 2005-08-11  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5967         PR c++/23266
5968         * decl2.c (grokfield): Check that method is not static before
5969         marking it as pure.
5971 2005-08-11  Nathan Sidwell  <nathan@codesourcery.com>
5973         PR c++/23219
5974         * name-lookup.c (pushtag): Process the template type before
5975         altering the identifier lookup fields.  Remove unreachable code
5976         creating an empty stub decl.
5978 2005-08-10  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5980         PR c++/20646
5981         * decl.c (grokdeclarator): Reset storage_class after error.
5983 2005-08-08  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5985         PR c++/22508
5986         * init.c (build_new_1): Check for empty candidate list.
5988 2005-08-06  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5990         PR c++/23191
5991         * pt.c (tsubst) <case METHOD_TYPE>: Check for error_mark_node
5992         before calling build_exception_variant.
5994 2005-08-06  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5996         PR c++/19498
5997         * pt.c (tsubst_decl) <case TEMPLATE_DECL>: Return ERROR_MARK_NODE
5998         if substitution of template args did not succeed.
6000 2005-08-06  Michael Matz  <matz@suse.de>
6002         * method.c (use_thunk): Call init_insn_lengths.
6004 2005-08-05  James A. Morrison  <phython@gcc.gnu.org>
6006         PR c++/22514
6007         * name-lookup.c (cp_emit_debug_info_for_using): Do nothing if
6008         sorrycount or errorcount are nonzero.
6010 2005-08-05  Mark Mitchell  <mark@codesourcery.com>
6012         * name-lookup.c (pushtag): Remove accidental commit from:
6013         2004-12-21  Mark Mitchell  <mark@codesourcery.com>
6014         PR c++/19063
6015         * decl.c (grokdeclarator): Return error_mark_node, not
6016         void_type_node, to indicate errors.
6017         * parser.c (cp_parser_template_parameter_list): Robustify.
6018         (cp_parser_template_parameter): Likewise.
6020 2005-08-01  Kazu Hirata  <kazu@codesourcery.com>
6022         * class.c, decl.c, name-lookup.c, pt.c, typeck.c, typeck2.c:
6023         Fix comment typos.
6025 2005-07-29  Kazu Hirata  <kazu@codesourcery.com>
6027         * method.c: Fix a comment typo.
6029 2005-07-28  Mark Mitchell  <mark@codesourcery.com>
6031         PR c++/22545
6032         * call.c (add_builtin_candidate): Adjust for changes in
6033         representation of pointer-to-member types.
6035 2005-07-28  Mike Stump  <mrs@apple.com>
6037         * pt.c (check_explicit_specialization): Add visibility logic.
6038         (lookup_template_class): Likewise.
6039         (instantiate_class_template): Likewise.
6041 2005-07-27  Devang Patel  <dpatel@apple.com>
6043         * name-lookup.c (pushtag): Do no set DECL_IGNORED_P bit.
6045 2005-07-25  Ian Lance Taylor  <ian@airs.com>
6047         * ptree.c (cxx_print_identifier): Print a leading space if the
6048         indent level is 0.
6050 2005-07-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6052         * call.c (convert_for_arg_passing): Check function pointers when
6053         -Wmissing-format-attribute is activated.
6054         * typeck.c (convert_for_assignment): Likewise.
6056 2005-07-22  Manfred Hollstein  <mh@suse.com>
6058         * parser.c (cp_parser_declaration): Fix unitialised warnings.
6060 2005-07-21  Andrew Pinski  <pinskia@physics.uc.edu>
6062         * class.c (build_base_path): Fix typo.
6064 2005-07-21  Andrew Pinski  <pinskia@physics.uc.edu>
6066         PR C++/22358
6067         * class.c (build_base_path): Convert BINFO_OFFSET to the correct type.
6069 2005-07-21  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
6071         * call.c: Fix comment typo(s).
6072         * cxx-pretty-print.h: Likewise.
6073         * name-lookup.c: Likewise.
6074         * parser.c: Likewise.
6076 2005-07-20  Douglas Gregor <doug.gregor@gmail.com>
6078         PR c++/2922
6079         * semantics.c (perform_koenig_lookup): For dependent calls, just
6080         return the set of functions we've found so far. Later, it will be
6081         augmented by those found through argument-dependent lookup.
6082         * name-lookup.c (lookup_arg_dependent): Implement DR 164 by removing
6083         the optimization that skips namespaces where the functions were
6084         originally found.
6086 2005-07-20  Giovanni Bajo  <giovannibajo@libero.it>
6088         Make CONSTRUCTOR use VEC to store initializers.
6089         * call.c (convert_default_arg): Update call to digest_init.
6090         * class.c (dump_class_hierarchy, dump_array): Update to cope with
6091         VEC in CONSTRUCTOR_ELTS.
6092         * cp-tree.h (EMPTY_CONSTRUCTOR_P): Likewise.
6093         (finish_compound_literal, digest_init): Update declaration.
6094         * decl.c (struct reshape_iter): New data type.
6095         (reshape_init_array): Rename to...
6096         (reshape_init_array_1): Update to cope with VEC in CONSTRUCTOR_ELTS.
6097         (reshape_init): Rewrite from scratch. Split parts into...
6098         (reshape_init_array, reshape_init_vector, reshape_init_class,
6099         reshape_init_r): New functions.
6100         (check_initializer): Update call to reshape_init. Remove obsolete
6101         code.
6102         (initialize_artificial_var, cp_complete_array_type): Update to cope
6103         with VEC in CONSTRUCTOR_ELTS.
6104         * decl2.c (grokfield): Update calls to digest_init.
6105         (mark_vtable_entries): Update to cope with VEC in CONSTRUCTOR_ELTS.
6106         * error.c (dump_expr_init_vec): New function.
6107         (dump_expr): Use dump_expr_init_vec.
6108         * init.c (build_zero_init, build_vec_init): Update to cope with VEC
6109         in CONSTRUCTOR_ELTS.
6110         (expand_default_init): Update call to digest_init.
6111         * parser.c  (cp_parser_postfix_expression): Use a VEC for the
6112         initializers.
6113         (cp_parser_initializer_list): Build a VEC of initializers.
6114         * pt.c (tsubst_copy, tsubst_copy_and_build): Update to cope with VEC
6115         in CONSTRUCTOR_ELTS.
6116         * rtti.c (tinfo_base_init, generic_initializer, ptr_initializer,
6117         ptm_initializer, class_initializer, get_pseudo_ti_init): Use
6118         build_constructor_from_list instead of build_constructor.
6119         * semantics.c (finish_compound_literal): Update call to digest_init.
6120         * tree.c (stabilize_init): Update to cope with VEC in
6121         CONSTRUCTOR_ELTS.
6122         * typeck.c (build_ptrmemfunc1): Likewise.
6123         * typeck2.c: (cxx_incomplete_type_error, split_nonconstant_init_1):
6124         Likewise.
6125         (store_init_value): Use build_constructor_from_list and update call
6126         to digest_init.
6127         (digest_init): Rewrite.
6128         (process_init_constructor): Rewrite from scratch. Split into...
6129         (process_init_constructor_array, picflag_from_initializer,
6130         process_init_constructor_record, process_init_constructor_union):
6131         New functions.
6132         (PICFLAG_ERRONEOUS, PICFLAG_NOT_ALL_CONSTANT, PICFLAG_NOT_ALL_SIMPLE):
6133         New macros.
6134         (build_functional_cast): Use build_constructor_from_list instead of
6135         build_constructor.
6137 2005-07-18  Mark Mitchell  <mark@codesourcery.com>
6139         PR c++/22263
6140         * cp-tree.h (instantiate_decl): Change prototype.
6141         * decl2.c (mark_used): Adjust accordingly.
6142         * pt.c (do_decl_instantiation): Likewise.
6143         (instantiate_class_member): Likewise.
6144         (instantiate_decl): Rename undefined_ok as expl_inst_class_mem_p.
6145         Clear DECL_INTERFACE_KNOWN for an explicitly instantiated template
6146         that has no definition available.
6147         (instantiate_pending_templates): Adjust call to instantiate_decl.
6149 2005-07-17  Mark Mitchell  <mark@codesourcery.com>
6151         PR c++/22139
6152         * cp-tree.h (DECL_TEMPLATE_INFO): Improve documentation.
6153         * decl.c (duplicate_decls): Re-register template specializations
6154         for functions that have DECL_TEMLPLATE_INFO, even if they do not
6155         have DECL_TEMPLATE_INSTANTIATION set.
6157 2005-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6159         * call.c (diagnostic_fn_t): New.
6160         (build_temp, convert_like_real): Use diagnostic_fn_t.
6162 2005-07-15  Mark Mitchell  <mark@codesourcery.com>
6164         PR c++/22204
6165         * repo.c (repo_emit_p): Robustify.
6167 2005-07-14  Daniel Berlin  <dberlin@dberlin.org>
6169         Fix PR c++/22452
6170         * tree.c (decl_linkage): Don't check DECL_COMDAT on CONST_DECL.
6172 2005-07-15  Mark Mitchell  <mark@codesourcery.com>
6174         PR c++/22132
6175         * call.c (implicit_conversion): Add c_cast_p parameter.
6176         (standard_conversion): Likewise.  Allow conversions between
6177         differently-qualified pointer types when performing a C-style
6178         cast.
6179         (add_function_candidate): Adjust callee.
6180         (build_builtin_candidate): Likewise.
6181         (build_user_type_conversion_1): Likewise.
6182         (conditional_conversion): Likewise.
6183         (can_convert_arg): Likewise.
6184         (can_convert_arg_bad): Likewise.
6185         (perform_implicit_conversion): Likewise.
6186         * cp-tree.h (comp_ptr_ttypes_const): Declare.
6187         * typeck.c (comp_ptr_ttypes_const): Give it external linkage.
6188         Return bool.
6190 2005-07-12  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
6191             Nathan Sidwell  <nathan@codesourcery.com>
6193         PR c++/20172
6194         * pt.c (tsubst_template_parms): Check for invalid non-type
6195         parameters.
6197 2005-07-09  Andrew Pinski  <pinskia@physics.uc.edu>
6199         * cp-lang.c (shadowed_var_for_decl, decl_shadowed_for_var_lookup,
6200         decl_shadowed_for_var_insert): Move over to cp-objcp-common.c.
6201         (cp_init_ts): Call init_shadowed_var_for_decl.
6202         Remove include of gt-cp-cp-lang.h.
6203         * cp-objcp-common.c (shadowed_var_for_decl,
6204         decl_shadowed_for_var_lookup, decl_shadowed_for_var_insert): Moved from
6205         cp-lang.c.
6206         (init_shadowed_var_for_decl): New function to initialize
6207         shadowed_var_for_decl.
6208         Include gt-cp-cp-objcp-common.h.
6209         * Make-lang.in (gt-cp-lang.h): Remove.
6210         (gt-cp-cp-objcp-common.h): Add.
6211         (cp/cp-lang.o): Remove dependancy on gt-cp-lang.h.
6212         (cp/cp-objcp-common.o): Add dependancy on gt-cp-cp-objcp-common.h.
6213         * config-lang.in (gtfiles): Remove cp-lang.c and Add cp-objcp-common.c.
6214         * cp-tree (init_shadowed_var_for_decl): Add prototype.
6216 2005-07-08  Daniel Berlin  <dberlin@dberlin.org>
6218         * Make-lang.in: Add gt-cp-lang.h.
6219         (cp-lang.o): Ditto.
6220         * class.c (create_vtable_ptr): Stop setting DECL_ASSEMBLER_NAME on
6221         the field.
6222         * config-lang.in: Add cp-lang.c to gtfiles.
6223         * cp-lang.c: Include hashtab.h.
6224         (cp_init_ts): New function.
6225         (LANG_HOOK_INIT_TS): Use macro.
6226         (decl_shadowed_for_var_lookup): New function.
6227         (decl_shadowed_for_var_insert): Ditto.
6228         * cp-tree.h (THUNK_FUNCTION_CHECK): Use decl_common.
6229         (NON_THUNK_FUNCTION_CHECK): Ditto.
6230         (DECL_NAMESPACE_ASSOCIATIONS): Use decl_non_common.
6231         (DECL_INIT_PRIORITY): Ditto.
6232         (DECL_HAS_SHADOWED_FOR_VAR_P): Ditto.
6233         (DECL_SHADOWED_FOR_VAR): Use hashtable.
6234         (SET_DECL_SHADOWED_FOR_VAR): Ditto.
6235         * decl.c (duplicate_decls): Update for new/updated structures.
6236         (poplevel): Use SET_DECL_SHADOWED_FOR_VAR.
6237         * decl2.c (start_static_initialization_or_destruction): Deal with
6238         priority.
6239         * pt.c (tsubst_decl): Check TS_DECL_WRTL before doing
6240         SET_DECL_RTL.
6241         * tree.c (handle_init_priority_attribute): Handle priority.
6243 2005-07-08  Nathan Sidwell  <nathan@codesourcery.com>
6245         PR c++/21799
6246         * pt.c (type_unification_real): Add is_method argument.  Use it
6247         for this pointer unification.
6248         (fn_type_unification): Adjust type_unification_real call.
6249         (unify): Likewise.
6251 2005-07-07  Nathan Sidwell  <nathan@codesourcery.com>
6253         * pt.c (type_unification_real): Remove allow_incomplete argument.
6254         Remove unreachable code.
6255         (fn_type_unification): Adjust call to type_unification_real.
6256         (unify): Likewise.
6258 2005-07-05  Paolo Bonzini  <bonzini@gnu.org>
6260         * Makefile.in (class.o, decl2.o): Adjust dependencies.
6261         * class.c: Include tree-dump.h.
6262         * decl2.c: Include tree-dump.h.
6264 2005-07-02  Gabriel Dos Reis  <gdr@integrable-solutions.net>
6266         * dump.c: Use dump_string_field.
6268 2005-07-03  Joseph S. Myers  <joseph@codesourcery.com>
6270         * cp-tree.h (GCC_DIAG_STYLE): #undef before defining.  Change
6271         minimum GCC version for format checking to 4.1.
6273 2005-07-02  Kazu Hirata  <kazu@codesourcery.com>
6275         * Make-lang.in (cc1plus-checksum.c): Use
6276         build/genchecksum$(build_exeext), not build/genchecksum$(exeext).
6278 2005-07-02  Joseph S. Myers  <joseph@codesourcery.com>
6280         * name-lookup.c, parser.c: Use %q, %< and %> to quote in
6281         diagnostics.
6283 2005-07-02  Zack Weinberg  <zack@codesourcery.com>
6284             Joseph S. Myers  <joseph@codesourcery.com>
6286         * error.c (location_of): Add comment.
6287         (locate_error, cp_error_at, cp_warning_at, cp_pedwarn_at): Remove.
6288         * cp-tree.h (cp_error_at, cp_warning_at, cp_pedwarn_at): Remove.
6289         * call.c, class.c, decl.c, decl2.c, friend.c, init.c,
6290         name-lookup.c, parser.c, pt.c, search.c, semantics.c, typeck.c,
6291         typeck2.c: Use '+' flag instead of %J, cp_error_at, cp_warning_at
6292         or cp_pedwarn_at.  Mark up some diagnostic strings with N_.
6294 2005-06-30  Daniel Berlin  <dberlin@dberlin.org>
6296         * decl.c (require_complete_types_for_parms): Call relayout_decl
6297         instead of layout_decl.
6299 2005-06-30  Zack Weinberg  <zack@codesourcery.com>
6300             Jakub Jelinek  <jakub@redhat.com>
6302         * cp-lang.c: No need to include cxx-pretty-print.h.
6303         * error.c (cp_printer): Update signature.  No need to process
6304         flags.
6305         (print_instantiation_partial_context): Output last newline
6306         with pp_base_newline.
6307         * Make-lang.in: Update dependencies.
6309 2005-06-30  Steven Bosscher  <stevenb@suse.de>
6311         * decl.c (start_decl): Replace DECL_THREAD_LOCAL with
6312         DECL_THREAD_LOCAL_P.
6313         (cp_finish_decl): Likewise.
6314         (grokvardecl): Set the default DECL_TLS_MODEL here.
6316 2005-06-28  Joseph S. Myers  <joseph@codesourcery.com>
6318         * cvt.c (ocp_convert): Use invalid_conversion hook.
6319         * typeck.c (build_binary_op): Use invalid_binary_op hook.
6320         (build_unary_op): Use invalid_unary_op hook.
6322 2005-06-28  Paul Brook  <paul@codesourcery.com>
6324         * Make-lang.in (cp/except.o): Depend on $(TARGET_H)
6325         * except.c: Include target.h.
6326         (init_exception_processing): Initialize unwind_resume_libfunc.
6327         * doc/tm.texi: Document TARGET_ASM_TTYPE
6329 2005-06-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6331         * call.c (build_over_call): Pass in named argument list to
6332         `check_function_arguments'.
6333         * typeck.c (build_function_call): Likewise.
6335 2005-06-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6337         * cp-tree.h (lang_check_failed): Add noreturn attribute.
6339 2005-06-25  Kelley Cook  <kcook@gcc.gnu.org>
6341         * all files: Update FSF address in copyright headers.
6343 2005-06-23  Jason Merrill  <jason@redhat.com>
6345         PR c++/19317
6346         * semantics.c (simplify_aggr_init_expr): Use
6347         CALL_EXPR_RETURN_SLOT_OPT, not CALL_EXPR_HAS_RETURN_SLOT_ADDR.
6349 2005-06-23  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
6351         * pt.c (register_specialization): Remove superfluous assertion.
6353 2005-06-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6355         * call.c (convert_like_real): Add format attribute.
6356         * typeck.c (check_for_casting_away_constness,
6357         build_static_cast_1): Likewise.
6358         * typeck2.c (readonly_error, cxx_incomplete_type_diagnostic):
6359         Likewise.
6361 2005-06-17  Geoffrey Keating  <geoffk@apple.com>
6363         PR c++/17413
6364         * pt.c (type_unification_real): Apply template type deduction even
6365         to procedure parameters that are not dependent on a template
6366         parameter.
6368 2005-06-16  Nathan Sidwell  <nathan@codesourcery.com>
6370         * rtti.c (get_tinfo_decl): Avoid caching tinfo_descs when it might
6371         change.
6372         (create_pseudo_type_info): First parameter is an int.
6374 2005-06-15  Nathan Sidwell  <nathan@codesourcery.com>
6376         PR c++/20678
6377         * error.c (dump_expr) <COMPONENT_REF case>: Check DECL_NAME is not
6378         null.
6380         * Make-lang.in: Reformat some long lines.
6381         (gt-cp-rtti.h): New target.
6382         (cp/rtti.o): Add dependency.
6383         * config-lang.in (gtfiles): Add cp/rtti.c.
6384         * cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
6385         CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
6386         CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
6387         CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
6388         CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
6389         (ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
6390         ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
6391         class_desc_type_node, si_class_desc_type_node,
6392         vmi_class_desc_type_node, ptm_desc_type_node,
6393         base_desc_type_node): Remove.
6394         * decl.c: Adjust documentation of global trees.
6395         * rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
6396         TINFO_REAL_NAME): Remove.
6397         (struct tinfo_s): New.
6398         (enum tinfo_kind): New.
6399         (tinfo_descs): New.
6400         (get_tinfo_decl): Adjust use of tinfo descriptor.
6401         (tinfo_base_init, generic_initializer, ptr_initializer,
6402         ptm_initializer, class_initializer): Likewise.
6403         (get_pseudo_ti_init): Take descriptor index. Adjust.
6404         (create_pseudo_type_info): Likewise.
6405         (get_pseudo_ti_desc): Return descriptor index. Adjust.
6406         (create_tinfo_types): Adjust use of create_pseudo_type_info.
6407         (emit_tinfo_decl): Adjust use of tinfo descriptor.
6409 2005-06-14  Roger Sayle  <roger@eyesopen.com>
6411         * decl.c (grokdeclarator): Only check TREE_OVERFLOW on INTEGER_CST.
6413 2005-06-13  Geoffrey Keating  <geoffk@apple.com>
6415         * Make-lang.in (c++.install-man): Doesn't really depend on installdirs.
6416         (rule for installing g++.1 manpage): Does depend on installdirs.
6418 2005-06-13  Nathan Sidwell  <nathan@codesourcery.com>
6420         PR c++/20789
6421         * decl.c (cp_finish_decl): Clear runtime runtime initialization if
6422         in-class decl's initializer is bad.
6424         PR c++/21929
6425         * parser.c (struct cp_parser): Document that scope could be
6426         error_mark.
6427         (cp_parser_diagnose_invalid_type_name): Cope with error_mark for
6428         scope.
6429         (cp_parser_nested_name_specifier): Return NULL_TREE on error.
6430         (cp_parser_postfix_expression): Deal with null or error_mark
6431         scope.
6432         (cp_parser_elaborated_type_specifier): Adjust
6433         cp_parser_nested_name_specifier call.
6435         * parser (cp_parser_skip_to_end_of_block_or_statement): Cleanup.
6437 2005-06-12  Roger Sayle  <roger@eyesopen.com>
6439         PR c++/21930
6440         * error.c (dump_expr): UNARY_PLUS_EXPR need not handle void types.
6441         Treat CONVERT_EXPR identically to NOP_EXPR.
6443 2005-06-10  Aldy Hernandez  <aldyh@redhat.com>
6445         PR c++/10611
6446         * cvt.c (build_expr_type_conversion): Same.
6447         * typeck.c (build_binary_op): Handle vectors.
6448         (common_type): Same.
6449         (type_after_usual_arithmetic_conversions): Same.
6451 2005-06-08  Nathan Sidwell  <nathan@codesourcery.com>
6453         PR c++/19497
6454         * cp-tree.def (USING_DECL): Update documentation.
6455         * cp-tree.h (DECL_DEPENDENT_P): New.
6456         (USING_DECL_DECLS, USING_DECL_SCOPE): New.
6457         * class.c (handle_using_decl): Move most of the processing to ...
6458         * name-lookup.c (do_class_using_decl): ... here.  Make stricter.
6459         (push_using_decl): Use USING_DECL_SCOPE.
6460         (cp_emit_debug_info_for_using): Make extern.
6461         * cxx-pretty-print.c (pp_cxx_statement) <USING_DECL case>: Adjust.
6462         * name-lookup.h (cp_emit_debug_info_for_using): Declare.
6463         * pt.c (tsubst_decl) <USING_DECL case>: Use do_class_using_decl
6464         when tsubsting.
6465         (tsubst_expr): Use USING_DECL_SCOPE.
6466         * search.c (lookup_field_1): Use DECL_DEPENDENT_P.
6467         * semantics.c (finish_member_declaration): Likewise.
6469 2005-06-08  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
6471         PR c++/19894
6472         * pt.c (tsubst): Reject pointer-to-member of type void.
6474         PR c++/20563
6475         * parser.c (cp_parser_label_declaration): Deal with invalid/missing
6476         identifiers.
6478 2005-06-07  Nathan Sidwell  <nathan@codesourcery.com>
6480         * cp-tree.def (DEFAULT_ARG): Adjust documentation.
6481         * cp-tree.h (DEFARG_INSTANTIATIONS): New.
6482         (struct tree_default_arg): Add instantiations member.
6483         * parser.c (cp_parser_late_parsing_default_args): Adjust to use a
6484         VEC.
6485         * pt.c (tsubst_arg_types): Likewise.
6487         * parser.c (cp_parser_late_parsing_default_args): Fix overeager
6488         assert in previous patch.
6490 2005-06-06  Jakub Jelinek  <jakub@redhat.com>
6492         * error.c (locate_error): Use gmsgid instead of msgid for argument
6493         name.
6494         (cp_error_at, cp_warning_at, cp_pedwarn_at): Likewise.
6496 2005-06-06  Nathan Sidwell  <nathan@codesourcery.com>
6498         PR 21903
6499         * cp-tree.def (DEFAULT_ARG): Document TREE_CHAIN use.
6500         * parser.c (cp_parser_late_parsing_default_args): Propagate parsed
6501         argument to any early instantiations.
6502         * pt.c (tsubst_arg_types): Chain early instantiation of default arg.
6504         PR c++/20637
6505         * cp-tree.h (add_method): Add using_decl parameter.
6506         * class.c (add_method): Add using_decl parameter.  Adjust error
6507         messages.
6508         (handle_using_decl): Pass the using decl to add_method.
6509         (clone_function_decl): Adjust add_member calls.
6510         * decl2.c (check_classfn): Likewise.
6511         * method.c (lazily_declare_fn): Likewise.
6512         * semantics.c (finish_member_declaration): Likewise.
6514         * method.c (synthesize_method): Use inform, not warning.
6516 2005-06-06  Hans-Peter Nilsson  <hp@axis.se>
6518         * config-lang.in (target_libs): Remove target-gperf.
6520 2005-06-05  Mark Mitchell  <mark@codesourcery.com>
6522         PR c++/21619
6523         * cp-tree.h (DECL_IS_BUILTIN_CONSTANT_P): New macro.
6524         * parser.c (cp_parser_postfix_expression): Allow non-constant
6525         expressions as arguments to __builtin_constant_p.
6526         * tree.c (builtin_valid_in_constant_expr_p): Use
6527         DECL_IS_BUILTIN_CONSTANT_P.
6529 2005-06-03  Mark Mitchell  <mark@codesourcery.com>
6531         PR c++/21853
6532         * typeck.c (casts_away_constness_r): Do not drop cv-qualifiers on
6533         the pointed-to type for a pointer-to-member.
6535         PR c++/21336
6536         * cp-tree.h (grok_op_properties): Remove friendp parameter.
6537         * decl.c (grokfndecl): Adjust call.
6538         (grok_op_properties): Determine the class of which the function is
6539         a member by looking at its DECL_CONTEXT, not current_class_type.
6540         * pt.c (tsubst_decl): Adjust call to grok_op_properties.
6542 2005-06-02  Nathan Sidwell  <nathan@codesourcery.com>
6544         * method.c (synthesize_method): Add addtional arg to warning call.
6546         PR c++/21280
6547         * Make-lang.in (method.o): Add diagnostic.h
6548         * decl.c (start_preparsed_function): Use decl's location for file
6549         info.
6550         * decl2.c (cp_finish_file): Set input_location before synthesizing
6551         a function.
6552         (mark_used): When deferring a synthesized function, save current
6553         location.  Do not set function's location when actually
6554         synthesizing it.
6555         * method.c: #include diagnostic.h.
6556         (synthesize_method): Set the functions source location.  Show
6557         needed location if errors are emitted.
6559         * decl.c (start_decl): Simplify specialization handling. Remove
6560         unneeded CLASSTYPE_TEMPLATE_INSTANTIATION check.
6561         * mangle.c (discriminator_for_local_entity): Use VEC_index.
6563         PR c++/20350
6564         * decl.c (duplicate_decls): Copy all of DECL_USE_TEMPLATE.
6566         PR c++/21151
6567         * name-lookup.c (pushtag): Push local class even in a template.
6569 2005-05-31  Nathan Sidwell  <nathan@codesourcery.com>
6571         PR c++/21165
6572         * init.c (integral_constant_value): Check the type of the
6573         initializer, not the decl.
6575 2005-05-30  Mark Mitchell  <mark@codesourcery.com>
6577         PR c++/21784
6578         * name-lookup.c (do_nonmember_using_decl): Ignore builtin
6579         functions, even when the used name is not a function.
6581 2005-05-30  Kazu Hirata  <kazu@cs.umass.edu>
6583         * operators.def, optimize.c: Update copyright.
6585 2005-05-28  Mark Mitchell  <mark@codesourcery.com>
6587         PR c++/21210
6588         * call.c (standard_conversion): Permit conversions to complex
6589         types if conversion to the corresponding scalar type would be
6590         permitted.
6592         PR c++/21340
6593         * method.c (implicitly_declare_fn): Clear processing_template_decl
6594         when generating implicit declaration.
6596 2005-05-27  Mark Mitchell  <mark@codesourcery.com>
6598         PR c++/21614
6599         * typeck.c (get_member_function_from_ptrfunc): Do not attempt
6600         conversions to base classes of incomplete types.
6602 2005-05-27  Ian Lance Taylor  <ian@airs.com>
6604         * semantics.c (add_stmt): Add C++ frontend specific version.
6605         * cp-tree.h (STMT_IS_FULL_EXPR_P): Define.
6606         (stmts_are_full_exprs_p): Declare.
6608 2005-05-27  Roger Sayle  <roger@eyesopen.com>
6609             Giovanni Bajo  <giovannibajo@gcc.gnu.org>
6611         * cp-tree.def (UNARY_PLUS_EXPR): New C++ unary tree code.
6612         * parser.c (cp_parser_unary_expression): Use UNARY_PLUS_EXPR instead
6613         of CONVERT_EXPR.
6614         (cp_parser_unary_expression): Likewise.
6615         * typeck.c (build_unary_op): Likewise.
6616         * call.c (add_builtin_candidate, build_new_op): Likewise.
6617         * error.c (dump_expr): Likewise.
6618         * pt.c (tsubst_copy, tsubst_copy_and_build): Likewise.
6619         * decl.c (ambi_op_p, grok_op_properties): Likewise.
6620         * dump.c (dump_op): Likewise.
6621         * lex.c (init_operators): Likewise.
6622         * operators.def ("+"): Likewise.
6623         * cp-gimplify.c (cp_gimplify_expr): Handle UNARY_PLUS_EXPR like a
6624         conversion, if the result and argument types differ.
6625         * tree.c (fold_if_not_in_template): Fold UNARY_PLUS_EXPR much
6626         like a NOP_EXPR when !processing_template_decl.
6628         * cxx-pretty-print.c (pp_cxx_cast_expression): Prototype.
6629         (pp_cxx_unary_expression): Handle new UNARY_PLUS_EXPR tree code.
6631 2005-05-27  Nathan Sidwell  <nathan@codesourcery.com>
6633         PR c++/21455
6634         * typeck.c (get_delta_difference): Cope with incomplete but equal
6635         classes.  Reorder if.
6637         PR c++/21681
6638         * parser.c (cp_parser_late_parsing_for_member): Disable access
6639         checking for template functions.
6641 2005-05-26  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
6643         PR c++/21768
6644         * pt.c (redeclare_class_template): Change error message according
6645         to coding conventions.
6647 2005-05-26  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
6649         * call.c (build_op_delete_call): Fix quoting in error message.
6651 2005-05-25  Richard Henderson  <rth@redhat.com>
6653         PR libgcj/21692
6654         * cp-tree.h (make_alias_for): Declare.
6655         * decl2.c (build_java_method_aliases): New.
6656         (cp_finish_file): Call it.
6657         * method.c (make_alias_for): Split out from ...
6658         (make_alias_for_thunk): ... here.
6660 2005-05-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
6662         PR c++/21686
6663         * semantics.c (finish_id_expression): Fix quoting in error message.
6665 2005-05-25  DJ Delorie  <dj@redhat.com>
6667         * decl.c (duplicate_decls): Move warning control from if() to
6668         warning(OPT_*).
6669         * name-lookup.c (parse_using_directive): Likewise.
6670         * parser.c (cp_parser_elaborated_type_specifier): Likewise.
6671         (cp_parser_init_declarator): Likewise.
6672         * tree.c (handle_com_interface_attribute): Likewise.
6674 2005-05-24  Ziemowit Laski  <zlaski@apple.com>
6676         * class.c (layout_class_type): Do not issue C++ ABI warnings
6677         for ObjC structs.
6678         * decl.c (objc_mark_locals_volatile): Streamline by calling
6679         objc_volatilize_decl().
6680         * parser.c (cp_parser_objc_message_expression): Allow simple
6681         type specifiers (instead of merely type names) as message
6682         receivers.
6683         * pt.c (template_args_equal): Do not call objc_comptypes().
6684         * typeck.c (composite_pointer_type): If both pointers are
6685         ObjC-esque, arbitrarily choose the first; do not call
6686         objc_comptypes().
6687         (comptypes): Do not call objc_comptypes().
6688         (convert_for_assignment): Call objc_compare_types().
6689         (comp_ptr_ttypes_real): Call objc_type_quals_match() before
6690         concluding that types do not match.
6692 2005-05-24  Andrew Pinski  <pinskia@physics.uc.edu>
6694         PR C++/21645
6695         * optimize.c (update_cloned_parm): Copy the TYPE also from the
6696         original one.
6698 2005-05-19  Jakub Jelinek  <jakub@redhat.com>
6700         PR c++/21495
6701         * decl.c (grokdeclarator): Fix "storage class specified for"
6702         error reporting.
6704 2005-05-19  Kazu Hirata  <kazu@cs.umass.edu>
6706         * parser.c: Fix comment typos.
6708 2005-05-18  Geoffrey Keating  <geoffk@apple.com>
6710         * Make-lang.in (cc1plus-dummy): New.
6711         (cc1plus-checksum.c): New.
6712         (cc1plus-checksum.o): New.
6713         (cc1plus): Add cc1plus-checksum.o.
6715 2005-05-17  H.J. Lu  <hongjiu.lu@intel.com>
6717         PR C++/19664
6718         * decl2.c (determine_visibility): Don't set visibility to
6719         hidden if it has been set explicitly by user.
6721 2005-05-17  Ziemowit Laski  <zlaski@apple.com>
6722             Mike Stump  <mrs@apple.com>
6724         Yet more Objective-C++...
6726         * cp-objcp-common.h (cxx_get_alias_set): Move from
6727         here...
6728         (cxx_warn_unused_global_decl): Likewise.
6729         (cp_expr_size): Likewise.
6730         (cp_tree_size): Likewise.
6731         (cp_var_mod_type_p): Likewise.
6732         (cxx_initialize_diagnostics): Likewise.
6733         (cxx_types_compatible_p): Likewise.
6734         * cp-tree.h: to here.
6735         (do_poplevel): Add.
6736         * lex.c (D_OBJC): Add.
6737         (init_reswords): Add.
6738         * Make-lang.in (cp/pt.o): Add cp/cp-objcp-common.h.
6739         * parser.c: Add c-common.h include.
6740         * pt.c: Add c-common.h and cp-objcp-common.h includes.
6741         (template_args_equal): Use objc_comptypes as well.
6742         (tsubst_copy_and_build): Use objcp_tsubst_copy_and_build as well.
6743         * semantics.c (do_poplevel): Remove static.
6745         * decl.c (objc_mark_locals_volatile): Don't change decls that are
6746         already ok.
6747         * decl2.c (generate_ctor_or_dtor_function): Add code to initialize
6748         Objective C++ early enough.
6749         * lex.c (struct resword reswords): Add Objective-C++ support.
6750         * parser.c (cp_lexer_get_preprocessor_token): Add Objective-C++.
6751         (cp_parser_objc_message_receiver): Add.
6752         (cp_parser_objc_message_args): Likewise.
6753         (cp_parser_objc_message_expression): Likewise.
6754         (cp_parser_objc_encode_expression): Likewise.
6755         (cp_parser_objc_defs_expression): Likewise.
6756         (cp_parser_objc_protocol_expression): Likewise.
6757         (cp_parser_objc_selector_expression): Likewise.
6758         (cp_parser_objc_expression): Likewise.
6759         (cp_parser_objc_visibility_spec): Likewise.
6760         (cp_parser_objc_method_type): Likewise.
6761         (cp_parser_objc_protocol_qualifiers): Likewise.
6762         (cp_parser_objc_typename): Likewise.
6763         (cp_parser_objc_selector_p): Likewise.
6764         (cp_parser_objc_selector): Likewise.
6765         (cp_parser_objc_method_keyword_params): Likewise.
6766         (cp_parser_objc_method_tail_params_opt): Likewise.
6767         (cp_parser_objc_interstitial_code): Likewise.
6768         (cp_parser_objc_method_signature): Likewise.
6769         (cp_parser_objc_method_prototype_list): Likewise.
6770         (cp_parser_objc_method_definition_list): Likewise.
6771         (cp_parser_objc_class_ivars): Likewise.
6772         (cp_parser_objc_identifier_list): Likewise.
6773         (cp_parser_objc_alias_declaration): Likewise.
6774         (cp_parser_objc_class_declaration): Likewise.
6775         (cp_parser_objc_protocol_declaration): Likewise.
6776         (cp_parser_objc_protocol_refs_opt): Likewise.
6777         (cp_parser_objc_superclass_or_category): Likewise.
6778         (cp_parser_objc_class_interface): Likewise.
6779         (cp_parser_objc_class_implementation): Likewise.
6780         (cp_parser_objc_end_implementation): Likewise.
6781         (cp_parser_objc_declaration): Likewise.
6782         (cp_parser_objc_try_catch_finally_statement): Likewise.
6783         (cp_parser_objc_synchronized_statement): Likewise.
6784         (cp_parser_objc_throw_statement): Likewise.
6785         (cp_parser_objc_statement): Likewise.
6786         (cp_parser_primary_expression): Add Objective-C++.
6787         (cp_parser_statement): Likewise.
6788         (cp_parser_declaration): Likewise.
6789         (cp_parser_simple_type_specifier): Likewise.
6790         (cp_parser_type_name): Likewise.
6791         (cp_parser_parameter_declaration_list): Likewise.
6792         (cp_parser_member_declaration) Likewise.
6793         * tree.c: Include debug.h.
6794         * typeck.c (composite_pointer_type): Add Objective-C++ support.
6795         (finish_class_member_access_expr): Likewise.
6796         (build_function_call): Allow objc to rewrite FUNCTION_DECLs.
6797         (build_modify_expr): Allow objc to generate write barriers.
6799         * Make-lang.in (cp/tree.o): Add debug.h.
6800         * tree.c (lvalue_p_1, case CONST_DECL): Add.
6802 2005-05-18  Jan Hubicka  <jh@suse.cz>
6804         * method.c: Include tree-pass.h
6805         (use_thunk): Lower body before expanding.
6807 2005-05-17  Jakub Jelinek  <jakub@redhat.com>
6809         PR c++/21454
6810         * decl.c (maybe_deduce_size_from_array_init): Call
6811         cp_apply_type_quals_to_decl after completing array type.
6813 2005-05-16  Richard Henderson  <rth@redhat.com>
6815         * decl.c (build_library_fn_1): Move setting TREE_NOTHROW ...
6816         (build_library_fn): ... here.
6818 2005-05-12  Ian Lance Taylor  <ian@airs.com>
6820         * cp-tree.h (cp_stmt_codes): Don't define.
6821         (statement_code_p): Declare.
6822         (STATEMENT_CODE_P): Define.
6823         * lex.c (statement_code_p): Define.
6824         (cxx_init): Use actual codes in stmt_codes initializer, not
6825         cp_stmt_codes macro.  Initialize statement_code_p directly, rather
6826         than using INIT_STATEMENT_CODES.
6828 2005-05-09  Mark Mitchell  <mark@codesourcery.com>
6830         * typeck.c (build_unary_op): Do not resort to address arithmetic
6831         when taking the address of a COMPONENT_REF.
6833 2005-05-08  Kazu Hirata  <kazu@cs.umass.edu>
6835         * class.c (vtbl_init_data_s): Change the type of fns to
6836         VEC(tree,gc)*.
6837         (build_vtbl_initializer, add_vcall_offset, add_vcall_offset):
6838         Use VEC instead of VARRAY.
6840 2005-05-07  Richard Sandiford  <rsandifo@redhat.com>
6842         * mangle.c: Remove a reference to the MIPS -mint64 option.
6844 2005-05-07  Kazu Hirata  <kazu@cs.umass.edu>
6846         * decl.c (wrapup_globals_for_namespace): Use VEC instead of
6847         VARRAY.
6848         * name-lookup.c (add_decl_to_level, begin_scope): Likewise.
6849         * name-lookup.h (cp_binding_level): Change the type of
6850         static_decls to VEC(tree,gc)*.
6852         * mangle.c (globals): Change the type of substitutions to
6853         VEC(tree,gc)*.
6854         (dump_substitution_candidates, add_substitution,
6855         find_substitution, finish_mangling, init_mangle): Use VEC
6856         instead of VARRAY.
6858 2005-05-06  Kazu Hirata  <kazu@cs.umass.edu>
6860         * decl2.c (spew_debug): Remove.
6862         * decl2.c (ssdf_decls, start_static_storage_duration_function,
6863         generate_ctor_or_dtor_function): Use VEC instead of VARRAY.
6865         * decl2.c (pending_statics, note_vague_linkage_var,
6866         cp_finish_file): Use VEC instead of VARRAY.
6867         (pending_statics_used): Remove.
6869 2005-05-05  Kazu Hirata  <kazu@cs.umass.edu>
6871         * decl2.c (deferred_fns, note_vague_linkage_fn,
6872         cp_finish_file): Use VEC instead of VARRAY.
6874 2005-05-05  Mark Mitchell  <mark@codesourcery.com>
6876         PR c++/21352
6877         * pt.c (build_non_dependent_expr): Use is_overloaded_fn.
6879 2005-05-05  Kazu Hirata  <kazu@cs.umass.edu>
6881         * pt.c: Fix a comment typo.
6883 2005-05-04  Kazu Hirata  <kazu@cs.umass.edu>
6885         * cp-tree.h (language_function): Change the type of
6886         x_local_names to VEC.
6887         * decl.c (push_local_name): Adjust uses of local_names.
6889 2005-05-03  Kazu Hirata  <kazu@cs.umass.edu>
6891         * friend.c, lex.c, mangle.c, repo.c: Update copyright.
6893 2005-05-02  Kazu Hirata  <kazu@cs.umass.edu>
6895         * class.c (local_classes, init_class_processing): Use VEC
6896         instead of VARRAY.
6897         * cp-tree.h (local_classes): Likewise.
6898         * mangle.c (discriminator_for_local_entity): Likewise.
6899         * name-lookup.c (pushtag): Likewise.
6901         * class.c (current_lang_depth, push_lang_context,
6902         pop_lang_context): Use VEC instead of VARRAY.
6903         * cp-tree.h (saved_scope): Use VEC for lang_base instead of
6904         VARRAY.
6905         * name-lookup.c (push_to_top_level): Use VEC instead of
6906         VARRAY.
6908 2005-05-02  Paolo Bonzini  <bonzini@gnu.org>
6910         * semantics.c (finish_call_expr): Call resolve_overloaded_builtin
6911         for BUILT_IN_MD built-ins.
6913 2005-05-02  Michael Matz  <matz@suse.de>
6915         PR c++/19542
6916         * cp-tree.h (cp_tree_index): Remove CPTI_NULL, to be defined in C
6917         common frontend.
6918         (null_node): Remove.
6919         * lex.c (cxx_init): Move null_node initialisation to C common frontend.
6921 2005-04-25  Ian Lance Taylor  <ian@airs.com>
6923         * cp-tree.def: Add EXPR_STMT.
6924         * cp-tree.h (cp_stmt_codes): Add EXPR_STMT.
6925         (EXPR_STMT_EXPR): Define.
6926         * cp-gimplify.c: Include "flags.h".
6927         (gimplify_expr_stmt): New static function.
6928         (cp_gimplify_expr): Handle EXPR_STMT.
6929         * cxx-pretty-print.c (pp_cxx_statement): Use pp_cxx_expression
6930         rather than pp_expression.
6931         (pp_cxx_statement): Handle EXPR_STMT.
6932         * dump.c (cp_dump_tree): Handle EXPR_STMT.
6933         * lex.c (cxx_init): Don't use c_common_stmt_codes in stmt_codes
6934         initializer.
6936 2005-04-25  Andrew Pinski  <pinskia@physics.uc.edu>
6938         PR C++/21188
6939         * rtti.c (ifnonnull): Cast the zero comparison operand
6940         to the correct type.
6942 2005-04-24  Jakub Jelinek  <jakub@redhat.com>
6944         PR middle-end/20991
6945         * class.c: Include cgraph.h.
6946         (cp_fold_obj_type_ref): Set node->local.vtable_method.
6947         * Make-lang.in (cgraph.o): Depend on $(CGRAPH_H).
6949 2005-04-12  Markus F.X.J. Oberhumer  <markus@oberhumer.com>
6951         * mangle.c (write_builtin_type): Handle integer types which are
6952         not one of the shared integer type nodes and emit a "vendor
6953         extended builtin type" with an encoding in the form of "u5int96".
6955 2005-04-24  Ian Lance Taylor  <ian@airs.com>
6957         * cp-tree.def (USING_STMT): Change class to tcc_statement.
6958         (TRY_BLOCK, EH_SPEC_BLOCK, HANDLER, CLEANUP_STMT): Likewise.
6959         (IF_STMT, FOR_STMT, WHILE_STMT, DO_STMT): Likewise.
6960         (BREAK_STMT, CONTINUE_STMT, SWITCH_STMT): Likewise.
6962 2005-04-23  DJ Delorie  <dj@redhat.com>
6964         * call.c, class.c, cvt.c, decl.c, decl2.c, except.c, friend.c,
6965         init.c, lex.c, mangle.c, method.c, name-lookup.c, parser.c,
6966         repo.c, rtti.c, tree.c, typeck.c, typeck2.c: Adjust warning()
6967         callers.
6969 2005-04-22  Per Bothner  <per@bothner.com>
6971         * decl.c (make_rtl_for_nonlocal_decl): Don't try get_fileinfo if
6972         input_filename is NULL, as it is for (say) __PRETTY_FUNCTION__.
6974 2005-04-22  Alexandre Oliva  <aoliva@redhat.com>
6976         PR c++/21087
6977         * name-lookup.c (push_overloaded_decl): Do not overload with
6978         non-duplicate anticipated built-in.
6980 2005-04-21  Kazu Hirata  <kazu@cs.umass.edu>
6982         * cp-tree.h (THROW_NAME, AUTO_VTABLE_NAME, AUTO_TEMP_FORMAT,
6983         VTABLE_BASE, VTABLE_NAME_PREFIX, STATIC_NAME_FORMAT): Remove.
6985 2005-04-21  Nathan Sidwell  <nathan@codesourcery.com>
6987         * cp-tree.h: Adjust for new VEC API.
6988         Define VEC(tree_pair_s,gc).
6989         (struct save_scope): Adjust.
6990         (struct lang_type_class): Adjust.
6991         (unemitted_tinfo_decls): Adjust.
6992         * class.c (add_method, resort_type_method_vec,
6993         finish_struct_methods, struct find_final_overrider_data,
6994         dfs_find_final_overrider_pre, find_final_overrider,
6995         get_vcall_index, warn_hidden, walk_subobject_offsets,
6996         check_methods, fixup_inline_methods, end_of_class,
6997         warn_about_ambiguous_bases, finish_struct, build_vtbl_initializer,
6998         add_vcall_offset): Adjust.
6999         * decl.c (xref_basetypes, finish_method): Adjust.
7000         * decl2.c (check_classfn): Adjust.
7001         * init.c (sort_mem_initializers, push_base_cleanups): Adjust.
7002         * method.c (do_build_copy_constructor): Adjust.
7003         * name-lookup.c (new_class_binding, store_binding,
7004         store_bindings, store_class_bindings): Adjust.
7005         * name-lookup.h: Define VEC(cxx_saved_binding,gc),
7006         VEC(cp_class_binding,gc).
7007         (struct cp_binding_level): Adjust.
7008         * parser.c: Define VEC(cp_token_position,heap).
7009         (struct cp_lexer): Adjust.
7010         (cp_lexer_new_main, cp_lexer_new_from_tokens, cp_lexer_destroy,
7011         cp_lexer_save_tokens): Adjust.
7012         * pt.c (retrieve_specialization,
7013         check_explicit_specialization): Adjust.
7014         * rtti.c (unemitted_tinfo_decls): Adjust.
7015         (init_rtti_processing, get_tinfo_decl, get_pseudo_ti_init,
7016         get_pseudo_ti_desc): Adjust.
7017         * search.c (dfs_access_in_type, lookup_conversion_operator,
7018         lookup_fnfields_1, dfs_walk_once, dfs_walk_once_accessible,
7019         dfs_get_pure_virtuals, lookup_conversions_r, binfo_for_vbase): Adjust.
7020         * semantics.c: Define VEC(deferred_access,gc).
7021         (push_deferring_access_checks): Adjust.
7022         * typeck2.c (abstract_virtuals_error): Adjust.
7024 2005-04-20  Ian Lance Taylor  <ian@airs.com>
7026         * cp-tree.def: Add STMT_EXPR.
7027         * cp-tree.h (STMT_EXPR_NO_SCOPE): Define.
7028         (STMT_EXPR_STMT): Define.
7029         * cxx-pretty-print.c (pp_cxx_primary_expression): Handle
7030         STMT_EXPR.
7031         (pp_cxx_expression): Likewise.
7032         (pp_cxx_statement): Call pp_cxx_statement, not pp_statement.
7033         * dump.c (cp_dump_tree): Handle STMT_EXPR.
7035 2005-04-18  Kazu Hirata  <kazu@cs.umass.edu>
7037         * decl.c (expand_static_init): Call build2 and build3 instead
7038         of build.
7040         * cp-tree.h (VPTR_NAME, VPTR_NAME_P): Remove.
7042 2005-04-17  Ian Lance Taylor  <ian@airs.com>
7044         * cp-tree.def: Add SIZEOF_EXPR, ARROW_EXPR and ALIGNOF_EXPR.
7045         * cxx-pretty-print.c (pp_cxx_postfix_expression): Handle
7046         ARROW_EXPR.
7047         (pp_cxx_unary_expression): Handle SIZEOF_EXPR and ALIGNOF_EXPR.
7048         (pp_cxx_expression): Handle ARROW_EXPR, SIZEOF_EXPR, and
7049         ALIGNOF_EXPR.
7050         * typeck.c (cxx_sizeof_or_alignof_type): Update call to
7051         c_sizeof_or_alignof_type for change in parameter type.
7053 2005-04-16  Mark Mitchell  <mark@codesourcery.com>
7055         PR c++/21025
7056         * typeck.c (cxx_sizeof_or_alignof_type): Check whether the type to
7057         which sizeof/alignof is dependent, rather than just whether we are
7058         processing_template_decl.
7060 2005-04-17  Kazu Hirata  <kazu@cs.umass.edu>
7062         * cp-tree.h (LOOKUP_GLOBAL): Remove.
7063         (LOOKUP_ONLYCONVERTING, DIRECT_BIND, LOOKUP_NO_CONVERSION,
7064         LOOKUP_DESTRUCTOR, LOOKUP_NO_TEMP_BIND, LOOKUP_PREFER_TYPES,
7065         LOOKUP_PREFER_NAMESPACES, LOOKUP_CONSTRUCTOR_CALLABLE): Adjust
7066         their values.
7068 2005-04-15  Richard Henderson  <rth@redhat.com>
7070         PR middle-end/14311
7071         * semantics.c (finish_call_expr): Call resolve_overloaded_builtin.
7073 2005-04-15  Kazu Hirata  <kazu@cs.umass.edu>
7075         * cp-tree.h (lang_type_class): Remove redefined.  Move
7076         java_interface into where redefined was.  Increment the width
7077         of dummy.
7078         (TYPE_REDEFINED): Remove.
7080 2005-04-14  Kazu Hirata  <kazu@cs.umass.edu>
7082         * cp-tree.h (SET_TMPL_ARG, ENUM_TI_TEMPLATE, ENUM_TI_ARGS,
7083         CLASSTYPE_TEMPLATE_LEVEL): Remove.
7085 2005-04-11  Mark Mitchell  <mark@codesourcery.com>
7087         * decl2.c (determine_visibility): Don't use export_class_data.
7088         (import_export_decl): Honor TARGET_CXX_CLASS_DATA_ALWAYS_WEAK and
7089         TARGET_CXX_DETERMINE_CLASS_DATA_VISIBILITY.
7091 2005-04-09  Kazu Hirata  <kazu@cs.umass.edu>
7093         * cp-tree.h (cxx_alignof): Remove.
7095         * cp-tree.h (DECL_ARRAY_DELETE_OPERATOR_P): Remove.
7097         * cp-tree.h (EXCEPTION_CLEANUP_NAME, B_SET, B_CLR, B_TST,
7098         CONV_STATIC_CAST): Remove.
7100         * pt.c (UNIFY_ALLOW_MAX_CORRECTION): Remove.
7102         * cp-tree.h (VF_BINFO_VALUE, VF_BASETYPE_VALUE): Remove.
7104         * cp-tree.h (cp_deprecated): Remove.
7106 2005-04-08  Ian Lance Taylor  <ian@airs.com>
7108         * cp-tree.def: Define FOR_STMT, WHILE_STMT, DO_STMT, BREAK_STMT,
7109         CONTINUE_STMT, SWITCH_STMT.
7110         * cp-tree.h (cp_stmt_codes): Add FOR_STMT, WHILE_STMT, DO_STMT,
7111         BREAK_STMT, CONTINUE_STMT, SWITCH_STMT.
7112         (WHILE_COND, WHILE_BODY): Define.
7113         (DO_COND, DO_BODY): Define.
7114         (FOR_INIT_STMT, FOR_COND, FOR_EXPR, FOR_BODY): Define.
7115         (SWITCH_STMT_COND, SWITCH_STMT_BODY, SWITCH_STMT_TYPE): Define.
7116         * cp-gimplify.c (enum bc_t): Define.
7117         (struct cp_gimplify_ctx, ctxp): Define.
7118         (push_context, pop_context): New static functions.
7119         (begin_bc_block, finish_bc_block): New static functions.
7120         (build_bc_goto): New static function.
7121         (gimplify_cp_loop, gimplify_for_stmt): New static functions.
7122         (gimplify_while_stmt, gimplify_do_stmt): Likewise.
7123         (gimplify_switch_stmt): Likewise.
7124         (cp_gimplify_expr): Handle FOR_STMT, WHILE_STMT, DO_STMT,
7125         SWITCH_STMT, CONTINUE_STMT, BREAK_STMT.
7126         (cp_genericize): Call push_context and pop_context.
7127         * semantics.c (finish_break_stmt): Just call build_stmt
7128         (BREAK_STMT) rather than build_break_stmt.
7129         (finish_continue_stmt): Corresponding change.
7130         * decl.c (pop_switch): Update call to c_do_switch_warnings for new
7131         parameters.
7132         * cxx-pretty-print.c (pp_cxx_statement): Handle SWITCH_STMT,
7133         WHILE_STMT, DO_STMT, FOR_STMT, BREAK_STMT, CONTINUE_STMT.
7134         * dump.c (cp_dump_tree): Likewise.
7136 2005-04-08  Mark Mitchell  <mark@codesourcery.com>
7138         PR c++/20905
7139         * parser.c (cp_parser_type_specifier_seq): Add is_condition
7140         parameter.
7141         (cp_parser_new_type_id): Pass it.
7142         (cp_parser_condition): Likewise.
7143         (cp_parser_conversion_type_id): Likewise.
7144         (cp_parser_type_id): Likewise.
7145         (cp_parser_type_specifier_seq): In a condition, do not allow
7146         invalid type-specifier combinations.
7147         (cp_parser_exception_declaration): Adjust call to
7148         cp_parser_type_specifier_seq.
7150         * cp-tree.def (TINST_LEVEL): Document TINST_IN_SYSTEM_HEADER_P.
7151         * cp-tree.h (struct tinst_level): Add in_system_header_p.
7152         (TINST_IN_SYSTEM_HEADER_P): New macro.
7153         (make_tinst_level): Remove.
7154         * pt.c (lookup_template_class): Preserve DECL_IN_SYSTEM_HEADER on
7155         the instantiated class.
7156         (push_tinst_level): Do not use make_tinst_level.  Set
7157         TINST_IN_SYSTEM_HEADER_P.
7158         (pop_tinst_level): Likewise.
7159         (instantiate_class_template): Set in_system_header.
7160         (instantiate_pending_templates): Likewise.
7161         * tree.c (make_tinst_level): Remove.
7163 2005-04-06  Joseph S. Myers  <joseph@codesourcery.com>
7165         * decl.c (start_decl): Apply pending #pragma weak regardless of
7166         scope.
7168 2005-04-06  Mark Mitchell  <mark@codesourcery.com>
7170         PR c++/20212
7171         * pt.c (regenerate_decl_from_template): Copy attributes for
7172         parameters from the pattern to the instantiation.
7174 2005-04-05  Mark Mitchell  <mark@codesourcery.com>
7176         PR c++/20734
7177         * cp-tree.def (OFFSET_REF): Correct comments.
7178         * init.c (build_offset_ref): Remove misleading comment.
7179         * typeck.c (build_unary_op): Handle pointer-to-member creation
7180         here, rather than ...
7181         (unary_complex_lvalue): ... here.
7183 2005-04-06  Jason Merrill  <jason@redhat.com>
7185         PR c++/19312
7186         * tree.c (stabilize_init): Don't bother trying to stabilize
7187         something with no side-effects.
7189 2005-04-05  Mark Mitchell  <mark@codesourcery.com>
7191         PR c++/20763
7192         * decl.c (grokdeclarator): Correct attribute handling.
7194 2005-04-05  Mark Mitchell  <mark@codesourcery.com>
7196         PR c++/19159
7197         * decl2.c (import_export_decl): Use non-COMDAT external linkage
7198         for virtual tables, typeinfo, etc. that will be emitted in only
7199         one translation unit on systems without weak symbols.
7201 2005-04-04  Mark Mitchell  <mark@codesourcery.com>
7203         PR c++/20679
7204         * parser.c (cp_parser_template_name): Fix thinko.
7206 2005-04-04  Nathan Sidwell  <nathan@codesourcery.com>
7208         PR c++/20746
7209         * method.c (use_thunk): Protect covariant pointer return
7210         adjustments from NULL pointers.
7212 2005-04-04  Jan Hubicka  <jh@suse.cz>
7214         * decl2.c (finish_objects): Revert my previous patch.
7215         (cp_finish_file): Likewise.
7217 2005-04-03  Kazu Hirata  <kazu@cs.umass.edu>
7219         * pt.c: Fix comment typos.
7221 2005-04-03  Nathan Sidwell  <nathan@codesourcery.com>
7223         PR c++/20723
7224         * pt.c (more_specialized_fn): Member functions are unordered wrt
7225         non-members.  Conversion operators are unordered wrt other
7226         functions.
7228 2005-04-01  Nathan Sidwell  <nathan@codesourcery.com>
7230         * call.c (add_template_candidates_real): Remove length parameter
7231         from fn_type_unification call.
7232         * class.c (resolve_address_of_overloaded_function): Likewise
7233         * cp-tree.h (fn_type_unification): Remove length parameter.
7234         * pt.c (get_bindings_overload): Remove.
7235         (get_bindings_real): Rename to ...
7236         (get_bindings): ... here.  Remove length and strict
7237         parameters. Change return type flag to boolean.  Remove original
7238         forwarding function.
7239         (determine_specialization): Adjust get_bindings call.
7240         (fn_type_unification): Remove length parameter.  Adjust.
7241         (type_unification_real): Remove length parameter.  Adjust.
7242         (resolve_overloaded_unification): Adjust get_bindings call.
7243         (try_one_overload): Simplify confusing cascaded if control flow.
7244         (unify): Remove length paramter from type_unification_real call.
7245         (most_specialized_instantiation): Adjust get_bindings calls.
7246         (most_specialized): Likewise.
7248 2005-03-31  Nathan Sidwell  <nathan@codesourcery.com>
7250         PR c++/19203, implement DR 214
7251         * call.c (joust): Use more_specialized_fn.
7252         * cp-tree.h (DEDUCE_ORDER): Remove.
7253         (more_specialized): Replace with ...
7254         (more_specialized_fn): ... this.
7255         * pt.c (maybe_adjust_types_for_deduction): Remove DEDUCE_ORDER
7256         case.
7257         (type_unification_real): Remove DEDUCE_ORDER case.
7258         (more_specialized): Replace with ...
7259         (more_specialized_fn): ... this.  Implement DR 214.
7260         (most_specialized_instantiation): Use get_bindings_real directly.
7262 2005-03-31  Gabriel Dos Reis  <gdr@integrable-solutions.net>
7264         PR c++/18644
7265         * call.c (build_new_op): Remove check for -Wsynth.
7267 2005-03-31  Jan Hubicka  <jh@suse.cz>
7269         * decl2.c (finish_objects): Mark ctor as needed.
7270         (cp_finish_file): Output variables only in nonunit-at-a-time.
7272 2005-03-29  Richard Henderson  <rth@redhat.com>
7274         PR c/20519
7275         * decl.c (cp_complete_array_type): Rename from complete_array_type.
7276         Use the new complete_array_type in c-common.c.  Update all callers.
7277         * cp-tree.h (cp_complete_array_type): Update to match.
7279 2005-03-24  Geoffrey Keating  <geoffk@apple.com>
7281         * typeck.c (build_static_cast_1): Allow scalar_cast between
7282         any integral, floating, or enumeration type.
7284 2005-03-24  Steven Bosscher  <stevenb@suse.de>
7286         * typeck.c (comptypes): First determine if the types are compatible
7287         from a target-independent point of view.  Check target attributes
7288         last.
7290         * class.c (build_base_path):
7291         (build_vbase_offset_vtbl_entries):
7292         (add_vcall_offset): Replace fold (buildN (...)) with fold_buildN.
7293         * error.c (dump_expr): Likewise.
7294         * init.c (build_zero_init, expand_cleanup_for_base,
7295         build_vec_delete_1): Likewise.
7296         * mangle.c (write_integer_cst): Likewise.
7297         * method.c (thunk_adjust): Likewise.
7298         * pt.c (convert_nontype_argument, tsubst, unify): Likewise.
7299         * tree.c (cxx_print_statistics, array_type_nelts_total): Likewise.
7300         * typeck.c (build_ptrmemfunc_access_expr,
7301         (get_member_function_from_ptrfunc): Likewise.
7303 2005-03-23  Joseph S. Myers  <joseph@codesourcery.com>
7305         * cp-objcp-common.h (LANG_HOOKS_TRUTHVALUE_CONVERSION): Remove.
7307 2005-03-23  Joseph S. Myers  <joseph@codesourcery.com>
7309         * cp-tree.h (perform_integral_promotions): Remove.
7310         (default_conversion): Add.
7312 2005-03-22  Mark Mitchell  <mark@codesourcery.com>
7314         * parser.c (cp_parser_warn_min_max): New function.
7315         (cp_parser_binary_expression): Use it.
7316         (cp_parser_assignment_operator_opt): Likewise.
7317         (cp_parser_operator): Likewise.
7319 2005-03-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
7321         PR c++/19980
7322         * decl.c (start_preparsed_function): Robustify.
7324 2005-03-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
7326         PR c++/20499
7327         * parser.c (cp_parser_class_head): Return NULL_TREE when
7328         encountering a redefinition.
7330 2005-03-22  Nathan Sidwell  <nathan@codesourcery.com>
7332         PR c++/20465
7333         PR c++/20381
7334         * typeck.c (build_ptrmemfunc): Allow OFFSET_REF when processing a
7335         template.
7337 2005-03-21  Paolo Carlini  <pcarlini@suse.de>
7339         PR c++/20461
7340         PR c++/20536
7341         * init.c (emit_mem_initializers): Don't crash on undefined
7342         types.
7344 2005-03-21  Paolo Carlini  <pcarlini@suse.de>
7346         PR c++/20147
7347         * semantics.c (finish_stmt_expr_expr): Return immediately
7348         if error_operand_p (expr).
7350 2005-03-21  Joseph S. Myers  <joseph@codesourcery.com>
7352         * cp-tree.h (lvalue_or_else, lvalue_p): New.
7353         * typeck.c (lvalue_or_else): New.  Call lvalue_error.
7355 2005-03-19  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
7357         PR c++/20240
7358         * decl.c (decls_match): Compare context of VAR_DECL.
7360 2005-03-19  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
7362         PR c++/20333
7363         * parser.c (cp_parser_postfix_expression) <case RID_TYPENAME>:
7364         Check the return value of cp_parser_nested_name_specifier.
7366 2005-03-18  Dale Johannesen <dalej@apple.com>
7368         * cp/tree.c (cp_tree_equal):  Handle SSA_NAME.
7370 2005-03-18  Paolo Carlini  <pcarlini@suse.de>
7372         PR c++/20463
7373         * parser.c (cp_parser_diagnose_invalid_type_name):
7374         Check TYPE_BINFO (current_class_type) before attempting
7375         to emit inform messages.
7377 2005-03-17  Paolo Carlini  <pcarlini@suse.de>
7379         PR c++/19966
7380         * cp-tree.h (grok_op_properties): Change return type to void.
7381         * decl.c (grok_op_properties): Return early - don't check the
7382         arity - in case of a static member or an operator that cannot
7383         be non-member; tidy a bit.
7385 2005-03-17  Nathan Sidwell  <nathan@codesourcery.com>
7387         PR c++/20186
7388         * pt.c (contains_dependent_cast_p): Remove.
7389         (fold_non_dependent_expr): Don't use it.
7390         (value_dependent_expression_p): Use a switch statement.
7391         reference_exprs can be dependent.
7393 2005-03-14  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
7395         PR c++/4403
7396         PR c++/9783, DR433
7397         * name-lookup.c (pushtag): Skip template parameter scope when
7398         scope is ts_global.  Don't push tag into template parameter
7399         scope.
7400         * pt.c (instantiate_class_template): Reorder friend class
7401         template substitution to handle non-dependent friend class
7402         that hasn't been previously declared.
7404 2005-03-14  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
7406         Friend class name lookup 5/n
7407         PR c++/1016
7408         * cp-tree.h (pushtag): Adjust declaration.
7409         * decl.c (lookup_and_check_tag): Call lookup_type_scope if
7410         lookup_name fails.
7411         (xref_tag): Adjust call to pushtag.  Make hidden class visible.
7412         (start_enum): Adjust call to pushtag.
7413         * name-lookup.c (ambiguous_decl): Ignore hidden names.
7414         (qualify_lookup): Change return type to bool.
7415         (hidden_name_p): New function.
7416         (lookup_namespace_name, unqualified_namespace_lookup,
7417         lookup_name_real): Use it.
7418         (lookup_type_scope): Update comments.
7419         (maybe_process_template_type_declaration): Change parameter name
7420         from globalize to is_friend.
7421         (pushtag): Change globalize parameter of type int to tag_scope.
7422         Hide name if introduced by friend declaration.
7423         * name-lookup.h (hidden_name_p): Add declaration.
7424         * parser.c (cp_parser_lookup_name): Don't deal with hidden name
7425         here.
7426         * pt.c (push_template_decl_real): Make hidden class template
7427         visible.
7428         (lookup_template_class, instantiate_class_template): Adjust call
7429         to pushtag.
7430         * semantics.c (begin_class_definition): Likewise.
7431         * rtti.c (init_rtti_processing, build_dynamic_cast_1,
7432         tinfo_base_init, emit_support_tinfos): Use ts_current instead of
7433         ts_global.
7435 2005-03-13  Mark Mitchell  <mark@codesourcery.com>
7437         PR c++/20157
7438         * pt.c (determine_specialization): Reject non-specializations.
7440 2005-03-11  Per Bothner  <per@bothner.com>
7442         * cp-tree.h (struct cp_declarator): New id_loc field.
7443         * cp/parser.c (cp_lexer_get_preprocessor_token): Set cp_token's
7444         location using c_lex_with_flags, instead of input_location.
7445         (cp_parser_direct_declarator): Set declarator's id_loc from
7446         cp_token's id_loc.
7448 2005-03-10  Jakub Jelinek  <jakub@redhat.com>
7450         PR c++/18384, c++/18327
7451         * decl.c (reshape_init_array): Use UHWI type for max_index_cst
7452         and index.  Convert max_index to size_type_node if it isn't
7453         host_integerp (, 1).
7455 2005-03-09  Mark Mitchell  <mark@codesourcery.com>
7457         PR c++/20208
7458         * pt.c (tsubst_decl): Apply array-to-pointer and
7459         function-to-pointer conversions to function arguments.
7460         (regenerate_decl_from_template): Likewise.
7462 2005-03-09  Paolo Carlini  <pcarlini@suse.de>
7464         PR c++/16859
7465         * decl.c (complete_array_type): In pedantic mode, return
7466         3 for an empty initializer list as the initializer for an
7467         array of unknown bound (8.5.1/4).
7468         (maybe_deduce_size_from_array_init): Fix final test to use
7469         the above.
7471 2005-03-08  Nathan Sidwell  <nathan@codesourcery.com>
7473         PR c++/20186
7474         * pt.c (contains_dependent_cast_p): New.
7475         (fold_non_dependent_expr): Call it.
7477 2005-03-08  Mark Mitchell  <mark@codesourcery.com>
7479         PR c++/20142
7480         * cp-tree.h (target_type): Remove.
7481         * decl.c (layout_var_decl): Remove #if 0'd code.
7482         (cp_finish_decl): Remove dead code.
7483         * init.c (build_vec_init): When determining whether or not the
7484         element type has an asignment operator, look through all array
7485         dimensions.
7486         * typeck.c (target_type): Remove.
7488 2005-03-07  Mark Mitchell  <mark@codesourcery.com>
7490         * class.c (finish_struct_1): Do not warn about non-virtual
7491         destructors in Java classes.
7493 2005-03-05  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
7495         PR c++/19311
7496         * init.c (build_offset_ref): Don't build non-dependent SCOPE_REF.
7497         * pt.c (build_non_dependent_expr): Don't build NON_DEPENDENT_EXPR
7498         for OFFSET_TYPE.
7499         * typeck.c (build_x_unary_op): Don't build non-dependent SCOPE_REF.
7500         Also set PTRMEM_OK_P for NON_DEPENDENT_EXPR.
7501         (build_unary_op): Handle building ADDR_EXPR of OFFSET_REF inside
7502         template.
7504 2005-03-02  Alexandre Oliva  <aoliva@redhat.com>
7506         * name-lookup.c (push_overloaded_decl): Don't error if the new
7507         decl matches the old one.
7508         * decl.c (redeclaration_error_message): Likewise.
7510 2005-03-01  Per Bothner  <per@bothner.com>
7512         * decl.c (finish_function): Use SET_EXPR_LOCATION instead of
7513         unavailable annotate_with_file_line, if USE_MAPPED_LOCATION.
7515 2005-03-01  Nathan Sidwell  <nathan@codesourcery.com>
7517         PR c++/20232
7518         * class.c (update_vtable_entry_for_fn): Don't crash on invalid
7519         covariancy.
7521         * cp-tree.g (THUNK_TARGET): Expand comment.
7522         * method.c (use_thunk): Make sure we also use the target, if that
7523         is a thunk.
7525 2005-02-27  Jakub Jelinek  <jakub@redhat.com>
7527         PR c++/20206
7528         * decl.c (cxx_comdat_group): Put thunks for
7529         TARGET_USE_LOCAL_THUNK_ALIAS_P (function) functions into the same
7530         comdat group as the thunk target.
7532 2005-02-24  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
7534         * call.c, class.c, cp-tree.h, decl2.c, error.c, init.c, mangle.c,
7535         parser.c: Fix comment typo(s).
7537 2005-02-24  Jakub Jelinek  <jakub@redhat.com>
7539         PR c++/20175
7540         * decl.c (reshape_init): Don't warn about missing braces if STRING_CST
7541         initializes a char/wchar_t array.
7543 2005-02-23  Mark Mitchell  <mark@codesourcery.com>
7545         PR c++/19878
7546         * decl.c (grokvardecl): Set DECL_INTERFACE_KNOWN for declarations
7547         with internal linkage.
7549 2005-02-23  Alexandre Oliva  <aoliva@redhat.com>
7551         * decl.c (grokvardecl): Don't exempt anonymous types from having
7552         linkage for variables that have linkage other than "C".
7554 2005-02-23  Kazu Hirata  <kazu@cs.umass.edu>
7556         * cp-objcp-common.h, error.c: Update copyright.
7558 2005-02-22  Mark Mitchell  <mark@codesourcery.com>
7560         PR c++/20073
7561         * decl.c (start_decl_1): Don't clear TREE_READONLY.
7562         (cp_finish_decl): Likewise.
7563         (complete_vars): Call cp_apply_type_quals_to_decl.
7564         * typeck.c (cp_apply_type_quals): Avoid setting TREE_READONLY in
7565         cases where that's not valid.
7567         PR c++/19991
7568         * init.c (integral_constant_value): Iterate if the value of a decl
7569         is itself a constant.
7571         PR c++/20152
7572         * parser.c (cp_parser_class_head): Check for redefintions here.
7573         * semantics.c (begin_class_definition): Not here.
7575         PR c++/20153
7576         * decl2.c (build_anon_union_vars): Add type parameter.
7577         (finish_anon_union): Pass it.
7579         PR c++/20148
7580         * error.c (dump_expr): Do not print the body of a BIND_EXPR.
7581         Handle STATEMENT_LIST.
7583         PR c++/19883
7584         * parser.c (cp_parser_direct_declarator): Always complain about
7585         non-constant array bounds when in a function scope.
7586         * semantics.c (finish_id_expression): Do not mark dependent names
7587         as non-constant.
7589 2005-02-21  Douglas Gregor  <dgregor@cs.indiana.edu>
7591         PR c++/19076
7592         PR c++/6628
7593         * cp-tree.h (cp_apply_type_quals_to_decl): Declared.
7594         * decl.c (grokdeclarator): Pedwarn about qualifying a function
7595         type.
7596         Add qualifiers when declaring a typedef of a function type.
7597         Member function pointers pick up the qualifiers of the typedef
7598         used to declare them.
7599         Don't complain about creating cv-qualified function types.
7600         Complain about qualified function typedefs that are used to
7601         declare non-static member functions or free functions.
7602         Use cp_apply_type_quals_to_decl.
7603         (start_preparsed_function): Use cp_apply_type_quals_to_decl.
7604         (grokclassfn): Use cp_apply_type_quals_to_decl.
7605         * error.c (dump_type_suffix): Print qualifiers for function
7606         types.
7607         * pt.c (tsubst_decl): Use cp_apply_type_quals_to_decl.
7608         (tsubst): When substituting a function type into a member
7609         pointer type, pass along the qualifiers.
7610         (unify): Unify member pointers to member function pointers.
7611         * tree.c (cp_build_qualified_type_real): Function types may be
7612         qualified. This includes restrict qualifiers.
7613         * typeck.c (cp_apply_type_quals_to_decl): New function to replace
7614         use of c_apply_type_quals_to_decl. Drops qualifiers that are being
7615         added to function types.
7617 2005-02-20  Zack Weinberg  <zack@codesourcery.com>
7619         PR 18785
7620         * cp-objcp-common.h (LANG_HOOKS_TO_TARGET_CHARSET): Set to
7621         c_common_to_target_charset.  Delete bogus comment.
7623 2005-02-18  Richard Henderson  <rth@redhat.com>
7625         PR libstdc++/10606
7626         * except.c (do_get_exception_ptr): New.
7627         (expand_start_catch_block): Use it.
7629 2005-02-19  Jakub Jelinek  <jakub@redhat.com>
7631         * decl.c (start_decl_1): Only check TYPE_NEEDS_CONSTRUCTING
7632         if type is not error_mark_node.
7634 2005-01-20  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
7636         PR c++/19508
7637         * decl2.c (grokfield): Do not apply attributes to template parameters
7638         as they are ignored by tsubst anyway.
7640 2005-02-18  Jakub Jelinek  <jakub@redhat.com>
7642         PR c++/19813
7643         * decl.c (start_decl_1): Clear TREE_READONLY flag if
7644         its type has TYPE_NEEDS_CONSTRUCTING.
7645         (complete_vars): Likewise.
7647 2005-02-17  Alexandre Oliva  <aoliva@redhat.com>
7649         PR c++/20028
7650         * class.c (finish_struct): Initialize TYPE_SIZE_UNIT of a
7651         template along with TYPE_SIZE.
7653         PR c++/20022
7654         * semantics.c (perform_deferred_access_checks): Use
7655         get_deferred_access_checks to get the top of the stack.
7657 2005-02-15  Alexandre Oliva  <aoliva@redhat.com>
7659         PR c++/17788
7660         * class.c (add_implicitly_declared_members, check_field_decl)
7661         (check_field_decls, check_bases): Remove arguments, tests and
7662         assignments of cant_have_default_ctor-related variables.
7664 2005-02-15  Alexandre Oliva  <aoliva@redhat.com>
7666         * decl2.c (mark_used): Set the source location of the used decl to
7667         the current input location here...
7668         * method.c (synthesize_method): ... not here.  Set input_location
7669         from the decl instead.
7671 2005-02-14  Nathan Sidwell  <nathan@codesourcery.com>
7673         PR c++/19608
7674         * parser.c (cp_parser_late_parsing_for_member): Use
7675         current_function_decl as scope to push to and from.
7677         PR c++/19884
7678         * pt.c (check_explicit_specialization): Make sure namespace
7679         binding lookup found an overloaded function.
7680         (lookup_template_function): Just assert FNS is an overloaded
7681         function.
7683         PR c++/19895
7684         * decl.c (grokdeclarator): Check for error mark node in ptrmem
7685         construction.
7687 2005-02-14  Alexandre Oliva  <aoliva@redhat.com>
7689         PR c++/17816
7690         * decl.c (redeclaration_error_message): Report redefinition of
7691         pure virtual function.
7693 2005-02-14  Nathan Sidwell  <nathan@codesourcery.com>
7695         PR c++/19891
7696         * class.c (build_simple_base_path): Build the component_ref
7697         directly.
7698         (update_vtable_entry_for_fn): Walk the covariant's binfo chain
7699         rather than using lookup_base.
7700         * search.c (dfs_walk_once): Add non-recursive assert check.
7701         * typeck.c (build_class_member_access_expr): It is possible for
7702         the member type to be both const and volatile.
7704 2005-02-12  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
7706         PR c++/14479
7707         PR c++/19487
7708         * pt.c (maybe_check_template_type): Remove.
7709         * cp-tree.h (maybe_check_template_type): Remove prototype.
7710         * name-lookup.c (maybe_process_template_type_declaration): Don't
7711         use maybe_check_template_type.
7713 2005-02-11  Richard Henderson  <rth@redhat.com>
7715         PR c++/19632
7716         * pt.c (get_mostly_instantiated_function_type): Save and restore
7717         flag_access_control instead of push/pop_access_scope.
7719 2005-02-10  Mark Mitchell  <mark@codesourcery.com>
7721         PR c++/19755
7722         * decl.c (reshape_init): Issue warnings about missing braces.
7724 2005-02-11  Kazu Hirata  <kazu@cs.umass.edu>
7726         * cp-tree.def, except.c, ptree.c: Update copyright.
7728 2005-02-09  Mark Mitchell  <mark@codesourcery.com>
7730         PR c++/19811
7731         * call.c (build_op_delete_call): Check COMPLETE_TYPE_P before
7732         attempting name lookup.
7734         * parser.c (cp_parser_unqualified_id): Initialize type_decl.
7736         PR c++/19787
7737         * call.c (initialize_reference): Robustify.
7739         PR ++/19732
7740         * decl.c (grokdeclarator): Check for invalid use of destructor
7741         names.
7743         PR c++/19762
7744         * parser.c (cp_parser_unqualified_id): Avoid creating destructor
7745         names with invalid types.
7747         PR c++/19826
7748         * parser.c (cp_parser_direct_declarator): Allow type-dependent
7749         expressions as array bounds.
7751         PR c++/19739
7752         * parser.c (cp_parser_attributes_list): Allow empty lists.
7754 2005-02-08  Mark Mitchell  <mark@codesourcery.com>
7756         PR c++/19733
7757         * class.c (add_method): Don't set TYPE_HAS_DESTRUCTOR.
7758         (check_bases): Give warnings about a base class with a
7759         non-virtual destructor, even if it is implicit.
7760         (finish_struct_bits): Don't copy TYPE_HAS_DESTRUCTOR.
7761         (maybe_warn_about_overly_private_class): Don't use
7762         TYPE_HAS_DESTRUCTOR.
7763         (finish_struct_methods): Don't set TYPE_HAS_DESTRUCTOR.
7764         (check_for_override): Give it external linkage.
7765         (add_implicitly_declared_members): Generate destructors lazily.
7766         (check_field_decls): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR, not
7767         TYPE_HAS_DESTRUCTOR.
7768         (check_bases_and_members): Call check_methods before
7769         check_field_decls.
7770         (check_bases_and_members): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR, not
7771         TYPE_HAS_DESTRUCTOR.
7772         (finish_struct_1): Do not use TYPE_HAS_DESTRUCTOR.
7773         * cp-tree.def (PSEUDO_DTOR_EXPR): Document.
7774         * cp-tree.h (TYPE_HAS_DESTRUCTOR): Remove.
7775         (lang_type_class): Add lazy_destructor.
7776         (CLASSTYPE_LAZY_DESTRUCTOR): New macro.
7777         (CLASSTYPE_DESTRUCTORS): Robustify.
7778         (TYPE_HAS_DESTRUCTOR): Remove.
7779         (check_for_override): Declare.
7780         (build_vbase_delete): Remove.
7781         * cvt.c (convert_to_void): Issue errors about pseudo-destructor
7782         expressions.
7783         * decl.c (cxx_maybe_build_cleanup): Remove dead code.
7784         * except.c (dtor_nothrow): Lazily create destructors if necessary.
7785         (build_throw): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
7786         * init.c (build_delete): Lazily create destructors, if necessary.
7787         (build_vbase_delete): Remove.
7788         * method.c (locate_dtor): Simplify.
7789         (implicitly_declare_fn): Add support for destructors.
7790         * parser.c (cp_parser_lookup_name): Lazily create destructors, if
7791         necessary.
7792         * pt.c (check_explicit_specialization): Don't use
7793         TYPE_HAS_DESTRUCTOR.
7794         (instantiate_class_template): Likewise.
7795         * ptree.c (cxx_print_type): Don't print TYPE_HAS_DESTRUCTOR.
7796         * rtti.c (emit_support_tinfos): Robustify.
7797         * search.c (lookup_fnfields_1): Lazily create destructors.
7798         * typeck.c (build_class_member_access_expr): Remove
7799         PSEUDO_DTOR_EXPR handling.
7800         (lookup_destructor): Likewise.
7802 2005-02-08  Kazu Hirata  <kazu@cs.umass.edu>
7804         * cxx-pretty-print.c, cxx-pretty-print.h, decl.h: Update
7805         copyright.
7807 2005-02-07  Mark Mitchell  <mark@codesourcery.com>
7809         * parser.c (cp_lexer_start_debugging): Avoid arithmetic operations
7810         on boolean variables.
7811         (cp_lexer_stop_debugging): Likewise.
7813 2005-02-03  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
7815         PR c++/17401
7816         * parser.c (cp_parser_pure_specifier): Emit a specific error
7817         message with an invalid pure specifier.
7818         * decl2.c (grok_function_init): Remove.
7819         (grokfield): An initializer for a method is a always a pure
7820         specifier.
7822 2005-02-02  Matt Austern  <austern@apple.com>
7824         PR c++/19628
7825         * cp-tree.h (builtin_valid_in_constant_expr_p): Declare.
7826         * parser.c (cp_parser_postfix_expression): Accept function call in
7827         constant expression if builtin_valid_in_constant_expr_p is true
7828         for that function.
7829         * pt.c (value_dependent_expression_p): Handle CALL_EXPRs properly.
7830         * semantics.c (finish_id_expression): Accept function call in constant
7831         expression if builtin_valid_in_constant_expr_p is true for that
7832         function.
7833         * tree.c (builtin_valid_in_constant_expr_p): New.
7835 2005-02-02  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
7837         PR c++/17413
7838         * pt.c (check_instantiated_args): Improve error message.
7839         Fix logic when to print its second part.
7841 2005-02-02  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
7843         * cp-tree.h (complete_type_or_else): Remove macro.
7844         (complete_type_or_diagnostic): Rename to complete_type_or_else
7845         and remove last argument.
7846         * typeck.c (complete_type_or_diagnostic): Rename to
7847         complete_type_or_else and remove last argument.
7849 2005-02-02  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
7851         * cp-tree.h (commonparms): Remove prototype.
7852         (convert_arguments): Likewise.
7853         (PFN_FROM_PTRMEMFUNC): Remove.
7854         * typeck.c (commonparms): Make static.
7855         (convert_arguments): Add prototype. Make static.
7856         (PFN_FROM_PTRMEMFUNC): Replace by pfn_from_ptrmemfunc.
7858 2005-01-31  Mark Mitchell  <mark@codesourcery.com>
7860         * parser.c (cp_parser_primary_expression): Don't complain about
7861         floating-point literals in integral constant expressions when
7862         !pedantic.
7864 2005-02-01  Alexandre Oliva  <aoliva@redhat.com>
7866         * parser.c (cp_parser_template_id): Revert comment patch too.
7868         PR c++/18757
7869         PR c++/19366
7870         PR c++/19499
7871         * parser.c (cp_parser_template_id): Revert 2004-12-09's patch.
7872         Issue an error when creating the template id.
7873         * pt.c (fn_type_unification): Return early if the explicit
7874         template arg list is an error_mark_node.
7876 2005-01-31  Mark Mitchell  <mark@codesourcery.com>
7878         * decl.c (build_enumerator): Do not issue duplicate error messages
7879         about invalid enumeration constants.
7880         * parser.c (cp_parser_non_integral_constant_expression): Always
7881         set parser->non_integral_constant_expression_p.
7882         (cp_parser_primary_expression): Add cast_p parameter.  Issue
7883         errors about invalid uses of floating-point literals in
7884         cast-expressions.
7885         (cp_parser_postfix_expression): Add cast_p parameter.
7886         (cp_parser_open_square_expression): Pass it.
7887         (cp_parser_parenthesized_expression_list): Add cast_p parameter.
7888         (cp_parser_unary_expression): Likewise.
7889         (cp_parser_new_placement): Pass it.
7890         (cp_parser_direct_new_declarator): Likewise.
7891         (cp_parser_new_initializer): Likewise.
7892         (cp_parser_cast_expression): Add cast_p parameter.
7893         (cp_parser_binary_expression): Likewise.
7894         (cp_parser_question_colon_clause): Likewise.
7895         (cp_parser_assignment_expression): Likewise.
7896         (cp_parser_expression): Likewise.
7897         (cp_parser_constant_expression): If an integral constant
7898         expression is invalid, return error_mark_node.
7899         (cp_parser_expression_statement): Pass cast_p.
7900         (cp_parser_condition): Likewise.
7901         (cp_parser_iteration_statement): Likewise.
7902         (cp_parser_jump_statement): Likewise.
7903         (cp_parser_mem_initializer): Likewise.
7904         (cp_parser_template_argument): Likewise.
7905         (cp_parser_parameter_declaration): Likewise.
7906         (cp_parser_initializer): Likewise.
7907         (cp_parser_throw_expression): Likewise.
7908         (cp_parser_attribute_list): Likewise.
7909         (cp_parser_simple_cast_expression): Likewise.
7910         (cp_parser_functional_cast): Likewise.
7911         (cp_parser_late_parsing_default_args): Likewise.
7912         (cp_parser_sizeof_operand): Save/restore
7913         non_integral_constant_expression_p.
7915 2005-01-31  Mike Stump  <mrs@apple.com>
7917         * parser.c (cp_lexer_new_main): Get the first token, first, before
7918         doing anything.
7920 2005-01-31  Mark Mitchell  <mark@codesourcery.com>
7922         * decl.c (start_decl): Add missing parentheses.
7924 2005-01-30  Mark Mitchell  <mark@codesourcery.com>
7926         PR c++/19555
7927         * cp-tree.h (DECL_USE_TEMPLATE): Expand documentation.
7928         * decl.c (duplicate_decls): Do not discard
7929         DECL_IMPLICIT_INSTANTIATION when merging declarations.
7930         (start_decl): Do not SET_DECL_TEMPLATE_SPECIALIZATION for
7931         variables that do not have DECL_USE_TEMPLATE.
7933         PR c++/19395
7934         * decl.c (grokdeclarator): Refactor code so that qualified names
7935         are never allowed as the declarator in a typedef.
7937         PR c++/19367
7938         * name-lookup.c (do_nonmember_using_decl): Avoid overloading
7939         builtin declarations.
7941         PR c++/19457
7942         * call.c (convert_like_real): Inline call to
7943         dubious_conversion_warnings here.
7944         * cp-tree.h (dubious_conversion_warnings): Remove.
7945         * semantics.c (finish_unary_op_expr): Copy INTEGER_CSTs before
7946         setting TREE_NEGATED_INT.
7947         * typeck.c (dubious_conversion_warnings): Remove.
7949         PR c++/19349
7950         * name-lookup.c (pushdecl_namespace_level): Avoid accessing free'd
7951         memory.
7953 2005-01-28  Mark Mitchell  <mark@codesourcery.com>
7955         PR c++/19253
7956         * parser.c (cp_parser_diagnose_invalid_type_name): Commit to
7957         tentative parses.
7959         PR c++/19667
7960         * pt.c (redeclare_class_template): Robustify.
7962 2005-01-27  Steven Bosscher  <stevenb@suse.de>
7964         * decl.c (finish_case_label): Use SWITCH_STMT accessor macros
7965         instead of SWITCH_EXPR ones.
7966         * pt.c (tsubst_expr): Likewise.
7967         * semantics.c (begin_switch_stmt, finish_switch_cond,
7968         finish_switch_stmt): Likewise.
7970 2005-01-26  J"orn Rennecke <joern.rennecke@st.com>
7972         PR c++/18370
7973         * parser.c (cp_parser_initializer_clause): Initialize *non_constant_p.
7975 2005-01-25  Andrew Pinski  <pinskia@physics.uc.edu>
7977         * class.c (abort_fndecl_addr): New variable.
7978         (build_vtbl_initializer): If we have a pure virtual function
7979         share the abort function's address.
7980         Include gt-cp-class.h at the end.
7981         * config-lang.in (gtfiles): Add cp/class.c.
7983 2005-01-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
7985         * cxx-pretty-print.c (pp_cxx_statement): Add prototype. Make static.
7986         (pp_cxx_function_definition): Make static.
7987         * cxx-pretty-print.h (pp_cxx_statement): Remove prototype.
7988         (pp_cxx_function_definition): Likewise.
7990 2005-01-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
7992         * name-lookup.c (print_binding_level): Make static.
7993         (constructor_name_full): Make static inline.
7994         (current_decl_namespace): Make static.
7995         * name-lookup.h (constructor_name_full): Remove prototype.
7996         (print_binding_level): Likewise.
7997         (current_decl_namespace): Likewise.
7999 2005-01-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
8001         * decl.h (debug_bindings_indentation): Remove.
8003 2005-01-23  Kazu Hirata  <kazu@cs.umass.edu>
8005         * typeck.c: Fix a comment typo.
8007 2005-01-21  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
8009         PR c++/19208
8010         * pt.c (fold_decl_constant_value): Always call fold_non_dependent_expr
8011         at least once.
8012         (tsubst): Use fold_decl_constant_value in place of a bare call to
8013         integral_constant_value.
8015 2005-01-20  Kazu Hirata  <kazu@cs.umass.edu>
8017         * typeck.c (more_qualified_p): Remove.
8018         * cp-tree.h: Remove the corresponding prototype.
8020 2005-01-19  Matt Austern  <austern@apple.com>
8022         * typeck.c (comptypes): Handle return code from objc_comptypes
8023         correctly.
8025 2005-01-19  Kazu Hirata  <kazu@cs.umass.edu>
8027         * cp-tree.h, name-lookup.h: Remove unused prototypes.
8029 2005-01-19  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
8031         PR c++/19375
8032         * semantics.c (finish_id_expression): Disable access checking for
8033         already lookuped FIELD_DECL.
8035 2005-01-18  Kazu Hirata  <kazu@cs.umass.edu>
8037         * decl.c (delete_block): Remove.
8038         * cp-tree.h: Remove the corresponding prototype.
8040         * decl.c (vtable_decl_p, vtype_decl_p, walk_globals_data,
8041         walk_vtables_r, walk_vtables, walk_globals_r, walk_globals):
8042         Remove.
8043         * cp-tree.h: Remove the corresponding prototypes.
8045         * tree.c (count_functions, bound_pmf_p, cp_is_overload_p,
8046         cp_update_decl_after_saving, name_p): Remove.
8047         * cp-tree.h: Remove the corresponding prototypes.
8049 2005-01-18  Andrew Pinski  <pinskia@physics.uc.edu>
8051         PR c/19472
8052         * semantics.c (finish_asm_stmt): Strip nops off
8053         input memory operands.
8055 2005-01-18  Kazu Hirata  <kazu@cs.umass.edu>
8057         * Make-lang.in, call.c, cvt.c, init.c, rtti.c, tree.c,
8058         typeck2.c: Update copyright.
8060 2005-01-16  Kazu Hirata  <kazu@cs.umass.edu>
8062         * class.c (get_enclosing_class): Remove.
8063         * cp-tree.h: Remove the corresponding prototypes.
8065         * cvt.c (convert_lvalue): Remove.
8066         * cp-tree.h: Remove the corresponding prototype.
8068         * pt.c (tinst_for_decl): Remove.
8069         * cp-tree.h: Remove the corresponding prototypes.
8071         * tree.c (hash_chainon): Remove.
8072         * cp-tree.h: Remove the corresponding prototypes.
8074 2005-01-15  Jakub Jelinek  <jakub@redhat.com>
8076         PR c++/19263
8077         * typeck2.c (split_nonconstant_init_1) <case VECTOR_TYPE>: Put a copy
8078         of CONSTRUCTOR's node into MODIFY_EXPR, as the original is modified.
8080 2005-01-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8082         * Make-lang.in (cp-warn): Don't append $(WERROR).
8084 2005-01-10  Kazu Hirata  <kazu@cs.umass.edu>
8086         * cp-tree.h: Fix a comment typo.
8088 2005-01-07  Nathan Sidwell  <nathan@codesourcery.com>
8090         PR c++/19298
8091         * pt.c (tsubst_qualified_id): Call convert_from_reference.
8093 2005-01-06  Mark Mitchell  <mark@codesourcery.com>
8095         PR c++/19244
8096         * class.c (add_implicitly_declared_members): Remove dead code.
8097         * decl.c (grokfndecl): Add sfk parameter.  Use it do set
8098         DECL_CONSTRUCTOR_P.
8099         (grokdeclarator): Adjust calls to grokfndecl.
8100         * method.c (implicitly_declare_fn): Improve documentation.
8101         * parser.c (cp_parser_direct_declarator): Do not consider a
8102         function to be a constructor if the containing class was
8103         originally anonymous.
8105 2005-01-06  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
8107         PR c++/17154
8108         * search.c (lookup_field_1): Handle using declaration in
8109         class template partial specialization.
8111 2005-01-06  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
8113         PR c++/19258
8114         * pt.c (push_access_scope): Handle friend defined in class.
8115         (pop_access_scope): Likewise.
8117 2005-01-06  Nathan Sidwell  <nathan@codesourcery.com>
8119         PR c++/19270
8120         * pt.c (tsubst_copy) <ARRAY_REF case>: Handle separately.
8121         (tsubst_copy_and_build) <ARRAY_REF case>: Remove obsolete
8122         array-new handling code.  Use build_x_binary_op.
8124 2005-01-05  Nathan Sidwell  <nathan@codesourcery.com>
8126         PR c++/19030
8127         * cp-tree.h (start_decl): Take pointer to pushed scope, not bool.
8128         * name-lookup.h (push_scope): Return pushed scope, not flag.
8129         * name-lookup.c (push_scope): Return scope that should be popped,
8130         not a flag.
8131         * decl.c (start_decl): Adjust.
8132         (grokfndecl): Adjust scope push and pop.
8133         * decl2.c (check_classfn): Likewise.
8134         * parser.c (cp_parser_condition, cp_parser_conversion_function_id,
8135         cp_parser_init_declarator, cp_parser_direct_declarator,
8136         cp_parser_class_specifier, cp_parser_class_head,
8137         cp_parser_lookup_name,
8138         cp_parser_constructor_declarator_p): Likewise.
8139         * pt.c (instantiate_class_template,
8140         resolve_typename_type): Likewise.
8142 2005-01-03  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
8144         PR c++/14136
8145         * parser.c (cp_parser_unqualified_id): Do not issue error message
8146         for typedef-name as destructor declarator when performing an
8147         uncommitted tentative parse.
8149 2005-01-01  Steven Bosscher  <stevenb@suse.de>
8151         PR middle-end/17544
8152         * decl.c (finish_function): Fix comment.  Annotate the compiler
8153         generated return with the current file name and line 0.