OSDN Git Service

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