OSDN Git Service

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