OSDN Git Service

* langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
1 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
2
3         * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS):
4         Do not set it.
5         (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do not set it.
6         * tree.c (cp_add_pending_fn_decls): Remove.
7         * cp-tree.h (cp_add_pending_fn_decls): Remove prototype.
8
9 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
10
11         Revert change removing staticp.
12
13 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
14
15         * cp-objcp-common.c (cxx_staticp): Remove.
16         * cp-objcp-common.h (LANG_HOOKS_STATICP): Remove.
17         * cp-tree.h (cxx_staticp):      
18
19 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
20
21         * class.c (check_for_override): Don't remove dllmport attribute
22         of virtual methods.
23
24
25
26 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
27
28         PR c++/30847
29         * typeck.c (build_modify_expr): For COND_EXPR on LHS, if RHS has void
30         type issue error and return early.
31
32 2007-03-30  Jason Merrill  <jason@redhat.com>
33
34         PR c++/31187
35         * typeck.c (cp_type_readonly): New fn.
36         * cp-tree.h: Declare it.
37         * decl.c (start_decl): Set implicit DECL_THIS_STATIC here.
38         (cp_finish_decl): Not here.
39
40 2007-03-31  Richard Guenther  <rguenther@suse.de>
41
42         * optimize.c (maybe_clone_body): Replace splay-tree usage by
43         pointer-map.
44
45 2007-03-31  Douglas Gregor  <doug.gregor@gmail.com>
46
47         PR c++/31138
48         PR c++/31140
49         PR c++/31141
50         * parser.c (declarator_can_be_parameter_pack): New.
51         (cp_parser_template_parameter): Only parse the `...' if the
52         declarator can be a parameter pack.
53         (cp_parser_parameter_declaration): Ditto. Also, handle when TYPE
54         is NULL.
55         * pt.c (find_parameter_packs_r): Look into the bounds on integer
56         types (they could be used as array bounds). 
57         (check_for_bare_parameter_packs): Deal with TEMPLATE_PARM_INDEX.
58         (tsubst_pack_expansion): Handle failure to expand parameter
59         packs.
60         
61 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
62
63         PR c++/26099
64         * cp-tree.h (enum cp_trait_kind, struct tree_trait_expr,
65         TRAIT_EXPR_TYPE1, TRAIT_EXPR_TYPE2, TRAIT_EXPR_KIND): Add.
66         (enum cp_tree_node_structure_enum, union lang_tree_node): Update.
67         (CLASS_TYPE_NON_UNION_P): Add.
68         (struct lang_type_class): Add has_complex_dflt.
69         (TYPE_HAS_COMPLEX_DFLT, TYPE_HAS_TRIVIAL_DFLT): Add.
70         (locate_copy, locate_ctor, locate_dtor, finish_trait_expr): Declare.
71         * cp-tree.def: Add TRAIT_EXPR.
72         * cp-objcp-common.c (cp_tree_size): Add TRAIT_EXPR case.
73         * lex.c (struct resword): Add __has_nothrow_assign,
74         __has_nothrow_constructor, __has_nothrow_copy, __has_trivial_assign,
75         __has_trivial_constructor, __has_trivial_copy,
76         __has_trivial_destructor, __has_virtual_destructor, __is_abstract,
77         __is_base_of, __is_class, __is_convertible_to, __is_empty, __is_enum,
78         __is_pod, __is_polymorphic, __is_union.
79         * parser.c (cp_parser_primary_expression): Deal with the new RIDs.
80         (cp_parser_trait_expr): New.
81         * semantics.c (finish_trait_expr, trait_expr_value
82         classtype_has_nothrow_copy_or_assign_p): New.
83         * method.c (locate_copy, locate_ctor, locate_dtor): Do not define
84         as static.
85         * decl.c (cp_tree_node_structure): Add TRAIT_EXPR.
86         * class.c (check_bases, check_field_decl, check_bases_and_members):
87         Deal with TYPE_HAS_COMPLEX_DFLT (t) too.
88         * pt.c (uses_template_parms, tsubst_copy_and_build,
89         value_dependent_expression_p, type_dependent_expression_p): Deal with
90         TRAIT_EXPR.
91         * tree.c (cp_walk_subtrees): Deal with TRAIT_EXPR.
92
93 2007-03-29  Richard Guenther  <rguenther@suse.de>
94
95         * tree.c (cp_walk_subtrees): Do not set input_location.
96
97 2007-03-28  Simon Martin  <simartin@users.sourceforge.net>
98
99         PR c++/29077
100         * decl.c (grokfndecl): Properly setup decl if it is a constructor or a
101         destructor.
102
103 2007-03-28 Douglas Gregor <doug.gregor@gmail.com>
104
105         * parser.c (struct cp_parser): Update comment for
106         greater_than_is_operator_p.
107         (cp_parser_primary_expression): In C++0x mode, a cast operator can
108         be terminated with a `>>' token when !GREATER_THAN_IS_OPERATOR_P.
109         (TOKEN_PRECEDENCE): In C++0x mode, `>>' is treated like `>' when
110         !GREATER_THAN_IS_OPERATOR_P.
111         (cp_parser_binary_expression): When -Wc++0x-compat, warn about
112         `>>' operators that will become two `>' tokens in C++0x.
113         (cp_parser_parameter_declaration): Treat `>>' like `>' in C++0x
114         mode, allowing it to terminate default arguments.
115         (cp_parser_enclosed_template_argument_list): In C++0x mode, treat
116         `>>' like two consecutive `>' tokens.
117         (cp_parser_skip_to_end_of_template_parameter_list): Ditto.
118         (cp_parser_next_token_ends_template_argument_p): In C++0x, `>>'
119         ends a template argument.
120
121 2007-03-28  Douglas Gregor  <doug.gregor@gmail.com>
122
123         * decl.c (redeclaration_error_message): Complain when redeclaring
124         a friend function with default template arguments (C++0x mode only).
125         * cp-tree.h (check_default_tmpl_args): Declare.
126         * pt.c (check_default_tmpl_args): In C++0x mode, permit default
127         template arguments in function templates. Add support for checking
128         the default template arguments of friend templates.
129         (push_template_decl_real): Fix call to check_default_tmpl_args.
130         (type_unification_real): If a template parameter has not been
131         deduced but provides a default template argument, substitute into
132         that default template argument.
133         * parser.c (cp_parser_init_declarator): When declaring (but not
134         defining!) a function template in C++0x mode, check for default
135         template arguments.
136
137 2007-03-28 Douglas Gregor <doug.gregor@gmail.com>
138
139         PR c++/29993
140         * decl.c (grokdeclarator): Deal with cv-qualified function type
141         typedefs in the same way for member and non-member functions.
142
143 2007-03-26  Dirk Mueller  <dmueller@suse.de>
144
145         * parser.c (cp_parser_member_declaration): Pedwarn
146         about stray semicolons after member declarations.
147
148 2007-03-26  Paolo Carlini  <pcarlini@suse.de>
149
150         PR c++/30500
151         * pt.c (instantiate_decl): Set in_system_header.
152
153 2007-03-22  Mark Mitchell  <mark@codesourcery.com>
154
155         * cp-tree.h (current_tempalte_parms): Improve documentation.
156         * pt.c (current_template_args): Likewise.
157
158         PR c++/30863
159         * parser.c (cp_parser_parse_and_diagnose_invalid_type_name): Do
160         not consume tokens when failing.
161
162 2007-03-22  Jim Wilson  <wilson@specifix.com>
163             Mark Mitchell  <mark@codesourcery.com>
164
165         PR c++/31273
166         * call.c (standard_conversion): Use type_decays_to.  Keep FCODE
167         consistent with FROM.
168
169 2007-03-22  Gabriel Dos Reis  <gdr@integrable-solutions.net>
170
171         * error.c (dump_expr): Handle dependent names that designate types.
172         * cxx-pretty-print.c (pp_cxx_unqualified_id): Handle TYPENAME_TYPE.
173
174 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
175
176         * cp-tree.def, parser.c, pt.c: Fix comment typos.
177
178 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
179
180         * cvt.c (cp_convert_and_check) : Define.
181         * cp-tree.h (cp_convert_and_check): Declare.
182         * call.c (convert_conversion_warnings): Rename to
183         conversion_null_warnings.  The warning for floating-point to
184         integer is handled by convert_and_check in convert_like_real.
185         (convert_like_real): convert_conversion_warnings was renamed as
186         conversion_null_warnings.
187         * typeck.c (build_binary_op): Use cp_convert_and_check to warn for
188         overflow and changes of value during conversion.
189
190 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
191
192         PR c++/30891
193         * parser.c (cp_parser_statement): If 'namespace' is found, this
194         only can be a namespace alias definition, so parse it now.
195         (cp_parser_namespace_alias_definition): if we find an open brace
196         instead of '=', then this is actually a misplaced namespace
197         definition.
198         
199 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
200
201         PR c++/24924
202         * decl.c (cxx_init_decl_processing): Move command-line options
203         processing to c-opts.c.
204         
205 2007-03-15  Douglas Gregor  <doug.gregor@gmail.com>
206
207         * ptree.c (cxx_print_type): Use formatting markup for integers
208         when printing template parameter index/level/orig level.
209         (cxx_print_xnode): Ditto.
210         * cp-tree.h (TEMPLATE_PARM_PARAMETER_PACK): Use TREE_LANG_FLAG_0.
211         (struct template_parm_index_s): Remove the PARAMETER_PACK member.
212         Make INDEX, LEVEL, and ORIG_LEVEL integers instead of
213         HOST_WIDE_INTs.
214         (struct saved_scope): Make X_PROCESSING_TEMPLATE_DECL an int,
215         rather than a HOST_WIDE_INT.
216         Turn X_PROCESSING_EXPLICIT_INSTANTIATION, SKIP_EVALUATION, and
217         NEED_POP_FUNCTION_CONTEXT into bool bitfields; reorder fields for
218         better bit-packing.
219         (struct language_function): Make RETURNS_VALUE, RETURNS_NULL,
220         RETURNS_ABNORMALLY, IN_FUNCTION_TRY_HANDLER, and
221         IN_BASE_INITIALIZER bool bitfields.
222         (struct cp_declarator): Make KIND a 4-bit field. Make
223         PARAMETER_PACK_P a bool bitfield just after KIND.
224         * pt.c (uses_parameter_packs): Destroy the pointer set.
225         (make_pack_expansion): Ditto.
226         (check_for_bare_parameter_packs): Ditto.
227         * name-lookup.c (push_to_top_level): Make need_pop a bool value.
228         
229 2007-03-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
230
231         PR c++/31165
232         * call.c  (convert_default_arg): Instead of copying the node,
233         unshare it.
234
235 2007-03-15  Dirk Mueller  <dmueller@suse.de>
236
237         PR c++/30860
238         * call.c (convert_conversion_warnings): New..
239         (convert_like_real): .. factored out from here.
240         (convert_conversion_warnings): Add warning about
241         false being converted to NULL in argument passing.
242
243 2007-03-14  Dirk Mueller  <dmueller@suse.de>
244
245         * cp/semantics.c (c_finish_if_stmt): Call empty_if_body_warning.
246         (finish_do_body): Warn about empty body in do/while statement.
247
248 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
249
250         * class.c (warn_hidden): Add OPT_Woverloaded_virtual to warning.
251         
252 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
253
254         PR c/21438
255         * typeck.c (build_binary_op): Call warn_for_div_zero instead of
256         warning.
257         
258 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
259
260         * cp/repo.c (init_repo): Initialize random_seed saved options.
261         (finish_repo): Adjust.
262
263 2007-03-13  Mark Mitchell  <mark@codesourcery.com>
264
265         PR bootstrap/30899
266         * Make-lang.in (doc/g++.1): Use $< to specify the location from
267         which to copy.
268
269 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
270
271         * decl.c (compute_array_index_type): New warning flag warn_vla.
272
273 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
274
275         PR c++/30108
276         * call.c (convert_default_arg): Copy non-constant arguments.
277
278 2007-03-11  Mark Mitchell  <mark@codesourcery.com>
279
280         PR c++/31038
281         * parser.c (cp_parser_postfix_expression): Disallow compound
282         literals in constant expressions.
283
284         PR c++/30328
285         * semantics.c (finish_typeof): Use unlowered_expr_type.
286         
287 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
288
289         PR c++/30274
290         * cp-tree.h (unlowered_expr_type): New function.
291         * typeck.c (is_bitfield_expr_with_lowered_type): Handle
292         COMPOUND_EXPR, MODIFY_EXPR, and SAVE_EXPR.
293         (unlowered_expr_type): New function.
294         (build_unary_op): Disallow predecrements of bool bitfields.
295         * call.c (build_conditional_expr): Use unlowered_expr_type.
296         * pt.c (type_unification_real): Likewise.
297
298 2007-03-09  Douglas Gregor  <doug.gregor@gmail.com>
299
300         PR c++/20599
301         * typeck.c (check_return_expr): Check for bare parameter packs.
302         (comptypes): Compare template parameter packs and
303         type pack expansions.
304         * decl.c (grokdeclarator): Deal with the declaration of function
305         parameter packs.
306         (grokparms): Verify that the (optional) function parameter pack is
307         at the end of the parameter list.
308         (xref_basetypes): Handle pack expansions in the base class.
309         (cp_tree_node_structure): Handle ARGUMENT_PACK_SELECT.
310         * cp-tree.def (TYPE_ARGUMENT_PACK): New.
311         (NONTYPE_ARGUMENT_PACK): New.
312         (TYPE_PACK_EXPANSION): New.
313         (EXPR_PACK_EXPANSION): New.
314         (ARGUMENT_PACK_SELECT): New.
315         * cp-objcp-common.c (cp_tree_size): Compute size of
316         (NON)TYPE_ARGUMENT_PACK, (TYPE|EXPR)_PACK_EXPANSION, and
317         ARGUMENT_PACK_SELECT.
318         * error.c (dump_template_argument): Print template argument packs.
319         (dump_template_argument_list): Ditto.
320         (dump_template_parameter): Dump `...' for template type parameter
321         packs.
322         (dump_type): Dump TYPE_PACK_EXPANSION nodes.
323         (dump_parameters): Print function parameter packs.
324         (dump_template_parms): Print template argument packs.
325         (dump_expr): Dump EXPR_PACK_EXPANSION nodes.
326         (maybe_warn_variadic_templates): New.
327         * operators.def: Add ellipsis operator for EXPR_PACK_EXPANSION.
328         * tree.c (cp_walk_subtrees): Walk BASELINK, TYPE_ARGUMENT_PACK,
329         NONTYPE_ARGUMENT_PACK, TYPE_PACK_EXPANSION, EXPR_PACK_EXPANSION,
330         CAST_EXPR. 
331         * mangle.c (write_type): Mangle TYPE_PACK_EXPANSION.
332         (write_template_arg): Write argument packs as separate arguments.
333         * cp-tree.h (struct template_parm_index_s): Add flag that
334         indicates that the template parameter is actually a parameter
335         pack.
336         (struct tree_argument_pack_select): New.
337         (enum cp_tree_node_structure_enum): Add TS_CP_ARGUMENT_PACK_SELECT.
338         (union lang_tree_node): Add argument_pack_select.
339         (FUNCTION_PARAMETER_PACK_P): New.
340         (PACK_EXPANSION_P): New.
341         (PACK_EXPANSION_PATTERN): New.
342         (SET_PACK_EXPANSION_PATTERN): New.
343         (PACK_EXPANSION_PARAMETER_PACKS): New.
344         (ARGUMENT_PACK_P): New.
345         (ARGUMENT_PACK_ARGS): New.
346         (SET_ARGUMENT_PACK_ARGS): New.
347         (ARGUMENT_PACK_INCOMPLETE_P): New.
348         (ARGUMENT_PACK_EXPLICIT_ARGS): New.
349         (TEMPLATE_PARM_PARAMETER_PACK): New.
350         (TEMPLATE_TYPE_PARAMETER_PACK): New.
351         (ARGUMENT_PACK_SELECT_FROM_PACK): New.
352         (ARGUMENT_PACK_SELECT_INDEX): New.
353         (ARGUMENT_PACK_SELECT_ARG): New.
354         (struct cp_declarator): Add parameter_pack_p flag.
355         (maybe_warn_variadic_templates): Declare.
356         (process_template_parm): Add bool parameter IS_PARAMETER_PACK, to
357         indicate a template parameter pack. 
358         (uses_parameter_packs): Declare.
359         (template_parameter_pack_p): Declare.
360         (template_parms_variadic_p): Declare.
361         (make_pack_expansion): Declare.
362         (check_for_bare_parameter_packs): Declare.
363         * cxx-pretty-print.c (pp_cxx_unary_expression): Print
364         sizeof... expressions. 
365         (pp_cxx_expression): Print pack expansions and non-type argument
366         packs.
367         (pp_cxx_exception_specification): Print pack expansions. 
368         (pp_cxx_direct_declarator): Print ellipsis for parameter packs.
369         (pp_cxx_ctor_initializer): Print pack expansions.
370         (pp_cxx_type_id): Print pack expansions.
371         (pp_cxx_template_argument_list): Print argument packs.
372         (pp_cxx_template_parameter): Print ellipsis for template parameter
373         packs.
374         * pt.c (comp_template_parms): Compare template parameter packs.
375         (template_parameter_pack_p): New.
376         (template_parms_variadic_p): New.
377         (template_args_variadic_p): New.
378         (make_ith_pack_parameter_name): New.
379         (struct find_parameter_pack_data): New.
380         (find_parameter_packs_r): New.
381         (uses_parameter_packs): New.
382         (make_pack_expansion): New.
383         (check_for_bare_parameter_packs): New.
384         (expand_template_argument_pack): New.
385         (reduce_template_parm_level): Propagate parameter pack flag.
386         (process_template_parm): Add is_parameter_pack parameter to state
387         when the parameter is actually a parameter pack. Create template
388         parameter packs when is_parameter_pack is true.
389         (current_template_args): The argument for a template parameter
390         pack is an argument pack containing a single pack expansion.
391         (process_partial_specialization): When checking that non-type
392         argument expressions do not involve template parameters, loop over
393         the arguments in argument packs separately.
394         (push_template_decl_real): Check that the type of the declaration
395         does not have any bare parameter packs. Check that primary
396         templates have no more than one parameter pack, and that it comes
397         at the end of the template parameter list.
398         (convert_template_argument): Handle coercions for pack expansion
399         expressions by coercing the pattern then rebuilding the expansion.
400         (coerce_template_parms): When coercing the arguments for a
401         variadic template, pack "extra" arguments into an argument pack.
402         (coerce_template_template_parms): Cannot coerce between parameter
403         packs and non-pack parameters.
404         (template_args_equal): Compare PACK_EXPANSION_P expressions.
405         (comp_template_args): Expand all template arguments packs before
406         comparing template argument lists.
407         (mangle_class_name_for_template): Make argument packs as separate
408         template arguments.
409         (for_each_template_parm_r): No need to handle BASELINK. 
410         (instantiate_class_template): Handle pack expansions in the base
411         class list.
412         (tsubst_pack_expansion): New.
413         (tsubst_template_args): Handle substitutions of argument packs and
414         pack expansion into template argument lists.
415         (tsubst_decl): Expand function parameter packs into separate
416         function parameters.
417         (tsubst_arg_types): Expand a type pack expansion into separate
418         argument types.
419         (tsubst_exception_specification): Handle pack expansions in
420         exception specifiers.
421         (tsubst): See through ARGUMENT_PACK_SELECT arguments when 
422         replacing a template parameter with its argument. If we encounter
423         a substitution for an argument pack, just return the parameter
424         itself. 
425         (tsubst_copy): sizeof(X...) returns the number of elements in
426         parameter pack X.  See through ARGUMENT_PACK_SELECT when the
427         PARM_DECL is a parameter pack.
428         (tsubst_expr): Expression pack expansions and argument packs
429         cannot show up here; they will all be handled through function
430         calls, sizeof, and template argument lists.
431         (tsubst_copy_and_build): sizeof(X...) returns the number of
432         elements in parameter pack X.  Handle pack expansions in TREE_LIST
433         and CONSTRUCTOR nodes.
434         (fn_type_unification): Handle "incomplete" explicit template
435         argument lists that specify some of the arguments for a template
436         parameter pack.
437         (type_unification_real): Unify arguments against pack expansions.
438         (template_parm_level_and_index): New, helper function.
439         (unify_pack_expansion): New.
440         (unify): Unify argument packs on an argument-by-argument basis,
441         handling variadic argument packs as well.
442         (more_specialized_fn): Handle unification of function parameter
443         packs. All things being equal, prefer non-variadic function
444         templates to variadic function templates.
445         (more_specialized_class): Prefer the variadic class template
446         partial specialization that binds fewer arguments to a parameter
447         pack.
448         (regenerate_decl_from_template): Expand function parameter packs
449         into separate parameters.
450         (instantiate_decl): Ditto.
451         (tsubst_initializer_list): Handle pack expansions for base-class
452         initializers.
453         (dependent_type_p_r): Determine dependent types in argument packs
454         and pack expansions.
455         (value_dependent_expression_p): Determine value-dependence of
456         non-type argument packs.
457         (dependent_template_arg_p): Handle argument packs.
458         * semantics.c (finish_cond): Check for bare parameter packs.
459         (finish_expr_stmt): Ditto.
460         (finish_for_expr): Ditto.
461         (finish_switch_cond): Ditto.
462         (finish_mem_initializers): Ditto.
463         * name-lookup.c (arg_assoc_type): Handle pack expansions and
464         argument packs.
465         * decl2.c (cp_build_parm_decl): Mark function parameter packs.
466         * parser.c (make_declarator): Declarator is not an expansion.
467         (make_pointer_declarator): Transfer parameter pack flag to outer
468         declarator.
469         (make_reference_declarator): Ditto.
470         (make_ptrmem_declarator): Ditto.
471         (make_call_declarator): Ditto.
472         (make_array_declarator): Ditto.
473         (cp_parser_postfix_expression): Allow pack expansion expressions
474         in the argument list for a call expression.
475         (cp_parser_parenthesized_expression_list): Add new parameter
476         ALLOW_EXPANSION_P. When true, parse the ellipsis to mean "expand
477         into separate arguments."
478         (cp_parser_new_placement): Allow pack expansion expressions.
479         (cp_parser_new_initializer): Ditto.
480         (cp_parser_mem_initializer_list): Allow ellipsis to create a
481         base-class initializer expansion.
482         (cp_parser_mem_initializer): Ditto.
483         (cp_parser_template_parameter_list): Keep track of whether the
484         template parameter is a template parameter pack.
485         (cp_parser_template_parameter): Parse the ellipsis to indicate a
486         template parameter pack.
487         (cp_parser_type_parameter): Ditto.
488         (cp_parser_template_argument_list): Parse the ellipsis to indicate
489         a pack expansion.
490         (cp_parser_direct_declarator): Parse the ellipsis to indicate that
491         this declarator is a parameter pack.
492         (cp_parser_parameter_declaration): The ellipsis does not end the
493         parameter declaration, because it might be a parameter pack. Parse
494         the ellipsis to indicate a parameter pack.
495         (cp_parser_initializer): Allow pack expansions.
496         (cp_parser_initializer_list): Allow ellipsis to create an
497         initializer expansion.
498         (cp_parser_base_clause): Allow ellipsis to create a base specifier
499         expansion.
500         (cp_parser_type_id_list): Allow ellipsis to create an exception
501         specifier expansion.
502         (cp_parser_attribute_list): Don't allow pack expansions.
503         (cp_parser_functional_cast): Allow pack expansions.
504         (cp_parser_sizeof_operand): Allow ellipsis following "sizeof" to
505         compute the length of a parameter pack.
506         (cp_parser_next_token_ends_template_argument_p): An ellipsis can
507         end a template argument.
508         * tree.c (cp_walk_subtrees): Walk BASELINK, TYPE_ARGUMENT_PACK,
509         NONTYPE_ARGUMENT_PACK, TYPE_PACK_EXPANSION, EXPR_PACK_EXPANSION,
510         CAST_EXPR. 
511
512 2007-03-09  Dirk Mueller  <dmueller@suse.de>
513
514         * cp/call.c (build_new_op): Call warn_logical_operator.
515
516 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
517
518         PR c++/30852
519         * semantics.c (finish_offsetof): Handle COMPOUND_EXPR.
520
521         PR c++/30534
522         * pt.c (any_template_arguments_need_structural_equality_p):
523         Robustify.
524
525 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
526
527         * decl.c (grokdeclarator): Disable warnings for anonymous
528         bitfields.
529
530 2007-03-05  Volker Reichelt  <reichelt@netcologne.de>
531
532         * typeck2.c (readonly_error): Always emit a hard error.
533         Remove last argument.
534         * cp-tree.h (readonly_error): Adjust prototype.
535         * semantics.c (finish_asm_stmt): Adjust call to readonly_error.
536         * typeck.c (build_unary_op): Likewise.
537         (build_modify_expr): Likewise.
538
539 2007-03-04  Simon Martin  <simartin@users.sourceforge.net>
540
541         PR c++/30895
542         * tree.c (cp_tree_equal): Properly handle COMPLEX_CST trees.
543
544 2007-03-03  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
545
546         PR c++/15787
547         * parser.c (struct cp_parser): New IN_IF_STMT.
548         (cp_parser_statement_seq_opt): Handle an unexpected 'else',
549         returning if parsing the body of an 'if' statement or issuing an
550         error and continuing.
551         (cp_parser_selection_statement): Set IN_IF_STMT bit when parsing
552         body of 'if'.
553         (cp_parser_jump_statement): Mask new IN_IF_STMT bit.
554         
555 2007-03-02  Simon Martin  <simartin@users.sourceforge.net>
556
557         PR c++/28253
558         * class.c (update_vtable_entry_for_fn): Properly handle invalid overriders
559         for thunks.
560
561 2007-03-02  Geoffrey Keating  <geoffk@apple.com>
562
563         * g++spec.c (lang_specific_driver): Add -lstdc++ when compiling
564         Objective-C++.  Don't exit early if -shared-libgcc needs to be
565         added.
566
567 2007-03-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
568
569         * typeck.c (common_base_type): Delete unused function.
570         
571 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
572
573         * Make-lang.in: Add dummy lang.install-pdf target.
574
575 2007-03-01  Simon Baldwin <simonb@google.com>
576
577         PR c++/23689
578         * decl.c (check_tag_decl): Added new warning for typedef ignored
579         when it precedes an otherwise valid non-typedef declaration.
580
581 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
582
583         * typeck.c (build_function_call): Store converted arguments
584         in a stack-allocated array instead of building a list.
585         (convert_arguments): Store arguments in the array passed in as an
586         argument, and return the actual number of arguments.
587         * call.c (build_call): Delete, and replace with...
588         (build_call_n, build_call_a): New.
589         (build_op_delete_call): Rewrite to avoid constructing argument lists.
590         (build_over_call): Store converted arguments in a stack-allocated
591         array instead of building a list.
592         (build_cxx_call): Pass arguments in an array instead of as a list.
593         (build_java_interface_fn_ref): Rewrite to avoid constructing
594         argument lists.
595         * tree.h: Update declarations to reflect above changes.
596         * method.c (use_thunk): Use a stack-allocated array to hold
597         the arguments instead of a list.
598         * rtti.c (throw_bad_cast): Update call to cxx_call.
599         (throw_bad_typeid): Likewise.
600         (build_dynamic_cast_1): Likewise.
601         * init.c (build_builtin_delete_call): Use build_call_n.
602         * decl.c (expand_static_init): Likewise.
603         * except.c (cp_protect_cleanup_actions): Likewise.
604         * cp-gimplify.c (genericize_eh_spec_block): Likewise.
605         (gimplify_must_not_throw_expr): Likewise.
606         (cxx_omp_apply_fn): Use build_call_a.
607
608 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
609
610         * semantics.c (expand_or_defer_fn): Call c_record_cdtor_fn.
611         * decl2.c (cp_write_gloabl_declarations): Call c_build_cdtor_fns.
612
613 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
614
615         * cp-tree.h (static_ctors): Remove.
616         * cp-tree.h (static_dtors): Likewise.
617         * cp-objcp-common.c (decl_shadowed_for_var_lookup): Adjust for
618         refactoring of tree_map hierarchy.
619         (decl_shadowed_for_var_insert): Likewise.
620         * semantics.c (expand_body): Use c_expand_body.
621         (expand_or_defer_fn): Don't update static_ctors or static_dtors.
622         * decl2.c (static_ctors): Remove.
623         (static_dtors): Likewise.
624         (generate_ctor_or_dtor_function): Pass NULL_TREE to
625         objc_generate_static_init_call.  Do not call static_[cd]tors.
626         (generate_ctor_and_dtor_functions_for_priority): Do not check for
627         static_[cd]tors.
628         (cp_write_global_declarations): Likewise.
629
630 2007-02-23  Richard Guenther  <rguenther@suse.de>
631
632         * class.c (note_name_declared_in_class): Make declaration
633         changes meaning a pedwarn.
634
635 2007-02-22  Michael Matz  <matz@suse.de>
636
637         PR c++/29433
638         * cp-tree.h (TFF_UNQUALIFIED_NAME): New formatting flag.
639         * error.c (dump_aggr_type, dump_simple_decl, dump_decl,
640         dump_function_decl): Guard emitting outer scopes by new flag.
641         * cp-lang.c (cxx_dwarf_name): New function.
642         (LANG_HOOKS_DWARF_NAME): Define to cxx_dwarf_name.
643         * pt.c (classtype_mangled_name, mangle_class_name_for_template):
644         Remove functions.
645         (push_template_decl_real, lookup_template_class): Remove calls
646         to above functions.
647
648 2007-02-19  Mark Mitchell  <mark@codesourcery.com>
649
650         * call.c (build_new_method_call): Ensure that explicit calls of
651         destructors have type "void".
652
653 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
654
655         * typeck.c (build_binary_op): Replace -Wstring-literal-comparison
656         and -Walways-true with -Waddress.
657         * cvt.c (convert_to_void): Replace unconditional warning with
658         -Waddress.
659
660 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
661
662         * decl.c, tree.c: Fix comment typos.
663
664 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
665
666         PR C++/30158
667         * semantics.c (finish_stmt_expr_expr): Set TREE_TYPE of the 
668         statement expression if we had an error mark node.
669                 
670 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
671             Brooks Moses  <brooks.moses@codesourcery.com>
672             Lee Millward  <lee.millward@codesourcery.com>
673
674         * cp-tree.def (AGGR_INIT_EXPR): Adjust documentation.
675         Change class to tcc_vl_exp.
676
677         * call.c (build_call): Use build_call_list instead 
678         of build3. 
679         (build_over_call): Likewise.
680         (build_new_method_call): Use build_min_non_dep_call_list 
681         instead of build_min_non_dep.
682
683         * error.c (dump_call_expr_args): New function.
684         (dump_aggr_init_expr_args): New function.
685         (dump_expr) <AGGR_INIT_EXPR, CALL_EXPR, INDIRECT_REF>: Use them. 
686         Update to use new CALL_EXPR and AGGR_INIT_EXPR accessor macros.
687
688         * cvt.c (convert_to_void): Use build_call_array instead
689         of build3; use new AGGR_INIT_EXPR accessor macros.
690
691         * mangle.c (write_expression): Use TREE_OPERAND_LENGTH
692         instead of TREE_CODE_LENGTH.
693
694         * dump.c (cp_dump_tree) <AGGR_INIT_EXPR>: Update to use new
695         AGGR_INIT_EXPR accessor macros.
696
697         * cp-gimplify.c (cp_gimplify_init_expr): Use 
698         AGGR_INIT_EXPR_SLOT to set the slot operand.
699
700         * cp-tree.h (AGGR_INIT_EXPR_FN): New macro.
701         (AGGR_INIT_EXPR_SLOT): New macro.
702         (AGGR_INIT_EXPR_ARG): New macro.
703         (aggr_init_expr_nargs): New macro.
704         (AGGR_INIT_EXPR_ARGP): New macro.
705         (aggr_init_expr_arg_iterator): New.
706         (init_aggr_init_expr_arg_iterator): New.
707         (next_aggr_init_expr_arg): New.
708         (first_aggr_init_expr_arg): New.
709         (more_aggr_init_expr_args_p): New.
710         (FOR_EACH_AGGR_INIT_EXPR_ARG): New.
711         (stabilize_aggr_init): New declaration.
712         (build_min_non_dep_call_list): Likewise.
713
714         * tree.c (process_aggr_init_operands): New function.
715         (build_aggr_init_array) New function.
716         (build_cplus_new): Update to use new CALL_EXPR and
717         AGGR_INIT_EXPR accessor macros. Replace use of build3 with
718         build_aggr_init_array.
719         (build_min_non_dep_call_list) New function.
720         (build_min_nt): Assert input code parameter is not a variable
721         length expression class.
722         (build_min, build_min_non_dep): Likewise.
723         (cp_tree_equal) <CALL_EXPR>: Iterate through the arguments
724         to check for equality instead of recursing. Handle tcc_vl_exp
725         tree code classes.
726         (stabilize_call): Update to only handle CALL_EXPRs, not 
727         AGGR_INIT_EXPRs; use new CALL_EXPR accessor macros.
728         (stabilize_aggr_init): New function.
729         (stabilize_init): Use it.
730
731         * cxx-pretty-print.c (pp_cxx_postfix_expression)
732         <AGGR_INIT_EXPR, CALL_EXPR>: Update to use new CALL_EXPR and
733         AGGR_INIT_EXPR accessor macros and argument iterators.
734         
735         * pt.c (tsubst_copy) <CALL_EXPR>: Replace build_nt with
736         build_vl_exp. Iterate through the operands, recursively 
737         processing each one.
738         (tsubst_copy_and_build) <CALL_EXPR>: Update to use new
739         CALL_EXPR accessor macros.
740         (value_dependent_expression_p) <default>: Handle tcc_vl_exp
741         tree code classes. Use TREE_OPERAND_LENGTH instead of 
742         TREE_CODE_LENGTH.
743
744         * semantics.c (finish_call_expr): Use build_nt_call_list
745         instead of build_nt.
746         (simplify_aggr_init_expr): Update to use new AGGR_INIT_EXPR 
747         accessor macros. Use build_call_array to construct the 
748         CALL_EXPR node instead of build3
749         
750         * decl2.c (build_offset_ref_call_from_tree): Use 
751         build_nt_call_list and build_min_non_dep_call_list instead
752         of build_min_nt and build_min_non_dep.
753
754         * parser.c (cp_parser_postfix_expression) <CPP_OPEN_PAREN>:
755         Use build_nt_call_list instead of build_min_nt.
756
757 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
758
759         PR c++/28943
760         * call.c (build_conditional_expr): Improve error message.
761         
762 2007-02-13  Dirk Mueller  <dmueller@suse.de>
763
764         * friend.c (do_friend): Annotate warning about friend
765         declarations in templates with OPT_Wnon_template_friend.
766         Convert informal message from warning() to inform().
767
768 2007-02-12  Simon Martin  <simartin@users.sourceforge.net>
769             Mark Mitchell  <mark@codesourcery.com>
770
771         PR c++/14622
772         * pt.c (do_decl_instantiation): Detect type mismatches in explicit
773         instantiations for variables.
774
775 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
776
777         PR middle-end/7651
778         * cp-gimplify.c (gimplify_expr_stmt): Don't check extra_warnings.
779         Check warn_unused_value just once.
780
781 2007-02-11  Mark Mitchell  <mark@codesourcery.com>
782
783         PR c++/26988
784         * pt.c (determine_specialization): Use skip_artificial_parms_for.
785         (fn_type_unificiation): Likewise.
786         (get_bindings): Likewise.
787
788 o2007-02-06  Mark Mitchell  <mark@codesourcery.com>
789
790         PR target/29487
791         * decl.c (finish_function): Use DECL_REPLACEABLE.
792         * tree.c (cp_cannot_inline_tree_fn): Likewise.
793
794 2007-02-10  Gabriel Dos Reis  <gdr@integrable-solutions.net>
795
796         * parser.c (cp_parser_primary_expression): Reformat overly long lines.
797
798 2007-02-10  Richard Henderson  <rth@redhat.com>, Jakub Jelinek  <jakub@redhat.com>
799
800         * decl.c (grokvardecl): Don't error if !have_tls.
801         (grokdeclarator): Likewise.
802         * parser.c (cp_parser_omp_threadprivate): Likewise.
803
804 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
805
806         PR c++/30703
807         * cp-gimplify.c (cp_genericize_r): Don't dereference invisiref
808         parameters and result decls in omp clauses.
809         (cxx_omp_privatize_by_reference): Pass also invisiref PARM_DECLs
810         by reference.
811
812 2007-02-05  Dirk Mueller  <dmueller@suse.de>
813
814         PR bootstrap/30510
815         * parser.c (cp_parser_class_specifier): Always initialize bases.
816
817 2007-02-05  Paolo Bonzini  <bonzini@gnu.org>
818
819         * cp-tree.h (OMP_ATOMIC_CODE): Delete.
820         (OMP_ATOMIC_DEPENDENT_P): Rewrite.
821         * pt.c (tsubst_expr): Adjust for new format of dependent OMP_ATOMIC
822         expressions.
823         * semantics.c (finish_omp_atomic): Store a whole expression node
824         in operand 1, and integer_zero_node in operand 0, for dependent
825         OMP_ATOMIC.  Rewrite to make flow easier to understand.
826
827 2007-02-03  Gabriel Dos Reis  <gdr@integrable-solutions.net>
828
829         * decl.c (grokdeclarator): Use OPT_Wreturn_type instead of 0.
830
831 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
832
833         * class.c, cp-tree.h, decl.c, decl2.c, g++spec.c, init.c,
834         parser.c, pt.c, tree.c, typeck.c: Follow spelling conventions.
835
836 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
837
838        * parser.c (cp_lexer_get_preprocessor_token): Attach the C++0x
839        keyword warning to -Wc++0x-compat.
840         
841 2007-02-03  Gabriel Dos Reis  <gdr@integrable-solutions.net>
842
843         * decl.c (grokdeclarator): Update documentation.
844
845 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
846
847         PR c++/30536
848         * decl.c (grokdeclarator): If __thread is used together with
849         a storage class other than extern and static, clear thread_p
850         after issuing diagnostics and fall through to checking the
851         storage class.
852
853 2007-01-30  Roger Sayle  <roger@eyesopen.com>
854
855         * error.c (dump_type_suffix): Avoid use of cp_build_binary_op when
856         calculating the size of an array (to avoid recursive errors).
857
858 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
859
860         PR c++/24745
861         * typeck.c (build_binary_op): Fix logic for warning. Move warning
862         to -Wpointer-arith.
863         * call.c (convert_like_real): Don't warn when converting to
864         boolean type.
865         
866 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
867
868         * decl.c (pop_label): Replace warning with call to
869         warn_for_unused_label.
870
871 2007-01-28  Andrew Pinski  <pinskia@gmail.com>
872
873         PR C++/28988
874         * semantics.c (finish_pseudo_destructor_expr): Check the
875         destrutor name by calling check_dtor_name.
876
877 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
878
879         * lex.c (D_CPP0X): Rename.
880         (D_CXX0X): To this.
881         (reswords): D_CPP0X -> D_CXX0X.
882         (init_reswords): Ditto.
883         * parser.c (cp_lexer_get_preprocessor_token): Warn about the use
884         of C++0x keywords as identifiers.
885
886 2007-01-23  Simon Martin  <simartin@users.sourceforge.net>
887
888         PR c++/27492
889         * decl.c (duplicate_decls): Don't reset DECL_INVALID_OVERRIDER_P for
890         function decls.
891
892 2007-01-23  Ian Lance Taylor  <iant@google.com>
893
894         * typeck.c (convert_for_assignment): Only warn about a = b = c
895         when converting to bool.
896
897 2007-01-23  Roger Sayle  <roger@eyesopen.com>
898
899         * call.c (null_ptr_cst_p): Replace use of TREE_CONSTANT_OVERFLOW with
900         TREE_OVERFLOW.
901         * typeck.c (ignore_overflows): Remove the remaining uses of
902         TREE_CONSTANT_OVERFLOW.
903
904 2007-01-20  Jan Hubicka  <jh@suse.cz>
905
906         * decl2.c (start_objects, start_static_storage_duration_function):
907         Do not make the functions uninlinable.
908
909 2007-01-17  Ian Lance Taylor  <iant@google.com>
910
911         * class.c (add_method): Call VEC_reserve_exact rather than passing
912         a negative size to VEC_reserve.
913
914 2007-01-11  Simon Martin  <simartin@users.sourceforge.net>
915
916         PR c++/29573
917         * tree.c (cp_tree_equal): Properly handle MODOP_EXPR trees.
918
919 2007-01-10  Mark Mitchell  <mark@codesourcery.com>
920
921         PR c++/28999
922         * decl.c (make_typename_type): If the qualified name is not a
923         type, issue an error.
924         * parser.c (cp_parser_elaborated_type_specifier): Fix comment
925         formatting.
926
927 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
928
929         * rtti.c: Include target.h.
930         (emit_support_tinfos): If ! targetm.cxx.library_rtti_comdat (),
931         don't emit typeinfo for fundamental types as weak.
932         * Make-lang.in (cp/rtti.o): Update and correct dependencies.
933
934 2007-01-08  Richard Guenther  <rguenther@suse.de>
935
936         * cvt.c (cp_convert_to_pointer): Use build_int_cst_type.
937
938 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
939
940         * call.c (standard_conversion): Pass flag to
941         vector_types_convertible_p to disallow emission of note.
942         * typeck.c (convert_for_assignment): Pass flag to
943         vector_types_convertible_p to allow emission of note.
944         (ptr_reasonably_similar): Pass flag to vector_types_convertible_p
945         to disallow emission of note.
946
947 2007-01-07  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
948
949         PR c++/28986
950         * typeck.c (build_binary_op): Call overflow_warning if
951         TREE_OVERFLOW_P is true for the result and not for any of the
952         operands.
953         
954 2007-01-06  Lee Millward  <lee.millward@codesourcery.com>
955
956        PR c++/19439
957        * class.c (add_method): Don't wait until template
958        instantiation time to complain about duplicate methods.
959         
960 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
961
962         PR c/19978
963         * semantics.c (finish_unary_op_expr): Warn only if result
964         overflowed and operands did not.
965
966 2007-01-05  Ian Lance Taylor  <iant@google.com>
967
968         * typeck.c (build_binary_op): Warn about comparing a non-weak
969         address to NULL.
970
971 2007-01-05  Douglas Gregor  <doug.gregor@gmail.com>
972
973         * pt.c (tsubst): Propagate the need for structural equality checks
974         when reducing the level of template parameters.
975
976 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
977
978         * pt.c: Fix a comment typo.
979
980 2006-01-02  Ian Lance Taylor  <iant@google.com>
981
982         * semantics.c (maybe_convert_cond): Optionally warn when using an
983         assignment as a condition.
984         * typeck.c (convert_for_assignment): Optionally warn about
985         assigning the result of an assignment to a bool.
986
987 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
988
989         * pt.c (canonical_template_parms): Correct typo in comment.
990         
991 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
992
993         * typeck.c (structural_comptypes): Renamed from "comptypes".
994         (comptypes): Use canonical type information to perform fast type
995         comparison. When VERIFY_CANONICAL_TYPES, verify that the
996         canonical type comparison returns the same results as we would see
997         from the current, structural check. Support COMPARE_STRUCTURAL
998         when we need structural checks.
999         * decl.c (typename_compare): Fix comment.
1000         (build_typename_type): TYPENAME_TYPE nodes require structural
1001         equality checks, because they resolve different based on the
1002         current class type.
1003         (make_unbound_class_template): UNBOUND_CLASS_TEMPLATE nodes
1004         require structural equality checks (for now).
1005         (build_ptrmemfunc_type): Build the canonical pointer to member
1006         function type.
1007         (compute_array_index_type): Whenever we build a new index type
1008         to represent the size of an array in a template, we need to mark
1009         this index type as requiring structural equality. This goes for
1010         arrays with value-dependent sizes with the current ABI, or all
1011         arrays with ABI-1.
1012         * tree.c (cplus_array_hash): New.
1013         (struct cplus_array_info): New.
1014         (cplus_array_compare): New.
1015         (cplus_array_htab): New.
1016         (build_cplus_array_type_1): Use a hash table to cache the array
1017         types we build. Build the canonical array type for each array
1018         type.
1019         (cp_build_qualified_type_real): When building a cv-qualified array
1020         type, use the hash table of array types and build canonical array
1021         types as necessary.
1022         (bind_template_template_parm): BOUND_TEMPLATE_TEMPLATE_PARM nodes
1023         use structural equality (for now).
1024         * cp-tree.h (COMPARE_STRUCTURAL): New.
1025         * pt.c (canonical_template_parms): New.
1026         (canonical_type_parameter): New.
1027         (process_template_parm): Find the canonical type parameter.
1028         (lookup_template_class): When we have named the primary template
1029         type, set the canonical type for our template class to the primary
1030         template type. If any of the template arguments need structural
1031         equality checks, the template class needs structural equality
1032         checks.
1033         (tsubst): When reducing the level of a template template
1034         parameter, we require structural equality tests for the resulting
1035         parameter because its template parameters have not had their types
1036         canonicalized. When reducing a template type parameter, find the
1037         canonical reduced type parameter.
1038         (any_template_arguments_need_structural_equality_p): New.
1039
1040 2006-12-31  Simon Martin  <simartin@users.sourceforge.net>
1041
1042         PR c++/29731
1043         * parser.c (cp_parser_primary_expression): Return error_mark_node when
1044         a statement-expression is found outside of a function body.
1045
1046 2006-12-28  Kazu Hirata  <kazu@codesourcery.com>
1047
1048         * cp-tree.h (TYPE_NAMESPACE_SCOPE_P, TYPE_FUNCTION_SCOPE_P):
1049         Remove.
1050
1051         * decl2.c: Fix a comment typo.
1052
1053 2006-12-21  Andrew Pinski  <pinskia@gmail.com>
1054
1055         PR C++/30225
1056         * decl.c (cxx_builtin_function): Only copy the decl if adding
1057         it to the std namespace.
1058
1059 2006-12-21  Andrew Pinski  <pinskia@gmail.com>
1060
1061         PR C++/30168
1062         * optimize.c (update_cloned_parm): Copy DECL_GIMPLE_REG_P also.
1063
1064 2006-12-22  Kazu Hirata  <kazu@codesourcery.com>
1065
1066         * decl.c: Fix a coment typo.
1067
1068 2006-12-18  Ian Lance Taylor  <iant@google.com>
1069
1070         * decl.c (start_preparsed_function): Add support for
1071         -Wmissing-declarations.
1072
1073 2006-12-16  Simon Martin  <simartin@users.sourceforge.net>
1074
1075         PR c++/29475
1076         * cp-tree.h (struct deferred_access_check): New structure to represent a
1077         deferred access check. It replaces the previous representation as a tree.
1078         (get_deferred_access_checks): Return a vector of struct
1079         deferred_access_check instead of a tree list.
1080         (perform_access_checks): Take a vector of struct deferred_access_check
1081         instead of a tree list.
1082         * semantics.c (struct deferred_access): Store the deferred access checks
1083         as a vector of struct deferred_access_check instead of a tree list.
1084         (push_deferring_access_checks): Handle the change in struct
1085         deferred_access.
1086         (get_deferred_access_checks): Likewise.
1087         (pop_to_parent_deferring_access_checks): Likewise.
1088         (perform_or_defer_access_check): Likewise.
1089         (perform_access_checks): Take a vector of struct deferred_access_check
1090         instead of a tree list.
1091         * parser.c (struct tree_check): New structure to store various data
1092         associated with a CPP_NESTED_NAME_SPECIFIER or CPP_TEMPLATE_ID token.
1093         (struct cp_token): Changed the value field to be a union with a pointer to
1094         a struct tree_check for CPP_NESTED_NAME_SPECIFIER or CPP_TEMPLATE_ID
1095         tokens and a tree field for all other tokens.
1096         (eof_token): Adjusted due to the change in struct cp_token.
1097         (cp_lexer_get_preprocessor_token): Likewise.
1098         (cp_lexer_purge_token): Likewise.
1099         (cp_lexer_purge_tokens_after): Likewise.
1100         (cp_lexer_print_token): Likewise.
1101         (cp_parser_error): Likewise.
1102         (cp_parser_identifier): Likewise.
1103         (cp_parser_string_literal): Likewise.
1104         (cp_parser_primary_expression): Likewise.
1105         (cp_parser_unqualified_id): Likewise.
1106         (cp_parser_parenthesized_expression_list): Likewise.
1107         (cp_parser_storage_class_specifier_opt): Likewise.
1108         (cp_parser_function_specifier_opt): Likewise.
1109         (cp_parser_type_specifier): Likewise.
1110         (cp_parser_simple_type_specifier): Likewise.
1111         (cp_parser_initializer_list): Likewise.
1112         (cp_parser_member_specification_opt): Likewise.
1113         (cp_parser_attribute_list): Likewise.
1114         (cp_parser_objc_expression): Likewise.
1115         (cp_parser_objc_protocol_qualifiers): Likewise.
1116         (cp_parser_objc_selector): Likewise.
1117         (cp_parser_objc_declaration): Likewise.
1118         (cp_parser_objc_statement): Likewise.
1119         (cp_parser_omp_clause_name): Likewise.
1120         (cp_parser_omp_clause_default): Likewise.
1121         (cp_parser_omp_clause_schedule): Likewise.
1122         (cp_parser_omp_parallel): Likewise.
1123         (cp_parser_initial_pragma): Likewise.
1124         (pragma_lex): Likewise.
1125         (cp_parser_pre_parsed_nested_name_specifier): Likewise.
1126         (cp_parser_nested_name_specifier_opt): Likewise.
1127         Use cp_token::u::tree_check_value to save the token's value, the
1128         associated deferred checks and its qualifying scope.
1129         (cp_parser_template_id): Likewise.
1130         (cp_parser_template_declaration_after_export): Adjusted the call to
1131         get_deferred_access_checks.
1132         (cp_parser_init_declarator): Take the access checks as a vector of struct
1133         deferred_access_check instead of a tree list.
1134         (cp_parser_single_declaration): Likewise.
1135         (cp_parser_perform_template_parameter_access_checks): Likewise.
1136         (cp_parser_simple_declaration): Adjusted the call to
1137         cp_parser_init_declarator.
1138         (cp_parser_explicit_specialization): Adjusted the call to
1139         cp_parser_single_declaration.
1140
1141 2006-12-13  Ian Lance Taylor  <iant@google.com>
1142
1143         PR c++/19564
1144         PR c++/19756
1145         * parser.c (cp_parser_expression_stack_entry): Add field
1146         lhs_type.
1147         (cp_parser_binary_expression): Track tree code of left hand side
1148         of expression.  Use it when calling build_x_binary_op.
1149         (cp_parser_selection_statement): Add if_p parameter.  Change all
1150         callers.  Warn about ambiguous else.
1151         (cp_parser_statement): Add if_p parameter.  Change all callers.
1152         (cp_parser_implicitly_scoped_statement): Likewise.
1153         * typeck.c (build_x_binary_op): Add parameters arg1_code and
1154         arg2_code.  Change all callers.  Call warn_about_parentheses.
1155         * cp-tree.h (build_x_binary_op): Update declaration.
1156
1157 2006-12-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1158
1159         * decl.c (build_enumerator): Update error message to match C
1160         front-end.
1161         
1162 2006-12-11  Jan Hubicka  <jh@suse.cz>
1163
1164         * decl2.c (var_finalized_p): Update for renamed varpool functions.
1165
1166 2006-12-09  Zack Weinberg  <zackw@panix.com>
1167
1168         * parser.c (yydebug, enum pragma_omp_clause): Delete.
1169
1170 2006-12-07  Mark Mitchell  <mark@codesourcery.com>
1171
1172         PR c++/29732
1173         * cp-tree.h (DECL_USE_TEMPLATE): Mention partial specializations.
1174         (explicit_class_specialization_p): Declare.
1175         * pt.c (explicit_class_specialization_p): New function.
1176         * parser.c (cp_parser_init_declarator): Check correct number of
1177         template parameters for in-class function definitions.
1178         (cp_parser_check_declrator_template_parameters): Stop looking for
1179         template classes when we find an explicit specialization.
1180
1181 2006-12-07  Lee Millward  <lee.millward@codesourcery.com>
1182
1183         PR c++/29980
1184         * cp_parser_elaborated_type_specifier: Check
1185         the return value of check_elaborated_type_specifier.
1186
1187 2006-12-06  Mark Mitchell  <mark@codesourcery.com>
1188
1189         PR c++/29730
1190         * parser.c (cp_parser_init_declarator): Reject initialization of
1191         functions.
1192
1193 2006-12-05  Mark Mitchell  <mark@codesourcery.com>
1194
1195         PR c++/29729
1196         * decl2.c (check_member_template): Move check for member
1197         templates in local classes to ...
1198         * parser.c (cp_parser_template_declaration_after_export):
1199         ... here.
1200
1201         PR c++/29728
1202         * decl.c (check_array_designated_initializer): New function.
1203         (maybe_deduce_size_from_array_init): Use it.
1204         (reshape_init_array): Likewise.
1205
1206 2006-12-05  Aldy Hernandez  <aldyh@redhat.com>
1207
1208         Merge from gimple-tuples-branch.
1209
1210         2006-10-05  Aldy Hernandez  <aldyh@redhat.com>
1211
1212         * cp-gimplify.c (cp_gimplify_expr): Adjust for GIMPLE_MODIFY_STMT.
1213         (cxx_omp_clause_apply_fn): Adjust for GIMPLE_MODIFY_STMT.
1214         (cxx_omp_clause_copy_ctor): Same.
1215         (cxx_omp_clause_assign_op): Same.
1216
1217         2006-09-28  Aldy Hernandez  <aldyh@redhat.com>
1218
1219         * cp-tree.h (union lang_tree_node): Gimple statements do not
1220         have a TREE_CHAIN.
1221         (TREE_INDIRECT_USING): Look in base.
1222
1223 2006-12-04  Jan Hubicka  <jh@suse.cz>
1224
1225         * cp-objcp-common.c (cp_expr_size): Return NULL in the case
1226         size is undefined.
1227
1228 2006-12-04  Mark Mitchell  <mark@codesourcery.com>
1229
1230         PR c++/29733
1231         * pt.c (tsubst_decl): Disallow variables of function type.
1232
1233         PR c++/29632
1234         * call.c (add_builtin_candidate): Do not permit NULL pointer
1235         constants to be compared with template parameters.
1236
1237 2006-12-04  Eric Botcazou  <ebotcazou@adacore.com>
1238
1239         * pt.c (for_each_template_parm_r) <INTEGER_TYPE>: New case.
1240         Call for_each_template_parm on TYPE_MIN_VALUE and TYPE_MAX_VALUE.
1241
1242 2006-12-03  Richard Henderson  <rth@redhat.com>
1243             Andrew Pinski  <pinskia@gmail.com>
1244
1245         PR C++/14329
1246         * error.c (cp_printer) <'D'>: Handle DECL_DEBUG_EXPR.
1247
1248 2006-12-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1249
1250         PR C++/30033
1251         * decl.c (cp_tree_node_structure): Handle STATIC_ASSERT.
1252
1253 2006-12-02  Kazu Hirata  <kazu@codesourcery.com>
1254
1255         * name-lookup.c: Follow spelling conventions.
1256
1257 2006-12-01  Geoffrey Keating  <geoffk@apple.com>
1258
1259         * decl.c (poplevel): Check DECL_INITIAL invariant.
1260         (duplicate_decls): Preserve DECL_INITIAL when eliminating
1261         a new definition in favour of an old declaration.
1262         (start_preparsed_function): Define and document value of
1263         DECL_INITIAL before and after routine.
1264         (finish_function): Check DECL_INITIAL invariant.
1265         * parser.c
1266         (cp_parser_function_definition_from_specifiers_and_declarator):
1267         Skip duplicate function definitions.
1268
1269 2006-12-01  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1270
1271         PR c++/30022
1272         * typeck.c (type_after_usual_arithmetic_conversions):
1273         Fix assertion for vector types.
1274         (build_binary_op): Use temporary for inner type of vector types.
1275
1276 2006-12-01  Ryan Mansfield  <rmansfield@qnx.com>
1277
1278         PR c++/29066
1279         * typeck.c (build_binary_op):  Fix pointer to member function
1280         comparison for ptrmemfunc_vbit_in_delta targets.
1281
1282 2006-12-01  Dirk Mueller  <dmueller@suse.de>
1283
1284         PR c++/18313
1285         * decl.c (grokdeclarator): Warn for type qualifiers on return
1286         type for non-dependent types.
1287         * pt.c (tsubst_function_type): Warn for type qualifiers on
1288         return type for dependent types.
1289
1290 2006-11-30  Geoffrey Keating  <geoffk@apple.com>
1291
1292         * rtti.c (get_tinfo_decl): Handle return value from
1293         pushdecl_top_level_and_finish.
1294
1295 2006-11-29  Lee Millward  <lee.millward@codesourcery.com>
1296
1297         PR c++/29022
1298         * parser.c (cp_parser_class_head): Move processing
1299         of any base classes to...
1300         (cp_parser_class_specifier) ...here. Take an extra
1301         tree* parameter for any base classes. Only process
1302         them if the opening brace was found.
1303
1304 2006-11-28  Jakub Jelinek  <jakub@redhat.com>
1305
1306         PR c++/29735
1307         * decl.c (grokfndecl): Check main's type after applying
1308         attributes, not before.
1309
1310 2006-11-27  Mark Mitchell  <mark@codesourcery.com>
1311
1312         * class.c (build_vcall_offset_vtbl_entries): Do not add vcall
1313         entries for a primary construction virtual table.
1314
1315 2006-11-26  Mark Mitchell  <mark@codesourcery.com>
1316
1317         PR c++/29886
1318         * parser.c (cp_parser): Add in_function_body.
1319         (cp_parser_new): Initialize it.
1320         (cp_parser_primary_expression): Use parser->in_function_body
1321         instead of at_function_scope_p.
1322         (cp_parser_asm_definition): Likewise.
1323         (cp_parser_direct_declarator): Likewise.
1324         (cp_parser_class_specifier): Clear parser->in_function_body.
1325         (cp_parser_constructor_declarator_p): Use parser->in_function_body
1326         instead of at_function_scope_p.
1327         (cp_parser_function_body_after_declarator): Set
1328         parser->in_function_body.
1329
1330 2006-11-21      Douglas Gregor <doug.gregor@gmail.com>
1331
1332         * cp-tree.def (STATIC_ASSERT): New.
1333         * cp-objcp-common.c (cp_tree_size): Handle STATIC_ASSERT.
1334         * error.c (dump_decl): Handle STATIC_ASSERT.
1335         * cp-tree.h (STATIC_ASSERT_CONDITION): New.
1336         (STATIC_ASSERT_MESSAGE): New.
1337         (STATIC_ASSERT_SOURCE_LOCATION): New.
1338         (struct tree_static_assert): New.
1339         (enum cp_tree_node_structure_enum): Add TS_CP_STATIC_ASSERT.
1340         (union lang_tree_node): Add static_assertion.
1341         (finish_static_assert): Declare.
1342         * cxx-pretty-print.c (pp_cxx_statement): Handle STATIC_ASSERT.
1343         (pp_cxx_declaration): Handle STATIC_ASSERT.
1344         * pt.c (instantiate_class_template): Handle
1345         STATIC_ASSERT members.
1346         (tsubst_expr): Handle STATIC_ASSERT statements.
1347         * semantics.c (finish_static_assert): New.
1348         * lex.c (D_CPP0X): New.
1349         (reswords): Add static_assert keyword.
1350         (init_reswords): If not flag_cpp0x, mask out C++0x keywords.
1351         * parser.c (cp_parser_block_declaration): Parse static
1352         assertions.
1353         (cp_parser_static_assert): New.
1354         (cp_parser_member_declaration): Parse static assertions.
1355
1356 2006-11-21  Jakub Jelinek  <jakub@redhat.com>
1357
1358         PR c++/29570
1359         * decl.c (cp_finish_decl): Check for value dependent brace enclosed
1360         scalar initializer.
1361
1362         PR c++/29734
1363         * cp-tree.h (WANT_VECTOR): Define.
1364         (WANT_ARITH): Add WANT_VECTOR.
1365         * cvt.c (build_expr_type_conversion): Handle vector types.
1366         * typeck.c (build_unary_op): Add WANT_VECTOR to
1367         build_expr_type_conversion flags.
1368
1369 2006-11-20  Simon Martin  <simartin@users.sourceforge.net>
1370
1371         PR c++/29475
1372         * cp-tree.h (enforce_access, perform_or_defer_access_check): Added an
1373         extra argument that represents the declaration to use to print
1374         potential error messages.
1375         * init.c (build_offset_ref): Adjusted the call to
1376         perform_or_defer_access_check.
1377         * class.c (alter_access, resolve_address_of_overloaded_function):
1378         Likewise.
1379         * decl.c (make_typename_type, make_unbound_class_template): Likewise.
1380         * search.c (lookup_member): Likewise.
1381         * friend.c (add_friend): Likewise.
1382         * parser.c (cp_parser_template_id,
1383         cp_parser_pre_parsed_nested_name_specifier): Likewise.
1384         * semantics.c (finish_non_static_data_member,
1385         check_accessibility_of_qualified_id, finish_id_expression): Likewise.
1386         (pop_to_parent_deferring_access_checks, perform_access_checks,
1387         perform_or_defer_access_check): Adjusted the call to enforce_access.
1388         * call.c (enforce_access): Use the new extra argument to build the
1389         error message.
1390         (build_op_delete_call): Adjusted the call to
1391         perform_or_defer_access_check.
1392         (build_over_call): Likewise.
1393
1394 2006-11-16  Dirk Mueller  <dmueller@suse.de>
1395
1396         * name-lookup.c (begin_scope): Use GGC_CNEW instead of
1397         GGC_NEW and memset.
1398
1399 2006-11-13  Roger Sayle  <roger@eyesopen.com>
1400
1401         * rtti.c (get_pseudo_ti_init): Ensure that the offset field of the
1402         base type info initializer has the correct type.
1403
1404 2006-11-13  Mark Mitchell  <mark@codesourcery.com>
1405
1406         PR c++/29518
1407         * pt.c (coerce_template_parms): Do not skip_evaluation while
1408         substituting template arguments.
1409
1410 2006-11-11  Richard Guenther  <rguenther@suse.de>
1411
1412         * typeck.c (build_unary_op): Remove handling of FIX_CEIL_EXPR,
1413         FIX_FLOOR_EXPR and FIX_ROUND_EXPR.
1414
1415 2006-11-03  Roger Sayle  <roger@eyesopen.com>
1416
1417         * call.c (build_op_delete_call): Test user-visible type against
1418         size_type_node, instead of against the internal type, sizetype.
1419         * class.c (type_requires_array_cookie): Likewise.
1420         * mangle.c (write_builtin_type) <INTEGER_TYPE>: Remove special
1421         handling of TYPE_IS_SIZETYPE.
1422         * typeck.c (type_after_usual_arithmetic_conversions): Remove
1423         special case handling of TYPE_IS_SIZETYPE.
1424         (comptypes): Likewise.
1425
1426 2006-11-01  Danny Smith  <dannysmith@users.sourceforge.net>
1427
1428         * decl.c (get_atexit_node): Reference atexit, not __cxa_exit.
1429         if targetm.cxx.use_atexit_for cxa_atexit.
1430         (start_cleanup_fn): Likewise.
1431         (register_dtor_fn): Likewise.
1432
1433 2006-09-25  Geoffrey Keating  <geoffk@apple.com>
1434
1435         * decl2.c (cp_write_global_declarations): Rename from
1436         cp_finish_file.
1437         * cp-lang.c (finish_file): Don't call cp_finish_file.
1438         * cp-tree.h (cp_write_global_declarations): Rename from
1439         cp_finish_file.
1440         * cp-objcp-common.h (LANG_HOOKS_WRITE_GLOBALS): Define to
1441         cp_write_global_declarations.
1442
1443 2006-10-31  Geoffrey Keating  <geoffk@apple.com>
1444
1445         * name-lookup.c (get_anonymous_namespace_name): New.
1446         (push_namespace_with_attribs): Use get_anonymous_namespace_name.
1447         * decl2.c (start_objects): Update for rename of
1448         get_file_function_name_long.
1449
1450 2006-10-30  Dirk Mueller  <dmueller@suse.de>
1451
1452         PR c++/28704
1453         * decl.c (grokdeclarator): Duplicate diagnostic message
1454         for easier translation.
1455         * decl.c (grokdeclarator): Fix line-wrapping.
1456
1457 2006-10-30  Dirk Mueller  <dmueller@suse.de>
1458
1459         PR c++/6321
1460         * decl.c (grokfndecl): Use check_main_parameter_types.
1461
1462 2006-10-30  Dirk Mueller  <dmueller@suse.de>
1463
1464         PR c++/28669
1465         * decl.c (grokfndecl): Duplicate warning message for
1466         easier translation.
1467
1468 2006-10-30  Dirk Mueller  <dmueller@suse.de>
1469
1470         * typeck.c (build_unary_op): Fix indenting. Use G_().
1471
1472 2006-10-29  Dirk Mueller  <dmueller@suse.de>
1473
1474         PR c++/29089
1475         * typeck.c (build_unary_op): Duplicate warning message
1476         for easier translation.
1477
1478 2006-10-29  Dirk Mueller  <dmueller@suse.de>
1479
1480         PR c++/16307
1481         * typeck.c (build_array_ref): Warn for char subscriptions
1482         on pointers.
1483
1484 2006-10-29  Kazu Hirata  <kazu@codesourcery.com>
1485
1486         * decl.c: Fix a comment typo.
1487
1488 2006-10-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1489
1490         PR C++/29295
1491         * typeck.c (build_unary_op): Use same_type_p when comparing to
1492         boolean type.
1493
1494 2006-10-29  Dirk Mueller  <dmueller@suse.de>
1495
1496         PR c++/29033
1497         * typeck.c (build_binary_op): Duplicate warning message
1498         for better translation.
1499
1500 2006-10-23  Rafael Avila de Espindola  <rafael.espindola@gmail.com>
1501
1502         * decl.c (builtin_function_1): Move common code to
1503         add_builtin_function.
1504         (builtin_function): Rename to cxx_builtin_function.
1505         Change the signature.
1506         * call.c: Include langhooks.h.
1507         (build_java_interface_fn_ref):  Replace calls to
1508         builtin_function with add_builtin_function.
1509         * Make-lang.in (cp/call.o): Depend on langhooks.h.
1510         * cp-objcp-common.h (LANG_HOOKS_BUILTIN_FUNCTION): Define as
1511         cxx_builtin_function.
1512         * cp-tree.h (builtin_function): Rename to cxx_builtin_function.
1513         Change the signature.
1514
1515 2006-10-22  Nathan Sidwell  <nathan@codesourcery.com>
1516
1517         PR c++/20647
1518         * rtti.c (tinfo_base_init): The type info string is always global.
1519
1520 2006-10-20  Lee Millward  <lee.millward@codesourcery.com>
1521             Mark Mitchell <mark@codesourcery.com>
1522
1523         PR c++/28053
1524         * decl2.c (grokbitfield): Detect invalid non-integral
1525         types earlier when possible.
1526
1527 2006-10-18  Mark Shinwell  <shinwell@codesourcery.com>
1528
1529         PR c++/26884
1530         * typeck2.c (digest_init): Raise error upon attempts to
1531         initialize arrays with variables.
1532
1533 2006-10-17  Lee Millward  <lee.millward@codesourcery.com>
1534
1535         PR c++/27952
1536         * cp-tree.h (xref_basetypes): Return bool instead of void.
1537         * decl.c (xref_basetypes): Adjust definition. Return false
1538         if the class bases are invalid.
1539         * parser.c (cp_parser_class_head): Check the return value
1540         from xref_basetypes.
1541
1542 2006-10-17  Mark Mitchell  <mark@codesourcery.com>
1543
1544         PR c++/28261
1545         * parser.c (cp_lexer_next_token_is_decl_specifier_keyword): Add
1546         comment.
1547
1548         PR c++/28261
1549         * parser.c (cp_lexer_next_token_is_decl_specifier_keyword): New
1550         function.
1551         (cp_parser_constructor_declarator_p): Use it.
1552         (cp_parser_check_type_definition): Return a value indicating
1553         whether or not the definition is valid.
1554         (cp_parser_enum_specifier): Skip invalid enum definitions.
1555
1556 2006-10-17  Mark Mitchell  <mark@codesourcery.com>
1557
1558         PR c++/29039
1559         * typeck2.c (build_functional_cast): Don't zero-initialize
1560         non-PODs; instead, call their constructors.
1561         * method.c (synthesize_method): Always build mem-initializers, if
1562         we're synthesizing the default constructor.
1563
1564 2006-10-17  Mark Mitchell  <mark@codesourcery.com>
1565
1566         PR c++/27270
1567         * decl.c (reshape_init_class): Move check for designated
1568         to ...
1569         * parser.c (cp_parser_initializer_list): ... here.
1570         * pt.c (tsubst_copy_and_build): Use finish_compound_literal.
1571
1572 2006-10-16  Mark Mitchell  <mark@codesourcery.com>
1573
1574         PR c++/27270
1575         * typeck2.c (process_init_constructor_array): Reword comment.
1576         * pt.c (tsubst_copy_and_built): Call reshape_init before calling
1577         digest_init.
1578
1579         PR c++/29408
1580         * parser.c (cp_parser_using_declaration): Stop parsing when
1581         something goes wrong with an access declaration.
1582
1583         PR c++/29435
1584         * typeck.c (cxx_sizeof_or_alignof_type): Complete non-dependent
1585         types when their sizes are required.  Refine test for VLAs.
1586
1587         PR c++/28211
1588         * parser.c (cp_parser_template_argument): Don't consider "&var" a
1589         possible constant-expression.
1590         * pt.c (convert_nontype_argument): Refine handling of arguments of
1591         pointer type.
1592
1593 2006-10-13  Mark Mitchell  <mark@codesourcery.com>
1594
1595         PR c++/28506
1596         * parser.c (function_declarator_p): New function.
1597         (cp_parser_init_declarator): Use it.
1598         (cp_parser_member_declaration): Likewise.
1599
1600 2006-10-12  Mark Mitchell  <mark@codesourcery.com>
1601
1602         PR c++/29318
1603         * rtti.c (get_tinfo_decl): Refuse to create type info objects for
1604         variably modified types.
1605
1606 2006-10-12 Lee Millward <lee.millward@codesourcery.com>
1607
1608        PR c++/27961
1609        * decl.c (start_decl): Return error_mark_node if a
1610        function is initialized like a variable.
1611        (check_var_type): If a variable of field is declared void,
1612        set the type to error_mark_node.
1613        (grokdeclarator): Check the return type of check_var_type.
1614        * class.c (finish_struct_1): Robustify.
1615
1616 2006-10-11  Mark Mitchell  <mark@codesourcery.com>
1617
1618         PR c++/29175
1619         * decl.c (check_initializer): Issue errors about trying to
1620         initialize arrays whose elements have variable size.
1621
1622 2006-10-11  Lee Millward  <lee.millward@codesourcery.com>
1623
1624         PR c++/29024
1625         * cp-tree (struct cp_decl_specifier_seq): Rename to
1626         conflicting_specifiers_p
1627         * parser.c (cp_parser_set_storage_class): Set
1628         conflicting_specifiers_p for the input decl specifier
1629         if a typedef specifier is present. Rename uses of
1630         multiple_specifiers_p to conflicting_specifiers_p.
1631         (cp_parser_decl_specifier_seq) <RID_TYPEDEF>: If a storage
1632         class specifier has already been set for this declaration,
1633         set conflicting_specifiers_p to true on the decl_specs.
1634         * decl.c (grokdeclarator): Rename uses of
1635         multiple_specifiers_p to conflicting_specifiers_p.
1636
1637 2006-10-10  Brooks Moses  <bmoses@stanford.edu>
1638
1639         * Make-lang.in: Added "c++.pdf" target support.
1640
1641 2006-10-10  Richard Guenther  <rguenther@suse.de>
1642
1643         PR rtl-optimization/29323
1644         * decl.c (finish_function): Set TREE_NOTHROW only for
1645         functions that bind local.
1646
1647 2006-10-09  Richard Henderson  <rth@redhat.com>
1648
1649         Revert emutls patch.
1650
1651 2006-10-04  Richard Henderson  <rth@redhat.com>
1652             Jakub Jelinek  <jakub@redhat.com>
1653
1654         * decl.c (grokvardecl): Don't error if !have_tls.
1655         (grokdeclarator): Likewise.
1656         * parser.c (cp_parser_omp_threadprivate): Likewise.
1657
1658 2006-10-03  Mark Mitchell  <mark@codesourcery.com>
1659
1660         PR c++/29020
1661         * friend.c (do_friend): Improve comments; add assertion.
1662         * parser.c (cp_parser_nested_name_specifier_opt): Resolve
1663         typenames for qualified names used in declarations, even when
1664         caching qualified name lookup.
1665
1666         PR c++/29138
1667         * decl2.c (grokfield): Don't handle access declarations here.
1668         * parser.c (cp_parser_using_declaration): Handle access
1669         declarations too.
1670         (cp_parser_block_declaration): Adjust calls to
1671         cp_parser_using_declaration.
1672         (cp_parser_member_declaration): Likewise.  Use
1673         cp_parser_using_declaration to look for access_declarations.
1674
1675 2006-10-03  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1676
1677         PR c++/29291
1678         * init.c (build_new): Check for invalid init.
1679
1680 2006-10-02  Mark Mitchell  <mark@codesourcery.com>
1681
1682         PR c++/29226
1683         * typeck.c (cxx_sizeof_or_alignof_type): Tidy.  In templates, do
1684         not try to actually evaluate sizeof for a VLA type.
1685
1686 2006-10-01  Mark Mitchell  <mark@codesourcery.com>
1687
1688         PR c++/29105
1689         * pt.c (tsubst_baselink): Substituteinto the qualifying scope.
1690         * semantics.c (baselink_for_fns): Build a baselink, even when
1691         processing a template.
1692
1693         PR c++/29080
1694         * parser.c (cp_parser_postfix_dot_deref_expression): Use
1695         BASELINK_ACCESS_BINFO as the qualifying scope when calling
1696         adjust_result_of_qualified_name_lookup.
1697
1698 2006-09-25  Lee Millward  <lee.millward@codesourcery.com>
1699
1700         PR c++/27329
1701         PR c++/26938
1702         * cp-tree.h (redeclare_class_template): Adjust declaration
1703         to return bool instead of void.
1704         * pt.c (redeclare_class_template): Update definition.
1705         Return false on error.
1706         * decl.c (xref_tag): Return error_mark_node if
1707         redeclare_class_template returned false.
1708
1709         PR c++/27667
1710         * cp-tree.h (begin_specialization): Return bool
1711         instead of void.
1712         * pt.c (check_specialization_scope): Likwise.
1713         Adjust comment. Return false if a specialization
1714         isn't permitted in the current scope.
1715         (begin_specialization): Use the return value of
1716         check_specialization_scope.
1717         * parser.c (cp_parser_explicit_specialization): If
1718         begin_specialization returned false, skip the rest
1719         of the specialization.
1720
1721 2006-09-21  Mark Mitchell  <mark@codesourcery.com>
1722
1723         PR c++/29016
1724         * typeck.c (build_unary_op): Don't form an ADDR_EXPR around a
1725         BASELINK.
1726
1727 2006-09-21  Lee Millward  <lee.millward@codesourcery.com>
1728
1729         PR c++/28861
1730         * decl.c (shadow_tag): Return error_mark_node
1731         if maybe_process_partial_specialization failed.
1732
1733         PR c++/28303
1734         * decl.c (grokdeclarator): Return error_mark_node on
1735         declaration with two or more data types.
1736
1737 2006-09-20  Danny Smith  <dannysmith@users.sourceforge.net>
1738
1739         PR target/27650
1740         * class.c (check_for_override): Remove dllimport from virtual
1741         methods.
1742
1743 2006-09-18  Steven Bosscher  <steven@gcc.gnu.org>
1744
1745         PR c++/29087
1746         * parser.c (cp_parser_labeled_statement): Return nothing.  Do
1747         not take in_statement_expr and in_compound as arguments.  Rename
1748         to cp_parser_label_for_labeled_statement.  Parse only the label,
1749         not the statement.
1750         (cp_parser_statement): Parse the statement of a labeled-statement
1751         from here, using tail recursion.
1752
1753 2006-09-14  Andrew Pinski  <pinskia@physics.uc.edu>
1754
1755         PR C++/29002
1756         * init.c (build_zero_init): If we have an error mark node for
1757         the array size, return.
1758
1759 2006-09-10  Mark Mitchell  <mark@codesourcery.com>
1760
1761         PR c++/28991
1762         * cp-objcp-common.c (cxx_staticp): New function.
1763         * cp-objcp-common.h (LANG_HOOOKS_STATICP): Use it.
1764         * cp-tree.h (cxx_staticp): New function.
1765
1766 2006-09-09  Jason Merrill  <jason@redhat.com>
1767
1768         PR c++/28996
1769         * cvt.c (convert_to_void): Strip COMPONENT_REF to functions.
1770
1771 2006-09-08  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1772
1773         PR c++/28858
1774         * parser.c (cp_parser_skip_until_found): Rename to
1775         cp_parser_skip_to_end_of_template_parameter_list.  Remove last two
1776         parameters.  Track levels of '< ... >'.  Stop at '{', '}', or ';'.
1777         Reorganize.  Adjust comment.
1778         (cp_parser_template_declaration_after_export): Adjust call.
1779         (cp_parser_enclosed_template_argument_list): Likewise.
1780
1781 2006-09-07  Andrew Pinski  <pinskia@physics.uc.edu>
1782
1783         PR C++/28906
1784         * init.c (build_new_1): Build a distinct type copy
1785         for the array type that was returned from
1786         build_cplus_array_type.
1787
1788 2006-09-07  Jason Merrill  <jason@redhat.com>
1789
1790         PR c++/27371
1791         * cvt.c (convert_to_void): Enable previous change.
1792
1793         PR c++/26957
1794         * method.c (use_thunk): Clear DECL_HAS_VALUE_EXPR_P on copied
1795         parms.
1796
1797 2006-09-07  Simon Martin  <simartin@users.sourceforge.net>
1798
1799         PR c++/28284
1800         * pt.c (fold_non_dependent_expr): Make sure expr is not
1801         dereferenced if it is NULL.
1802
1803 2006-09-06  Zak Kipling  <zak@transversal.com>
1804
1805         PR c++/26195
1806         * decl.c (make_rtl_for_nonlocal_decl),
1807         (start_preparsed_function): Don't use lbasename on
1808         input_filename when calling get_fileinfo.
1809         * semantics.c (begin_class_definition): Likewise.
1810         * lex.c (cxx_make_type): Likewise.
1811         (handle_pragma_interface): Call get_fileinfo on input_filename,
1812         not on the parameter to the directive.
1813
1814 2006-09-06  Mark Mitchell  <mark@codesourcery.com>
1815
1816         PR c++/28903
1817         * pt.c (tsubst): Use fold_non_dependent_expr to fold array
1818         dimensions.
1819
1820         PR c++/28886
1821         * pt.c (unify): Avoid unnecessary calls to fold_build2 for array
1822         dimensions.
1823
1824 2006-09-06  Jason Merrill  <jason@redhat.com>
1825
1826         PR c++/27371
1827         * cvt.c (convert_to_void): Strip useless TARGET_EXPR.
1828         * cp-tree.h (TARGET_EXPR_IMPLICIT_P): New macro.
1829         * tree.c (build_cplus_new): Set it.
1830
1831         PR c++/26696
1832         * cvt.c (convert_to_void): Replace a subexpression with no side
1833         effects with void_zero_node.
1834         * tree.c (is_overloaded_fn): Look through COMPONENT_REF.
1835         (get_first_fn): Ditto.
1836         * decl.c (grokdeclarator): No need to look through COMPONENT_REF.
1837
1838 2006-09-05  Jason Merrill  <jason@redhat.com>
1839
1840         PR c++/26571
1841         * parser.c (cp_parser_diagnose_invalid_type_name): Handle the case
1842         where the name is a type used incorrectly.
1843
1844         PR c++/26671
1845         * typeck.c (maybe_warn_about_returning_address_of_local): Look
1846         through COMPONENT_REF and ARRAY_REF.
1847
1848         PR c++/26102
1849         * name-lookup.c (do_class_using_decl): Try to find the base even
1850         if bases_dependent_p.
1851         * pt.c (type_dependent_expression_p): A USING_DECL is dependent.
1852
1853         PR c++/19809
1854         * pt.c (tsubst_friend_function): Set DECL_INITIAL before pushdecl.
1855
1856 2006-09-04  Nathan Sidwell  <nathan@codesourcery.com>
1857
1858         PR 23287 Revert my 2006-09-01 patch.
1859         * parser.c: Reverted.
1860         * pt.c: Reverted.
1861
1862 2006-09-02  Lee Millward  <lee.millward@codesourcery.com>
1863
1864         PR c++/27670
1865         PR c++/27493
1866         PR c++/27494
1867         PR c++/27397
1868         * parser.c (cp_parser_template_parameter_list): Add
1869         invalid template parameters to the parameter list as
1870         error_mark_node.
1871
1872 2006-09-02  Jakub Jelinek  <jakub@redhat.com>
1873
1874         PR c++/28878
1875         * except.c (build_throw): Only set current_function_returns_abnormally
1876         if cfun is not NULL.
1877
1878         PR c++/26917
1879         * repo.c (repo_file): Remove.
1880         (open_repo_file, reopen_repo_file_for_write): Return fopened
1881         FILE * instead of setting global repo_file variable.
1882         (init_repo): Adjust caller.
1883         (finish_repo): Likewise.  Return instead of goto out before
1884         reopen_repo_file_for_write has been called.
1885
1886 2006-09-01  Nathan Sidwell  <nathan@codesourcery.com>
1887
1888         PR c++/28705
1889         * semantics.c (finish_call_expr): Add assert.
1890         * name-lookup.c (lookup_arg_dependent): Check we found an overload
1891         or an object.
1892
1893         PR c++/23287
1894         * parser.c (cp_parser_id_expression): Add member_p
1895         argument. Update all callers.
1896         (cp_parser_unqualified_id): Likewise.  Lookup a destructor name in
1897         the object's scope, if valid.
1898         (cp_parser_global_scope_opt): Add object_scope_valid_p.  Update
1899         callers.
1900         (cp_parser_postfix_dot_deref_expression): Set object_scope.
1901         * pt.c (tsubst_copy_and_build): Lookup dependent dtor name here.
1902
1903 2006-08-30  Jason Merrill  <jason@redhat.com>
1904
1905         PR c++/26670
1906         * class.c (check_field_decls): Don't unset TYPE_PACKED until all
1907         the fields have been processed.
1908
1909 2006-08-29  Andrew Pinski  <pinskia@physics.uc.edu>
1910
1911         PR C++/28349
1912         * call.c (build_x_va_arg): Remove the reference type
1913         from the type before creating the pointer type.
1914
1915 2006-08-29  J"orn Rennecke  <joern.rennecke@st.com>
1916
1917         PR c++/28139
1918         * except.c (expand_start_catch_block): Use correct types for bitwise
1919         copy.
1920
1921 2006-08-28  Jason Merrill  <jason@redhat.com>
1922
1923         PR c++/26670
1924         * class.c (check_field_decls): Unset TYPE_PACKED (t) if one of the
1925         fields can't be packed.
1926
1927         PR c++/26577
1928         * cvt.c (convert_to_void): Don't automatically load from volatiles
1929         of TREE_ADDRESSABLE type.
1930
1931 2006-08-28  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1932
1933         PR c++/28860
1934         * cp-tree.h (maybe_process_partial_specialization): Return
1935         tree instead of void.
1936         * parser.c (cp_parser_class_head): Use return value of
1937         maybe_process_partial_specialization.
1938         * pt.c (maybe_process_partial_specialization): Return error_mark_node
1939         for broken specializations, TYPE otherwise.  Check for template
1940         template parameters.
1941
1942 2006-08-27  Mark Mitchell  <mark@codesourcery.com>
1943
1944         PR c++/28058
1945         * pt.c (register_specialization): Return error_mark_node for
1946         specialization-after-instantiation.
1947         * decl2.c (mark_used): Mark the main function used when one of its
1948         clones is used.
1949
1950 2006-08-27  Lee Millward  <lee.millward@codesourcery.com>
1951
1952         PR c++/26573
1953         * class.c (check_field_decls): Don't issue error about
1954         local classes containing static data members.
1955
1956 2006-08-26  Joseph S. Myers  <joseph@codesourcery.com>
1957
1958         PR c++/24009
1959         * parser.c (struct cp_token): Add input_file_stack_index.
1960         (eof_token): Update.
1961         (cp_lexer_get_preprocessor_token): Save input_file_stack_tick.
1962         (cp_lexer_set_source_position_from_token): Restore input file
1963         stack.
1964
1965 2006-08-26  Lee Millward  <lee.millward@codesourcery.com>
1966
1967         PR c++/28736
1968         PR c++/28737
1969         PR c++/28738
1970         * pt.c (process_template_parm): Store invalid template
1971         parameters as a TREE_LIST with a TREE_VALUE of error_mark_node.
1972         (push_inline_template_parms_recursive): Check for template
1973         parameters having a TREE_VALUE of error_mark_node rather than
1974         check the parameter itself.
1975         (mangle_class_name_for_template): Likewise.
1976         (comp_template_parms): When comparing the individual template
1977         parameters, return 1 if either is error_mark_node.
1978         (current_template_args): Robustify.
1979         (redeclare_class_template): Likewise.
1980
1981 2006-08-26  Mark Mitchell  <mark@codesourcery.com>
1982
1983         PR c++/28588
1984         * class.c (resolve_address_of_overloaded_function): Add
1985         access_path parameter.  Perform access checks.
1986         (instantiate_type): Adjust call to
1987         resolve_address_of_overloaded_function.  Remove unnecessary code.
1988         * tree.c (is_overloaded_fn): Document.  Return 2 when there are
1989         acutally multiple functions.
1990         (really_overloaded_fn): Use is_overloaded_fn.
1991         * mangle.c (write_expression): Handle BASELINKs.
1992         * cp-tree.h (really_overloaded_fn): Return bool.
1993         (baselink_for_fns): Declare.
1994         * search.c (lookup_member): Check access for single static
1995         functions here.
1996         * pt.c (convert_nontype_argument_function): Handle BASELINKs.
1997         (tsubst_copy_and_build): Generate BASELINKs for template-ids.
1998         * semantics.c (finish_call_expr): Use baselink_for_fns.
1999         (baselink_for_fns): New function.
2000         (finish_id_expression): Use it.
2001         * parser.c (cp_parser_template_argument): Don't strip BASELINKs.
2002
2003         PR c++/28595
2004         * pt.c (tsubst): Issue errors about attempts to create VLAs at
2005         template-instantiation time.
2006
2007 2006-08-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2008
2009         PR c++/28853
2010         * typeck2.c (cxx_incomplete_type_diagnostic): Handle template
2011         template parameters.  Improve error message for template type
2012         parameters.
2013
2014         PR c++/28852
2015         * cp-tree.h (grok_op_properties): Return bool instead of void.
2016         * decl.c (grokfndecl): Discard invalid operator declarations.
2017         (copy_fn_p): Revert change for PR 27547.
2018         (grok_op_properties): Return error status (true on success).
2019         * pt.c (tsubst_decl): Discard invalid operator declarations.
2020
2021 2006-08-25  Mark Mitchell  <mark@codesourcery.com>
2022
2023         PR c++/28056
2024         * decl.c (grokdeclarator): Disallow declarations with qualified
2025         names in local scopes.
2026
2027 2006-08-25  Nathan Sidwell  <nathan@codesourcery.com>
2028
2029         PR c++/27787
2030         * decl.c (make_typename_type): Only try and resolve it when
2031         context is not dependent.  Refactor.
2032         * decl2.c (check_classfn): Push to class scope before looking for
2033         the function.
2034
2035 2006-08-24  Danny Smith   <dannysmith@users.sourceforge.net>
2036
2037         PR driver/28528
2038         * g++spec.c (lang_specific_driver): Always check if we need to
2039         swallow a space-separated  arg to '-x'.
2040         * lang-specs.h: Don't create ouput files for '-xc++-header'
2041         if -fsyntax-only.
2042
2043 2006-08-23  Jason Merrill  <jason@redhat.com>
2044
2045         PR c++/27714
2046         * pt.c (push_template_decl_real): A friend template with class
2047         scope isn't primary.
2048
2049 2006-08-23  Benjamin Smedberg <benjamin@smedbergs.us>
2050
2051         PR c++/28687
2052         * rtti.c (build_dynamic_cast, build_dynamic_cast_1):
2053         Move -fno-rtti check to be more specific.
2054
2055 2006-08-22  Jason Merrill  <jason@redhat.com>
2056
2057         PR c++/23372
2058         * call.c (build_over_call): Don't make a copy here if build_call
2059         will make one too.
2060
2061 2006-08-22  Andrew Pinski  <pinskia@physics.uc.edu>
2062
2063         PR C++/28450
2064         * cp/init.c (build_zero_init): Handle VECTOR_TYPE and
2065         COMPLEX_TYPEs.
2066
2067 2006-08-22  Simon Martin  <simartin@users.sourceforge.net>
2068
2069         PR c++/28420
2070         * parser.c (cp_parser_postfix_expression): Make sure that the
2071         saved value for parser->type_definition_forbidden_message is
2072         restored before returning to avoid an invalid free().
2073
2074 2006-08-22  Jason Merrill  <jason@redhat.com>
2075
2076         PR c++/28659
2077         * typeck.c (merge_types): If either of the types have the right
2078         attributes, return that one.
2079
2080         * tree.c (cp_build_type_attribute_variant): Make sure we aren't
2081         doing this to class types.
2082         * typeck.c (original_type): Deal with type quals properly.
2083
2084 2006-08-21  Jason Merrill  <jason@redhat.com>
2085
2086         PR c++/27115
2087         * semantics.c (finish_stmt_expr_expr): Don't try to voidify here,
2088         just leave the expression as it is.
2089         (finish_stmt_expr): If the statement-expression has class type,
2090         wrap it in a TARGET_EXPR.
2091         * cp-gimplify.c (cp_gimplify_init_expr): Don't bother with
2092         CLEANUP_POINT_EXPR.
2093         * except.c (build_throw): Give the CLEANUP_POINT_EXPR void type.
2094
2095 2006-08-21  Lee Millward  <lee.millward@codesourcery.com>
2096
2097         PR c++/26269
2098         * decl.c (duplicate_decls): Return early if either
2099         newdecl or olddecl is error_mark_node.
2100
2101          PR c++/28505
2102         * decl.c (grokdeclarator): Return early after
2103         issuing diagnostic about an incomplete type.
2104
2105         PR c++/28741
2106         * tree.c (decl_anon_ns_mem_p): Robustify.
2107         * decl2.c (determine_visibility): Likewise.
2108
2109 2006-08-20  Mark Mitchell  <mark@codesourcery.com>
2110
2111         PR c++/28341
2112         * tree.c (cast_valid_in_integral_constant_expression_p): New
2113         function.
2114         * cp-tree.h (tsubst_copy_and_build): Adjust prototype.
2115         * pt.c (tsubst_expr): Add integral_constant_expression_p
2116         parameter.
2117         (fold_non_dependent_expr): Adjust callers of
2118         tsubst_{expr,copy_and_build}.
2119         (tsubst_friend_function): Likewise.
2120         (tsubst_template_arg): Likewise.
2121         (tsubst_default_argument): Likewise.
2122         (tsubst_decl): Likewise.
2123         (tsubst): Likewise.
2124         (tsubst_omp_clasuses): Likewise.
2125         (regenerate_decl_fromp_template): Likewise.
2126         (instantiate_decl): Likewise.
2127         (tsubst_initializer_list): Likewise.
2128         (tsubst_enum): Likewise.
2129         (tsubst_expr): Use RECUR throughout.
2130         (tsubst_copy_and_build): Change definition of RECUR.  Do not allow
2131         invalid casts in integral constant expressions.
2132         * parser.c (cp_parser_postfix_expression): Use
2133         cast_valid_in_integral_constant_expression_p.
2134         (cp_parser_cast_expression): Likewise.
2135         (cp_parser_functional_cast): Likewise.
2136
2137         PR c++/28346
2138         * pt.c (tsubst_qualified_id): Do not strip references from
2139         OFFSET_REFs.
2140
2141 2006-08-17  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2142
2143         PR c++/28606
2144         * parser.c (cp_parser_diagnose_invalid_type_name): Handle BIT_NOT_EXPR.
2145         Fix formatting.
2146         (cp_parser_parse_and_diagnose_invalid_type_name): Tighten condition
2147         for valid type-names.
2148         (cp_parser_unqualified_id): Fix error handling for destructors.
2149
2150         PR c++/28710
2151         * decl.c (xref_tag): Improve error message.  Return early on error.
2152
2153         PR c++/28711
2154         * pt.c (tsubst_copy_and_build) <case CONSTRUCTOR>: Robustify.
2155
2156 2006-08-17  Paolo Bonzini  <bonzini@gnu.org>
2157
2158         PR c++/28573
2159         * semantics.c (finish_offsetof): Add new argument to fold_offsetof.
2160
2161 2006-08-16  Andrew Pinski  <pinskia@physics.uc.edu>
2162
2163         PR c++/28302
2164         * typeck.c (build_unary_op <case BIT_NOT_EXPR:>): Don't call
2165         perform_integral_promotions for non integral type.
2166
2167 2006-08-16  Jason Merrill  <jason@redhat.com>
2168
2169         PR c++/28385
2170         * pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Ignore quals from template
2171         if arg is a function.
2172
2173 2006-08-16  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2174
2175         PR c++/28593
2176         * init.c (build_new): Return early on invalid placement.
2177
2178 2006-08-15  Lee Millward  <lee.millward@codesourcery.com>
2179
2180         PR c++/28594
2181         * pt.c (process_template_parm): Robustify.
2182
2183 2006-08-14  Steve Ellcey  <sje@cup.hp.com>
2184
2185         PR c++/28288
2186         PR c++/14556
2187         * operators.def: Remove <?, ?>, <?=, and >?= operators.
2188         * parser.c: Remove CPP_MIN, CPP_MAX, CPP_MIN_EQ, and CPP_MAX_EQ.
2189         (cp_parser_warn_min_max): Remove.
2190
2191 2006-08-11  Jason Merrill  <jason@redhat.com>
2192
2193         PR c++/28559
2194         * parser.c (cp_parser_elaborated_type_specifier): Also ignore
2195         attributes applied to a TYPENAME_TYPE.
2196
2197 2006-08-09  Lee Millward  <lee.millward@codesourcery.com>
2198
2199         PR c++/28637
2200         * pt.c (coerce_template_parms): Copy across the
2201         invalid template arguments to the new template inner arguments.
2202         (retrieve_specialization): Robustify.
2203
2204         PR c++/28638
2205         * pt.c (coerce_template_template_parms): Robustify.
2206
2207         PR c++/28639
2208         * error.c (dump_template_parms): Robustify.
2209
2210         PR c++/28640
2211         * pt.c (redeclare_class_template): Robustify.
2212
2213         PR c++/28641
2214         * pt.c (type_unification_real): Robustify.
2215
2216 2006-08-03  Lee Millward  <lee.millward@codesourcery.com>
2217
2218         PR c++/28347
2219         * decl.c (start_decl): Return error_mark_node if a
2220         diagnostic was issed for an invalid typedef initialization.
2221
2222 2006-08-03  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2223
2224         PR c++/27508
2225         * parser.c (cp_parser_unqualified_id): Check for invalid scopes
2226         when parsing destructor names.
2227
2228         PR c++/28274
2229         * decl.c (duplicate_decls): Call check_default_args here.
2230         (start_preparsed_function): Do not call check_default_args.
2231         * name-lookup.c (pushdecl_maybe_friend): Only call
2232         check_default_args if duplicate_decls got bypassed.
2233
2234 2006-08-02  Richard Guenther  <rguenther@suse.de>
2235
2236         PR c++/28479
2237         Revert
2238         2006-07-05  Richard Guenther  <rguenther@suse.de>
2239         Andrew Pinski  <pinskia@gcc.gnu.org>
2240
2241         PR c++/27084
2242         * cp-objcp-common.c (cxx_types_compatible_p): Ignore
2243         top level qualifiers for pointer type comparisons.
2244
2245 2006-08-02  Mark Mitchell  <mark@codesourcery.com>
2246
2247         PR c++/28557
2248         * pt.c (tsubst_baselink): Substitute into BASELINK_OPTYPE.
2249
2250 2006-07-31  Mark Mitchell  <mark@codesourcery.com>
2251
2252         PR c++/28523
2253         * tree.c (stabilize_expr): Tweak documentation.  Add assertion.
2254         (stabilize_call): Tweak documentation.
2255         (stabilize_init): Only call stabilize_call for calls.
2256
2257 2006-08-01  Steve Ellcey  <sje@cup.hp.com>
2258
2259         PR c++/28432
2260         * decl2.c (check_classfn): Remove early return.
2261         * search.c (lookup_member): Return NULL with bad type.
2262
2263 2006-08-01  Steve Ellcey  <sje@cup.hp.com>
2264
2265         PR c++/28256
2266         * decl.c (check_initializer): Check for 1 initializer on scalar types.
2267
2268 2006-08-01  Daniel Jacobowitz  <dan@codesourcery.com>
2269
2270         PR debug/23336
2271         * pt.c (tsubst_copy_and_build): Mark used enum types.
2272         * semantics.c (finish_id_expression): Likewise.
2273
2274 2006-07-31  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2275
2276         PR c++/6634
2277         * decl.c (grokdeclarator): Check whether "long" or "short" was
2278         specified for non-integral types.
2279
2280 2006-07-28  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2281
2282         * Make-lang.in: Use $(HEADER_H) instead of header.h in dependencies.
2283
2284 2006-07-28  Lee Millward  <lee.millward@codesourcery.com>
2285
2286         PR c++/27668
2287         PR c++/27962
2288         * pt.c (process_template_parm) Store invalid template
2289         parameters as error_mark_node in the paramater list.
2290         (push_inline_template_parms_recursive): Handle invalid
2291         template parameters.
2292         (comp_template_parms): Likewise.
2293         (check_default_tmpl_arg): Likewise.
2294         (coerce_template_template_parms): Likewise.
2295         (mangle_class_name_for_template): Likewise.
2296         (tsubst_template_parms): Likewise.
2297         * error.c (dump_template_argument_list): Likewise.
2298
2299 2006-07-28  Kazu Hirata  <kazu@codesourcery.com>
2300
2301         * cp-tree.h: Fix a comment typo.
2302
2303 2006-07-24  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2304
2305         PR c++/27572
2306         * decl.c (grokdeclarator): Return error_mark_node after invalid
2307         typedef.
2308
2309 2006-07-23  Daniel Jacobowitz  <dan@codesourcery.com>
2310
2311         PR c++/28460
2312         * decl.c (grokvardecl): Use FROB_CONTEXT.
2313         * pt.c (register_specialization): Likewise.
2314
2315 2006-07-23  Mark Mitchell  <mark@codesourcery.com>
2316
2317         PR c++/28025
2318         * cp-tree.h (LOOKUP_HIDDEN): New macro.  Reformat comments.
2319         * name-lookup.c (unqualified_namespace_lookup): There is no way to
2320         have a hidden name in non-namespace scopes.
2321         * pt.c (tsubst_friend_class): Look for hidden names.
2322         * decl.c (lookup_and_check_tag): Fix typo in comment.
2323
2324         * semantics.c (finish_compound_literal): Fix typo in comment.
2325
2326 2006-07-21  Jason Merrill  <jason@redhat.com>
2327
2328         * decl2.c (determine_visibility): Don't propagate visibility from
2329         type to decl.
2330         (constrain_class_visibility): Don't warn in system headers.
2331         Don't warn about pointer fields.
2332
2333 2006-07-20  Mike Stump  <mrs@apple.com>
2334
2335         * decl2.c (determine_visibility_from_class): Don't use hidden
2336         visibility for explicit instantiations.
2337
2338 2006-07-21  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2339
2340         PR c++/28250
2341         * pt.c (tsubst_expr): Only apply DECL_TEMPLATE_INSTANTIATED to
2342         valid decls.  Cleanup.
2343
2344         PR c++/28363
2345         * semantics.c (check_template_template_default_arg): Simplify
2346         error handling.
2347
2348 2006-07-20  Jason Merrill  <jason@redhat.com>
2349
2350         PR c++/28407
2351         * decl.c (grokvardecl): Set DECL_THIS_STATIC on file-scope
2352         const variables with implicit internal linkage.
2353         * tree.c (decl_linkage): Only return lk_external if it's set.
2354
2355         PR c++/28409
2356         * decl2.c (constrain_visibility): Ignore the anonymous namespace
2357         for extern "C" decls.
2358         (VISIBILITY_STATIC): Rename to VISIBILITY_ANON.
2359
2360         * decl2.c (constrain_visibility): Remove specified and reason
2361         parameters.  Don't touch decls that already have explicit visibility.
2362         (determine_visibility): Do copy DECL_VISIBILITY_SPECIFIED from
2363         template.
2364         (determine_visibility_from_class): Reverse sense of
2365         DECL_VISIBILITY_SPECIFIED test for target-specific visibility rules.
2366         (constrain_class_visibility): Only complain about member visibility
2367         if the member type is another class.  Don't change visibility of the
2368         current class.
2369
2370 2006-07-19  Mark Mitchell  <mark@codesourcery.com>
2371
2372         PR c++/28338
2373         * decl.c (layout_var_decl): Don't call push_local_name here.
2374         (initialize_artificial_var): Assert artificiality.
2375         (cp_finish_decl): Call push_local_name here.
2376
2377 2006-07-18  Mark Mitchell  <mark@codesourcery.com>
2378
2379         PR c++/28337
2380         * typeck.c (build_binary_op): Short-circuit pointer arithmetic in
2381         templates.
2382
2383 2006-07-18  Mark Mitchell  <mark@codesourcery.com>
2384
2385         PR c++/28048
2386         * semantics.c (check_accessibility_of_qualified_id): Robustify.
2387
2388         PR c++/28235
2389         * pt.c (tsubst_decl): Handling substitutions into a static data
2390         member from within the scope of the tempalte itself.
2391
2392 2006-07-18  Lee Millward  <lee.millward@gmail.com>
2393
2394         PR c++/28258
2395         * method.c (locate_copy): Check for non_reference
2396         returning error_mark_node.
2397
2398         PR c++/28260
2399         * decl.c (duplicate_decls): Return error_mark_node
2400         on ambiguous declaration.
2401
2402 2006-07-18  Steve Ellcey  <sje@cup.hp.com>
2403
2404         PR c++/27495
2405         * search.c (adjust_result_of_qualified_name_lookup): Change
2406         assert to part of if statement.
2407
2408 2006-07-17  Steve Ellcey  <sje@cup.hp.com>
2409
2410         PR c++/28291
2411         * decl.c (reshape_init_class): Return error_mark_node on error.
2412
2413 2006-07-17  Steve Ellcey  <sje@cup.hp.com>
2414
2415         PR c++/28304
2416         * decl2.c (check_classfn): Return NULL_TREE on error.
2417
2418 2006-07-17  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2419
2420         PR c++/28250
2421         * name-lookup.c (pushdecl_maybe_friend): Return early on
2422         error_mark_node.
2423         * except.c (expand_start_catch_block): Use error_mark_node instead
2424         of NULL_TREE for invalid decls.
2425         * parser.c (cp_parser_exception_declaration): Return error_mark_node
2426         on invalid catch parameter. Simplify.
2427
2428 2006-07-16  Jakub Jelinek  <jakub@redhat.com>
2429
2430         PR c++/28370
2431         * decl2.c (note_vague_linkage_var): Removed.
2432         (finish_static_data_member_decl): Add decl to pending_statics vector
2433         directly.  Do it even for non-public decls.
2434
2435 2006-07-15  Lee Millward  <lee.millward@gmail.com>
2436
2437         PR c++/28292
2438         * decl2.c (acceptable_java_type): Robustify. Use
2439         proper Boolean return type instead of return 1.
2440         (check_java_method): Don't issue error about
2441         type not being an acceptable Java parameter if
2442         it's error_mark_node.
2443
2444         PR c++/28269
2445         * parser.c (cp_parser_elaborated_type_specifier):
2446         Return early if an invalid type was detected.
2447
2448 2006-07-15  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2449
2450         PR c++/28249
2451         * parser.c (cp_parser_check_decl_spec): New function.
2452         (cp_parser_decl_specifier_seq): Factor out check for repeated
2453         decl-specifiers into cp_parser_check_decl_spec. Use it.
2454         (cp_parser_type_specifier_seq): Use it.
2455
2456         PR c++/28294
2457         * semantics.c (finish_offsetof): Use TREE_OPERAND for COMPONENT_REFs
2458         only.
2459
2460         PR c++/28387
2461         * decl2.c (cplus_decl_attributes): Check for invalid decls.
2462
2463 2006-07-14  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2464
2465         PR c++/28343
2466         * decl.c (cp_finish_decl): Check asmspec_tree for error_mark_node.
2467         * decl2.c (grokfield): Likewise.
2468
2469 2006-07-12  Geoffrey Keating  <geoffk@apple.com>
2470
2471         * decl2.c (determine_visibility): Don't change visibility of
2472         function locals because of -fvisibility-inlines-hidden.
2473
2474 2006-07-12  Jason Merrill  <jason@redhat.com>
2475
2476         PR c++/28217
2477         * semantics.c (note_decl_for_pch): Don't premangle templates.
2478
2479 2006-07-12  Martin Michlmayr  <tbm@cyrius.com>
2480
2481         * typeck.c (string_conv_p): Remove spurious quotation mark in
2482         warning.
2483
2484 2006-07-07  Lee Millward  <lee.millward@gmail.com>
2485             Andrew Pinski  <pinskia@gmail.com>
2486
2487         PR c++/27820
2488         * decl.c (define_label): Return error_mark_node on error.
2489         * semantics.c (finish_label_stmt): Don't call
2490         add_stmt for invalid labels.
2491
2492 2006-07-06  Jason Merrill  <jason@redhat.com>
2493
2494         PR c++/28279
2495         * decl2.c (finish_static_data_member_decl): Don't assert
2496         TREE_PUBLIC.
2497
2498 2006-07-05  Jason Merrill  <jason@redhat.com>
2499
2500         PR c++/13983
2501         PR c++/17519
2502         * class.c (check_field_decls): Check TYPE_PACKED after
2503         stripping array types.
2504         (finish_struct_bits): Don't copy TYPE_SIZE here.
2505
2506         PR c++/18681
2507         * friend.c (is_friend): Fix DR 45 implementation.
2508
2509 2006-07-05  Richard Guenther  <rguenther@suse.de>
2510         Andrew Pinski  <pinskia@gcc.gnu.org>
2511
2512         PR c++/27084
2513         * cp-objcp-common.c (cxx_types_compatible_p): Ignore
2514         top level qualifiers for pointer type comparisons.
2515
2516 2006-07-01  Jason Merrill  <jason@redhat.com>
2517
2518         PR c++/28215
2519         * method.c (make_thunk): Unset DECL_USE_TEMPLATE and
2520         DECL_TEMPLATE_INFO.
2521
2522 2006-06-30  Jason Merrill  <jason@redhat.com>
2523
2524         PR c++/26577
2525         * call.c (build_new_method_call): Force evaluation of the
2526         instance pointer, not the object.
2527
2528 2006-06-30  Kazu Hirata  <kazu@codesourcery.com>
2529
2530         * decl2.c: Fix a comment typo.
2531
2532 2006-06-30  Jason Merrill  <jason@redhat.com>
2533
2534         PR c++/18698
2535         * decl2.c (grokfield): Only try to treat the decl as an access
2536         declaration if the scope is a class.
2537
2538 2006-06-29  Jason Merrill  <jason@redhat.com>
2539
2540         PR c++/26905
2541         PR c++/26612
2542         PR c++/27000
2543         PR c++/26984
2544         PR c++/19134
2545         * decl2.c (determine_visibility): Overhaul.
2546         (determine_visibility_from_class): Likewise.
2547         (min_vis_r, type_visibility, constrain_visibility): New fns.
2548         (constrain_visibility_for_template): Likewise.
2549         (constrain_class_visibility): Likewise.
2550         * decl.c (cp_finish_decl): Call determine_visibility for function
2551         decls, too.
2552         * name-lookup.c (pushtag): Call determine_visibility.
2553         * decl.c (duplicate_decls): Don't copy visibility from template to
2554         specialization.
2555         * pt.c (check_explicit_specialization): Likewise.
2556         (lookup_template_class, tsubst_decl): Call determine_visibility.
2557         * class.c (finish_struct_1): Call constrain_class_visibility.
2558
2559         PR c++/26905
2560         PR c++/21675
2561         PR c++/17470
2562         * parser.c (cp_parser_explicit_instantiation): Pass the attributes
2563         to grokdeclarator.
2564         (cp_parser_type_specifier): Allow 'enum __attribute ((...)) E'.
2565         (cp_parser_enum_specifier): Likewise.
2566         (cp_parser_elaborated_type_specifier): Apply attributes if this
2567         declares only the class.
2568         (cp_parser_class_specifier): Apply leading attributes immediately.
2569         * semantics.c (begin_class_definition): Add attributes parameter,
2570         apply them to the type.
2571
2572         PR c++/21581
2573         PR c++/25915
2574         * tree.c (decl_anon_ns_mem_p): New function.
2575         * cp-tree.h: Declare it.
2576         * decl2.c (determine_visibility): Make anonymous namespace
2577         members static.
2578         (min_vis_r, constrain_visibility): Likewise.
2579         * rtti.c (create_pseudo_type_info): Set TREE_PUBLIC on
2580         pseudo-types.
2581         * decl.c (cxx_init_decl_processing): Set TREE_PUBLIC on
2582         global_namespace.
2583         * name-lookup.c (push_namespace_with_attribs): Don't set TREE_PUBLIC
2584         on anonymous namespaces.
2585
2586 2006-06-28  Jason Merrill  <jason@redhat.com>
2587
2588         PR c++/27424
2589         * pt.c (convert_template_argument): Pass all template arguments
2590         on to coerce_template_template_parms.
2591
2592 2006-06-25  Lee Millward  <lee.millward@gmail.com>
2593             Mark Mitchell <mark@codesuorcery.com>
2594
2595         PR c++/28054
2596         * decl2.c (grokbitfied): Remove check for grokdeclarator
2597         returning NULL_TREE, instead check for error_mark_node
2598         to indicate failure.
2599         * decl.c (grokdeclarator): Adjust block comment.
2600
2601 2006-06-25  Lee Millward  <lee.millward@gmail.com>
2602
2603         PR c++/28051
2604         * mangle.c (mangle_conv_op_name_for_type): Check for
2605         invalid types.
2606         * name-lookup.c (push_class_level_binding): Robustify.
2607         (do_class_using_decl): Return early if name is error_mark_node.
2608
2609 2006-06-23  Steve Ellcey  <sje@cup.hp.com>
2610
2611         PR c++/28114
2612         * name-lookup.c (pushtag): Return if we have error_mark_node.
2613
2614 2006-06-23  Steve Ellcey  <sje@cup.hp.com>
2615
2616         PR c++/27019
2617         * typeck2.c (process_init_constructor_array): Set ce->value on errors.
2618
2619 2006-06-23  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2620
2621         PR c++/28112
2622         * parser.c (cp_parser_attribute_list): Skip attributes with invalid
2623         arguments.  Fix comment.
2624
2625         PR c++/11468
2626         * init.c (build_new_1): Handle error_mark_nodes returned by
2627         build_java_class_ref.
2628         (build_java_class_ref): Do not abort compilation, but return
2629         error_mark_node.  Improve error message.  Fix indentation.
2630
2631 2006-06-23  Danny Smith   <dannysmith@users.sourceforge.net>
2632
2633         PR target/27789
2634         * decl.c (start_decl): Check that dllimports are not initialized.
2635
2636 2006-06-22  Lee Millward  <lee.millward@gmail.com>
2637
2638         PR c++/27805
2639         * typeck2.c (build_m_component_ref): Use error_operand_p.
2640
2641         PR c++/27821
2642         * decl.c (grokdeclarator): Return error_mark_node on
2643         invalid uses of the scope resolution operator.
2644
2645 2006-06-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2646
2647         PR c++/28111
2648         * pt.c (determine_specialization): Check for invalid decls.
2649
2650         PR c++/28110
2651         * pt.c (unify) <case TEMPLATE_PARM_INDEX>: Check for invalid
2652         parameters.
2653
2654         PR c++/28109
2655         * rtti.c (get_tinfo_decl_dynamic): Robustify.
2656
2657 2006-06-20  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2658
2659         PR c++/28052
2660         * init.c (push_base_cleanups): Skip members with invalid types.
2661         * typeck.c (build_class_member_access_expr): Robustify.
2662
2663 2006-06-19  Mark Mitchell  <mark@codesourcery.com>
2664
2665         * pt.c (instantiate_template): Fix typo in comment.
2666
2667 2006-06-19  Richard Guenther  <rguenther@suse.de>
2668
2669         * parser.c (CP_LEXER_BUFFER_SIZE): Adjust to assure near
2670         power-of-two token vector size.
2671
2672 2006-06-16  Mark Mitchell  <mark@codesourcery.com>
2673
2674         PR c++/28016
2675         * decl.c (cp_finsh_decl): Do not emit uninstantiated static data
2676         members.
2677
2678         PR c++/27979
2679         * call.c (standard_conversion): Strip cv-qualifiers from bitfield
2680         types.
2681
2682         PR c++/27884
2683         * decl.c (have_extern_spec): Remove.
2684         (start_decl): Do not check have_extern_spec.
2685         (start_function): Likewise.
2686         * cp-tree.h (have_extern_spec): Remove.
2687         * parser.c (cp_parser_linkage_specification): Don't set
2688         have_extern_spec.
2689         (cp_parser_init_declarator): Likewise.
2690         (cp_parser_parameter_declaration): Do not treat parameters as
2691         within the scope of an unbraced linkage specification.
2692
2693 2006-06-15  Mark Mitchell  <mark@codesourcery.com>
2694
2695         PR c++/27689
2696         * cp-tree.h (CLASSTYPE_SPECIALIZATION_OF_PRIMARY_TEMPLATE_P): New
2697         macro.
2698         * pt.c (unify): Use it.
2699
2700         PR c++/27666
2701         * call.c (build_conditional_expr): Robustify.
2702
2703         PR c++/27640
2704         * pt.c (instantiate_template): Set processing_template_decl to
2705         zero while performing substitutions.
2706
2707 2006-06-14  Mark Mitchell  <mark@codesourcery.com>
2708
2709         PR c++/27665
2710         * parser.c (cp_parser_unqualified_id): Use constructor_name_p to
2711         identify destructors.
2712         (cp_parser_nested_name_specifier_opt): Remove invalid
2713         optimization.
2714         (cp_parser_template_id): Refine heuristic for determining whether
2715         we are entering a scope.
2716
2717         PR c++/27648
2718         * parser.c (cp_parser_declarator): Robustify.
2719
2720         PR c++/26559
2721         * pt.c (tsubst_expr): Use finish_omp_atomic.
2722         (value_dependent_expression_p): All CALL_EXPRs are dependent.
2723         * semantics.c (finish_omp_atomic): Rework to use standard
2724         paradigms for handling non-dependent expressions.
2725
2726 2006-06-14  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2727
2728         * typeck.c (build_modify_expr): Tidy diagnostic message.
2729
2730 2006-06-14  Mark Mitchell  <mark@codesourcery.com>
2731
2732         PR c++/28018
2733         * typeck.c (build_modify_expr): Disallow array assignment.
2734
2735 2006-06-14  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2736
2737         * cp-tree.def: Fix typo.
2738
2739 2006-06-13  Mark Mitchell  <mark@codesourcery.com>
2740
2741         PR c++/27227
2742         * decl.c (decls_match): Allow an extern "C" variable declarations
2743         from different namespaces to match.
2744         (duplicate_decls): Disallow redeclaring a variable with a
2745         different linkage specification.
2746
2747 2006-06-13  Jakub Jelinek  <jakub@redhat.com>
2748
2749         PR middle-end/27793
2750         * cp-tree.h (cxx_int_tree_map): New struct.
2751         (struct language_function): Add extern_decl_map field.
2752         * name-lookup.c (pushdecl_maybe_friend): Add x -> t mapping
2753         to cp_function_chain->extern_decl_map hash table instead of
2754         copying over DECL_UID.
2755         * cp-gimplify.c (cxx_int_tree_map_eq, cxx_int_tree_map_hash): New
2756         functions.
2757         (cp_genericize_r): Remap DECL_EXTERN local decls using
2758         cp_function_chain->extern_decl_map hash table.
2759         * decl.c (finish_function): Clear extern_decl_map.
2760
2761 2006-06-12  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2762
2763         PR c++/27601
2764         * semantics.c (finish_offsetof): Handle pseudo-destructors.
2765
2766         PR c++/27933
2767         * name-lookup.c (lookup_qualified_name): Always return error_mark_node
2768         if lookup fails.
2769
2770         PR c++/27951
2771         * decl2.c (finish_anon_union): Return early if build_anon_union_vars
2772         fails.
2773
2774 2006-06-12  Roger Sayle  <roger@eyesopen.com>
2775
2776         PR c++/21210
2777         * typeck2.c (build_functional_cast): Use cp_convert to construct
2778         non-aggregate initializers instead of the user-level build_c_cast.
2779
2780 2006-06-07  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2781
2782         PR c++/27601
2783         * cp-tree.h (finish_offsetof): Add prototype.
2784         * semantics.c (finish_offsetof): New function.
2785         * parser.c (cp_parser_builtin_offsetof): Call it instead of
2786         fold_offsetof.
2787         * pt.c (tsubst_copy_and_build): Likewise.
2788
2789 2006-06-06  Mark Mitchell  <mark@codesourcery.com>
2790
2791         PR c++/27177
2792         * call.c (standard_conversion): Require that the derived type be
2793         complete when performing a derived-to-base conversion.
2794
2795 2006-06-04  Mark Mitchell  <mark@codesourcery.com>
2796
2797         PR c++/27819
2798         * decl.c (cp_finish_decl): Process initializers for static data
2799         members with non-dependent initializers, even in templates.
2800
2801         PR c++/27722
2802         * decl.c (maybe_deduce_size_from_array_init): If the declaration
2803         is erroneous, give it an erroneous type.
2804         (layout_var_decl): If the type is erroneous, give up.
2805         (check_initializer): Likewise.
2806
2807         PR c++/27807
2808         * cp-tree.h (TYPE_OBJ_P): New macro.
2809         (TYPE_PTROB_P): Use it.
2810         (TYPE_REF_OBJ_P): Likewise.
2811         * semantics.c (finish_compound_literal): Do not permit compound
2812         literals of non-object types.
2813
2814         PR c++/27806
2815         * typeck.c (original_type): Robustify.
2816
2817 2006-06-05  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2818
2819         PR c++/27804
2820         * init.c (constant_value_1): Return decl instead of error_mark_node
2821         for invalid initializers.
2822
2823 2006-06-01  Andrew Pinski  <pinskia@physics.uc.edu>
2824
2825         PR c++/27592
2826         * rtti.c (build_dynamic_cast_1): Call c_common_truthvalue_conversion
2827         on operand of the COND_EXPR for the null pointer check.
2828
2829 2006-06-01  Andrew Pinski  <pinskia@physics.uc.edu>
2830
2831         PR c++/26740
2832         * typeck.c (build_unary_op): Mark the function as being used.
2833
2834 2006-06-01  Alexandre Oliva  <aoliva@redhat.com>
2835
2836         PR c++/26660
2837         * parser.c (cp_parser_initial_pragma): Read one more token for
2838         caller after reading PCH file in.
2839
2840 2006-05-31  Mark Mitchell  <mark@codesourcery.com>
2841
2842         PR c++/27801
2843         * call.c (perform_implicit_conversion): Do not actually perform
2844         conversions in templates.
2845
2846         PR c++/26496
2847         * call.c (resolve_args): Check for invalid uses of bound
2848         non-static member functions.
2849         * init.c (build_offset_ref): Return error_mark_node for errors.
2850
2851         PR c++/27385
2852         * decl.c (reshape_init): Robustify.
2853         (reshape_init_array_1): Likewise.
2854
2855 2006-05-30  Mark Mitchell  <mark@codesourcery.com>
2856
2857         PR c++/27808
2858         * parser.c (cp_parser_decl_specifier_seq): Issue errors about
2859         "friend" specifiers that do not appear in class scopes.
2860
2861         PR c++/27803
2862         * class.c (check_bitfield_decl): Ensure that all bitfields have
2863         integral type.
2864
2865 2006-05-29  Kazu Hirata  <kazu@codesourcery.com>
2866
2867         * pt.c (convert_nontype_argument): Fix a typo in an error
2868         message.
2869
2870 2006-05-28  Kazu Hirata  <kazu@codesourcery.com>
2871
2872         * decl.c, decl2.c, parser.c: Fix comment typos.  Follow
2873         spelling conventions.
2874
2875 2006-05-24  Mark Mitchell  <mark@codesourcery.com>
2876
2877         PR c++/20103
2878         * decl.c (cp_make_fname_decl): Don't set DECL_INITIAL to
2879         error_mark_node to indicate an initialization is OK.
2880         (start_decl): Likewise.  Adjust call to start_decl_1.
2881         (start_decl_1): Add initialized parameter.  Simplify.
2882         * except.c (initialize_handler_parm): Adjust call to
2883         setart_decl_1.
2884         (expand_start_catch_block): Let cp_finish_decl initialize catch
2885         parameters.
2886         * cp-tree.h (start_decl_1): Adjust prototype.
2887         * pt.c (tsubst_expr): Don't set DECL_INITIAL to error_mark_node.
2888         (instantiate_decl): Let cp_finish_decl handle initialization.
2889         * semantics.c (finish_compound_literal): Create a temporary
2890         variable for the literal.
2891         * typeck.c (build_unary_op): Remove COMPOUND_LITERAL_P special
2892         cases.
2893         * decl2.c (finish_static_data_member_decl): Don't set
2894         DECL_INITIAL.
2895         (grokfield): Do not try to initialize functions.
2896
2897 2006-05-23  Mark Mitchell  <mark@codesourcery.com>
2898
2899         PR c++/20173
2900         * pt.c (determine_specialization): Disallow partial
2901         specializations of templates.
2902
2903 2006-05-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2904
2905         PR c++/27716
2906         * typeck.c (build_modify_expr): Test arguments for error_operand_p.
2907
2908         * decl.c (grokdeclarator): Return error_mark_node instead of NULL_TREE.
2909
2910 2006-05-21  Mark Mitchell  <mark@codesourcery.com>
2911
2912         PR c++/27210
2913         * cp-tree.h (cp_save_expr): New function.
2914         * init.c (build_new): Correct logic for zero-element array
2915         warning.  Use cp_save_expr.
2916         * tree.c (cp_save_expr): New function.
2917
2918 2006-05-21  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2919
2920         PR c++/27398
2921         * decl.c (grokdeclarator): Return error_mark_node instead of NULL_TREE
2922         or void_type_node.
2923
2924 2006-05-19  Mike Stump  <mrs@apple.com>
2925
2926         * typeck.c (default_conversion): Remove static.
2927
2928 2006-05-19  Mark Mitchell  <mark@codesourcery.com>
2929
2930         PR c++/26433
2931         * cp-tree.h (begin_function_try_block): Change prototype.
2932         (finish_function_handler_sequence): Likewise.
2933         * parser.c (cp_parser_function_try_block): Adjust calls.
2934         * pt.c (tsubst_expr): Adjust calls.
2935         * semantics.c (begin_function_try_block): Create an artificial
2936         outer scope.
2937         (finish_function_handler_sequence): Close it.
2938
2939 2006-05-18  Mark Mitchell  <mark@codesourcery.com>
2940
2941         PR c++/27471
2942         PR c++/27506
2943         * typeck.c (decay_conversion): Convert bitfields to their declared
2944         types here.  Improve documentation.  Avoid use of cp_convert.
2945         (default_conversion): Make it static.  Perform integral promotions
2946         before lvalue-to-rvalue, function-to-pointer, and array-to-pointer
2947         conversions.
2948         * init.c (build_init): Remove.
2949         (expand_default_init): Do not call rvalue.
2950         * call.c (null_ptr_cst_p): Robustify.
2951         (build_conditional_expr): Tidy.
2952         * except.c (build_throw): Do not perform lvalue-to-rvalue
2953         conversion on operand before initializing temporary.
2954         * tree.c (convert.h): Include it.
2955         (convert_bitfield_to_declared_type): Use convert_to_integer, not
2956         cp_convert.
2957         (rvalue): Don't convert bitfields to their declared type here.
2958         * cp-tree.h (build_init): Remove.
2959         (default_conversion): Likewise.
2960         * typeck2.c (build_m_component_ref): Do not perform
2961         lvalue-to-rvalue, function-to-pointer, or array-to-pointer
2962         conversions here.  Correct error message.
2963
2964 2006-05-17  Mark Mitchell  <mark@codesourcery.com>
2965
2966         PR c++/26122
2967         * decl2.c (check_member_template): Remove checks for virtual
2968         functions.
2969         * parser.c (cp_parser_function_specifier_opt): Complain about
2970         virtual templates.
2971         (cp_parser_pure_specifier): Likewise.
2972
2973         PR c++/26068
2974         * parser.c (cp_parser_set_storage_class): Check for
2975         invalid uses of storage classes on unbraced linkage
2976         specifications.
2977         (cp_parser_decl_specifier_seq): Pass keywords, not storage classes,
2978         to cp_parser_set_storage_class.
2979
2980 2006-05-17  Jakub Jelinek  <jakub@redhat.com>
2981
2982         PR c++/27491
2983         * semantics.c (finish_compound_literal): Only set TREE_HAS_CONSTRUCTOR
2984         on CONSTRUCTORs.
2985
2986         PR middle-end/27415
2987         * parser.c (cp_parser_omp_parallel): Set OMP_PARALLEL_COMBINED
2988         on combined parallel workshare constructs.
2989         * pt.c (tsubst_expr): Copy OMP_PARALLEL_COMBINED flag.
2990
2991 2006-05-16  H.J. Lu  <hongjiu.lu@intel.com>
2992
2993         PR driver/26885
2994         * Make-lang.in (GXX_OBJS): Replace gcc.o with $(GCC_OBJS).
2995
2996 2006-05-15  Mark Mitchell  <mark@codesourcery.com>
2997
2998         PR c++/27339
2999         * cp-tree.h (perform_access_checks): New function.
3000         * semantics.c (perform_access_checks): New function.
3001         (perform_deferred_access_checks): Use it.
3002         * parser.c (cp_parser_simple_declaration): Adjust call to
3003         cp_parser_init_declarator.
3004         (cp_parser_type_parameter): Do not defer checks in default
3005         arguments.
3006         (cp_parser_explicit_specialization): Adjust call to
3007         cp_parser_single_declaration.
3008         (cp_parser_init_declarator): Perform template-parameter access
3009         checks.
3010         (cp_parser_parameter_declaration): Do not defer checks for
3011         template parameter default arguments.
3012         (cp_parser_template_declaration_after_export): Gather access
3013         checks for template parameters, and pass them to
3014         cp_parser_single_declaration.
3015         (cp_parser_template_parameter_access_checks): New function.
3016         (cp_parser_single_declaration): Add checks parameter.
3017
3018         PR c++/27505
3019         * call.c (convert_like_real): Convert bitfields to their declared
3020         types when forming an rvalue.
3021         * tree.c (convert_bitfield_to_declared_type): New function.
3022         (rvalue): Use it.
3023         * cp-tree.h (convert_bitfield_to_declare_type): Declare it.
3024
3025 2006-05-15  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3026
3027         PR c++/27582
3028         * pt.c (any_dependent_template_arguments_p): Return early on invalid
3029         argument list.
3030
3031         PR c++/27581
3032         * search.c (adjust_result_of_qualified_name_lookup): Skip on
3033         invalid context_class.
3034
3035         PR c++/27315
3036         * pt.c (do_decl_instantiation): Return early on invalid decl.
3037
3038         PR c++/27559
3039         * pt.c (push_template_decl_real): Return error_mark_node instead
3040         of broken decl.
3041
3042         PR c++/27496
3043         * pt.c (tsubst_friend_class): Return early on invalid friend
3044         declarations.
3045
3046 2006-05-14  H.J. Lu  <hongjiu.lu@intel.com>
3047
3048         * Make-lang.in (cp/decl.o): Add dependency on $(TARGET_H).
3049         (cp/decl2.o): Likewise.
3050         (cp/typeck.o): Likewise.
3051         (cp/cvt.o): Likewise.
3052         (cp/parser.o): Likewise.
3053         (cp/call.o): Replace target.h with $(TARGET_H).
3054
3055 2006-05-14  Alexandre Oliva  <aoliva@redhat.com>
3056
3057         * pt.c (build_non_dependent_expr): Leave ADDR_EXPR of
3058         COMPONENT_REF alone.
3059
3060 2006-05-11  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3061
3062         PR c++/27547
3063         * decl.c (copy_fn_p): Return early on non-member functions.
3064
3065 2006-05-08  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3066
3067         PR c++/27447
3068         * decl2.c (build_memfn_type): Skip invalid functions and class types.
3069
3070 2006-05-06  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3071
3072         PR c++/27427
3073         * pt.c (convert_nontype_argument): Return early on invalid arguments.
3074
3075         * pt.c (process_template_parm): Remove superfluous temporary.
3076
3077         PR c++/27430
3078         * pt.c (process_template_parm): Handle erroneous non-type parameters.
3079
3080         PR c++/27423
3081         * typeck.c (convert_for_initialization): Skip erroneous types.
3082
3083         PR c++/27422
3084         * typeck.c (convert_arguments): Return early on args with
3085         invalid types.
3086
3087 2006-05-03  Aldy Hernandez  <aldyh@redhat.com>
3088
3089         PR/21391
3090         * typeck.c (build_static_cast_1): Save casted types in used types
3091         hash table.
3092         (build_reinterpret_cast_1): Same.
3093         * rtti.c (build_dynamic_cast_1): Same.
3094
3095 2006-05-04  Jakub Jelinek  <jakub@redhat.com>
3096
3097         PR c++/27359
3098         * parser.c (cp_parser_omp_for_loop): Only call
3099         cp_parser_abort_tentative_parse if cp_parser_parse_definitely was not
3100         called.
3101
3102 2006-05-02  Mark Mitchell  <mark@codesourcery.com>
3103
3104         PR c++/27102
3105         * decl.c (grokdeclarator): Robustify checks for defining members
3106         of incomplete types.
3107
3108         PR c++/27309
3109         * class.c (add_method): Call grok_special_member_properties.
3110         * decl.c (grokdeclarator): Don't call it here.
3111         (copy_fn_p): A TEMPLATE_DECL is never a copy constructor or
3112         assignment operator.  Set TYPE_HAS_CONSTURCTOR if DECL is a
3113         constructor.
3114         (start_method): Don't call grok_special_member_properties.
3115         * method.c (implicitly_declare_fn): Likewise.
3116         * pt.c (instantiate_class_template): Likewise.
3117         * decl2.c (grokfield): Likewise.
3118
3119 2006-05-02  Jakub Jelinek  <jakub@redhat.com>
3120
3121         PR middle-end/27337
3122         * cp-gimplify.c (cxx_omp_privatize_by_reference): New function.
3123         * cp-tree.h (cxx_omp_privatize_by_reference): New prototype.
3124         * cp-objcp-common.h (LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE): Define.
3125
3126 2006-04-30  Mark Mitchell  <mark@codesourcery.com>
3127
3128         PR c++/27094
3129         * pt.c (tsubst_default_argument): Increment function_depth around
3130         call to tsubst_expr.
3131         * parser.c (cp_parser_parameter_declaration): Likewise.
3132         * decl2.c (mark_used): Tidy.
3133
3134 2006-04-30  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3135
3136         PR c++/27278
3137         * decl.c (grok_op_properties): Skip operators with invalid args
3138         when checking for class-type or enum-type args.
3139
3140 2006-04-29  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3141
3142         PR c++/27279
3143         * decl.c (copy_fn_p): Skip functions with invalid first arg.
3144
3145 2006-04-27  Mark Mitchell  <mark@codesourcery.com>
3146
3147         PR c++/27292
3148         * tree.c (rvalue): Convert bitfields to their declared types.
3149
3150         PR c++/27102
3151         * typeck2.c (cxx_incomplete_type_diagnostic): Handle
3152         TYPENAME_TYPE.
3153
3154 2006-04-24  Mark Mitchell  <mark@codesourcery.com>
3155
3156         PR c++/27292
3157         * typeck.c (decay_conversion): Don't adjust bitfield types.
3158         (perform_integral_promotions): Treat bitfield enums as enums, not
3159         as short integer types.
3160         * tree.c (rvalue): Convert bitfields to their correct types.
3161
3162 2006-04-24  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3163
3164         PR c++/19963
3165         * class.c (layout_class_type): Skip fields with invalid types.
3166
3167 2006-04-23  Mark Mitchell  <mark@codesourcery.com>
3168
3169         PR c++/26912
3170         * cp-tree.h (build_this_parm): Declare.
3171         (grok_method_quals): Remove.
3172         (build_memfn_type): Declare.
3173         (build_artificial_parm): Declare.
3174         (do_friend): Remove quals parameter.
3175         * decl.c (build_this_parm): New function.
3176         (grokfndecl): Use it.  Do not pass quals to grokclassfn.
3177         (grokdeclarator): Rename quals to memfn_quals.  Avoid allocating
3178         unnecessary TYPE_DECLs.  Correct qualification of member function
3179         types.  Tidy.
3180         * method.c (implicitly_declare_fn): Use build_this_parm.
3181         * friend.c (do_friend): Remove quals parameter.
3182         * decl2.c (grok_method_quals): Remove.
3183         (build_memfn_type): New function.
3184         (build_artificial_parm): Give it external linkage.
3185         (grokclassfn): Remove quals parameter.  Do not build "this"
3186         PARM_DECL here.
3187
3188         PR c++/26534
3189         * cp-tree.h (is_bitfield_expr_with_lowered_type): New function.
3190         * typeck.c (is_bitfield_expr_with_lowered_type): New function.
3191         (decay_conversion): Convert bitfield expressions to the correct
3192         type.
3193         (build_modify_expr): Remove spurious conversions.
3194         * class.c (layout_class_type): Modify the type of bitfields to
3195         indicate a limited range.
3196         * call.c (standard_conversion): Adjust the type of bitfield
3197         expressions used in an rvalue context.
3198         (build_conditional_expr): Likewise.
3199
3200 2006-04-22  Kazu Hirata  <kazu@codesourcery.com>
3201
3202         * decl.c: Fix comment typos.
3203
3204 2006-04-21  Eric Christopher  <echristo@apple.com>
3205
3206         * decl.c: Fix typo in function name.
3207
3208 2006-04-19  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3209
3210         PR c++/26558
3211         * parser.c (cp_parser_class_name): Check for invalid typenames.
3212         Rearrange code.
3213
3214         PR c++/26739
3215         * pt.c (tsubst_friend_function): Return early if
3216         pushdecl_namespace_level fails.
3217
3218         PR c++/26036
3219         * typeck.c (convert_arguments): Return error_mark_node instead of
3220         error_mark_list.
3221         * cp-tree.h (error_mark_list): Remove declaration.
3222         * decl.c (error_mark_list): Remove definition.
3223         (cxx_init_decl_processing): Do not initialize error_mark_list.
3224
3225         PR c++/10385
3226         * rtti.c (build_dynamic_cast_1): Check for invalid conversions
3227         before calling convert_to_reference.
3228         * cvt.c (convert_to_reference): Assert that reftype is a
3229         REFERENCE_TYPE.
3230
3231 2006-04-19  Mark Mitchell  <mark@codesourcery.com>
3232
3233         PR c++/27102
3234         * class.c (currently_open_class): Tidy.
3235         * decl.c (grokdeclarator): If we encounter an erroneous
3236         declarator, assume that we have already issued an error message
3237         and return.  Return error_mark_node instead of NULL_TREE in more
3238         places.  Issue errors about function definitions that do not have
3239         a function declarator.  Check for complete types for all function
3240         definitions.
3241         * cp-tree.h (cp_error_declarator): Remove.
3242         (currently_open_class): Change return type.
3243         * parser.c (cp_parser_id_expression): Add optional_p parameter.
3244         (cp_parser_parse_diagnose_invalid_type_name): Adjust calls.
3245         (cp_parser_id_expression): Likewise.
3246         (cp_parser_unqualified_id): If the name is optional, return
3247         NULL_TREE.
3248         (cp_parser_postfix_dot_deref_expression): Adjust calls.
3249         (cp_parser_type_parameter): Likewise.
3250         (cp_parser_unqualified_id): Likewise.
3251         (cp_parser_direct_declarator): Likewise.
3252         (cp_parser_declarator_id): Add optional_p parameter.
3253         (cp_parser_function_definition_from_specifiers_and_declarator):
3254         Assume that start_function indicates failure only if it has issued
3255         an error.
3256         (cp_parser_omp_var_list_no_open): Adjust calls.
3257
3258 2006-04-17  Janis Johnson  <janis187@us.ibm.com>
3259
3260         PR c++/26114, c++/26115
3261         * typeck.c (cxx_mark_addressable): Restore check for extra_warnings.
3262         * class.c (check_field_decls): Ditto.
3263
3264 2006-04-17  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3265
3266         * init.c (build_offset_ref): Remove superfluous temporary.
3267
3268 2006-04-16  Mark Mitchell  <mark@codesourcery.com>
3269
3270         PR c++/26365
3271         * typeck.c (finish_class_member_access_expr): Robustify
3272
3273 2006-04-15  Kazu Hirata  <kazu@codesourcery.com>
3274
3275         * Make-lang.in (cp/pt.o): Depend on vecprim.h.
3276         * pt.c: Include vecprim.h.
3277         (inline_parm_levels): Change the type to VEC(int,heap) *.
3278         (inline_parm_levels_used): Remove.
3279         (maybe_begin_member_template_processing,
3280         maybe_end_member_template_processing): Use VEC instead of
3281         VARRAY.
3282
3283         * cp/call.c: Fix comment typos.
3284
3285 2006-04-12  Mark Mitchell  <mark@codesourcery.com>
3286
3287         * parser.c (cp_parser_init_declarator): Initialize local variables
3288         aggressively.
3289
3290 2006-04-12  Roger Sayle  <roger@eyesopen.com>
3291
3292         * parser.c (cp_parser_init_declarator): Initialise
3293         is_parenthesized_init to false to avoid compiler warning.
3294
3295 2006-04-11  Mark Mitchell  <mark@codesourcery.com>
3296
3297         * cp-tree.h (build_operator_new_call): Adjust prototype.
3298         (build_new_method_call): Likewise.
3299         (build_op_delete_call): Likewise.
3300         * init.c (build_raw_new_expr): New function.
3301         (build_new_1): Pass information as parameters, rather than
3302         bundling it into a NEW_EXPR.
3303         (build_new): Adjust accordingly.
3304         (build_vec_delete_1): Adjust for changes to build_op_delete_call.
3305         (build_delete): Likewise.
3306         * decl.c (finish_destructor_body): Likewise.
3307         * call.c (build_operator_new_call): Return the allocation function
3308         used.
3309         (build_op_delete_call): Take allocation function as parameter.
3310         (build_special_member_call): Adjust call to build_new_method_call.
3311         (build_new_method_call): Return function called.
3312         * pt.c (tsubst_copy_and_build): Adjust call to
3313         build_new_method_call.
3314         * semantics.c (finish_call_expr): Likewise.
3315         * parser.c (cp_parser_postfix_expression): Likewise.
3316         * typeck2.c (cxx_incomplete_type_diagnostic): Refer to
3317         "incomplete", not "undefined", types.
3318
3319         PR c++/26295
3320         * decl.c (grokdeclarator): Remove namespace-handling code for
3321         pointers-to-members.
3322         * parser.c (cp_parser_ptr_operator): Check for qualified names
3323         using namespaces.
3324
3325         PR c++/26122
3326         * parser.c (cp_parser_init_declarator): Adjust logic for deciding
3327         whether or not to look for a pure-specifier.
3328         (cp_parser_member_declaration): Likewise.
3329
3330 2006-04-08  Kazu Hirata  <kazu@codesourcery.com>
3331
3332         * decl2.c, pt.c, semantics.c: Fix comment typos.
3333
3334 2006-04-06  Roger Sayle  <roger@eyesopen.com>
3335
3336         * call.c (null_ptr_cst_p): Add explicit TREE_CONSTANT_OVERFLOW check.
3337
3338 2006-04-05  Jason Merrill  <jason@redhat.com>
3339
3340         * name-lookup.c (push_namespace_with_attribs): Temporarily disable
3341         default hidden visibility for anonymous namespace.
3342
3343 2006-03-29  Roger Sayle  <roger@eyesopen.com>
3344
3345         PR c++/22494
3346         * init.c (build_vec_delete_1): Convert BASE pointer's type to
3347         the base pointer type to avoid a type mismatch in the EQ_EXPR.
3348
3349 2006-03-24  Carlos O'Donell  <carlos@codesourcery.com>
3350
3351         * search.c (maybe_suppress_debug_info): If
3352         flag_emit_class_debug_always then don't suppress.
3353
3354 2006-03-22  Jason Merrill  <jason@redhat.com>
3355
3356         * name-lookup.c (push_namespace_with_attribs): Only apply hidden
3357         visibility to anonymous namespaces if HAVE_GAS_HIDDEN.
3358
3359 2006-03-21  Jakub Jelinek  <jakub@redhat.com>
3360
3361         PR c++/26691
3362         * cp-gimplify.c (cxx_omp_clause_apply_fn): Handle default arguments.
3363
3364 2006-03-21  Jason Merrill  <jason@redhat.com>
3365
3366         PR c++/21581
3367         * parser.c (cp_parser_declaration): Support attributes on
3368         anonymous namespaces.
3369         * name-lookup.c (push_namespace_with_attribs): Anonymous
3370         namespaces default to hidden visibility.
3371
3372 2006-03-20  Jason Merrill  <jason@redhat.com>
3373
3374         PR c++/21764, c++/19238
3375         * decl.c (cp_finish_decl): Call determine_visibility later.
3376         (start_preparsed_function): Likewise.
3377         * cp-tree.h (CP_TYPE_CONTEXT, TYPE_NAMESPACE_SCOPE_P): New macros.
3378         (TYPE_CLASS_SCOPE_P, TYPE_FUNCTION_SCOPE_P): New macros.
3379         * name-lookup.h (struct cp_binding_level): Add has_visibility
3380         bitfield.
3381         * name-lookup.c: Include c-pragma.h.
3382         (push_namespace_with_attribs): Split out from push_namespace.
3383         Push visibility if appropriate.  Set TREE_PUBLIC on namespaces.
3384         (leave_scope): Pop visibility if appropriate.
3385         * decl2.c (determine_visibility_from_class): Split out from...
3386         (determine_visibility): ...here.  Handle function scope and
3387         nested classes.
3388         (import_export_decl): Move visibility handling to
3389         determine_visibility_from_class.
3390         * parser.c (cp_parser_declaration, cp_parser_namespace_name): Allow
3391         attributes on namespace declarations.
3392
3393 2006-03-15  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3394
3395         PR c++/6634
3396         * decl.c (grokdeclarator): Do not accept long long double.
3397         Reorganize checks for invalid (combinations of) type modifiers.
3398         Quote modifiers in messages.
3399
3400 2006-03-09  Jason Merrill  <jason@redhat.com>
3401
3402         PR c++/16387, c++/16389
3403         * typeck.c (cxx_alignof_expr, cxx_sizeof_expr): New functions.
3404         (cxx_sizeof_or_alignof_expr): Split out from here.
3405
3406 2006-03-09  Diego Novillo  <dnovillo@redhat.com>
3407
3408         Merge from gomp-20050608-branch
3409
3410         2006-02-02  Diego Novillo  <dnovillo@redhat.com>
3411
3412                 * decl.c (pop_labels_1): Use appropriate pointer casting.
3413                 (poplevel_named_label_1): Likewise.
3414                 (named_label_entry_hash): Likewise.
3415                 (named_label_entry_eq): Likewise.
3416                 (check_goto): Likewise.
3417                 (define_label): Likewise.
3418
3419         2006-01-26  Diego Novillo  <dnovillo@redhat.com>
3420
3421                 * cp-tree.h (CP_OMP_CLAUSE_INFO): Use TREE_TYPE instead
3422                 of TREE_BLOCK.
3423                 * pt.c: Use OMP_CLAUSE_CODE and OMP_CLAUSE_OPERAND
3424                 instead of TREE_CODE/TREE_OPERAND.
3425                 * semantics.c: Likewise.
3426                 * parser.c: Likewise.
3427
3428         2005-11-10  Diego Novillo  <dnovillo@redhat.com>
3429
3430                 * parser.c (cp_parser_omp_threadprivate): Emit diagnostic if
3431                 target does not support TLS.
3432
3433         2005-11-09  Jakub Jelinek  <jakub@redhat.com>
3434
3435                 * decl.c (redeclaration_error_message): Don't error about
3436                 DECL_THREAD_LOCAL_P mismatches if CP_DECL_THREADPRIVATE_P
3437                 (olddecl).
3438
3439         2005-11-08  Jakub Jelinek  <jakub@redhat.com>
3440
3441                 PR c++/24735
3442                 * semantics.c (finish_omp_barrier, finish_omp_flush): New
3443                   functions.
3444                 * parser.c (cp_parser_omp_barrier): Call finish_omp_barrier.
3445                 (cp_parser_omp_flush): Call finish_omp_flush.
3446                 * cp-tree.h (finish_omp_barrier, finish_omp_flush): New
3447                   prototypes.
3448
3449                 PR c++/24734
3450                 * pt.c (tsubst_expr): Handle OMP_MASTER and OMP_ORDERED.
3451
3452         2005-11-03  Jakub Jelinek  <jakub@redhat.com>
3453
3454                 * semantics.c (finish_omp_threadprivate): Error on class-scope
3455                 variables.
3456
3457         2005-11-02  Jakub Jelinek  <jakub@redhat.com>
3458
3459                 * parser.c (cp_parser_omp_all_clauses): If some clause
3460                 type is not allowed, don't remove just one of the
3461                 clauses, but all clauses added in that loop round.
3462
3463                 * semantics.c (finish_omp_clauses): Fix function
3464                 comment. Don't handle non-const or mutable specially,
3465                 as const and not mutable is predetermined shared and
3466     &