OSDN Git Service

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