OSDN Git Service

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