OSDN Git Service

PR c++/23194
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
1 2008-06-24  Jonathan Wakely  <jwakely.gcc@gmail.com>
2
3         PR c++/23194
4         * typeck.c (cp_build_function_call): Show example syntax in
5         diagnostic.
6
7 2008-06-21  Jonathan Wakely  <jwakely.gcc@gmail.com>
8
9         * typeck.c (composite_pointer_type_r, cxx_sizeof_expr,
10         cxx_alignof_expr, check_template_keyword, cp_build_binary_op,
11         pointer_diff, cp_build_unary_op, build_x_compound_expr_from_list,
12         build_reinterpret_cast_1, cp_build_c_cast, check_return_expr): Change
13         pedwarn to permerror.
14         * init.c (perform_member_init, build_new_1, build_new): Likewise.
15         * decl.c (warn_extern_redeclared_static, duplicate_decls,
16         * identify_goto, check_previous_goto_1, check_goto, define_label,
17         check_tag_decl, start_decl, check_class_member_definition_namespace,
18         grokfndecl, grokdeclarator): Likewise.
19         * except.c (check_handlers): Likewise.
20         * typeck2.c (digest_init): Likewise.
21         * pt.c (check_specialization_namespace,
22         check_explicit_instantiation_namespace,
23         maybe_process_partial_specialization, check_explicit_specialization,
24         convert_template_argument, do_decl_instantiation,
25         do_type_instantiation, instantiate_decl): Likewise.
26         * semantics.c (finish_template_type_parm): Likewise.
27         * name-lookup.c (pushdecl_maybe_friend,
28         check_for_out_of_scope_variable): Likewise.
29         * decl2.c (finish_static_data_member_decl, build_anon_union_vars,
30         coerce_new_type): Likewise.
31         * parser.c (cp_parser_nested_name_specifier_opt,
32         cp_parser_mem_initializer, cp_parser_elaborated_type_specifier,
33         cp_parser_class_head, cp_parser_check_class_key): Likewise.
34         (cp_parser_parameter_declaration): Check flag_permissive instead of
35         flag_pedantic_errors.
36         * call.c (joust): Change pedwarn to warning.
37         * friend.c (make_friend_class): Likewise.
38
39 2008-06-16  Jan Hubicka  <jh@suse.cz>
40
41         * method.c: Include cgraph.h.
42         (use_thunk): Use cgraph_add_new_function instead of calling backend
43         directly.
44
45 2008-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
46
47         * parser.c: Fix comment typo.
48
49 2008-06-14  Simon Martin  <simartin@users.sourceforge.net>
50
51         PR c++/35320
52         * decl2.c (grokbitfield): Receive the list of attributes, pass it to
53         grokdeclarator and apply it to the created declaration.
54         * cp-tree.h (grokbitfield): Update prototype.
55         * parser.c (cp_parser_member_declaration): Don't apply the attributes
56         since they are now applied in grokbitfield. Adjusted the call to
57         grokbitfield.
58         (cp_parser_objc_class_ivars): Likewise.
59
60 2008-06-14  Simon Martin  <simartin@users.sourceforge.net>
61
62         PR c++/35317
63         * class.c (type_requires_array_cookie): Do not consider delete[]
64         operators with an ellipsis as second argument.
65
66 2008-06-09  Jakub Jelinek  <jakub@redhat.com>
67
68         PR c++/36408
69         * semantics.c (stmt_expr_value_expr): Don't crash on empty
70         STATEMENT_LIST.
71
72 2008-06-08  Paolo Carlini  <paolo.carlini@oracle.com>
73
74         PR c++/35242
75         * pt.c (maybe_process_partial_specialization): Check the tree
76         returned by push_template_decl for error_mark_node.
77         * parser.c (cp_parser_class_head): Likewise, check the tree
78         returned by the latter. 
79
80 2008-06-07  Paolo Carlini  <paolo.carlini@oracle.com>
81
82         PR c++/35327
83         * decl.c (grokdeclarator): In case of wrong return type return
84         immediately error_mark_node.
85
86 2008-06-06  Jakub Jelinek  <jakub@redhat.com>
87
88         * cp-tree.h (cxx_omp_finish_clause, cxx_omp_create_clause_info,
89         dependent_omp_for_p, begin_omp_task, finish_omp_task,
90         finish_omp_taskwait): New prototypes.
91         (cxx_omp_clause_default_ctor): Add outer argument.
92         (finish_omp_for): Add new clauses argument.
93         * cp-gimplify.c (cxx_omp_finish_clause): New function.
94         (cxx_omp_predetermined_sharing): Moved from semantics.c, rewritten.
95         (cxx_omp_clause_default_ctor): Add outer argument.
96         (cp_genericize_r): Walk OMP_CLAUSE_LASTPRIVATE_STMT.
97         * cp-objcp-common.h (LANG_HOOKS_OMP_FINISH_CLAUSE): Define.
98         * parser.c (cp_parser_omp_for_loop): Parse collapsed for loops.
99         Add par_clauses argument.  If decl is present in parallel's
100         lastprivate clause, change that clause to shared and add
101         a lastprivate clause for decl to OMP_FOR_CLAUSES.
102         Fix wording of error messages.  Adjust finish_omp_for caller.
103         Add clauses argument.  Parse loops with random access iterators.
104         (cp_parser_omp_clause_collapse, cp_parser_omp_clause_untied): New
105         functions.
106         (cp_parser_omp_for, cp_parser_omp_parallel): Adjust
107         cp_parser_omp_for_loop callers.
108         (cp_parser_omp_for_cond, cp_parser_omp_for_incr): New helper
109         functions.
110         (cp_parser_omp_clause_name): Handle collapse and untied
111         clauses.
112         (cp_parser_omp_clause_schedule): Handle auto schedule.
113         (cp_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_COLLAPSE
114         and PRAGMA_OMP_CLAUSE_UNTIED.
115         (OMP_FOR_CLAUSE_MASK): Add PRAGMA_OMP_CLAUSE_COLLAPSE.
116         (OMP_TASK_CLAUSE_MASK): Define.
117         (cp_parser_omp_task, cp_parser_omp_taskwait): New functions.
118         (cp_parser_omp_construct): Handle PRAGMA_OMP_TASK.
119         (cp_parser_pragma): Handle PRAGMA_OMP_TASK and
120         PRAGMA_OMP_TASKWAIT.
121         * pt.c (tsubst_omp_clauses): Handle OMP_CLAUSE_COLLAPSE and
122         OMP_CLAUSE_UNTIED.  Handle OMP_CLAUSE_LASTPRIVATE_STMT.
123         (tsubst_omp_for_iterator): New function.
124         (dependent_omp_for_p): New function.
125         (tsubst_expr) <case OMP_FOR>: Use it.  Handle collapsed OMP_FOR
126         loops.  Adjust finish_omp_for caller.  Handle loops with random
127         access iterators.  Adjust for OMP_FOR_{INIT,COND,INCR} changes.
128         (tsubst_expr): Handle OMP_TASK.
129         * semantics.c (cxx_omp_create_clause_info): New function.
130         (finish_omp_clauses): Call it.  Handle OMP_CLAUSE_UNTIED and
131         OMP_CLAUSE_COLLAPSE.
132         (cxx_omp_predetermined_sharing): Removed.
133         * semantics.c (finish_omp_for): Allow pointer iterators.  Use
134         handle_omp_for_class_iterator and dependent_omp_for_p.  Handle
135         collapsed for loops.  Adjust c_finish_omp_for caller.  Add new
136         clauses argument.  Fix check for type dependent cond or incr.
137         Set OMP_FOR_CLAUSES to clauses.  Use cp_convert instead of
138         fold_convert to convert incr amount to difference_type.  Only
139         fold if not in template.  If decl is mentioned in lastprivate
140         clause, set OMP_CLAUSE_LASTPRIVATE_STMT.  Handle loops with random
141         access iterators.  Adjust for OMP_FOR_{INIT,COND,INCR}
142         changes.
143         (finish_omp_threadprivate): Allow static class members of the
144         current class.
145         (handle_omp_for_class_iterator, begin_omp_task, finish_omp_task,
146         finish_omp_taskwait): New functions.
147
148         * parser.c (cp_parser_binary_expression): Add prec argument.
149         (cp_parser_assignment_expression): Adjust caller.
150         * cp-tree.h (outer_curly_brace_block): New prototype.
151         * decl.c (outer_curly_brace_block): No longer static.
152
153 2008-06-02  Paolo Carlini  <paolo.carlini@oracle.com>
154
155         PR c++/36404
156         * pt.c (push_template_decl_real): Consistently return error_mark_node
157         on error.
158
159 2008-06-02  Tomas Bily  <tbily@suse.cz>
160
161         * typeck.c (is_bitfield_expr_with_lowered_type): Use CASE_CONVERT.
162         (cp_build_unary_op): Likewise.
163         (cp_build_indirect_ref): Use CONVERT_EXPR_P.
164         (maybe_warn_about_returning_address_of_local): Likewise.
165
166 2008-05-29  Paolo Carlini  <paolo.carlini@oracle.com>
167
168         PR c++/35243
169         * pt.c (tsubst_initializer_list): Consistently check the tree
170         returned by tsubst_pack_expansion for error_mark_node.
171
172 2008-05-27  Michael Matz  <matz@suse.de>
173
174         PR c++/27975
175         * call.c (build_new_op): Make warning conditional on
176         OPT_Wenum_compare.
177
178 2008-05-27  Alexandre Oliva  <aoliva@redhat.com>
179
180         PR c++/35909
181         * call.c (convert_like_real): Convert bitfield to desired type
182         before creating temporary.
183
184 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
185
186         * Makefile.in: Adjusted dependencies on c-incpath.o.
187
188 2008-05-23  Jakub Jelinek  <jakub@redhat.com>
189
190         PR c++/36237
191         * cp-gimplify.c (cxx_omp_clause_apply_fn): Call
192         fold_build_cleanup_point_expr on build_call_a results.
193
194         PR c++/36308
195         * semantics.c (omp_clause_info_fndecl): New function.
196         (finish_omp_clauses): Use it.
197
198 2008-05-21  Jakub Jelinek  <jakub@redhat.com>
199
200         PR c++/36023
201         * cp-tree.h (check_array_initializer): New prototype.
202         * decl.c (check_array_initializer): New function.
203         (check_initializer): Call it.
204         * semantics.c (finish_compound_literal): Call it for ARRAY_TYPEs.
205
206 2008-05-21  Tom Tromey  <tromey@redhat.com>
207
208         * mangle.c (save_partially_mangled_name): Remove.
209         (restore_partially_mangled_name): Likewise.
210         (write_encoding): Update.
211         (write_unqualified_name): Likewise.
212         (start_mangling): Always use name_obstack.  Remove 'ident_p'
213         argument.
214         (get_identifier_nocopy): Remove.
215         (finish_mangling_internal): Rename from finish_mangling.
216         (finish_mangling): New function.
217         (finish_mangling_get_identifier): Likewise.
218         (partially_mangled_name, partially_mangled_name_len): Remove.
219         (mangle_decl_string): Change return type.  Update.
220         (mangle_decl, mangle_type_string, mangle_special_for_type,
221         mangle_ctor_vtbl_for_type, mangle_thunk, mangle_guard_variable,
222         mangle_ref_init_variable): Update.
223
224 2008-05-12  Paolo Carlini  <paolo.carlini@oracle.com>
225
226         PR c++/35331
227         * semantics.c (begin_class_definition): Extend checks on the first
228         argument.
229
230 2008-05-12  Tomas Bily  <tbily@suse.cz>
231
232         * typeck2.c (digest_init): Use CONVERT_EXPR_P.
233         * call.c (build_over_call): Likewise.
234         * error.c (dump_expr): Use CASE_CONVERT.
235         * class.c (fixed_type_or_null): Likewise.
236
237 2008-05-11  Volker Reichelt  <v.reichelt@netcologne.de>
238
239         * parser.c (cp_parser_omp_clause_reduction): Add missing "expected"
240         in error message.
241         (cp_parser_omp_clause_schedule): Remove superfluous "expected"
242         in error message.
243
244 2008-05-07  Kenneth Zadeck  <zadeck@naturalbridge.com>
245
246         * decl.c (duplicate_decls): Merge in DECL_PURE_P, TREE_READONLY,
247         DECL_LOOPING_CONST_OR_PURE_P attributes.
248         * rtti.c (build_dynamic_cast_1): Rename DECL_IS_PURE to
249         DECL_PURE_P.
250
251 2008-05-02  Simon Baldwin  <simonb@google.com>
252
253         PR bootstrap/36108
254         * typeck.c (build_array_ref): Remove warn_array_subscript_range.
255
256 2008-05-01  Simon Baldwin  <simonb@google.com>
257
258         * typeck.c (build_array_ref): Call warn_array_subscript_range.
259
260 2008-04-30  Jakub Jelinek  <jakub@redhat.com>
261
262         PR c++/35986
263         * pt.c (more_specialized_fn): Stop the loop even if there are no
264         arguments before ellipsis.
265
266 2008-04-29  Jakub Jelinek  <jakub@redhat.com>
267
268         PR c++/35650
269         * parser.c (cp_parser_lookup_name): Look through single function
270         OVERLOAD.
271
272         PR c++/35987
273         * typeck.c (cp_build_modify_expr) <case PREINCREMENT_EXPR>: Don't build
274         COMPOUND_EXPR if the second argument would be error_mark_node.
275
276 2008-04-28  Jason Merrill  <jason@redhat.com>
277             Liu Guanwei <liu_gw@163.com>
278
279         PR c++/57
280         * parser.c (cp_parser_parameter_declaration): Handle < ambiguity
281         in default arguments.
282
283 2008-04-25  Jan Hubicka  <jh@suse.cz>
284
285         * typeck.c (check_return_expr): Update.
286         * decl.c (start_preparsed_function): Update.
287         * method.c (use_thunk): Update.
288
289 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
290
291         PR c++/35758
292         * cp-tree.h (cp_reconstruct_complex_type): New prototype.
293         * cp-objcp-common.h (LANG_HOOKS_RECONSTRUCT_COMPLEX_TYPE): Define.
294         * decl2.c (is_late_template_attribute): Only make vector_size
295         late tmpl attribute if argument is type or value dependent.
296         (cp_reconstruct_complex_type): New function.
297
298 2008-04-24  Richard Guenther  <rguenther@suse.de>
299
300         * typeck.c (cp_build_function_call): Call
301         check_builtin_function_arguments.
302
303 2008-04-23  Paolo Bonzini  <bonzini@gnu.org>
304
305         * typeck.c (get_member_function_from_ptrfunc): Don't set TREE_INVARIANT.
306         (build_ptrmemfunc1): Don't set TREE_INVARIANT.
307         * init.c (build_zero_init): Don't set TREE_INVARIANT.
308         * class.c (build_base_path): Don't set TREE_INVARIANT.
309         (build_vtbl_ref_1): Don't set TREE_INVARIANT.
310         (build_vtbl_initializer): Don't set TREE_INVARIANT.
311         * decl.c (build_enumerator): Don't set TREE_INVARIANT.
312         * rtti.c (tinfo_base_init): Don't set TREE_INVARIANT.
313         (generic_initializer): Don't set TREE_INVARIANT.
314         (ptr_initializer): Don't set TREE_INVARIANT.
315         (ptm_initializer): Don't set TREE_INVARIANT.
316         (class_initializer): Don't set TREE_INVARIANT.
317         * typeck2.c (process_init_constructor): Don't set TREE_INVARIANT.
318         * pt.c (push_inline_template_parms_recursive): Don't set TREE_INVARIANT.
319         (build_template_parm_index): Don't set TREE_INVARIANT.
320         (reduce_template_parm_level): Don't set TREE_INVARIANT.
321         (process_template_parm): Don't set TREE_INVARIANT.
322
323 2008-04-22  Jason Merrill  <jason@redhat.com>
324
325         PR c++/35316
326         * semantics.c (finish_decltype_type): Check DECL_BIT_FIELD_TYPE
327         to see if DECL_BIT_FIELD_TYPE should be used, not some other flag.
328         * typeck.c (is_bitfield_expr_with_lowered_type): Likewise.
329
330 2008-04-22  Jakub Jelinek  <jakub@redhat.com>
331
332         PR c++/35747
333         * semantics.c (finish_stmt_expr): Call pop_stmt_list even if the stmt
334         expression is errorneous.
335
336 2008-04-21  Jason Merrill  <jason@redhat.com>
337
338         PR c++/35325
339         * tree.c (cp_tree_equal): Handle FIXED_CST.
340
341         PR c++/35678
342         * pt.c (template_template_parm_bindings_ok_p): Set 
343         processing_template_decl while in this function.
344
345 2008-04-18  Kris Van Hees <kris.van.hees@oracle.com>
346
347         * cvt.c (type_promotes_to): Support char16_t and char32_t.
348         * decl.c (grokdeclarator): Disallow signed/unsigned/short/long on
349         char16_t and char32_t.
350         * lex.c (reswords): Add char16_t and char32_t (for c++0x).
351         * mangle.c (write_builtin_type): Mangle char16_t/char32_t as vendor
352         extended builtin type "u8char{16,32}_t".
353         * parser.c (cp_lexer_next_token_is_decl_specifier_keyword): Support
354         RID_CHAR{16,32}.
355         (cp_lexer_print_token): Support CPP_STRING{16,32}.
356         (cp_parser_is_string_literal): Idem.
357         (cp_parser_string_literal): Idem.
358         (cp_parser_primary_expression): Support CPP_CHAR{16,32} and
359         CPP_STRING{16,32}.
360         (cp_parser_simple_type_specifier): Support RID_CHAR{16,32}. 
361         * tree.c (char_type_p): Support char16_t and char32_t as char types.
362         * typeck.c (string_conv_p): Support char16_t and char32_t.
363
364 2008-04-17  Jason Merrill  <jason@redhat.com>
365
366         PR c++/35773
367         * call.c (build_user_type_conversion_1): Represent second step of 
368         copy-init with an rvalue conversion.
369         (convert_like_real) [ck_user]: Don't implicitly add it here.
370
371 2008-04-15  Jakub Jelinek  <jakub@redhat.com>
372
373         PR c/35751
374         * decl.c (layout_var_decl): If extern or static var has variable
375         size, set TREE_TYPE (decl) to error_mark_node.
376
377 2008-04-16  Danny Smith  <dannysmith@users.sourceforge.net>
378
379        PR target/35921
380        * optimize.c (maybe_clone_body): Copy DECL_DLLIMPORT_P flag
381        to clone.
382
383 2008-04-09  Jason Merrill  <jason@redhat.com>
384
385         PR c++/35708
386         * semantics.c (finish_compound_literal): Return a TARGET_EXPR, 
387         not a pushed variable.
388
389 2008-04-09  Volker Reichelt  <v.reichelt@netcologne.de>
390
391         * call.c (build_op_delete_call): Fix quotation in warning message.
392         * decl.c (grokdeclarator): Quote keyword in error message.
393         * pt.c (check_for_bare_parameter_packs): Fix quotation in error
394         message.
395
396         * parser.c (cp_parser_check_type_definition): Print error string
397         directly rather than using "%s".
398         (cp_parser_postfix_expression): Fix quotation.
399         (cp_parser_decltype): Likewise.
400         (cp_parser_sizeof_operand): Fix quotation. Simplify.
401
402         * parser.c (cp_parser_non_integral_constant_expression): Build error
403         message with CONCAT rather than using "%s".
404         (cp_parser_primary_expression): Fix quotation.
405         (cp_parser_postfix_expression): Likewise.
406         (cp_parser_postfix_dot_deref_expression): Likewise.
407         (cp_parser_unary_expression): Likewise.
408         (cp_parser_new_expression): Likewise.
409         (cp_parser_delete_expression): Likewise.
410
411         * parser.c (cp_parser_asm_specification_opt): Print CPP_CLOSE_PAREN
412         as `)', not as `('.  Fix quotation.
413         (cp_parser_consume_semicolon_at_end_of_statement): Fix quotation.
414         (cp_parser_primary_expression): Likewise.
415         (cp_parser_nested_name_specifier_opt): Likewise.
416         (cp_parser_postfix_expression): Likewise.
417         (cp_parser_postfix_open_square_expression): Likewise.
418         (cp_parser_parenthesized_expression_list): Likewise.
419         (cp_parser_pseudo_destructor_name): Likewise.
420         (cp_parser_new_expression): Likewise.
421         (cp_parser_direct_new_declarator): Likewise.
422         (cp_parser_delete_expression): Likewise.
423         (cp_parser_cast_expression): Likewise.
424         (cp_parser_question_colon_clause): Likewise.
425         (cp_parser_builtin_offsetof): Likewise.
426         (cp_parser_trait_expr): Likewise.
427         (cp_parser_label_for_labeled_statement): Likewise.
428         (cp_parser_compound_statement): Likewise.
429         (cp_parser_selection_statement): Likewise.
430         (cp_parser_condition): Likewise.
431         (cp_parser_iteration_statement): Likewise.
432         (cp_parser_already_scoped_statement): Likewise.
433         (cp_parser_simple_declaration): Likewise.
434         (cp_parser_linkage_specification): Likewise.
435         (cp_parser_static_assert): Likewise.
436         (cp_parser_decltype): Likewise.
437         (cp_parser_conversion_function_id): Likewise.
438         (cp_parser_operator_function_id): Likewise.
439         (cp_parser_operator): Likewise.
440         (cp_parser_type_parameter): Likewise.
441         (cp_parser_template_id): Likewise.
442         (cp_parser_explicit_instantiation): Likewise.
443         (cp_parser_explicit_specialization): Likewise.
444         (cp_parser_enum_specifier): Likewise.
445         (cp_parser_namespace_definition): Likewise.
446         (cp_parser_namespace_alias_definition): Likewise.
447         (cp_parser_using_declaration): Likewise.
448         (cp_parser_using_directive): Likewise.
449         (cp_parser_asm_definition): Likewise.
450         (cp_parser_direct_declarator): Likewise.
451         (cp_parser_ptr_operator): Likewise.
452         (cp_parser_parameter_declaration_clause): Likewise.
453         (cp_parser_initializer_clause): Likewise.
454         (cp_parser_class_specifier): Likewise.
455         (cp_parser_member_specification_opt): Likewise.
456         (cp_parser_member_declaration): Likewise.
457         (cp_parser_pure_specifier): Likewise.
458         (cp_parser_constant_initializer): Likewise.
459         (cp_parser_base_clause): Likewise.
460         (cp_parser_exception_specification_opt): Likewise.
461         (cp_parser_try_block): Likewise.
462         (cp_parser_function_try_block): Likewise.
463         (cp_parser_handler): Likewise.
464         (cp_parser_throw_expression): Likewise.
465         (cp_parser_asm_operand_list): Likewise.
466         (cp_parser_attributes_opt): Likewise.
467         (cp_parser_label_declaration): Likewise.
468         (cp_parser_constructor_declarator_p): Likewise.
469         (cp_parser_template_declaration_after_export): Likewise.
470         (cp_parser_single_declaration): Likewise.
471         (cp_parser_objc_message_expression): Likewise.
472         (cp_parser_objc_message_args): Likewise.
473         (cp_parser_objc_encode_expression): Likewise.
474         (cp_parser_objc_defs_expression): Likewise.
475         (cp_parser_objc_protocol_expression): Likewise.
476         (cp_parser_objc_selector_expression): Likewise.
477         (cp_parser_objc_protocol_refs_opt): Likewise.
478         (cp_parser_objc_typename): Likewise.
479         (cp_parser_objc_method_keyword_params): Likewise.
480         (cp_parser_objc_superclass_or_category): Likewise.
481         (cp_parser_objc_try_catch_finally_statement): Likewise.
482         (cp_parser_objc_synchronized_statement): Likewise.
483         (cp_parser_objc_throw_statement): Likewise.
484         (cp_parser_omp_var_list_no_open): Likewise.
485         (cp_parser_omp_clause_default): Likewise.
486         (cp_parser_omp_clause_if): Likewise.
487         (cp_parser_omp_clause_num_threads): Likewise.
488         (cp_parser_omp_clause_reduction): Likewise.
489         (cp_parser_omp_clause_schedule): Likewise.
490         (cp_parser_omp_critical): Likewise.
491         (cp_parser_omp_for_loop): Likewise.
492         (cp_parser_omp_sections_scope): Likewise.
493
494         * parser.c (cp_parser_template_parameter_list): Simplify.
495
496 2008-04-07  James E. Wilson  <wilson@tuliptree.org>
497
498         * pt.c (tsubst_copy, case SIZEOF_EXPR): Initialize len.
499
500 2008-04-07  Jason Merrill  <jason@redhat.com>
501
502         PR c++/35734
503         * class.c (type_has_user_nondefault_constructor): A template 
504         counts as a nondefault constructor.
505
506 2008-04-04  Paolo Bonzini  <bonzini@gnu.org>
507
508         * decl.c (cxx_push_function_context): Delete.
509         (cxx_pop_function_context): Delete.
510         (start_preparsed_function): Merge cxx_push_function_context (!f->decl
511         code only).
512         * cp-objcp-common.h (LANG_HOOKS_FUNCTION_INIT,
513         LANG_HOOKS_FUNCTION_FINAL): Delete.
514         (LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P): Rename to
515         LANG_HOOKS_MISSING_NORETURN_OK_P.
516         * cp-tree.h (cxx_push_function_context, cxx_pop_function_context):
517         Delete prototype.
518         * semantics.c (current_stmt_tree): Fix comment.
519
520 2008-04-03  Jakub Jelinek  <jakub@redhat.com>
521
522         PR c++/35741
523         * semantics.c (finish_offsetof): Undo effect of convert_from_reference
524         before calling fold_offsetof.
525
526 2008-04-03  Tom Tromey  <tromey@redhat.com>
527
528         * Make-lang.in (c++_OBJS): New variable.
529
530 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
531     
532         * optimize.c (clone_body): New, from tree-inline.c.
533
534 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
535
536         * method.c (synthesize_method): Use {push,pop}_function_context.
537         * name-lookup.c (push_to_top_level): Likewise.
538         * parser.c (cp_parser_late_parsing_for_member): Likewise.
539
540 2008-03-30  Volker Reichelt  <v.reichelt@netcologne.de>
541
542         PR c++/35578
543         * parser.c (cp_parser_decl_specifier_seq): Add location to error
544         message.
545
546 2008-03-27  Tom Tromey  <tromey@redhat.com>
547
548         * Make-lang.in: Revert automatic dependency patch.
549
550 2008-03-27  Douglas Gregor  <doug.gregor@gmail.com>
551
552         PR obj-c++/35704
553         * typeck.c (build_x_compound_expr): Use cp_build_compound_expr.
554         (build_compound_expr): New, for compatibility with C
555         build_compound_expr.
556         (cp_build_compound_expr): Renamed from build_compound_expr.
557         (build_c_cast): New, for compatibility with C build_c_cast.
558         (cp_build_c_cast): Renamed from build_c_cast.
559         * init.c (build_vec_delete_1): Fix calls to build_compound_expr.
560         * decl.c (cxx_maybe_build_cleanup): Ditto.
561         * cp-tree.h (build_compound_expr): Add C-compatibile prototype.
562         (cp_build_compound_expr): Renamed from build_compound_expr.
563         (build_c_cast): Add C-compatible prototype.
564         (cp_build_c_cast): Renamed from build_c_cast.
565         * typeck2.c (build_functional_cast): Use cp_build_c_cast.
566         * parser.c (cp_parser_cast_expression): Fix call to build_c_cast.
567
568 2008-03-27  Douglas Gregor  <doug.gregor@gmail.com>
569
570         * pt.c (tsubst_copy) <case SIZEOF_EXPR>: Cope with
571         tsubst_pack_expansion returning a pack expansion, or a TREE_VEC
572         ending in a pack expansion, both of which can occur when
573         substituting into a nested template.
574         (tsubst_copy_and_build) <case SIZEOF_EXPR>: When we're
575         instantiating the sizeof...(X) form, make tsubst_copy do the work.
576         * parser.c (cp_parser_template_parameter): Deal with unnamed
577         non-type template parameter packs identified by pack expansions in
578         the parameter type.
579
580 2008-03-26  Jakub Jelinek  <jakub@redhat.com>
581
582         PR c++/35546
583         * pt.c (apply_late_template_attributes): Don't call tsubst on
584         first attribute argument if it is IDENTIFIER_NODE.
585
586         PR c++/35332
587         * error.c (dump_expr): Pass {,UN}ORDERED_EXPR, UN{LT,LE,GT,GE,EQ}_EXPR
588         and LTGT_EXPR to pp_expression.
589
590 2008-03-26  Douglas Gregor  <doug.gregor@gmail.com>
591
592        * pt.c (coerce_template_template_parm): Moved the body of the loop
593        of coerce_template_template_parms here, to make iteration over a
594        template argument pack simpler.
595        Also, allow matching of a template parameter pack in the template
596        template parameter to a template parameter in the template
597        template argument.
598        (coerce_template_template_parms): Deal with variadic template
599        template parameters. Use coerce_template_template_parm.
600        (unify): Make sure we coerce the template template argument's
601        template arguments to the template template parameter's template
602        parameters, not the other way around.
603
604 2008-03-25  Tom Tromey  <tromey@redhat.com>
605
606         * Make-lang.in: Remove .o targets.
607         (cp/g++spec.o): Moved to cp/.  Reduce to variable setting.
608         (GXX_OBJS): Update.
609         (c++_OBJS): New variable.
610         (CXX_TREE_H, CXX_PRETTY_PRINT_H): Remove.
611
612 2008-03-25  Douglas Gregor  <doug.gregor@gmail.com>
613
614        * typeck.c (composite_pointer_type_r): Add SFINAE support.
615        (composite_pointer_type): Ditto.
616        (common_type): Fix call to composite_pointer_type.
617        (cxx_sizeof_nowarn): New; used to be a macro.
618        (cxx_sizeof_expr): Add SFINAE support.
619        (cxx_alignof_expr): Ditto.
620        (decay_conversion): Fix calls for SFINAE support.
621        (rationalize_conditional_expr): Add SFINAE support.
622        (build_class_member_access_expr): Ditto.
623        (finish_class_member_access_expr): Ditto.
624        (build_x_indirect_ref): Ditto.
625        (build_indirect_ref): Original version renamed to
626        cp_build_indirect_ref; new version provides a bridge from
627        c-common.
628        (cp_build_indirect_ref): Was build_indirect_ref; added SFINAE
629        support.
630        (get_member_function_from_ptrfunc): Fix calls for SFINAE support.
631        (build_function_call): Original version renamed to
632        cp_build_function_call; new version provides a bridge from
633        c-common.
634        (cp_build_function_call): Was build_function_call; added SFINAE
635        support.
636        (convert_arguments): Add SFINAE support.
637        (build_x_binary_op): Ditto.
638        (build_binary_op): Original version renamed to cp_build_binary_op;
639        new version provides a bridge from c-common.
640        (cp_build_binary_op): Was build_binary_op; added SFINAE support.
641        (pointer_diff): Fix calls for SFINAE.
642        (build_x_unary_op): Add SFINAE support.
643        (condition_conversion): Fix calls for SFINAE.
644        (build_unary_op): Original version renamed to cp_build_unary_op;
645        new version provides a bridge from c-common.
646        (cp_build_unary_op): Was build_unary_op; added SFINAE support.
647        (unary_complex_lvalue): Fix calls for SFINAE.
648        (build_x_conditional_expr): Add SFINAE support.
649        (build_x_compound_expr_from_list): Fix calls for SFINAE.
650        (build_x_compound_expr): Add SFINAE support.
651        (convert_ptrmem): Fix calls for SFINAE.
652        (build_static_cast_1): Add SFINAE support.
653        (build_static_cast): Ditto.
654        (build_reinterpret_cast_1): Ditto.
655        (build_reinterpret_cast): Ditto.
656        (build_const_cast_1): Ditto.
657        (build_const_cast): Ditto.
658        (build_c_cast): Ditto.
659        (build_modify_expr): Original version renamed to
660        cp_build_modify_expr; new version provides a bridge from c-common.
661        (cp_build_modify_expr): Was build_modify_expr; added SFINAE
662        support.
663        (build_x_modify_expr): Add SFINAE support.
664        (build_ptrmemfunc): Fix calls for SFINAE.
665        (convert_for_assignment): Add SFINAE support.
666        (convert_for_initialization): Ditto.
667        (check_return_expr): Fix calls for SFINAE.
668        (lvalue_or_else): Add SFINAE support.
669        * init.c (perform_member_init): Fix calls for SFINAE.
670        (emit_mem_initializers): Ditto.
671        (expand_virtual_init): Ditto.
672        (expand_cleanup_for_base): Ditto.
673        (build_aggr_init): Add SFINAE support.
674        (expand_default_init): Ditto.
675        (expand_aggr_init_1): Fix calls for SFINAE.
676        (build_offset_ref): Ditto.
677        (build_new_1): Add SFINAE support.
678        (build_new): Ditto.
679        (build_vec_delete_1): Fix calls for SFINAE.
680        (get_temp_regvar): Ditto.
681        (build_vec_init): Add SFINAE support.
682        (build_dtor_call): Fix calls for SFINAE.
683        (build_delete): Ditto.
684        (push_base_cleanups): Ditto.
685        (build_vec_delete_1): Ditto.
686        * class.c (build_base_path): Fix calls for SFINAE.
687        (build_simple_base_path): Ditto.
688        (convert_to_base_statically): Ditto.
689        (build_vfn_ref): Ditto.
690        (resolve_address_of_overloaded_function): Ditto.
691        * decl.c (check_initializer): Fix calls for SFINAE.
692        (register_dtor_fn): Ditto.
693        (compute_array_index_type): Ditto.
694        (finish_enum): Ditto.
695        (start_preparsed_function): Ditto.
696        (cxx_maybe_build_cleanup): Ditto.
697        * call.c (convert_like): Add COMPLAIN argument.
698        (convert_like_with_context): Ditto.
699        (build_this): Fix calls for SFINAE.
700        (build_user_type_conversion): Ditto.
701        (resolve_args): Ditto.
702        (build_new_function_call): Add SFINAE support.
703        (build_operator_new_call): Fix calls for SFINAE.
704        (build_object_call): Add SFINAE support.
705        (build_conditional_expr): Ditto.
706        (build_new_op): Ditto.
707        (build_op_delete_call): Fix calls for SFINAE.
708        (build_temp): Ditto.
709        (convert_like_real): Add SFINAE support.
710        (build_x_va_arg): Fix calls for SFINAE.
711        (convert_default_arg): Ditto.
712        (build_over_call): Add SFINAE support.
713        (build_java_interface_fn_ref): Fix calls for SFINAE.
714        (build_special_member_call): Add SFINAE support.
715        (build_new_method_call): Ditto.
716        (perform_implicit_conversion): Ditto.
717        (perform_direct_initialization_if_possible): Ditto.
718        (initialize_reference): Fix calls for SFINAE.
719        * method.c (do_build_assign_ref): Fix calls for SFINAE.
720        * rtti.c (build_headof): Fix calls for SFINAE.
721        (get_tinfo_decl_dynamic): Ditto.
722        (get_typeid): Ditto.
723        (build_dynamic_cast_1): Add SFINAE support.
724        (build_dynamic_cast): Ditto.
725        (tinfo_base_init): Fix calls for SFINAE.
726        * except.c (do_get_exception_ptr): Fix calls for SFINAE.
727        (do_end_catch): Ditto.
728        (initialize_handler_parm): Ditto.
729        (expand_start_catch_block): Ditto.
730        (do_allocate_exception): Ditto.
731        (do_free_exception): Ditto.
732        (build_throw): Ditto.
733        * cvt.c (build_up_reference): Fix calls for SFINAE.
734        (convert_to_reference): Ditto.
735        (ocp_convert): Ditto.
736        (convert_to_void): Add SFINAE support.
737        * tree.c (build_dummy_object): Fix calls for SFINAE.
738        (stabilize_expr): Ditto.
739        * cp-tree.h (build_conditional_expr): Add tsubst_flags_t
740        parameter.
741        (build_new_method_call): Ditto.
742        (build_special_member_call): Ditto.
743        (build_new_op): Ditto.
744        (perform_implicit_conversion): Ditto.
745        (perform_direct_initialization_if_possible): Ditto.
746        (convert_to_void): Ditto.
747        (build_aggr_init): Ditto.
748        (build_new): Ditto.
749        (build_vec_init): Ditto.
750        (build_dynamic_cast): Ditto.
751        (finish_call_expr): Ditto
752        (cxx_sizeof_or_alignof_expr): Add COMPLAIN parameter.
753        (cxx_sizeof_nowarn): Remove macro; add function declaration.
754        (build_class_member_access_expr): Add tsubst_flags_t parameter.
755        (finish_class_member_access_expr): Ditto.
756        (build_x_indirect_ref): Ditto.
757        (cp_build_indirect_ref): New.
758        (cp_build_function_call): Add tsubst_flags_t parameter.
759        (build_x_unary_op): Ditto.
760        (cp_build_unary_op): New.
761        (build_x_conditional_expr): Add tsubst_flags_t parameter.
762        (build_x_compound_expr): Ditto.
763        (build_compound_expr): Ditto.
764        (build_static_cast): Ditto.
765        (build_reinterpret_cast): Ditto.
766        (build_const_cast): Ditto.
767        (build_c_cast): Ditto.
768        (build_x_modify_expr): Ditto.
769        (cp_build_modify_expr): New.
770        (convert_for_initialization): Add tsubst_flags_t parameter.
771        (cp_build_binary_op): Remove macro; add function declaration.
772        (invalid_nonstatic_memfn_p): Add tsubst_flags_t parameter.
773        (lvalue_or_else): Ditto.
774        (build_functional_cast): Ditto.
775        * typeck2.c (digest_init): Fix calls for SFINAE.
776        (process_init_constructor_array): Ditto.
777        (process_init_constructor_record): Ditto.
778        (build_x_arrow): Ditto.
779        (build_m_component_ref): Ditto.
780        (build_functional_cast): Add SFINAE support.
781        * pt.c (tsubst_copy_and_build): Add (more) SFINAE support.
782        * semantics.c (simplify_loop_decl_cond): Fix calls for SFINAE.
783        (finish_expr_stmt): Ditto.
784        (finish_for_expr): Ditto.
785        (finish_asm_stmt): Ditto.
786        (finish_non_static_data_member): Ditto.
787        (finish_qualified_id_expr): Ditto.
788        (finish_call_expr): Add SFINAE support.
789        (finish_increment_expr): Fix calls for SFINAE.
790        (finish_unary_op_expr): Ditto.
791        (simplify_aggr_init_expr): Ditto.
792        (finish_omp_clauses): Ditto.
793        (finish_omp_for): Ditto.
794        (finish_omp_barrier): Ditto.
795        (finish_omo_flush): Ditto.
796        * decl2.c (grok_array_decl): Fix calls or SFINAE.
797        (build_anon_union_vars): Ditto.
798        (get_guard_cond): Ditto.
799        (set_guard): Ditto.
800        (one_static_initialization_or_destruction): Ditto.
801        (do_static_initialization_or_destruction): Ditto.
802        (generate_ctor_or_dtor_function): Ditto.
803        (build_offset_ref_call_from_tree): Ditto.
804        * parser.c (cp_parser_postfix_expression): Fix calls for SFINAE.
805        (cp_parser_postfix_dot_deref_expression): Ditto.
806        (cp_parser_unary_expression): Ditto.
807        (cp_parser_new_expression): Ditto.
808        (cp_parser_cast_expression): Ditto.
809        (cp_parser_binary_expression): Ditto.
810        (cp_parser_question_colon_clause): Ditto.
811        (cp_parser_assignment_expression): Ditto.
812        (cp_parser_expression): Ditto.
813        (cp_parser_builtin_offsetof): Ditto.
814        (cp_parser_template_argument): Ditto.
815        (cp_parser_functional_cast): Ditto.
816
817 2008-03-24  Tom Tromey  <tromey@redhat.com>
818
819         * lex.c (handle_pragma_interface): Don't copy the filename.
820         (handle_pragma_implementation): Copy filename using xstrdup.
821
822 2008-03-21  Paolo Carlini  <pcarlini@suse.de>
823
824         * cp-tree.h (IS_AGGR_TYPE): Rename to MAYBE_CLASS_TYPE_P.
825         (SET_IS_AGGR_TYPE): Rename to SET_CLASS_TYPE_P.
826         (IS_AGGR_TYPE_CODE): Rename to RECORD_OR_UNION_CODE_P.
827         (PROMOTES_TO_AGGR_TYPE): Remove.
828         (CLASS_TYPE_P, TYPE_NON_AGGREGATE_CLASS): Adjust.
829         * typeck.c (unary_complex_lvalue, build_modify_expr,
830         convert_for_initialization): Adjust.
831         * init.c (is_aggr_type): Remove.
832         (is_class_type): Add.
833         (build_offset_ref, build_new_1, build_vec_delete_1, build_vec_init,
834         build_delete): Adjust.
835         * lex.c (make_aggr_type): Remove.
836         (make_class_type): Add.
837         (cxx_make_type): Adjust.
838         * class.c (finish_struct_1, fixed_type_or_null, is_empty_class):
839         Adjust.
840         * decl.c (build_typename_type, make_typename_type,
841         make_unbound_class_template, cxx_init_decl_processing,
842         check_tag_decl, groktypename, start_decl_1, layout_var_decl,
843         check_initializer, cp_finish_decl, build_ptrmemfunc_type, grokparms,
844         grok_op_properties, xref_tag, check_function_type): Adjust.
845         * call.c (check_dtor_name, standard_conversion, implicit_conversion,
846         add_builtin_candidate, add_builtin_candidates,
847         build_user_type_conversion_1, convert_like_real, build_cxx_call,
848         is_subseq, compare_ics): Adjust.
849         * method.c (use_thunk): Adjust.
850         * rtti.c (build_dynamic_cast_1, create_pseudo_type_info,
851         create_tinfo_types): Adjust.
852         * cvt.c (cp_convert_to_pointer, convert_to_pointer_force,
853         build_up_reference, convert_to_reference, convert_from_reference,
854         ocp_convert, build_expr_type_conversion): Adjust.
855         * tree.c (bind_template_template_parm, error_type): Adjust.
856         * dump.c (cp_dump_tree): Adjust.
857         * search.c (lookup_member): Adjust.
858         * friend.c (make_friend_class, do_friend): Adjust.
859         * typeck2.c (store_init_value, process_init_constructor_array,
860         process_init_constructor_record, build_x_arrow, build_m_component_ref,
861         build_functional_cast): Adjust.
862         * pt.c (finish_member_template_decl, process_template_parm,
863         lookup_template_class, tsubst_function_type, tsubst,
864         tsubst_copy_and_build, get_template_base, bt_instantiate_type_proc):
865         Adjust.
866         * semantics.c (begin_class_definition, finish_base_specifier,
867         finish_typeof, cxx_omp_predetermined_sharing, finish_decltype_type):
868         Adjust.
869         * name-lookup.c (constructor_name_p, push_overloaded_decl,
870         do_class_using_decl, lookup_qualified_name,
871         maybe_process_template_type_declaration): Adjust.
872         * decl2.c (grok_array_decl, check_member_template,
873         constrain_class_visibility): Adjust.
874         * parser.c (cp_parser_class_name): Adjust.
875
876 2008-03-18  Paolo Bonzini  <bonzini@gnu.org>
877
878         * cp-lang.c (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS): Delete.
879         
880 2008-03-17  Jason Merrill  <jason@redhat.com>
881
882         PR c++/35548
883         * call.c (reference_binding): Check LOOKUP_NO_TEMP_BIND when binding
884         a temp directly to a reference as per DR391.
885
886 2008-03-12  Richard Guenther  <rguenther@suse.de>
887
888         PR c++/35469
889         Revert:
890         2008-02-04  Richard Guenther  <rguenther@suse.de>
891
892         PR java/35035
893         * decl.c (record_builtin_java_type): Make jboolean a
894         integer type again where its mode doesn't match that of bool.
895
896         2008-01-25  Richard Guenther  <rguenther@suse.de>
897
898         PR c++/33887
899         * decl.c (record_builtin_java_type): Make __java_boolean
900         a variant of bool.
901         * typeck.c (structural_comptypes): Move TYPE_FOR_JAVA check
902         after TYPE_MAIN_VARIANT check.
903
904 2008-03-10  Jakub Jelinek  <jakub@redhat.com>
905
906         PR c++/35328
907         * semantics.c (finish_omp_clauses): Look through NOP_EXPR even
908         if errorcount.
909
910         PR c++/35337
911         * semantics.c (finish_omp_clauses): Use %qD instead of %qE for
912         DECL_P in not a variable and appears more than once error messages.
913
914 2008-03-07  Paolo Bonzini  <bonzini@gnu.org>
915
916         Revert:
917
918         2008-02-06  Douglas Gregor  <doug.gregor@gmail.com>
919
920         PR c++/35049
921         PR c++/35096
922         * typeck.c (structural_comptypes): Call cp_comptypes.
923         (comptypes): New; called from the C/C++ common bits to perform
924         strict checks.
925         (cp_comptypes): Renamed from comptypes, which is already used,
926         with a different signature, by the C++ front end.
927         (build_reinterpret_cast_1): Call cp_comptypes.
928         (ptr_reasonably_similar): Ditto.
929         * decl.c (decls_match): Ditto.
930         * cvt.c (convert_to_reference): Ditto.
931         * cp-tree.h (same_type_p): Ditto.
932         (same_or_base_type_p): Ditto.
933         (comptypes): Rename to cp_comptypes.
934         * pt.c (canonical_type_parameter): Call cp_comptypes.
935
936 2008-03-07  Paolo Bonzini  <bonzini@gnu.org>
937
938         * cp-objcp-common.c (cxx_types_compatible_p): Remove obsolete
939         test for equivalence between pointer and references.
940
941 2008-03-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
942
943         PR 24924
944         * class.c (finish_struct_anon): Use permerror instead of pedwarn.
945         (check_field_decls): Likewise.
946         (note_name_declared_in_class): Likewise.
947         * call.c (build_new_op): Likewise.
948         (convert_like_real): Likewise.
949         (build_over_call): Likewise.
950         * lex.c (unqualified_fn_lookup_error): Likewise.
951         * parser.c (cp_parser_template_id): Likewise.
952         * cvt.c (warn_ref_binding): Likewise.
953         (convert_to_reference): Likewise.
954         (ocp_convert): Likewise.
955         (convert_to_void): Use error instead of pedwarn.
956         * error.c (cp_cpp_error): Use pedantic_warning_kind.
957         * decl.c (compute_array_index_type): Use constant_expression_error.
958         
959 2008-03-01  Douglas Gregor  <doug.gregor@gmail.com>
960
961         * parser.c (cp_lexer_next_token_is_decl_specifier_keyword): Note
962         that auto is either a storage class or a simple type specifier,
963         depending on the dialect.
964         (cp_parser_decl_specifier_seq): Complain about `auto' as a storage
965         specifier in C++98 mode, error in C++0x mode (since we don't
966         support auto as a type specifier, yet).
967         (cp_parser_storage_class_specifier_opt): Don't treat `auto' as a
968         storage specifier in C++0x mode.
969         (cp_parser_simple_type_specifier): Parse `auto' as a
970         simple-type-specifier, but error because we don't support it yet.
971
972 2008-02-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
973
974         * parser.c (cp_parser_nonclass_name): New.
975         (cp_parser_pseudo_destructor_name): Use it instead of
976         cp_parser_type_name.
977         (cp_parser_type_name): Move code to cp_parser_nonclass_name.
978
979 2008-02-29  Tom Tromey  <tromey@redhat.com>
980
981         * parser.c (struct cp_token) <input_file_stack_index>: Remove.
982         (cp_lexer_get_preprocessor_token): Update.
983         (cp_lexer_set_source_position_from_token): Don't call
984         restore_input_file_stack.
985         * lex.c (cxx_init): Don't use push_srcloc or pop_srcloc.
986
987 2008-02-28  Richard Guenther  <rguenther@suse.de>
988
989         Revert:
990         2008-02-26  Richard Guenther  <rguenther@suse.de>
991
992         * decl.c (duplicate_decls): Remove decl from global mapping
993         before ggc_freeing it.
994
995 2008-02-27  Jakub Jelinek  <jakub@redhat.com>
996
997         PR c++/35368
998         * rtti.c: Include c-pragma.h.
999         (push_abi_namespace, pop_abi_namespace): New functions.
1000         (build_dynamic_cast_1, tinfo_base_init, get_pseudo_ti_index,
1001         create_tinfo_types, emit_support_tinfos): Use them.
1002         * Make-lang.in (cp/rtti.o): Depend on $(C_PRAGMA_H).
1003
1004 2008-02-26  Jason Merrill  <jason@redhat.com>
1005
1006         PR c++/35315
1007         * decl.c (grokdeclarator): Allow a typedef of an unnamed struct
1008         to name the struct for linkage purposes even if it has attributes.
1009         (start_decl): In that case, set ATTR_FLAG_TYPE_IN_PLACE.
1010
1011 2008-02-26  Tom Tromey  <tromey@redhat.com>
1012
1013         * parser.c (eof_token): Remove old location code.
1014         (check_empty_body): Remove test of USE_MAPPED_LOCATION.
1015         * decl2.c (generate_ctor_or_dtor_function): Remove old location
1016         code.
1017         (cp_write_global_declarations): Likewise.
1018         * lex.c (cxx_init): Remove old location code.
1019         (handle_pragma_implementation): Remove test of
1020         USE_MAPPED_LOCATION.
1021         * pt.c (tsubst): Remove old location code.
1022         * error.c (cp_print_error_function): Remove test of
1023         USE_MAPPED_LOCATION.
1024         * decl.c (pop_label): Remove old location code.
1025         (finish_function): Likewise.
1026
1027 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1028
1029         PR 26264
1030         * call.c (magic_varargs_p):  Remove BUILT_IN_STDARG_START.
1031         
1032 2008-02-26  Richard Guenther  <rguenther@suse.de>
1033
1034         * decl.c (duplicate_decls): Remove decl from global mapping
1035         before ggc_freeing it.
1036
1037 2008-02-26  Paolo Carlini  <pcarlini@suse.de>
1038
1039         PR c++/35323
1040         * name-lookup.c (arg_assoc_type): Handle FIXED_POINT_TYPE.
1041
1042 2008-02-26  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
1043         
1044         * typeck.c (build_class_member_access_expr): Add appropriate
1045         OPT_W* parameter to warning.
1046         (build_reinterpret_cast_1): Likewise.
1047         * name-lookup.c (push_overloaded_decl): Likewise.
1048         
1049 2008-02-25  Paolo Carlini  <pcarlini@suse.de>
1050
1051         PR c++/35333
1052         * error.c (dump_expr): Handle CONJ_EXPR.
1053
1054 2008-02-25  Paolo Carlini  <pcarlini@suse.de>
1055
1056         PR c++/35338
1057         * error.c (dump_type): Handle FIXED_POINT_TYPE.
1058         (dump_expr): Handle FIXED_CST.
1059
1060 2008-02-24  Jason Merrill  <jason@redhat.com>
1061
1062         * parser.c (cp_parser_declaration): Handle "inline namespace".
1063         (cp_parser_namespace_definition): Likewise.
1064
1065         PR c++/33486
1066         * name-lookup.c (arg_assoc_namespace): Look down into inline 
1067         namespaces, too.
1068
1069 2008-02-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1070
1071         * typeck.c (check_for_casting_away_constness): Use 1 single
1072         argument, the type of cast, to decide what diagnostics generate.
1073         (build_static_cast_1): Remove unused code. Update call to
1074         check_for_casting_away_constness.
1075         (build_reinterpret_cast_1): Update call to
1076         check_for_casting_away_constness.
1077         (build_const_cast_1): Likewise.
1078         
1079 2008-02-24  Paolo Carlini  <pcarlini@suse.de>
1080
1081         * error.c (dump_expr): Don't deal directly with NEW_EXPR (and
1082         VEC_NEW_EXPR), forward to pp_expression.
1083         * cxx-pretty-print.c (pp_cxx_new_expression): Fix FIXME.
1084
1085 2008-02-24  Danny Smith  <dannysmith@users.sourceforge.net>
1086
1087         PR c++/34749
1088         * friend.c (do_friend): Call cplus_decl_attributes earlier.
1089
1090 2008-02-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1091
1092         PR C++/34715
1093         * decl.c (duplicate_decls): Merge DECL_DISREGARD_INLINE_LIMITS for
1094         template decls' function decl.
1095
1096 2008-02-22  Paolo Carlini  <pcarlini@suse.de>
1097
1098         PR c++/35282
1099         Revert:
1100         2008-02-14  Paolo Carlini  <pcarlini@suse.de>
1101
1102         PR c++/28743
1103         * pt.c (determine_specialization): In case of function templates,
1104         when the type of DECL does not match FN there is no match.
1105
1106 2008-02-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
1107
1108         PR c/19999
1109         * typeck.c (build_binary_op): Warn about floating point
1110         comparisons if FLOAT_TYPE_P, not only for REAL_TYPE.
1111
1112 2008-02-19  Jason Merrill  <jason@redhat.com>
1113
1114         PR c++/34950
1115         * pt.c (resolve_overloaded_unification): Set processing_template_decl
1116         while we look for possible bindings.
1117
1118 2008-02-19  Jakub Jelinek  <jakub@redhat.com>
1119
1120         PR c++/35028
1121         * cp-gimplify.c (cxx_omp_clause_apply_fn): Handle vararg copy ctors.
1122
1123         PR c++/34964
1124         PR c++/35244
1125         * semantics.c (finish_omp_threadprivate): Do nothing for error_operand_p
1126         vars.  Afterwards ensure v is VAR_DECL.
1127
1128         PR c++/35078
1129         * parser.c (cp_parser_omp_for_loop): If DECL has REFERENCE_TYPE, don't
1130         call cp_finish_decl.
1131         * semantics.c (finish_omp_for): Fail if DECL doesn't have integral type
1132         early.
1133
1134 2008-02-15  Douglas Gregor  <doug.gregor@gmail.com>
1135
1136         PR c++/35023
1137         PR c++/35024
1138         PR c++/35026
1139         * pt.c (finish_member_template_decl): If the type in a TYPE_DECL
1140         is error_mark_node, return an error early.
1141         (find_parameter_packs_r): Pass the pointer set along to recursive
1142         calls of cp_walk_subtrees; don't try to manage the pointer set
1143         ourselves.
1144         (uses_parameter_packs): Pass the pointer set to cp_walk_tree.
1145         (make_pack_expansion): Ditto.
1146         (check_for_bare_parameter_packs): Ditto. Also, don't bother taking
1147         a second pass through the tree with find_parameter_packs_r; that
1148         second pass no longer does anything.
1149         (push_template_decl_real): If we have an erroneous declaration,
1150         set its type to error_mark_node before returning an error.
1151
1152 2008-02-14  Douglas Gregor  <doug.gregor@gmail.com>
1153
1154         PR c++/34050
1155         * pt.c (tsubst_initializer_list): Deal with the use of
1156         VOID_TYPE_NODE to indicate value-initialization of the bases.
1157
1158 2008-02-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1159             Jason Merrill  <jason@redhat.com>
1160
1161         PR c++/5645
1162         PR c++/11159
1163         * class.c (type_has_user_nondefault_constructor): New fn.
1164         * cp-tree.h: Declare it.
1165         * init.c (emit_mem_initializers): Use it for -W warning about
1166         missing base initializer.
1167
1168 2008-02-14  Paolo Carlini  <pcarlini@suse.de>
1169
1170         PR c++/28743
1171         * pt.c (determine_specialization): In case of function templates,
1172         when the type of DECL does not match FN there is no match.
1173
1174 2008-02-13  Jakub Jelinek  <jakub@redhat.com>
1175             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1176
1177         PR c++/35138
1178         * parser.c (cp_parser_pseudo_destructor_name): If next tokens
1179         are not identifier :: ~, return before calling cp_parser_type_name.
1180
1181 2008-02-13  Jason Merrill  <jason@redhat.com>
1182
1183         PR c++/34962, c++/34937, c++/34939
1184         * decl2.c (is_late_template_attribute): Always defer attributes 
1185         vector_size and weak.
1186
1187         PR c++/34774
1188         * pt.c (value_dependent_expression_p): Look into DECL_INITIAL
1189         of enumerators, too.
1190
1191 2008-02-12  Jason Merrill  <jason@redhat.com>
1192
1193         PR c++/34824
1194         * call.c (convert_like_real): Pass LOOKUP_NO_CONVERSION to build_temp
1195         if we're doing conversions to call a user-defined conversion function.
1196
1197 2008-02-12  Steven Bosscher  <steven@gcc.gnu.org>
1198
1199         PR c++/29048
1200         * semantics.c (finish_qualified_id_expr): Avoid duplicate access
1201         check here, too.
1202
1203 2008-02-12  Jakub Jelinek  <jakub@redhat.com>
1204
1205         PR c++/34862
1206         * init.c (build_new_1): Don't create placement_expr before
1207         constructing alloc_call.  Verify that the pointer is passed by
1208         value to operator new.
1209
1210 2008-02-11  Jason Merrill  <jason@redhat.com>
1211
1212         PR c++/35097
1213         * pt.c (tsubst): Don't look up a template typedef in an explicit
1214         specialization.
1215
1216 2008-02-11  Douglas Gregor  <doug.gregor@gmail.com>
1217
1218        PR c++/35113
1219        * tree.c (cp_build_qualified_type_real): When building a
1220        cv-qualified array type, build it as a unique type with
1221        build_cplus_array_type_1 and then adopt the unqualified type's
1222        main variant.
1223         
1224 2008-02-11  Paolo Carlini  <pcarlini@suse.de>
1225
1226         PR c++/35077
1227         * decl.c (groktypename): Check grokdeclarator return.
1228
1229 2008-02-10  Jason Merrill  <jason@redhat.com>
1230
1231         PR c++/34094
1232         * decl2.c (cp_write_global_declarations): Don't write out static 
1233         data members with DECL_IN_AGGR_P set.
1234
1235 2008-02-08  Jason Merrill  <jason@redhat.com>
1236
1237         PR c++/35116
1238         * tree.c (build_target_expr_with_type): Handle void initializer.
1239         (bot_manip): Remap slot before recursing.
1240
1241 2008-02-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1242
1243         PR other/35107
1244         * Make-lang.in (cc1plus-dummy, cc1plus): Add $(GMPLIBS).
1245
1246 2008-02-06  Alexandre Oliva  <aoliva@redhat.com>
1247
1248         PR c++/35056
1249         * tree.c: Include tree-flow.h.
1250         (build_target_expr): Check type compatibility.
1251         * Make-lang.in (cp/tree.o): Depend on $(TREE_FLOW_H).
1252         * call.c (convert_like_real): Convert bitfield to expected type.
1253
1254 2008-02-06  Douglas Gregor  <doug.gregor@gmail.com>
1255
1256         PR c++/35049
1257         PR c++/35096
1258         * typeck.c (structural_comptypes): Call cp_comptypes.
1259         (comptypes): New; called from the C/C++ common bits to perform
1260         strict checks.
1261         (cp_comptypes): Renamed from comptypes, which is already used,
1262         with a different signature, by the C++ front end.
1263         (build_reinterpret_cast_1): Call cp_comptypes.
1264         (ptr_reasonably_similar): Ditto.
1265         * decl.c (decls_match): Ditto.
1266         * cvt.c (convert_to_reference): Ditto.
1267         * cp-tree.h (same_type_p): Ditto.
1268         (same_or_base_type_p): Ditto.
1269         (comptypes): Rename to cp_comptypes.
1270         * pt.c (canonical_type_parameter): Call cp_comptypes.
1271
1272 2008-02-05  Jakub Jelinek  <jakub@redhat.com>
1273
1274         PR c++/33553
1275         * pt.c (tsubst) <case INTEGER_TYPE>: Don't issue error if max is
1276         value dependent expression.
1277
1278 2008-02-05  Douglas Gregor  <doug.gregor@gmail.com>
1279
1280         PR c++/35074
1281         * decl2.c (save_template_attributes): When we're modifying the
1282         TYPE_MAIN_VARIANT to add new attributes, be sure to also modify
1283         all of the other variants to add those same attributes. Otherwise,
1284         the main variant will be inconsistent with those other variants.
1285         
1286 2008-02-04  Richard Guenther  <rguenther@suse.de>
1287
1288         PR java/35035
1289         * decl.c (record_builtin_java_type): Make jboolean a
1290         integer type again where its mode doesn't match that of bool.
1291
1292 2008-02-02  Jason Merrill  <jason@redhat.com>
1293             Mark Mitchell  <mark@codesourcery.com>
1294
1295         PR c++/33916
1296         * init.c (build_value_init_1): New function.
1297         (build_value_init): New function.
1298         * typeck2.c (build_functional_cast): Call it.
1299         * cp-gimplify.c (cp_gimplify_init_expr): Handle its output.
1300
1301         * cp-tree.h (TYPE_HAS_USER_CONSTRUCTOR): Rename from 
1302         TYPE_HAS_CONSTRUCTOR.
1303         * class.c (finish_struct_bits, maybe_warn_about_overly_private_class,
1304         add_implicitly_declared_members): Adjust.
1305         (check_field_decls): Adjust. Remove warnings about reference/const
1306         in class without constructor.
1307         (check_bases_and_members): Adjust.  Give those warnings here instead.
1308         * decl.c (fixup_anonymous_aggr): Adjust.
1309         (check_initializer): Adjust, clarify logic slightly.
1310         (grok_special_member_properties): Adjust, only set if user-provided.
1311         * rtti.c (create_tinfo_types): Don't set.
1312         * cvt.c (ocp_convert): Remove exception for vtable_entry_type et al.
1313         Use same_type_ignoring_top_level_qualifiers_p.
1314         * pt.c (check_explicit_specialization): Adjust.
1315         (instantiate_class_template): Adjust.
1316
1317 2008-01-31  Douglas Gregor  <doug.gregor@gmail.com>
1318            Jakub Jelinek  <jakub@redhat.com>
1319
1320        PR c++/34935
1321        PR c++/34936
1322        * typeck.c (structural_comptypes): Handle comparisons of
1323        VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, FIXED_POINT_TYPE, and
1324        REAL_TYPE nodes.
1325        * mangle.c (write_builtin_type): Map down to the canonical type,
1326        which will be one of the predefined type nodes.
1327
1328 2008-01-29  Michael Meissner  <michael.meissner@amd.com>
1329
1330         PR 35004
1331         * cp-tree.h (struct full_lang_decl): Make tree_code bitfield 16
1332         bits to allow for expansion of the number of middle end tree
1333         codes.
1334
1335 2008-01-29  Douglas Gregor  <doug.gregor@gmail.com>
1336
1337         PR c++/34055
1338         PR c++/34103
1339         PR c++/34219
1340         PR c++/34606
1341         PR c++/34753
1342         PR c++/34754
1343         PR c++/34755
1344         PR c++/34919
1345         PR c++/34961
1346         * typeck.c (check_return_expr): Tweak call to
1347         check_for_bare_parameter_packs.
1348         * class.c (add_method): Be careful with error_mark_nodes.
1349         * cp-tree.h (check_for_bare_parameter_packs): Remove "*" from
1350         signature.
1351         * pt.c (struct find_parameter_pack_data): Remove
1352         SET_PACKS_TO_ERROR.
1353         (find_parameter_packs_r): Don't use SET_PACKS_TO_ERROR.
1354         (uses_parameter_packs): Don't set SET_PACKS_TO_ERROR.
1355         (make_pack_expansion): Ditto.
1356         (check_for_bare_parameter_packs): Parameter is now a tree, not a
1357         tree*.
1358         (process_template_parm): Tweak call to
1359         check_for_bare_parameter_packs.  
1360         (push_template_decl_real): Tweak calls to
1361         check_for_bare_parameter_packs. If bare parameter packs are found
1362         in the list of exceptions, clear out that list after giving an
1363         error.
1364         * semantics.c (finish_cond): Tweak call to
1365         check_for_bare_parameter_packs.
1366         (finish_expr_stmt): Ditto.
1367         (finish_for_expr): Ditto.
1368         (finish_switch_cond): Ditto.
1369         (finish_mem_initializers): Ditto.
1370         (finish_member_declaration): Ditto.
1371         (finish_static_assert): Check for bare parameter packs in the
1372         condition.
1373         * decl2.c (cplus_decl_attributes): Check for bare parameter packs in the
1374         attributes of a declaration.
1375         * parser.c (cp_parser_using_declaration): Tweak call to
1376         check_for_bare_parameter_packs.
1377         (cp_parser_base_clause): Ditto.
1378
1379 2008-01-28  Jason Merrill  <jason@redhat.com>
1380
1381         PR c++/35007
1382         * class.c (build_base_path): Fix !want_pointer case.
1383
1384 2008-01-27  Jason Merrill  <jason@redhat.com>
1385
1386         PR c++/27177
1387         * class.c (build_base_path): Fix previous change.
1388
1389 2008-01-26  Jakub Jelinek  <jakub@redhat.com>
1390
1391         PR c++/34965
1392         * error.c (dump_expr): Handle TRUTH_AND_EXPR, TRUTH_OR_EXPR
1393         and TRUTH_XOR_EXPR.
1394
1395 2008-01-26  Richard Guenther  <rguenther@suse.de>
1396
1397         PR c++/34235
1398         * typeck.c (build_binary_op): Remove code to shorten compares.
1399
1400 2008-01-25  Richard Guenther  <rguenther@suse.de>
1401
1402         PR c++/33887
1403         * decl.c (record_builtin_java_type): Make __java_boolean
1404         a variant of bool.
1405         * typeck.c (structural_comptypes): Move TYPE_FOR_JAVA check
1406         after TYPE_MAIN_VARIANT check.
1407
1408 2008-01-25  Jason Merrill  <jason@redhat.com>
1409
1410         PR c++/27177
1411         * class.c (build_base_path): Don't mess with virtual access if
1412         skip_evaluation.
1413         * call.c (standard_conversion): Don't check whether source type
1414         is complete.
1415
1416         * decl2.c (is_late_template_attribute): Don't defer attribute
1417         visibility just because the type is dependent.
1418
1419 2008-01-25  Jason Merrill  <jason@redhat.com>
1420             Mark Mitchell  <mark@codesourcery.com>
1421
1422         PR c++/31780
1423         * call.c (standard_conversion): Allow conversion from integer/real
1424         to complex.
1425         (compare_ics): Such a conversion is worse than a normal arithmetic
1426         conversion.
1427         
1428 2008-01-25  Richard Guenther  <rguenther@suse.de>
1429
1430         PR c++/33887
1431         * cp-lang.c (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS): Define
1432         to true.
1433
1434 2008-01-24  Paolo Carlini  <pcarlini@suse.de>
1435
1436         PR c++/34603
1437         * pt.c (push_template_decl_real): Return error_mark_node in case
1438         of template definition of non-template.
1439
1440 2008-01-24  Jason Merrill  <jason@redhat.com>
1441
1442         PR c++/34913
1443         * decl2.c (is_late_template_attribute): Defer any attribute with 
1444         dependent args.  Also defer type attributes if the type is dependent.
1445
1446 2008-01-22  Jakub Jelinek  <jakub@redhat.com>
1447             Alexandre Oliva  <aoliva@redhat.com>
1448
1449         PR c++/33984
1450         * call.c (reference_binding): For bitfields use the declared bitfield
1451         type.
1452         (add_builtin_candidates): Likewise.
1453         * class.c (layout_class_type): For bitfields copy over the
1454         original type quals.
1455
1456 2008-01-22  Jason Merrill  <jason@redhat.com>
1457
1458         PR c++/28560
1459         * decl.c (groktypename): Also ignore attributes on dependent 
1460         possibly-class types.
1461
1462         PR c++/34912
1463         * friend.c (do_friend): Check for prior declaration of a friend 
1464         function of a local class.
1465         * name-lookup.c (lookup_name_innermost_nonclass_level): 
1466         No longer static.
1467         * name-lookup.h: Declare it.
1468
1469 2008-01-22  Tom Tromey  <tromey@redhat.com>
1470
1471         PR c++/34829:
1472         * init.c (build_new_1): Only disallow Java aggregates.
1473
1474 2008-01-22  Jakub Jelinek  <jakub@redhat.com>
1475
1476         PR c++/34607
1477         * semantics.c (finish_omp_for): Don't call c_finish_omp_for
1478         if decl or init is error_mark_node.
1479
1480         PR c++/34918
1481         * error.c (dump_expr): Handle VECTOR_CST.
1482
1483 2008-01-21  Jason Merrill  <jason@redhat.com>
1484
1485         PR c++/33959
1486         * pt.c (tsubst_aggr_type): Make sure our context is complete.
1487
1488         PR c++/34573
1489         * pt.c (retrieve_local_specialization): Robustify.
1490         (tsubst_pack_expansion, tsubst_decl): Remove redundant checks.
1491
1492         PR c++/34846
1493         * pt.c (tsubst): Only call retrieve_local_specialization if the
1494         original typedef was in a function template.
1495
1496         PR c++/34196
1497         * decl.c (wrap_cleanups_r): Set TRY_CATCH_IS_CLEANUP.
1498
1499 2008-01-21  Richard Guenther  <rguenther@suse.de>
1500
1501         PR c++/34850
1502         * error.c (cp_print_error_function): Deal with recursive
1503         BLOCK trees.
1504
1505 2008-01-20  Paolo Carlini  <pcarlini@suse.de>
1506
1507         PR c++/34891
1508         * error.c (dump_expr): Deal with VIEW_CONVERT_EXPR.
1509
1510 2008-01-20  Paolo Carlini  <pcarlini@suse.de>
1511
1512         PR c++/34776
1513         PR c++/34486
1514         * name-lookup.c (do_class_using_decl): Do not call constructor_name_p
1515         on non-IS_AGGR_TYPE scope.
1516         (constructor_name_p): Assert IS_AGGR_TYPE.
1517
1518 2008-01-18  Ian Lance Taylor  <iant@google.com>
1519
1520         PR c++/33407
1521         * decl.c (duplicate_decls): Copy DECL_IS_OPERATOR_NEW flag.
1522         (grok_op_properties): For NEW_EXPR and VEC_NEW_EXPR set
1523         DECL_IS_OPERATOR_NEW flag.
1524
1525 2008-01-16  Richard Guenther  <rguenther@suse.de>
1526
1527         PR c++/33819
1528         * typeck.c (is_bitfield_expr_with_lowered_type): Recurse
1529         for conversions to type variants.
1530
1531 2008-01-15  Andreas Tobler  <a.tobler@schweiz.org>
1532
1533         * parser.c (cp_parser_template_parameter): Fix C90 issue with mixing
1534         declaration and code.  Update copyright year.
1535
1536 2008-01-15  Douglas Gregor  <doug.gregor@gmail.com>
1537
1538         PR c++/34399
1539         * friend.c (do_friend): Don't query TYPE_BEING_DEFINED unless we
1540         know we have a class type.
1541
1542 2008-01-15  Douglas Gregor  <doug.gregor@gmail.com>
1543
1544         PR c++/34751
1545         * pt.c (coerce_template_parameter_pack): When substituting into
1546         the type of a non-type template parameter pack. use the
1547         deduced/substituted arguments.
1548         * parser.c (declarator_can_be_parameter_pack): A pointer-to-member
1549         can be a parameter pack with the ellipsis following it.  When we
1550         have an erroneous declaration, allow it to be a parameter pack.
1551         (cp_parser_template_parameter): Complain about default
1552         arguments on non-type template parameter packs, and parse them
1553         using the new cp_parser_default_argument.
1554         (cp_parser_parameter_declaration): Complain about parameter packs
1555         with default arguments. Move parsing of default arguments into a
1556         new function, cp_parser_default_argument.
1557         (cp_parser_default_argument): New; extracted from
1558         cp_parser_parameter_declaration.
1559
1560 2008-01-15  Douglas Gregor  <doug.gregor@gmail.com>
1561
1562         PR c++/34051
1563         PR c++/34055
1564         PR c++/34102
1565         PR c++/34103
1566         * typeck.c (check_return_expr): If there are bare parameter packs
1567         in the return value, set it to error_mark_node.
1568         * tree.c (cp_walk_subtrees): Walk USING_DECL nodes.
1569         * pt.c (find_parameter_packs_r): Look at the type of
1570         IDENTIFIER_NODEs (e.g., for user-defined conversions).
1571         (check_for_bare_parameter_packs): Flip the result: now returns
1572         TRUE when there were bare parameter packs, FALSE otherwise.
1573         (push_template_decl_real): Deal with flipped result of
1574         check_for_bare_parameter_packs.
1575         * semantics.c (finish_cond): If there are bare parameter packs in
1576         the conditional, set it to error_mark_node.
1577         (finish_expr_stmt): If there are bare parameter packs in the
1578         expression, set it to error_mark_node.
1579         (finish_for_expr): Ditto.
1580         (finish_switch_cond): If there are bare parameter packs in
1581         the conditional, set it to error_mark_node.
1582         (finish_mem_initializers): If there are bare parameter packs in
1583         the member initializer, set it to error_mark_node.
1584         (finish_member_declaration): Check the attributes of the
1585         declaration for bare parameter packs, and remove the attributes if
1586         any have bare parameter packs.
1587         * parser.c (cp_parser_using_declaration): Check the using
1588         declaration for bare parameter packs.
1589         (cp_parser_base_clause): If there are bare parameter packs in a
1590         base specifier, don't add it to the chain.
1591
1592 2008-01-15  Douglas Gregor  <doug.gregor@gmail.com>
1593
1594        PR c++/34314
1595        * error.c (dump_simple_decl): Display ellipsis for template
1596        non-type parameter packs.
1597        (dump_decl): Display ellipsis for template type parameter packs.
1598        (dump_template_decl): Display ellipsis for template template
1599        parameter packs.
1600        * pt.c (redeclare_class_template): When redeclaring a class
1601        template, check for collisions between template parameters and
1602        template parameter packs.
1603
1604 2008-01-15  Douglas Gregor  <doug.gregor@gmail.com>
1605
1606        PR c++/33964
1607        * pt.c (process_partial_specialization): Don't mark template
1608        parameters that occur in non-deduced contexts.
1609        (struct pair_fn_data): Add include_nondeduced_p.
1610        (for_each_template_parm_r): Only visit non-deduced contexts if
1611        include_nondeduced_p is set.
1612        (for_each_template_parm): Added parameter include_nondeduced_p,
1613        which states whether template parameters found in non-deduced
1614        contexts should be visited.
1615        (uses_template_parms): Visit all template parameters, even those
1616        in non-deduced contexts.
1617
1618 2008-01-15  Douglas Gregor  <doug.gregor@gmail.com>
1619
1620        PR c++/34052
1621        * pt.c (check_default_tmpl_args): Check for parameter packs that
1622        aren't at the end of a primary template.
1623        (push_template_decl_real): Remove check for parameter packs that
1624        aren't at the end of a primary template; that now happens in
1625        check_default_tmpl_args.
1626        * semantics.c (finish_template_template_parm): Use
1627        check_default_tmpl_args to check for errors in the template
1628        parameter list.
1629         
1630 2008-01-12  Doug Kwan  <dougkwan@google.com>
1631
1632         * decl.c: (grokdeclarator): Use OPT_Wignored_qualifiers
1633         instead of OPT_Wreturn_type in warning due to ignored return type
1634         qualifiers.
1635         * pt.c: (tsubst_function_type): Use OPT_Wignored_qualifiers
1636         instead of OPT_Wreturn_type in warning due to ignored return type
1637         qualifiers.
1638
1639 2008-01-08  Jakub Jelinek  <jakub@redhat.com>
1640
1641         PR c++/33890
1642         * semantics.c (finish_omp_for): Don't call
1643         fold_build_cleanup_point_expr if processing_template_decl.
1644
1645 2008-01-04  Paolo Carlini  <pcarlini@suse.de>
1646             Jakub Jelinek  <jakub@redhat.com>
1647
1648         PR c++/34611
1649         * error.c (dump_template_argument): Deal with TREE_LIST.
1650
1651 2008-01-01  Douglas Gregor  <doug.gregor@gmail.com>
1652
1653        * parser.c (cp_parser_check_decl_spec): Don't warn about "long
1654        long" in C++0x mode; change the warning to note that "long long"
1655        is only unsupported in C++98 mode.
1656
1657 2007-12-20  Jason Merrill  <jason@redhat.com>
1658
1659         PR c++/34111
1660         * call.c (standard_conversion): Derived-to-base is considered a
1661         standard conversion.
1662
1663 2007-12-19  Jakub Jelinek  <jakub@redhat.com>
1664
1665         PR c++/34513
1666         * parser.c (cp_parser_omp_parallel): For non-combined parallel
1667         call cp_parser_statement rather than
1668         cp_parser_already_scoped_statement.
1669
1670 2007-12-18  Jason Merrill  <jason@redhat.com>
1671
1672         PR c++/34206
1673         * pt.c (tsubst_aggr_type): Do nothing if the type already doesn't 
1674         use template parms.
1675         (dependent_type_p_r): Handle the domain of an array.
1676
1677 2007-12-18  Douglas Gregor  <doug.gregor@gmail.com>
1678             Jakub Jelinek  <jakub@redhat.com>
1679         
1680         PR c++/32565
1681         PR c++/33943
1682         PR c++/33965
1683         * pt.c (template_template_parm_bindings_ok_p): New; verifies
1684         bindings of template template parameters after all template
1685         arguments have been deduced.
1686         (coerce_template_parms): Don't complain when COMPLAIN doesn't
1687         include tf_error.
1688         (fn_type_unification): Use template_template_parm_bindings_ok_p. 
1689         (unify): Deal with variadic, bound template template parameters. 
1690         (get_class_bindings): Use template_template_parm_bindings_ok_p. 
1691
1692 2007-12-18  Jakub Jelinek  <jakub@redhat.com>
1693
1694         PR c++/34488
1695         * decl.c (grokdeclarator): Reject friend sfk_constructor
1696         FUNCTION_TYPE.
1697
1698 2007-12-17  Jakub Jelinek  <jakub@redhat.com>
1699
1700         PR c/34506
1701         * parser.c (cp_parser_omp_all_clauses): Accept optional comma
1702         in between clauses.
1703
1704 2007-12-15  Alexandre Oliva  <aoliva@redhat.com>
1705
1706         PR debug/7081
1707         * cp-lang.c (cp_classify_record): New.
1708         (LANG_HOOKS_CLASSIFY_RECORD): Override.
1709
1710 2007-12-11  Jakub Jelinek  <jakub@redhat.com>
1711
1712         PR c++/34238
1713         * decl2.c (cp_write_global_declarations): Revert 2007-11-22 change.
1714
1715         PR c++/34364
1716         * rtti.c (build_dynamic_cast): Call convert_from_reference even for
1717         dynamic_cast in a template.
1718
1719 2007-12-10  Simon Martin  <simartin@users.sourceforge.net>
1720
1721         PR c++/34059
1722         * typeck.c (build_class_member_access_expr): Compute MEMBER_SCOPE from
1723         MEMBER's BASELINK_ACCESS_BINFO instead of its BASELINK_BINFO.
1724
1725 2007-12-10  Jakub Jelinek  <jakub@redhat.com>
1726
1727         PR c++/34395
1728         * error.c (dump_type_prefix, dump_type_suffix): Handle
1729         TYPE_PACK_EXPANSION.
1730
1731         PR c++/34394
1732         * error.c (dump_expr): Handle ABS_EXPR.
1733
1734 2007-12-09  Jakub Jelinek  <jakub@redhat.com>
1735
1736         PR c++/34178
1737         PR c++/34340
1738         * repo.c (repo_emit_p): Return 2 for DECL_INTEGRAL_CONSTANT_VAR_P
1739         in class scope rather than DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P.
1740         Return 2 also if DECL_EXPLICIT_INSTANTIATION.
1741         * decl2.c (import_export_decl): Don't make VAR_DECLs import_p when
1742         flag_use_repository and repo_emit_p returned 2.
1743
1744 2007-12-06  Jakub Jelinek  <jakub@redhat.com>
1745
1746         PR c++/34336
1747         * tree.c (stabilize_call, stabilize_init): Do nothing if
1748         processing_template_decl.
1749
1750 2007-12-05  Jakub Jelinek  <jakub@redhat.com>
1751
1752         PR c++/34271
1753         * semantics.c (finish_decltype_type): For SCOPE_REF issue an
1754         error instead of assertion failure.
1755         * parser.c (cp_parser_decltype): If closing paren is not found,
1756         return error_mark_node.
1757
1758 2007-12-04  Douglas Gregor  <doug.gregor@gmail.com>
1759
1760        PR c++/34101
1761        * name-lookup.c (arg_assoc_template_arg): Recurse on argument
1762        packs.
1763        (arg_assoc_type): We don't need to handle TYPE_ARGUMENT_PACK here,
1764        since arg_assoc_template_arg will deal with them (better).
1765
1766 2007-12-04  Douglas Gregor  <doug.gregor@gmail.com>
1767
1768        PR c++/33509
1769        * pt.c (tsubst_exception_specification): Handle substitutions into
1770        member templates, where tsubst_pack_expansion returns a
1771        TYPE_PACK_EXPANSION.
1772
1773 2007-12-04  Douglas Gregor  <doug.gregor@gmail.com>
1774
1775        PR c++/33091
1776        * pt.c (unify_pack_expansion): If we didn't deduce any actual
1777        bindings for the template parameter pack, don't try to keep the
1778        empty deduced arguments.
1779        (unify): If a parameter is a template-id whose template argument
1780        list contains a pack expansion that is not at the end, then we
1781        cannot unify against that template-id.
1782
1783 2007-12-02  Paolo Carlini  <pcarlini@suse.de>
1784
1785         PR c++/34061
1786         * pt.c (current_template_args): Use error_operand_p.
1787
1788 2007-12-02  Paolo Carlini  <pcarlini@suse.de>
1789
1790         PR c++/34273
1791         * error.c (dump_decl): Handle TREE_BINFO.
1792
1793 2007-12-01  Ollie Wild  <aaw@google.com>
1794
1795         PR c++/8171
1796         * typeck.c (build_binary_op): Add conversion of pointers to function
1797         members appearing as operands to the equality operators.
1798
1799 2007-11-30  Jakub Jelinek  <jakub@redhat.com>
1800
1801         PR c++/34275
1802         * error.c (dump_expr): Handle OBJ_TYPE_REF.
1803
1804 2007-11-29  Jakub Jelinek  <jakub@redhat.com>
1805
1806         PR c++/34270
1807         * tree.c (lvalue_p_1) <case COND_EXPR>: Handle x ?: y
1808         in templates.
1809         * typeck.c (is_bitfield_expr_with_lowered_type) <case COND_EXPR>:
1810         Likewise.
1811
1812         PR c++/34267
1813         PR c++/34268
1814         * parser.c (cp_parser_decltype): Don't call finish_id_expression
1815         on ~type.
1816         * semantics.c (finish_decltype_type): Issue error on types, TYPE_DECLs
1817         and ~type early.
1818
1819 2007-11-27  Jakub Jelinek  <jakub@redhat.com>
1820
1821         PR tree-optimization/34181
1822         * method.c (use_thunk): Don't inline the call in the thunk.
1823
1824         PR c++/34213
1825         * tree.c (decl_linkage): Static data members and static member
1826         functions in anonymous ns classes are lk_external.
1827
1828 2007-11-26  Andreas Krebbel  <krebbel1@de.ibm.com>
1829
1830         PR c++/34081
1831         * decl.c (start_preparsed_function): Pass 
1832         processing_template_decl for the new allocate_struct_function
1833         parameter.
1834
1835 2007-11-25  Richard Guenther  <rguenther@suse.de>
1836
1837         * decl.c (poplevel): Use BLOCK_CHAIN.
1838
1839 2007-11-24  Ollie Wild  <aaw@google.com>
1840
1841         * typeck.c (delta_from_ptrmemfunc): New function.
1842         (get_member_function_from_ptrfunc): Call delta_from_ptrmemfunc.
1843         (build_binary_op): Call delta_from_ptrmemfunc.
1844
1845 2007-11-23  Jakub Jelinek  <jakub@redhat.com>
1846
1847         PR c++/30293
1848         PR c++/30294
1849         * decl.c (cp_finish_decl): Disallow variable or field
1850         definitions if extern "Java" aggregates.
1851         (grokparms): Disallow parameters with extern "Java"
1852         aggregates.
1853         (check_function_type): Disallow function return values
1854         with extern "Java" aggregates.
1855         * init.c (build_new_1): Disallow placement new with
1856         extern "Java" aggregates.
1857
1858 2007-11-23  Mark Mitchell  <mark@codesourcery.com>
1859             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1860         
1861         PR c++/5310
1862         * call.c (convert_like_real): Build a zero constant when __null is
1863         converted to an integer type.
1864         
1865 2007-11-22  Jakub Jelinek  <jakub@redhat.com>
1866
1867         PR c++/34094
1868         * decl2.c (cp_write_global_declarations): Issue error about static
1869         data members in anonymous namespace which are declared and used,
1870         but not defined.
1871
1872 2007-11-20  Jakub Jelinek  <jakub@redhat.com>
1873
1874         PR c++/34089
1875         * parser.c (cp_parser_class_head): Reject function template ids.
1876
1877         PR c++/28879
1878         * tree.c (build_cplus_array_type_1): Don't pass any VLA types
1879         when processing_template_decl to build_array_type.
1880
1881         PR c++/33962
1882         * pt.c (more_specialized_fn): Don't segfault if one or
1883         both argument list end with ellipsis.
1884
1885 2007-11-18  Jakub Jelinek  <jakub@redhat.com>
1886
1887         PR c++/30988
1888         * semantics.c (finish_call_expr): Set
1889         current_function_returns_abnormally if fn is noreturn FUNCTION_DECL
1890         or OVERLOAD with all noreturn functions.
1891
1892 2007-11-16  Jakub Jelinek  <jakub@redhat.com>
1893
1894         PR c++/34100
1895         * pt.c (apply_late_template_attributes): Do nothing if decl's type is
1896         error_mark_node.
1897
1898 2007-11-13  Jakub Jelinek  <jakub@redhat.com>
1899
1900         PR c++/34054
1901         PR c++/34056
1902         PR c++/34057
1903         PR c++/34058
1904         PR c++/34060
1905         * pt.c (find_parameter_packs_r): If ppd->set_packs_to_error,
1906         set to error_mark_node the outermost POINTER_TYPE to the pack if
1907         it is seen in a POINTER_TYPE.
1908         (push_template_decl_real): If check_for_bare_parameter_packs
1909         fails for function return type, set the return type to
1910         integer_type_node.  If check_for_bare_parameter_packs failed
1911         for non-function, return error_mark_node.
1912
1913         PR c++/29225
1914         * call.c (build_new_op): Call resolve_args before calling
1915         build_over_call.
1916
1917 2007-11-11  Tom Tromey  <tromey@redhat.com>
1918
1919         PR c++/17577:
1920         * lex.c (handle_pragma_implementation): Use cpp_included_before.
1921
1922 2007-11-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1923
1924         PR c++/8570
1925         * pt.c (redeclare_class_template): Update error message. Use a
1926         note to show the previous declaration.
1927         (tsubst_friend_class): Use the location of the friend template as
1928         the input location before calling redeclare_class_template.
1929
1930 2007-11-11  Jakub Jelinek  <jakub@redhat.com>
1931
1932         PR c++/34068
1933         * semantics.c (finish_pseudo_destructor_expr): Handle
1934         object == error_mark_node.
1935
1936 2007-11-10  Jakub Jelinek  <jakub@redhat.com>
1937
1938         PR c++/32241
1939         * pt.c (tsubst_copy_and_build) <case COMPONENT_REF>: If object_type
1940         is not scalar type, let finish_class_member_access_expr handle
1941         diagnostics.  Pass BIT_NOT_EXPR argument to
1942         finish_pseudo_destructor_expr.  Handle SCOPE_REF properly.
1943
1944 2007-11-09  Douglas Gregor  <doug.gregor@gmail.com>
1945
1946         PR c++/33510
1947         * decl.c (cp_complete_array_type): If any of the initializer
1948         elements are pack expansions, don't compute the array size yet.
1949
1950 2007-11-08  Andrew Pinski  <pinskia@gmail.com>
1951
1952         PR c++/30297:
1953         * tree.c (decl_linkage): Fields have no linkage.
1954
1955 2007-11-08  Daniel Jacobowitz  <dan@codesourcery.com>
1956
1957         * class.c (build_ctor_vtbl_group): Lay out the new type and decl.
1958
1959 2007-11-07  Douglas Gregor  <doug.gregor@gmail.com>
1960
1961         PR c++/33045
1962         PR c++/33837
1963         PR c++/33838
1964         * semantics.c (finish_decltype_type): See through INDIRECT_REFs.
1965         Be careful with ERROR_MARK_NODEs.
1966         * parser.c (cp_parser_check_access_in_redeclaration): Handle NULL
1967         argument.
1968
1969 2007-11-07  Jakub Jelinek  <jakub@redhat.com>
1970
1971         PR c++/33501
1972         * call.c (build_over_call): Don't check TREE_ADDRESSABLE
1973         on incomplete type.
1974
1975 2007-11-06  Douglas Gregor  <doug.gregor@gmail.com>
1976
1977         PR c++/33977
1978         PR c++/33886
1979         * tree.c (c_build_qualified_type): Define bridge to
1980         cp_build_qualified_type.
1981
1982 2007-11-06  Douglas Gregor  <doug.gregor@gmail.com>
1983
1984         PR c++/31439
1985         PR c++/32114
1986         PR c++/32115
1987         PR c++/32125
1988         PR c++/32126
1989         PR c++/32127
1990         PR c++/32128
1991         PR c++/32253
1992         PR c++/32566
1993         * typeck.c (check_return_expr): Pass address of retval to
1994         check_for_bare_parameter_packs.
1995         * class.c (build_base_field): Tolerate bases that have no layout
1996         due to errors.
1997         (end_of_base): Ditto.
1998         * tree.c (canonical_type_variant): Be careful with
1999         ERROR_MARK_NODE.
2000         * cp-tree.h (check_for_bare_parameter_packs): Now accepts a
2001         tree*.
2002         * pt.c (find_parameter_pack_data): Add set_packs_to_error field,
2003         which states whether parameter packs should be replaced with
2004         ERROR_MARK_NODE.
2005         (find_parameter_packs_r): Pass addresses to cp_walk_tree wherever
2006         possible. If set_packs_to_error is set true, replace the parameter
2007         pack with ERROR_MARK_NODE. Manage our own pointer sets.
2008         (uses_parameter_packs): Don't set parameter packs to
2009         ERROR_MARK_NODE.
2010         (check_for_bare_parameter_packs): Now takes a pointer to a tree,
2011         which may be modified (if it is a parameter pack). Instructs
2012         find_parameter_packs_r to replace parameter packs with
2013         ERROR_MARK_NODE (so that they won't cause errors later on).
2014         (process_template_parm): Pass pointer to
2015         check_for_bare_parameter_packs.
2016         (process_partial_specialization): Replace pack expansions before
2017         the end of the template argument list with ERROR_MARK_NODE.
2018         (push_template_decl_real): Pass pointer to
2019         check_for_bare_parameter_packs. Replace parameter packs not at the
2020         end of the template parameter list with ERROR_MARK_NODE.
2021         (convert_template_argument): Be more careful about using DECL_NAME
2022         on only declarations.
2023         (unify): Can't unify against ERROR_MARK_NODE.
2024         * semantics.c (finish_cond): Pass pointer to
2025         check_for_bare_parameter_packs.
2026         (finish_expr_stmt): Ditto.
2027         (finish_for_expr): Ditto.
2028         (finish_switch_cond): Pass pointer to
2029         check_for_bare_parameter_packs, and call it before we put the
2030         condition into the statement.
2031         (finish_mem_initializers): Pass pointer to
2032         check_for_bare_parameter_packs.
2033         (finish_member_declaration): Ditto.
2034         * parser.c (cp_parser_base_clause): Ditto.
2035         
2036 2007-11-06  Jakub Jelinek  <jakub@redhat.com>
2037
2038         PR target/33168
2039         * decl.c (cp_finish_decl): Call make_rtl_for_nonlocal_decl already
2040         with the final TREE_READONLY flag in place.  processing_template_decl
2041         is known to be 0 in this part of function.
2042
2043         PR c++/33894
2044         * cp-tree.h: Update comment - TYPE_LANG_FLAG_0 is not
2045         OMP_ATOMIC_DEPENDENT_P in OMP_ATOMIC.
2046         * pt.c (tsubst_expr): Assert OMP_ATOMIC_DEPENDENT_P.
2047         * semantics.c (finish_omp_atomic): Revert most of the
2048         2007-02-05 changes, just keep the new representation of
2049         OMP_ATOMIC_DEPENDENT_P OMP_ATOMIC.
2050
2051 2007-11-05  H.J. Lu  <hongjiu.lu@intel.com>
2052
2053         PR c++/33871
2054         * decl2.c (constrain_visibility): Clear DECL_ONE_ONLY if marked
2055         local.
2056
2057 2007-11-05  Douglas Gregor  <doug.gregor@gmail.com>
2058
2059         PR c++/33996
2060         PR c++/33235
2061         PR c++/33930
2062         * typeck.c (merge_types): Don't lose rvalue references when
2063         merging types.
2064         * call.c (build_over_call): Don't elide move constructors just
2065         because the copy constructor is trivial (!).
2066         (compare_ics): If comparing cv-qualifiers fails, we can still order
2067         based on binding lvalues vs. rvalues.
2068
2069 2007-11-05  Douglas Gregor  <doug.gregor@gmail.com>
2070
2071         PR c++/33939
2072         * pt.c (unify_pack_expansion): bring handling of function call
2073         arguments into line with type_unification_real. 
2074
2075 2007-11-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2076
2077         * typeck.c (build_binary_op): Use pedwarn instead of error for
2078         consistency.
2079
2080 2007-11-05  Jakub Jelinek  <jakub@redhat.com>
2081
2082         PR c++/33836
2083         * parser.c (cp_parser_unary_expression): For &&label call
2084         cp_parser_non_integral_constant_expression and return error_mark_node
2085         if it returned true.
2086
2087         PR c++/33969
2088         * decl.c (grokdeclarator): Don't call build_memfn_type if type
2089         is neither FUNCTION_TYPE nor METHOD_TYPE.
2090
2091 2007-11-02  Jakub Jelinek  <jakub@redhat.com>
2092
2093         PR c++/33516
2094         * parser.c (cp_parser_nested_name_specifier_opt): Use
2095         TYPE_MAIN_VARIANT (new_scope) as scope if new_scope is an incomplete
2096         typedef of currently open class.
2097
2098 2007-11-02  Paolo Carlini  <pcarlini@suse.de>
2099
2100         PR c++/33495
2101         * error.c (dump_expr): Deal specially with statements.
2102
2103 2007-11-01  Jason Merrill  <jason@redhat.com>
2104
2105         PR c++/30897
2106         * pt.c (push_template_decl_real): Set DECL_CONTEXT on template
2107         template parms.
2108         (lookup_template_class): Use it to get the outer template args
2109         for instantiating one.
2110
2111         PR c++/29236
2112         * pt.c (reduce_template_parm_level): tsubst the parameters
2113         of a template template parm.
2114
2115 2007-11-01  Douglas Gregor  <doug.gregor@gmail.com>
2116
2117         PR c++/33955
2118         * pt.c (find_parameter_packs_r): Handle TYPENAME_TYPE.
2119
2120 2007-11-01  Jakub Jelinek  <jakub@redhat.com>
2121
2122         PR c++/32384
2123         * parser.c (cp_parser_postfix_dot_deref_expression): If
2124         POSTFIX_EXPRESSION is type dependent, try to parse it as pseudo dtor
2125         first and if that succeeds and type is SCALAR_TYPE_P, create
2126         PSEUDO_DTOR_EXPR.
2127
2128         PR c++/32260
2129         * rtti.c (enum_tinfo_kind): Fix TK_TYPE_INFO_TYPE comment.
2130         (typeid_ok_p): Use the same alias set for abi::__type_info_pseudo
2131         as for std::type_info.
2132
2133 2007-10-31  Paolo Carlini  <pcarlini@suse.de>
2134
2135         PR c++/33494
2136         * cxx-pretty-print.c (pp_cxx_typeid_expression,
2137         pp_cxx_delete_expression): Change to static linkage.
2138         * cxx-pretty-print.h: Adjust declarations.
2139         * error.c (dump_expr, case EXPR_PACK_EXPANSION, TYPEID_EXPR,
2140         MEMBER_REF, DOTSTAR_EXPR, DELETE_EXPR, VEC_DELETE_EXPR,
2141         MODOP_EXPR): Forward to pp_expression.
2142
2143         * cxx-pretty-print.c (pp_cxx_expression, case NON_DEPENDENT_EXPR):
2144         Fix typo.
2145
2146 2007-10-31 Christian Bruel  <christian.bruel@st.com>
2147            Mark Mitchell  <mark@codesourcery.com>
2148
2149         PR c++/19531
2150         * typeck.c (check_return_expr): Don't set named_return_value_okay_p
2151         if retval is volatile. 
2152         
2153 2007-10-30  Jakub Jelinek  <jakub@redhat.com>
2154
2155         PR c++/33616
2156         * decl2.c (build_offset_ref_call_from_tree): Call
2157         build_non_dependent_expr on object prior to building ADDR_EXPR from it
2158         if FN is DOTSTAR_EXPR.
2159
2160 2007-10-30  Douglas Gregor  <doug.gregor@gmail.com>
2161
2162         PR c++/31993
2163         PR c++/32252
2164         * pt.c (find_parameter_packs_r): Fix typo in comment.
2165         (convert_template_argument): Look at the pattern of a pack
2166         expansion to determine what kind of entity we're converting.
2167         (coerce_template_parameter_pack): When we have coerced a non-type
2168         template parameter pack, substitute into the type of that pack.
2169         (tsubst_pack_expansion): When our substitution of a parameter pack
2170         is a "trivial" substitution of itself, just substitute into the
2171         pack expansion rather than actually expanding.
2172
2173 2007-10-29  Jakub Jelinek  <jakub@redhat.com>
2174
2175         PR c++/33841
2176         * class.c (check_bitfield_decl): Don't set field's type to error_mark_node
2177         for non-integral type bitfields.  Return true if bitfield is correct, false
2178         error has been diagnosed.
2179         (check_field_decls): If check_bitfield_decl returned false, call also
2180         check_field_decl.
2181
2182 2007-10-28  Paolo Carlini  <pcarlini@suse.de>
2183             Mark Mitchell  <mark@codesourcery.com>
2184
2185         PR c++/30659
2186         * pt.c (do_decl_instantiation): If the VAR_DECL is not a
2187         class member error out and return.
2188
2189 2007-10-27  Jakub Jelinek  <jakub@redhat.com>
2190
2191         * error.c (reinit_cxx_pp): Initialize cxx_pp->enclosing_scope
2192         to current_function_decl rather than 0.
2193
2194         PR c++/33844
2195         * cxx-pretty-print.c (pp_cxx_pm_expression) <case MEMBER_REF>: Print
2196         ->* rather than .*.
2197         * error.c (dump_expr): Handle MEMBER_REF and DOTSTAR_EXPR.
2198
2199 2007-10-27  Jason Merrill  <jason@redhat.com>
2200
2201         PR c++/5247
2202         * call.c (convert_default_arg): Detect recursion.
2203
2204 2007-10-27  Jakub Jelinek  <jakub@redhat.com>
2205
2206         PR c++/33842
2207         * cxx-pretty-print.h (pp_cxx_offsetof_expression): New prototype.
2208         * cxx-pretty-print.c (pp_cxx_primary_expression): Handle
2209         OFFSETOF_EXPR.
2210         (pp_cxx_offsetof_expression_1, pp_cxx_offsetof_expression): New
2211         functions.
2212         * error.c (dump_expr): Handle OFFSETOF_EXPR.
2213
2214 2007-10-26  Jason Merrill  <jason@redhat.com>
2215
2216         PR c++/24791
2217         * pt.c (get_template_info): New fn.
2218         (template_class_depth): Use it.
2219         (push_template_decl_real): Check that the template args of the 
2220         definition match the args of the previous declaration.
2221
2222 2007-10-26  Paolo Carlini  <pcarlini@suse.de>
2223
2224         PR c++/31988
2225         * decl2.c (coerce_new_type): Do not allow a default argument for
2226         the first parameter.
2227
2228 2007-10-26  Douglas Gregor  <doug.gregor@gmail.com>
2229
2230         PR c++/33839
2231         * parser.c (cp_parser_decltype): Return ERROR_MARK_NODE if we
2232         don't see the leading '('. Only lookup names if we get an
2233         IDENTIFIER_NODE.
2234
2235 2007-10-26  Jakub Jelinek  <jakub@redhat.com>
2236
2237         PR c++/33744
2238         * parser.c (cp_parser_parenthesized_expression_list): Set
2239         greater_than_is_operator_p to true in between the parens.
2240
2241 2007-10-26  Paolo Carlini  <pcarlini@suse.de>
2242
2243         PR c++/31747
2244         * decl.c (grokdeclarator): In case of conflicting specifiers
2245         just return error_mark_node.
2246
2247 2007-10-26  Ollie Wild  <aaw@google.com>
2248
2249         * expr.c (cxx_expand_expr): Removed.
2250         * cp-tree.h (exx_expand_expr): Removed.
2251         * cp-objcp-common.h (LANK_HOOKS_EXPAND_EXPR): Replace cxx_expand_expr
2252         with c_expand_expr.
2253
2254 2007-10-25  Paolo Carlini  <pcarlini@suse.de>
2255
2256         PR c++/33843
2257         * cxx-pretty-print.c (pp_cxx_unqualified_id): Deal with BIT_NOT_EXPR.
2258
2259 2007-10-23  Jason Merrill  <jason@redhat.com>
2260
2261         PR c++/25950 (DR 391)
2262         * call.c (struct conversion): Remove check_copy_constructor_p.
2263         (reference_binding): Always bind a reference directly to a 
2264         compatible class rvalue.  Pass down LOOKUP_NO_TEMP_BIND during 
2265         temporary creation.
2266         (check_constructor_callable): Remove.
2267         (convert_like_real): Don't call it.
2268         (initialize_reference): Don't call check_constructor_callable.
2269         (standard_conversion): Check LOOKUP_NO_CONVERSION instead of
2270         LOOKUP_CONSTRUCTOR_CALLABLE.  Don't require a temporary for base
2271         conversions if LOOKUP_NO_TEMP_BIND.
2272         (implicit_conversion): Pass through LOOKUP_NO_TEMP_BIND.
2273         (build_user_type_conversion_1): Pass through LOOKUP_NO_TEMP_BIND for
2274         second conversion.
2275         * cp-tree.h (LOOKUP_CONSTRUCTOR_CALLABLE): Remove.
2276
2277 2007-10-22  Jakub Jelinek  <jakub@redhat.com>
2278
2279         PR c++/33372
2280         * semantics.c (finish_omp_clauses): Check !type_dependent_expression_p
2281         before checking if its type is integral.
2282
2283 2007-10-22  Jason Merrill  <jason@redhat.com>
2284
2285         PR c++/33620
2286         * class.c (finish_struct_bits): Copy TYPE_ATTRIBUTES.
2287         * pt.c (apply_late_template_attributes): Splice out dependent
2288         attributes from DECL_ATTRIBUTES.
2289
2290         * decl.c (cxx_maybe_build_cleanup): Use build_address.
2291
2292 2007-10-17  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2293
2294         * typeck.c (build_binary_op) : Use appropriate warning option
2295         instead of unnamed warning.
2296
2297 2007-10-16  Paolo Carlini  <pcarlini@suse.de>
2298
2299         PR c++/31446
2300         * pt.c (current_template_args): Do not change TREE_LIST elements
2301         with a TREE_VALUE of error_mark_node.
2302
2303 2007-10-16  Mark Mitchell  <mark@codesourcery.com>
2304
2305         * typeck.c (cp_apply_type_quals_to_decl): Expand documentation.
2306         * decl.c (start_decl): Tidy.
2307         (start_decl_1): Call cp_apply_type_quals_to_decl after completing
2308         the type.
2309         (grokdeclarator): Clarify comment.
2310
2311 2007-10-14  Andrew Pinski  <pinskia@gmail.com>
2312
2313         PR c++/30303
2314         * decl.c (grokfndecl): Return NULL after the "definition of
2315         implicitly-declared" error happened.
2316
2317 2007-10-12  Simon Martin  <simartin@users.sourceforge.net>
2318
2319         PR c++/26698
2320         * call.c (build_user_type_conversion_1): Do not consider conversion
2321         functions to convert a (possibly cv-qualified) object to the (possibly
2322         cv-qualified) same object type (or a reference to it), to a (possibly
2323         cv-qualified) base class of that type (or a reference to it).
2324
2325 2007-10-12  Paolo Carlini  <pcarlini@suse.de>
2326
2327         * pt.c (tsubst): Use template_parm_level_and_index.
2328
2329 2007-10-12  Jakub Jelinek  <jakub@redhat.com>
2330
2331         PR c++/32121
2332         * parser.c (cp_parser_compound_statement): Handle label-declarations
2333         at the beginning of the compound statement.
2334         (cp_parser_block_declaration): Issue diagnostics about __label__
2335         not at the beginning of a block.
2336
2337 2007-10-11  Paolo Carlini  <pcarlini@suse.de>
2338
2339         PR c++/33461
2340         * pt.c (coerce_template_parameter_pack): Do not pass error_mark_node
2341         to convert_template_argument.
2342         (coerce_template_parms): Return error_mark_node after fixed-length
2343         error.
2344         (tsubst_decl): Check for error_mark_node the return value of the
2345         first tsubst in 'case VAR_DECL'.
2346
2347 2007-10-08  Ollie Wild  <aaw@google.com>
2348
2349         * typeck2.c (digest_init): Call cplus_expand_constant after
2350         convert_for_initialization.
2351         * cp-objcp-common.h (LANG_HOOKS_EXPAND_CONSTANT): Removed.
2352         * expr.c (cplus_expand_constant): Updated function description.
2353
2354 2007-10-04  Jason Merrill  <jason@redhat.com>
2355
2356         PR c++/20416
2357         * call.c (initialize_reference): Handle local static reference
2358         temps properly.
2359
2360 2007-10-03  Jason Merrill  <jason@redhat.com>
2361
2362         PR c++/32470
2363         * name-lookup.c (push_namespace_with_attrs): Fold back into...
2364         (push_namespace): Here.
2365         (handle_namespace_attrs): New fn for the attr code.
2366         (leave_scope): Don't pop_visibility.
2367         * name-lookup.h (struct cp_binding_level): Remove has_visibility.
2368         * parser.c (cp_parser_namespace_definition): Call
2369         handle_namespace_attrs and pop_visibility as appropriate. 
2370
2371         PR c++/11756
2372         * mangle.c (write_type) [TYPEOF_TYPE]: Just sorry.
2373
2374 2007-10-03  Alexandre Oliva  <aoliva@redhat.com>
2375
2376         * decl.c (duplicate_decls): Preserve linkage flags for mere
2377         redeclarations of gnu_inline definitions.
2378
2379 2007-10-03  Jason Merrill  <jason@redhat.com>
2380
2381         PR c++/15764
2382         * decl.c (wrap_cleanups_r): New fn.
2383         (wrap_temporary_cleanups): New fn.
2384         (initialize_local_var): Call it.
2385
2386 2007-09-29  Jason Merrill  <jason@redhat.com>
2387
2388         PR c++/33094
2389         * decl.c (make_rtl_for_nonlocal_decl): It's ok for a member 
2390         constant to not have DECL_EXTERNAL if it's file-local.
2391
2392 2007-09-28  Ollie Wild  <aaw@google.com>
2393
2394         Revert
2395         2007-09-27  Ollie Wild  <aaw@google.com>
2396
2397         * typeck2.c (digest_init): Call cplus_expand_constant after
2398         convert_for_initialization.
2399         * cp-objcp-common.h (LANG_HOOKS_EXPAND_CONSTANT): Removed.
2400         * expr.c (cplus_expand_constant): Updated function description.
2401
2402 2007-09-28  Jason Merrill  <jason@redhat.com>
2403
2404         PR c++/10179
2405         * class.c (layout_empty_base): Take rli parameter, update
2406         rli->record_align if empty base has user-specified alignment.
2407         (build_base_field): Pass rli to it.
2408
2409 2007-09-28  Paolo Carlini  <pcarlini@suse.de>
2410
2411         PR c++/33213
2412         * error.c (dump_decl): Deal with TYPE_PACK_EXPANSION.
2413
2414 2007-09-28  Paolo Carlini  <pcarlini@suse.de>
2415
2416         PR c++/33118
2417         * error.c (dump_expr): Deal with ARGUMENT_PACK_SELECT.
2418         (dump_type): Use dump_template_argument for TYPE_ARGUMENT_PACK.
2419         (dump_parameters): Just call dump_type for argument packs too.
2420
2421 2007-09-28  Jakub Jelinek  <jakub@redhat.com>
2422
2423         PR c++/31434
2424         * tree.c (cp_build_qualified_type_real): Handle TYPE_PACK_EXPANSION
2425         qualification by creating qualified PACK_EXPANSION_PATTERN and
2426         then calling make_pack_expansion on it.
2427
2428 2007-09-27  Ollie Wild  <aaw@google.com>
2429
2430         * typeck2.c (digest_init): Call cplus_expand_constant after
2431         convert_for_initialization.
2432         * cp-objcp-common.h (LANG_HOOKS_EXPAND_CONSTANT): Removed.
2433         * expr.c (cplus_expand_constant): Updated function description.
2434
2435 2007-09-27  Jason Merrill  <jason@redhat.com>
2436
2437         PR c++/33571
2438         * decl2.c (is_late_template_attribute): Don't crash on unknown
2439         attribute.
2440
2441 2007-09-27  Paolo Carlini  <pcarlini@suse.de>
2442
2443         PR c++/33493
2444         * error.c (dump_expr): Deal with DELETE_EXPR and VEC_DELETE_EXPR.
2445         * cxx-pretty-print.c (pp_cxx_delete_expression): Add missing
2446         spaces in the formatting.
2447         * cxx-pretty-print.h (pp_cxx_delete_expression): Declare.
2448
2449 2007-09-27  Jakub Jelinek  <jakub@redhat.com>
2450
2451         * error.c (cxx_print_error_function): Add third argument, pass
2452         it over to lhd_print_error_function.
2453         (cp_print_error_function): If diagnostic->abstract_origin, print
2454         virtual backtrace.
2455         * cp-tree.h (struct diagnostic_info): New forward decl.
2456         (cxx_print_error_function): Add third argument.
2457
2458 2007-09-25  Simon Martin  <simartin@users.sourceforge.net>
2459
2460         PR c++/33207
2461         * name-lookup.c (pushtag): Do not create an implicit typedef before
2462         the associated type declaration is known to be valid.
2463
2464 2007-09-25  Jakub Jelinek  <jakub@redhat.com>
2465
2466         * tree.c (cxx_printable_name): Compare FUNCTION_DECL uids
2467         rather than pointers.
2468
2469 2007-09-24  Danny Smith  <dannysmith@user.sourceforge.net>
2470
2471         PR c++/14688
2472         * search.c (check_final_overrider): Fail if
2473         targetm.comp_type_attributes returns 0.
2474
2475 2007-09-24  Jason Merrill  <jason@redhat.com>
2476
2477         PR c++/33239
2478         * pt.c (resolve_typename_type): Don't look things up in the original
2479         template if it would mean losing template arguments.    
2480
2481 2007-09-24  Jakub Jelinek  <jakub@redhat.com>
2482
2483         PR c++/33506
2484         * cp-tree.h (cxx_type_hash_eq): New prototype.
2485         * cp-objcp-common.h (LANG_HOOKS_TYPE_HASH_EQ): Redefine.
2486         * tree.c (cxx_type_hash_eq): New function.
2487
2488 2007-09-24  Douglas Gregor  <doug.gregor@gmail.com>
2489
2490         PR c++/33185    
2491         * tree.c (cp_build_qualified_type_real): Build a canonical
2492         ARRAY_TYPE if the original ARRAY_TYPE was not a canonical type.
2493         
2494 2007-09-24  Douglas Gregor  <doug.gregor@gmail.com>
2495
2496         PR c++/33112
2497         PR c++/33185    
2498         * tree.c (cplus_array_compare): Compare pointers, not types.
2499         (build_cplus_array_type_1): Store new array type into the hash
2500         table before building the canonical type; build the canonical type
2501         correctly.
2502         (cp_build_qualified_type_real): Put all of the array types with
2503         cv-qualified element types into the C++ array hash table, built as 
2504         variants of the unqualified versions.
2505         
2506 2007-09-23  Jason Merrill  <jason@redhat.com>
2507
2508         PR c++/16370
2509         * decl.c (grokdeclarator): Look through implicit TYPE_DECLs
2510         for deprecation warnings.
2511
2512 2007-09-22  Jason Merrill  <jason@redhat.com>
2513
2514         PR c++/15269
2515         * call.c (build_over_call): Warn about deprecated virtuals.
2516
2517         PR c++/19407
2518         * cp-tree.h (ATTR_IS_DEPENDENT): New macro.
2519         (MAYBE_TAGGED_TYPE_P): Remove.
2520         * pt.c (apply_late_template_attributes): Check ATTR_IS_DEPENDENT
2521         instead of calling is_late_template_attribute again.
2522         (tsubst_decl) [TYPE_DECL]: Just check if the name is the tag.
2523         (tsubst): A typedef is a TYPE_NAME != TYPE_MAIN_DECL.
2524         Don't crash on typedefs from non-template classes.
2525         * decl2.c (grokfield): Don't sorry about attrs on template parms.
2526         (is_late_template_attribute): All attributes applied to template
2527         parms or typename types are dependent.  Static.
2528         (splice_template_attributes): Pass decl through.
2529         (save_template_attributes): Likewise.
2530
2531 2007-09-20  Jakub Jelinek  <jakub@redhat.com>
2532
2533         PR c++/33496
2534         * pt.c (tsubst_copy) <case SIZEOF_EXPR>: Handle error_mark_node
2535         returned from tsubst_pack_expansion.
2536         (tsubst_copy_and_build) <case SIZEOF_EXPR>: Likewise.
2537         (tsubst_copy_and_build) <case CONSTRUCTOR>: Likewise.
2538
2539 2007-09-20  Paolo Carlini  <pcarlini@suse.de>
2540
2541         PR c++/33460
2542         * semantics.c (finish_id_expression): Use consistently
2543         context_for_name_lookup.
2544         * decl.c (fixup_anonymous_aggr): Fix error message for
2545         anonymous struct (vs union).
2546
2547 2007-09-19  Jason Merrill  <jason@redhat.com>
2548
2549         PR c++/7586
2550         * pt.c (tsubst): Handle typedefs by looking for the specialization.
2551         (retrieve_specialization): Only tagged types use 
2552         DECL_TEMPLATE_INSTANTIATIONS.
2553         (instantiate_class_template): Push nested classes too.
2554         (tsubst_decl) [TYPE_DECL]: Only check for canonical decl for
2555         tagged types.
2556         * cp-tree.h (MAYBE_TAGGED_TYPE_P): New macro.
2557         * init.c (is_aggr_type): Remove redundant tests.
2558         * class.c (push_nested_class): Use CLASS_TYPE_P.
2559
2560 2007-09-20  Paolo Carlini  <pcarlini@suse.de>
2561
2562         PR c++/33459
2563         * init.c (build_zero_init): If, recursively, build_zero_init
2564         returns a NULL_TREE, do not append it to the VEC of constructors.
2565
2566 2007-09-18  Jason Merrill  <jason@redhat.com>
2567
2568         PR c++/17743
2569         * pt.c (apply_late_template_attributes): Set processing_template_decl.
2570         (tsubst_decl) [TYPE_DECL]: Preserve naming typedef, pass
2571         ATTR_FLAG_TYPE_IN_PLACE.
2572         (tsubst): Do unqualified lookup to find typedefs from current class.
2573         [ARRAY_TYPE]: Propagate alignment info.
2574         * decl2.c (is_late_template_attribute): Only defer handling of
2575         attribute aligned if the expression is dependent.
2576         (save_template_attributes): If we're deferring any attributes,
2577         make this a naming typedef.
2578
2579 2007-09-18  Paolo Carlini  <pcarlini@suse.de>
2580
2581         PR c++/33462 (again)
2582         * cxx-pretty-print.c (pp_cxx_va_arg_expression): Print
2583         va_arg instead of __builtin_va_arg.
2584
2585 2007-09-18  Paolo Carlini  <pcarlini@suse.de>
2586
2587         PR c++/33462
2588         * cxx-pretty-print.c (pp_cxx_va_arg_expression): Add.
2589         (pp_cxx_primary_expression): Use it.
2590         * cxx-pretty-print.h (pp_cxx_va_arg_expression): Declare.
2591         * error.c (dump_expr): Use it.
2592
2593 2007-09-18  Paolo Carlini  <pcarlini@suse.de>
2594
2595         PR c++/33463
2596         * cxx-pretty-print.c (pp_cxx_postfix_expression): Split
2597         out case TYPEID_EXPR to...
2598         (pp_cxx_typeid_expression): ... here; use pp_cxx_left_paren
2599         and pp_cxx_right_paren.
2600         * cxx-pretty-print.h (pp_cxx_typeid_expression): Declare.
2601         * error.c (dump_expr): Use it.
2602
2603 2007-09-18  Paolo Carlini  <pcarlini@suse.de>
2604
2605         PR c++/33464
2606         * cxx-pretty-print.c (pp_cxx_trait_expression): Add.
2607         (pp_cxx_primary_expression): Use it.
2608         * cxx-pretty-print.h (pp_cxx_trait_expression): Declare.
2609         * error.c (dump_expr): Use it.
2610
2611 2007-09-16  Paolo Carlini  <pcarlini@suse.de>
2612
2613         PR c++/33124
2614         * init.c (build_new): Remove warning for zero-element
2615         allocations.
2616
2617 2007-09-16  Nathan Sidwell  <nathan@codesourcery.com>
2618
2619         PR c++/32756
2620         * call.c (maybe_handle_implicit_object): Set this_p, clear
2621         rvaluedness_matches_p.
2622         (compare_ics): Do not compare rvaluedness matching when one of the
2623         operands is an implicit object.
2624
2625 2007-09-14  Jason Merrill  <jason@redhat.com>
2626
2627         PR c++/17743, c++/19163
2628         * decl2.c (is_late_template_attribute): New fn.
2629         (splice_template_attributes, save_template_attributes): New fns.
2630         (cplus_decl_attributes): Call save_template_attributes.
2631         * pt.c (apply_late_template_attributes): New fn.
2632         (instantiate_class_template, tsubst_decl): Use it.
2633         * cp-tree.h: Declare is_late_template_attribute.
2634
2635 2007-09-13  Tom Tromey  <tromey@redhat.com>
2636
2637         * parser.c (cp_lexer_new_main): Don't use
2638         c_lex_return_raw_strings.
2639         (cp_lexer_get_preprocessor_token): Update.  Add special case when
2640         lexer is NULL.
2641
2642 2007-09-11  Jan Hubicka <jh@suse.cz>
2643
2644         * method.c (use_thunk): Use tree_rest_of_compilation
2645         * cp-objecp-common.h (LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Kill.
2646         (LANG_HOOKS_CALLGRAPH_EMIT_ASSOCIATED_THUNKS): Define.
2647         * cp-tree.h (expand_body): Kill.
2648         (emit_associated_thunks): Declare.
2649         * semantics.c (emit_associated_thunks): Export.
2650         (expand_body): Kill.
2651
2652 2007-09-09  David Daney  <ddaney@avtrex.com>
2653
2654         PR c++/33324
2655         * init.c (build_new_1):  Use POINTER_PLUS_EXPR instead of MINUS_EXPR
2656         to calculate cookie_ptr.
2657
2658 2007-09-08  Jason Merrill  <jason@redhat.com>
2659
2660         PR c++/33342
2661         * pt.c (most_specialized_class): Set processing_template_decl
2662         while tsubsting partial spec args.
2663
2664 2007-09-06  Jason Merrill  <jason@redhat.com>
2665
2666         * decl2.c (get_guard): Copy visibility from the guarded variable.
2667
2668 2007-09-06  Jan Hubicka  <jh@suse.cz>
2669
2670         * semantics.c (expand_body): Do not mark arguments of clones used.
2671
2672 2007-09-06  Paolo Carlini  <pcarlini@suse.de>
2673
2674         PR c++/32674
2675         * decl.c (cp_finish_decl): When processing_template_decl,
2676         deal correctly with init as TREE_LIST.
2677
2678 2007-09-06  Tom Tromey  <tromey@redhat.com>
2679
2680         * decl.c (finish_function): Put return's location on line zero of
2681         file.
2682
2683 2007-09-05  Jason Merrill  <jason@redhat.com>
2684
2685         PR c++/15745
2686         * except.c (prepare_eh_type): Use type_decays_to.
2687
2688         PR c++/15097
2689         * init.c (build_delete): Use build_headof to get the address of the
2690         complete object if we aren't using the deleting destructor.
2691         * rtti.c (build_headof): No longer static.
2692         * cp-tree.h: Declare it.
2693
2694 2007-09-06  Jakub Jelinek  <jakub@redhat.com>
2695
2696         * decl.c (duplicate_decls): Set TREE_NOTHROW on __builtin_XX
2697         decl if a prototype for XX is provided with throw().
2698
2699         PR c++/33289
2700         * decl.c (builtin_function_1): Set DECL_ANTICIPATED also
2701         on __*_chk non-__builtin_* decls.
2702
2703 2007-09-05  Paolo Carlini  <pcarlini@suse.de>
2704
2705         PR c++/30302
2706         * semantics.c (finish_id_expression): Use context_for_name_lookup
2707         insted of DECL_CONTEXT, to see through anonymous structs and unions.
2708         * class.c (finish_struct_anon): Deal correctly with anonymous
2709         structs (vs unions, as GNU extension) in error messages.
2710
2711 2007-09-05  Jan Hubicka  <jh@suse.cz>
2712
2713         * sematics.c (expand_body): Remove unnecesary import_export_decl
2714         call, DECL_EXTERNAL checks and current_function_decl saving.
2715
2716 2007-09-05  Paolo Carlini  <pcarlini@suse.de>
2717
2718         PR c++/29731 (again)
2719         * parser.c (cp_parser_primary_expression): Return error_mark_node
2720         when a statement-expression is found in a template-argument list.
2721
2722 2007-09-04  Jason Merrill  <jason@redhat.com>
2723
2724         * except.c (initialize_handler_parm): Use
2725         fold_build_cleanup_point_expr.
2726
2727         PR c++/31419
2728         * call.c (reference_binding): Don't look for user-defined conversions
2729         to the same type.
2730
2731         PR c++/31411
2732         * except.c (initialize_handler_parm): Put a CLEANUP_POINT_EXPR inside
2733         the MUST_NOT_THROW_EXPR.
2734
2735 2007-09-04  Richard Sandiford  <richard@codesourcery.com>
2736
2737         * decl.c (cp_finish_decl): Call determine_visibility before
2738         make_rtl_for_nonlocal_decl.
2739
2740 2007-09-04  Jason Merrill  <jason@redhat.com>
2741
2742         PR c++/14032
2743         * pt.c (most_specialized_class): Substitute outer template
2744         arguments into the arguments of a member template partial
2745         specialization.
2746         (strip_innermost_template_args): New fn.
2747
2748 2007-09-03  Daniel Jacobowitz  <dan@codesourcery.com>
2749
2750         * Make-lang.in (g++spec.o): Remove SHLIB_MULTILIB.
2751
2752 2007-09-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2753
2754         * call.c (name_as_c_string): Supply a TYPE for CONST_CAST.
2755         * decl.c (cp_make_fname_decl): Likewise,
2756         * parser.c (cp_parser_string_literal): Likewise,
2757         * tree.c (pod_type_p, zero_init_p): Use CONST_CAST_TREE.
2758         * typeck.c (cp_type_quals, cp_type_readonly, cp_has_mutable_p):
2759         Likewise,
2760
2761 2007-09-02  Paolo Carlini  <pcarlini@suse.de>
2762
2763         PR c++/33208
2764         * typeck.c (build_unary_op): Fix error message for
2765         Boolean expression as operand to operator--.
2766
2767 2007-09-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2768
2769         * tree.c (pod_type_p, zero_init_p): Use strip_array_types.
2770         * typeck.c (cp_type_quals, cp_type_readonly, cp_has_mutable_p):
2771         Likewise.
2772
2773 2007-08-31 Douglas Gregor <doug.gregor@gmail.com>
2774
2775         PR c++/32597
2776         * init.c (build_default_init): Make extern.
2777         * cp-tree.h (build_default_init): Declare here.
2778         * pt.c (tsubst_expr): When the instantiation of the initializer of
2779         a variable results in an empty list, default-initialize the
2780         variable.
2781         (tsubst_copy_and_build): When the instantiation of the initializer
2782         in a new expression results in an empty initializer list,
2783         default-initialize it.
2784
2785 2007-08-31  Douglas Gregor  <doug.gregor@gmail.com>
2786
2787         * mangle.c (write_type): Change mangling of rvalue reference from
2788         `RR' to `O'. 
2789
2790 2007-08-31  Jakub Jelinek  <jakub@redhat.com>
2791
2792         * decl.c (duplicate_decls): Remove duplicated line.
2793
2794 2007-08-31  Paolo Carlini  <pcarlini@suse.de>
2795
2796         PR c++/33210
2797         * cxx-pretty-print.c (pp_cxx_unqualified_id): Deal with
2798         BOUND_TEMPLATE_TEMPLATE_PARM.
2799
2800 2007-08-31  Paolo Carlini  <pcarlini@suse.de>
2801
2802         PR c++/32113
2803         * search.c (lookup_member): Check the name argument for
2804         error_mark_node.
2805
2806 2007-08-31  Paolo Carlini  <pcarlini@suse.de>
2807
2808         PR c++/33212
2809         * parser.c (cp_parser_trait_expr): Check rerurn value of
2810         cp_parser_type_id.
2811
2812 2007-08-30  Ollie Wild  <aaw@google.com>
2813
2814         * cvt.c (cp_convert_to_pointer): Remove force parameter. Call
2815         convert_ptrmem for pointer to member conversions.
2816         (convert_to_pointer_force): Update cp_convert_to_pointer call.
2817         (ocp_convert): Update cp_convert_to_pointer call.
2818         * typeck.c (convert_ptrmem): Add conditional for null pointers to
2819         members.
2820         (build_static_cast_1): Check can_convert for conversions in either
2821         direction.
2822         (get_delta_difference_1): New function.
2823         (get_delta_difference): Refactor to call get_delta_difference_1.
2824
2825 2007-08-30  Jakub Jelinek  <jakub@redhat.com>
2826
2827         * decl.c (start_preparsed_function): Set
2828         DECL_DISREGARD_INLINE_LIMITS for GNU_INLINE_P functions.
2829
2830 2007-08-28  Paolo Carlini  <pcarlini@suse.de>
2831
2832         PR c++/33209
2833         * error.c (dump_expr): Deal with TEMPLATE_TYPE_PARM and
2834         BOUND_TEMPLATE_TEMPLATE_PARM.
2835
2836 2007-08-28  Jakub Jelinek  <jakub@redhat.com>
2837
2838         PR c++/32596
2839         PR c++/32400
2840         * pt.c (check_explicit_specialization): Set DECL_INTERFACE_KNOWN
2841         and DECL_NOT_REALLY_EXTERN if tmpl_func is not public.
2842
2843 2007-08-27  Jason Merrill  <jason@redhat.com>
2844
2845         PR c++/29000
2846         * pt.c (build_non_dependent_expr, type_dependent_expression_p): 
2847         Look inside STMT_EXPR.
2848         * semantics.c (stmt_expr_value_expr): New fn.
2849         * cp-tree.h: Declare it.
2850
2851         PR c++/28558
2852         * decl.c (groktypename): Ignore attributes applied to class type.
2853
2854 2007-08-28  Richard Guenther  <rguenther@suse.de>
2855
2856         * decl.c (duplicate_decls): Merge DECL_DISREGARD_INLINE_LIMITS.
2857
2858 2007-08-28  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2859         
2860         * error.c (dump_expr): Handle COMPLEX_CST.
2861         * cxx-pretty-print.c (pp_cxx_primary_expression): Likewise.
2862         (pp_cxx_expression): Likewise.
2863
2864 2007-08-27  Alexandre Oliva  <aoliva@redhat.com>
2865
2866         * decl.c (GNU_INLINE_P): New.
2867         (duplicate_decls): Handle gnu_inline.  Merge attributes and
2868         some flags in overriding definitions.
2869         (redeclaration_error_message): Handle gnu_inline.
2870         (start_preparsed_function): Likewise.
2871
2872 2007-08-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2873
2874         * call.c (sufficient_parms_p): Constify.
2875         * class.c (same_signature_p): Likewise.
2876         * cp-gimplify.c (is_invisiref_parm,
2877         cxx_omp_privatize_by_reference): Likewise.
2878         * cp-objcp-common.c (has_c_linkage): Likewise.
2879         * cp-tree.h (NON_THUNK_FUNCTION_CHECK, THUNK_FUNCTION_CHECK,
2880         sufficient_parms_p, same_signature_p, copy_fn_p, move_fn_p,
2881         grok_ctor_properties, nothrow_libfn_p, skip_artificial_parms_for,
2882         num_artificial_parms_for, comp_template_parms,
2883         template_parameter_pack_p, any_dependent_template_arguments_p,
2884         any_type_dependent_arguments_p, any_value_dependent_elements_p,
2885         repo_export_class_p, cxx_omp_privatize_by_reference, pod_type_p,
2886         zero_init_p, member_p, cp_lvalue_kind,
2887         builtin_valid_in_constant_expr_p, decl_anon_ns_mem_p,
2888         varargs_function_p, is_dummy_object, special_function_kind,
2889         string_conv_p, type_unknown_p, comp_except_specs, compparms,
2890         comp_cv_qualification, is_bitfield_expr_with_lowered_type,
2891         unlowered_expr_type, ptr_reasonably_similar, cp_type_readonly,
2892         cp_has_mutable_p, at_least_as_qualified_p,
2893         invalid_nonstatic_memfn_p, lvalue_or_else, lvalue_p): Likewise.
2894         * decl.c (copy_fn_p, move_fn_p, grok_ctor_properties): Likewise.
2895         * except.c (nothrow_libfn_p): Likewise.
2896         * method.c (skip_artificial_parms_for, num_artificial_parms_for):
2897         Likewise.
2898         * pt.c (comp_template_parms, template_parameter_pack_p,
2899         any_type_dependent_arguments_p, any_value_dependent_elements_p,
2900         any_dependent_template_arguments_p): Likewise.
2901         * repo.c (repo_export_class_p): Likewise.
2902         * semantics.c (anon_aggr_type_p): Likewise.
2903         * tree.c (lvalue_p_1, real_lvalue_p, lvalue_p,
2904         builtin_valid_in_constant_expr_p, decl_anon_ns_mem_p,
2905         varargs_function_p, member_p, is_dummy_object, pod_type_p,
2906         zero_init_p, special_function_p): Likewise.
2907         * typeck.c (comp_array_types, type_unknown_p, comp_except_specs,
2908         comp_array_types, at_least_as_qualified_p, comp_cv_qualification,
2909         compparms, invalid_nonstatic_memfn_p,
2910         is_bitfield_expr_with_lowered_type, unlowered_expr_type,
2911         string_conv_p, ptr_reasonably_similar, cp_type_readonly,
2912         cp_has_mutable_p, lvalue_or_else): Likewise.
2913
2914 2007-08-25  Paolo Bonzini  <bonzini@gnu.org>
2915
2916         * decl.c (cp_tree_node_structure): Kill TINST_LEVEL case.
2917         * cp-objcp-common.c (cp_tree_size): Ditto.
2918         * tree.c (cp_walk_subtrees): Ditto
2919         * cp-tree.def (TINST_LEVEL): Go away.
2920         * cp-tree.h (struct tinst_level_s): Rename to struct tinst_level,
2921         move together with other non-tree structs.
2922         (enum cp_tree_node_structure_enum): Nuke TS_CP_TINST_LEVEL.
2923         (union lang_tree_node): Eliminate tinst_level field.
2924         (TINST_DECL, TINST_LOCATION, TINST_IN_SYSTEM_HEADER_P): Annihilate.
2925         (current_instantiation, outermost_tinst_level): Return
2926         a "struct tinst_level *".
2927
2928         * error.c (print_instantiation_partial_context): Change second
2929         parameter to a "struct tinst_level *".  Replace accessor macros
2930         with field access.
2931         (print_instantiation_full_context): Likewise.
2932         * lex.c (in_main_input_context): Likewise.
2933
2934         * pt.c (struct pending_templates): New.
2935         (pending_templates, last_pending_template): Use it as a type.
2936         (current_tinst_level): Change typo to "struct tinst_level *"
2937         (reopen_tinst_level): Accept "struct tinst_level *", return decl.
2938         (add_pending_template): Construct a "struct pending_template".
2939         Replace TINST_LEVEL accessor macros with field access.
2940         (push_tinst_level): Likewise, using GGC_NEW instead of make_node.
2941         (pop_tinst_level): Likewise.
2942         (instantiate_pending_templates): Likewise.  Factor common code used
2943         when an instantiation has been done.
2944         (outermost_tinst_level): Replace tree_last with loop.
2945         (current_instantiation): Return a "struct tinst_level *".
2946
2947 2007-08-24  Ollie Wild  <aaw@google.com>
2948
2949         * name-lookup.c (add_decl_to_level): Remove addition to vtables chain.
2950         * name-lookup.h (cp_binding_level): Remove vtables member.
2951
2952 2007-08-24  Richard Guenther  <rguenther@suse.de>
2953
2954         * tree.c (cp_cannot_inline_tree_fn): Remove.
2955         * cp-tree.h (cp_cannot_inline_tree_fn): Likewise.
2956         * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN):
2957         Remove define.
2958
2959 2007-08-24  Jakub Jelinek  <jakub@redhat.com>
2960
2961         PR c++/32567
2962         * typeck.c (build_unary_op) <case PREINCREMENT_EXPR>: Return
2963         error_mark_node right away if build_expr_type_conversion
2964         returned it.
2965
2966         PR c++/32898
2967         * name-lookup.c (set_decl_namespace): lookup_qualified_name failure
2968         is error_mark_node rather than NULL_TREE.
2969         * pt.c (check_explicit_specialization): Likewise.
2970
2971         PR c++/31941
2972         * error.c (resolve_virtual_fun_from_obj_type_ref): Handle
2973         TARGET_VTABLE_USES_DESCRIPTORS targets properly.
2974
2975 2007-08-22  Jason Merrill  <jason@redhat.com>
2976
2977         PR c++/29365
2978         * pt.c (outermost_tinst_level): New function.
2979         * lex.c (in_main_input_context): New function.
2980         * cp-tree.h: Declare it.
2981         * decl2.c (constrain_class_visibility): Use it to avoid warning
2982         about uses of the anonymous namespace in the main input file.
2983
2984 2007-08-21  Jakub Jelinek  <jakub@redhat.com>
2985
2986         * init.c (build_new_1): Use get_target_expr instead of save_expr.
2987
2988 2007-08-20  Pawel Sikora  <pluto@pld-linux.org>
2989
2990         PR c++/7302
2991         * class.c (finish_struct_1): Warn when a class has virtual
2992         functions and accessible non-virtual destructor.
2993
2994 2007-08-20  Richard Guenther  <rguenther@suse.de>
2995
2996         PR c++/22369
2997         PR c++/22451
2998         * call.c (build_new_method_call): Convert initializer to
2999         the basetype.
3000         * init.c (build_aggr_init): Do not fiddle with types.
3001         (build_vec_delete_1): Use correct type for POINTER_PLUS_EXPR.
3002         * except.c (build_throw): Do not drop qualifiers for the
3003         pointer type.
3004         * typeck.c (get_member_function_from_ptrfunc): Do not
3005         fiddle with types, instead convert.
3006         (build_ptrmemfunc1): Convert to the target type for
3007         initialization.
3008         (gfc_trans_allocate): Convert result to target type.
3009         * cp-objcp-common.c (cxx_get_alias_set): Pointers to
3010         pointer-to-member structures shall have alias set zero as well.
3011
3012 2007-08-20  Richard Guenther  <rguenther@suse.de>
3013
3014         * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P):
3015         Remove.
3016         * cp-tree.h (cp_auto_var_in_fn_p): Remove.
3017         (nonstatic_local_decl_p): Likewise.
3018         * tree.c (cp_auto_var_in_fn_p): Remove.
3019         * decl.c (nonstatic_local_decl_p): Remove.
3020
3021 2007-08-20  Richard Guenther  <rguenther@suse.de>
3022
3023         * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_WALK_SUBTREES):
3024         Remove define.
3025         * tree.h (cp_walk_tree): New define to walk_tree_1 with
3026         cp_walk_subtrees lh parameter.
3027         (cp_walk_tree_without_duplicates): New define to
3028         walk_tree_without_duplicates_1 with cp_walk_subtrees lh parameter.
3029         * tree.c (count_trees): Call
3030         cp_walk_tree_without_duplicates.
3031         (verify_stmt_tree): Call cp_walk_tree.
3032         (break_out_target_exprs): Likewise.
3033         (WALK_SUBTREE): Likewise.
3034         * cp-gimplify.c (cp_genericize): Likewise.
3035         * cp-pt.c (find_parameter_packs_r): Likewise.
3036         (uses_parameter_packs): Likewise.
3037         (make_pack_expansion): Likewise.
3038         (check_for_bare_parameter_packs): Likewise.
3039         (for_each_template_parm): Likewise.
3040         * decl.c (check_default_argument): Call
3041         cp_walk_tree_without_duplicates.
3042         * except.c (build_throw): Likewise.
3043         * decl2.c (type_visibility): Likewise.
3044         * semantics.c (expand_or_defer_fn): Likewise.
3045         (finalize_nrv): Call cp_walk_tree.
3046
3047 2007-08-20  Jakub Jelinek  <jakub@redhat.com>
3048
3049         PR c++/33025
3050         * init.c (build_new_1): Rename placement_var variable to placement_expr.
3051         Initialize it with save_expr rather than get_temp_regvar.
3052
3053 2007-08-17  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3054
3055         PR c++/28989
3056         * tree.c (lvalue_p_1 <case SAVE_EXPR>): SAVE_EXPRs are never
3057         lvalues.
3058
3059 2007-08-17  Ollie Wild  <aaw@google.com>
3060
3061         PR c++/31749
3062         * name-lookup.c (do_nonmember_using_decl): Shift implicit type
3063         declarations into appropriate slots for comparison.  Fix type
3064         comparison.
3065
3066 2007-08-17  Paolo Carlini  <pcarlini@suse.de>
3067
3068         PR c++/32112
3069         * error.c (dump_decl): Deal with UNBOUND_CLASS_TEMPLATE.
3070         * cxx-pretty-print.c (pp_cxx_unqualified_id): Likewise.
3071
3072 2007-08-17  Paolo Carlini  <pcarlini@suse.de>
3073
3074         PR c++/32870
3075         * parser.c (cp_parser_class_head): Improve error message.
3076
3077 2007-08-16  Seongbae Park  <seongbae.park@gmail.com>
3078
3079         * pt.c (instantiate_decl): Set input_location
3080         for the function end.
3081
3082 2007-08-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3083
3084         * cp-objcp-common.c (cxx_warn_unused_global_decl, cp_expr_size):
3085         Constify.
3086         * cp-tree.h (local_variable_p, nonstatic_local_decl_p,
3087         class_tmpl_impl_spec_p, cp_auto_var_in_fn_p, cp_type_quals,
3088         cxx_incomplete_type_diagnostic, cxx_incomplete_type_error,
3089         cxx_warn_unused_global_decl, cp_expr_size): Likewise.
3090         * decl.c (local_variable_p, nonstatic_local_decl_p): Likewise.
3091         * tree.c (class_tmpl_impl_spec_p, cp_auto_var_in_fn_p): Likewise.
3092         * typeck.c (cp_type_quals): Likewise.
3093         * typeck2.c (cxx_incomplete_type_diagnostic,
3094         cxx_incomplete_type_error): Likewise.
3095
3096 2007-08-16  Paolo Carlini  <pcarlini@suse.de>
3097
3098         PR c++/31132
3099         * pt.c (tsubst_friend_function): When check_classfn
3100         returns error_mark_node likewise return it.
3101
3102 2007-08-15  Jakub Jelinek  <jakub@redhat.com>
3103
3104         PR c++/32992
3105         * typeck.c (check_return_expr): Don't NRV optimize vars in
3106         anonymous unions.
3107         * decl.c (finish_function): Comment fix.
3108
3109 2007-08-15  Paolo Carlini  <pcarlini@suse.de>
3110
3111         PR c++/33035
3112         * pt.c (push_template_decl_real): Depending on TYPE_P
3113         use either TYPE_CONTEXT or DECL_CONTEXT.
3114
3115 2007-08-14  Mark Mitchell  <mark@codesourcery.com>
3116
3117         * semantics.c (finish_omp_clauses): Strip a NOP_EXPR if
3118         constructors and destructors return this.
3119
3120 2007-08-14  Paolo Carlini  <pcarlini@suse.de>
3121
3122         PR c++/27211
3123         * decl2.c (check_classfn): Return error_mark_node in case of error;
3124         in that case, do not call add_method.
3125         * decl.c (start_decl): Deal with check_classfn returning
3126         error_mark_node.
3127         (grokfndecl): Likewise.
3128         * pt.c (tsubst_friend_function): Likewise.
3129
3130 2007-08-14  Andrew Pinski  <pinskia@gmail.com>
3131
3132         PR c++/30428
3133         * typeck.c (build_binary_op): Disallow vector float types with
3134         BIT_IOR_EXPR, BIT_AND_EXPR, and BIT_XOR_EXPR.
3135
3136 2007-08-11  Ian Lance Taylor  <iant@google.com>
3137
3138         * cp-objcp-common.c (cxx_get_alias_set): Change return type to
3139         alias_set_type.
3140         * cp-tree.h (cxx_get_alias_set): Update declaration.
3141
3142 2007-08-10  Ollie Wild  <aaw@google.com>
3143
3144         * name-lookup.c (do_nonmember_using_decl): Print an error for ambiguous
3145         type lookups.
3146         (ambiguous_decl): Construct tree of ambiguous types.  Remove extaneous
3147         function parameter.
3148         (unqualified_namespace_lookup): Fix ambiguous_decl call.
3149         (lookup_using_namespace): Fix ambiguous_decl call.
3150         (qualified_lookup_using_namespace): Fix ambiguous_decl call.
3151
3152 2007-08-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3153
3154         * call.c (name_as_c_string): Use CONST_CAST.
3155         * decl.c (build_decl): Likewise.
3156         * parser.c (cp_parser_string_literal): Likewise.
3157
3158 2007-08-10  Paolo Carlini  <pcarlini@suse.de>
3159
3160         PR c++/17763
3161         * error.c (dump_expr): Consistently use the *_cxx_*
3162         variants of the pretty-print functions.
3163
3164 2007-08-10  Paolo Carlini  <pcarlini@suse.de>
3165
3166         PR c++/22256
3167         * decl.c (check_special_function_return_type): Just error
3168         on return type specified for conversion operator.
3169
3170 2007-08-09  Daniel Berlin  <dberlin@dberlin.org>
3171
3172         * typeck2.c (readonly_error): Handle general expressions.
3173         * error.c (dump_expr): Handle POINTER_PLUS_EXPR
3174
3175 2007-08-06  Dan Hipschman  <dsh@google.com>
3176
3177         * method.c (use_thunk): Use DECL_NAME instead of DECL_RTL to
3178         access function name.
3179
3180 2007-08-04  Alfred Minarik  <a.minarik@aon.at>
3181
3182         PR pch/13676
3183         * lang-specs.h: Add .hp, .hxx, .hpp, .h, .HPP, .tcc as c++ header.
3184         * g++spec.c (lang_specific_driver): Check them.
3185
3186 2007-08-06  Paolo Carlini  <pcarlini@suse.de>
3187
3188         PR c++/19532
3189         * pt.c (inline_needs_template_parms): Fix comment; change return type
3190         to bool.
3191
3192 2007-08-05  Volker Reichelt  <v.reichelt@netcologne.de>
3193
3194         Revert:
3195         2007-03-26  Dirk Mueller  <dmueller@suse.de>
3196
3197         * parser.c (cp_parser_member_declaration): Pedwarn
3198         about stray semicolons after member declarations.
3199
3200 2007-08-02  Lee Millward  <lee.millward@gmail.com>
3201
3202         PR c++/30849
3203         PR c++/30850
3204         PR c++/30851
3205         * parser.c (cp_parser_asm_definition): Detect and discard asm
3206         statements with invalid inputs or outputs.
3207         (cp_parser_asm_operand_list): Return error mark node if any
3208         of the operands are invalid. Adjust documentation.
3209         
3210 2007-08-02  Nick Clifton  <nickc@redhat.com>
3211
3212         * typeck.c: Change copyright header to refer to version 3 of the
3213         GNU General Public License and to point readers at the COPYING3
3214         file and the FSF's license web page.
3215         * optimize.c, lang-specs.h, init.c, class.c, repo.c, decl.c,
3216         config-lang.in, cp-tree.def, call.c, decl.h, ptree.c,
3217         Make-lang.in, method.c, rtti.c, cp-objcp-common.c, g++spec.c,
3218         cp-objcp-common.h, except.c, error.c, operators.def, cvt.c,
3219         tree.c, mangle.c, cp-tree.h, dump.c, search.c, friend.c, expr.c,
3220         cp-gimplify.c, cxx-pretty-print.c, cp-lang.c, typeck2.c, pt.c,
3221         cxx-pretty-print.h, semantics.c, name-lookup.c, lex.c, decl2.c,
3222         name-lookup.h, parser.c: Likewise.
3223
3224 2007-08-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3225
3226         PR middle-end/32668
3227         * call.c (magic_varargs_p): Honor the "type generic" attribute.
3228
3229 2007-07-30  Paolo Carlini  <pcarlini@suse.de>
3230
3231         PR c++/32108
3232         * semantics.c (finish_label_stmt): Reject the __label__
3233         extension outside function scopes.
3234
3235 2007-07-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3236
3237         * parser.c (eof_token): Un-constify.
3238         (cp_lexer_new_main, cp_lexer_new_from_tokens, VEC_alloc,
3239         cp_lexer_consume_token, cp_lexer_purge_token): Remove spurious
3240         casts.
3241
3242 2007-07-28  Kazu Hirata  <kazu@codesourcery.com>
3243
3244         * pt.c, tree.c, typeck2.c: Fix comment typos.
3245
3246 2007-07-28  Simon Martin  <simartin@users.sourceforge.net>
3247             Mark Mitchell  <mark@codesourcery.com>
3248
3249         PR c++/30917
3250         * name-lookup.c (lookup_name_real): Non namespace-scope bindings can be
3251         hidden due to friend declarations in local classes.
3252
3253 2007-07-27  Douglas Gregor  <doug.gregor@gmail.com>
3254
3255         * typeck.c (structural_comptypes): Compare DECLTYPE_TYPE nodes.
3256         * cp-tree.def (DECLTYPE_TYPE): New.
3257         * error.c (dump_type): Dump DECLTYPE_TYPE nodes.
3258         (dump_type_prefix): Ditto.
3259         (dump_type_suffix): Ditto.
3260         * tree.c (DECLTYPE_TYPE): Walk DECLTYPE_TYPE nodes.
3261         * mangle.c (write_type): Handle DECLTYPE_TYPE.
3262         * cp-tree.h (IS_AGGR_TYPE): DECLTYPE_TYPE nodes can be aggregate
3263         types.
3264         (DECLTYPE_TYPE_EXPR): New.
3265         (DECLTYPE_TYPE_ID_EXPR_OR_MEMBER_ACCESS_P): New.
3266         (finish_declared_type): Declare.
3267         * cxx-pretty-print.c (pp_cxx_type_specifier_seq): Print
3268         DECLTYPE_TYPE nodes.
3269         (pp_cxx_type_id): Ditto.
3270         * pt.c (for_each_template_parm_r): Walk DECLTYPE_TYPE children.
3271         (tsubst): Substitute into a DECLTYPE_TYPE node.
3272         (tsubst_copy): Ditto.
3273         (unify): Cannot deduce anything from TYPEOF_TYPE or DECLTYPE_TYPE
3274         nodes.
3275         (dependent_type_p_r): DECLTYPE_TYPE types are always dependent.
3276         * semantics.c (finish_typeof): TYPEOF_TYPE types need to use
3277         structural equality (because we can't hash the expressions).
3278         (finish_declared_type): New.
3279         * lex.c (reswords): Add "decltype" keyword.
3280         * parser.c cp_lexer_next_token_is_decl_specifier_keyword
3281         (cp_parser_postfix_expression): Add member_access_only_p to
3282         restrict postfix expression to member access expressions.
3283         (cp_parser_unary_expression): Update call to
3284         cp_parser_postfix_expression to reflect new parameter.
3285         (cp_parser_declared_type): New.
3286         (cp_parser_simple_type_specifier): Parse decltype types.
3287
3288 2007-07-27  Mark Mitchell  <mark@codesourcery.com>
3289
3290         PR c++/32346
3291         * call.c (convert_for_arg_passing): Only widen bitfields to their
3292         declared types if necessary.
3293
3294 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3295
3296         * parser.c (cp_parser_string_literal, cp_parser_sizeof_operand):
3297         Constify.
3298
3299 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3300
3301         * decl.c (typename_hash, typename_compare): Constify.
3302         * mangle.c (hash_type, compare_type): Likewise.
3303         * pt.c (eq_local_specializations, hash_local_specialization):
3304         Likewise.
3305         * tree.c (cplus_array_hash, cplus_array_compare, list_hash_eq,
3306         list_hash): Likewise.
3307         * typeck2.c (pat_compare): Likewise.
3308
3309 2007-07-24  Nathan Sidwell  <nathan@codesourcery.com>
3310
3311         * method.c (implicitly_declare_fn): Increase alignment if member
3312         function pointer format requires it.
3313
3314 2007-07-24  Paolo Carlini  <pcarlini@suse.de>
3315
3316         PR c++/29001
3317         * typeck.c (check_return_expr): Do not pass a null argument
3318         to null_ptr_cst_p.
3319
3320 2007-07-24  Paolo Carlini  <pcarlini@suse.de>
3321
3322         PR c++/32561
3323         * decl.c (redeclaration_error_message): Call DECL_ANON_UNION_VAR_P
3324         only on VAR_DECL.
3325
3326 2007-07-22  Nathan Sidwell  <nathan@codesourcery.com>
3327
3328         PR c++/32839
3329         * typeck.c (convert_arguments): Only use default args if we have
3330         a function decl.
3331
3332         PR c++/30818
3333         * typeck.c (structural_comptypes): No need to check
3334         resolve_typename_type return value here.
3335         * cp-tree.h (TYPENAME_IS_RESOLVING_P): New.
3336         * pt.c (resolve_typename_type): Follow typename typedefs.  Return
3337         original type rather than error_mark_node in case of failure.
3338         * parser.c (cp_parser_nested_name_specifier_opt): Adjust
3339         resolve_typename_type result check.
3340         (cp_parser_direct_declarator, cp_parser_head,
3341         cp_parser_constructor_declarator_p): Likewise.
3342
3343 2007-07-12  Kazu Hirata  <kazu@codesourcery.com>
3344
3345         * pt.c (template_parms_variadic_p): Remove.
3346         * cp-tree.h: Remove the prototype for template_parms_variadic_p.
3347
3348 2007-07-12  Jakub Jelinek  <jakub@redhat.com>
3349
3350         PR c++/30854
3351         * error.c (dump_expr) <case AGGR_INIT_EXPR>: Pass true as last
3352         argument to dump_aggr_init_expr_args instead of false.
3353
3354 2007-07-11  Douglas Gregor  <doug.gregor@gmail.com>
3355
3356         * typeck.c (comptypes): When USE_CANONICAL_TYPES, use the
3357         canonical types; otherwise, fall back to structural type
3358         comparisons. If ENABLE_CHECKING and USE_CANONICAL_TYPES, give an
3359         internal compiler error if the canonical types are wrong.
3360         
3361 2007-07-11  Paolo Carlini  <pcarlini@suse.de>
3362
3363         PR c++/32560
3364         * parser.c (cp_parser_make_indirect_declarator): When the
3365         the code argument is ERROR_MARK return cp_error_declarator.
3366
3367 2007-07-09  Geoffrey Keating  <geoffk@apple.com>
3368
3369         PR 32617
3370         * decl.c (cxx_init_decl_processing): Don't set
3371         force_align_functions_log.
3372         (grokfndecl): Honour ptrmemfunc_vbit_in_pfn.
3373         * typeck.c (cxx_alignof_expr): When alignof is used on a plain
3374         FUNCTION_DECL, return its alignment.
3375
3376 2007-07-09  Richard Guenther  <rguenther@suse.de>
3377
3378         * decl.c (start_preparsed_function): Do not promote return type.
3379
3380 2007-07-08  Paolo Carlini  <pcarlini@suse.de>
3381
3382         PR c++/30535
3383         * pt.c (unify): Never pass error_mark_node to template_decl_level.
3384
3385 2007-07-07  Mark Mitchell  <mark@codesourcery.com>
3386
3387         PR c++/32232
3388         * pt.c (resolve_overloaded_unification): Robustify.  Return a
3389         bool, not an int.
3390         (type_unification_real): Adjust accordingly.
3391
3392 2007-07-06  Richard Guenther  <rguenther@suse.de>
3393
3394         * init.c (build_new_1): Use the correct pointer type.
3395         * typeck2.c (build_m_component_ref): Likewise.
3396
3397 2007-07-05  Mark Mitchell  <mark@codesourcery.com>
3398
3399         PR c++/32245
3400         * init.c (build_zero_init): Always build an initializer for
3401         non-static storage.
3402         * typeck2.c (build_functional_cast): Use build_zero_init.
3403
3404         PR c++/32251
3405         * init.c (build_new_1): Always pass the allocation function to
3406         build_op_delete_call.
3407         * call.c (build_op_delete_call): Handle operator delete with a
3408         variable-argument list.  Do not issue an error when no matching
3409         deallocation function is available for a new operator.
3410
3411         PR c++/31992
3412         * cp-tree.h (any_value_dependent_elements_p): Declare it.
3413         * decl.c (value_dependent_init_p): New function.
3414         (cp_finish_decl): Use it.
3415         * pt.c (value_dependent_expression_p): Use
3416         any_value_dependent_elements_p.
3417         * parser.c (cp_parser_primary_expression): Add comment about
3418         treating dependent qualified names as integral
3419         constant-expressions.
3420
3421 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
3422
3423         * decl.c (build_ptrmemfunc_type): Always use structural equality
3424         tests when comparing pointer-to-member-function types, because the
3425         handling of TYPE_GET_PTRMEMFUNC_TYPE currently defeats canonical
3426         types.
3427         
3428 2007-07-03  Mark Mitchell  <mark@codesourcery.com>
3429
3430         * init.c (build_new): Tweak comment.
3431
3432 2007-06-29  Dave Brolley  <brolley@redhat.com>
3433
3434         PR c++/31743
3435         * parser.c (cp_parser_new_type_id): Don't reduce a named array
3436         type to its base type and number of elements here.
3437         * init.c (build_new): Call complete_type_or_else to ensure that the
3438         type is complete and to issue a diagnostic if it is not.
3439         (build_new_1): Don't call complete_type_or_else here.
3440
3441 2007-07-03  Richard Guenther  <rguenther@suse.de>
3442
3443         PR c++/32609
3444         * class.c (fixed_type_or_null): Re-lookup the hashtable slot
3445         after recursing.
3446
3447 2007-07-02  Simon Baldwin  <simonb@google.com>
3448
3449         * parser.c (cp_parser_elaborated_type_specifier): Added a warning
3450         for inner-style nested forward declarations that don't declare
3451         anything useful.
3452
3453 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
3454
3455         PR c++/31748
3456         * semantics.c (finish_omp_clauses): Use %qD instead of %qE for
3457         DECL_P in not a variable and appears more than once error messages.
3458
3459 2007-07-01  Ollie Wild  <aaw@google.com>
3460
3461         * name-lookup.c (ambiguous_decl): Fix case when new->value is hidden.
3462         (select_decl): Remove function.
3463         (unqualified_namespace_lookup): Populate binding by calling
3464         ambiguous_decl.  Remove select_decl call.
3465         (lookup_qualified_name): Remove select_decl call.
3466         * decl.c (lookup_and_check_tag): Check for ambiguous references.
3467         * parser.c (cp_parser_elaborated_type_specifier): Skip redundant error
3468         generation when name lookup is ambiguous.
3469
3470 2007-06-29  Douglas Gregor  <doug.gregor@gmail.com>
3471
3472         PR c++/31724
3473         * init.c (build_new_1): Use structural equality on the copy of the
3474         array type.
3475
3476 2007-06-28  Geoffrey Keating  <geoffk@apple.com>
3477
3478         * decl2.c (determine_visibility): Implement
3479         flag_visibility_ms_compat effect on type info.
3480         * decl.c (cxx_init_decl_processing): Implement
3481         global effect of flag_visibility_ms_compat.
3482
3483 2007-06-28  Geoffrey Keating  <geoffk@apple.com>
3484
3485         * decl2.c (start_objects): Mark constructor-running function
3486         as artificial.
3487
3488 2007-06-26  Simon Martin  <simartin@users.sourceforge.net>
3489
3490         PR c++/32111
3491         * decl.c (grokdeclarator): Reset friendp for member functions declared
3492         friend of their own class.
3493
3494 2007-06-23  Mark Mitchell  <mark@codesourcery.com>
3495
3496         * decl2.c (determine_visibility): Don't look for dllexport here.
3497         (determine_visibility_from_class): Tidy.
3498
3499 2007-06-18  Simon Baldwin <simonb@google.com>
3500
3501         PR c++/31923
3502         * parser.c (cp_parser_single_declaration): Added check for storage
3503         class other than sc_none in parsed declaration, and a flag to indicate
3504         if the call is part of an explicit template specialization parse.
3505         * (cp_parser_explicit_specialization): Specialization check flag added
3506         to call to cp_parser_single_declaration(), set true.
3507         * (cp_parser_template_declaration_after_export): Specialization check
3508         flag added to call to cp_parser_single_declaration(), set false.
3509         * pt.c (check_explicit_specialization): Added code to copy visiblity
3510         and linkage from the templated function to the explicit specialization.
3511
3512 2007-06-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3513
3514         * typeck.c (build_binary_op): For templates build the
3515         expression in pieces to avoid the assert in build2_stat.
3516         (get_member_function_from_ptrfunc):
3517         Change over to using POINTER_PLUS_EXPR and convert
3518         the second operand to sizetype.
3519         * typeck2.c (build_m_component_ref):  Likewise.
3520         * init.c (expand_virtual_init): Create a POINTER_PLUS_EXPR
3521         instead of PLUS_EXPR for pointers.
3522         (build_new_1): Likewise.
3523         (build_vec_delete_1): Likewise.
3524         (build_vec_delete): Likewise.
3525         * class.c (build_base_path): Likewise.
3526         (build_base_path): Likewise.
3527         (convert_to_base_statically): Likewise.
3528         (fixed_type_or_null): Handle POINTER_PLUS_EXPR.
3529         (get_vtbl_decl_for_binfo): Handle POINTER_PLUS_EXPR
3530         instead of PLUS_EXPR.
3531         (dfs_accumulate_vtbl_inits): Create a POINTER_PLUS_EXPR
3532         instead of PLUS_EXPR for pointers.
3533         * call.c (build_special_member_call): Likewise.
3534         * rtti.c (build_headof): Likewise.
3535         Use sizetype instead of ptrdiff_type_node.
3536         (tinfo_base_init): Create a POINTER_PLUS_EXPR
3537         instead of PLUS_EXPR for pointers.
3538         * except.c (expand_start_catch_block):  Do a
3539         NEGATIVE and then a POINTER_PLUS_EXPR instead
3540         of a MINUS_EXPR.
3541         * cp-gimplify.c (cxx_omp_clause_apply_fn): Convert
3542         PLUS_EXPR on pointer types over to use
3543         POINTER_PLUS_EXPR and remove the conversion
3544         to the pointer types.
3545         * method.c (thunk_adjust): Use POINTER_PLUS_EXPR for
3546         adding to a pointer type. Use size_int instead of
3547         ssize_int. Convert the index to sizetype before
3548         adding it to the pointer.
3549
3550 2007-06-15  Mark Mitchell  <mark@codesourcery.com>
3551
3552         * cp-tree.h (DECL_VAR_MARKED_P): Remove.
3553         (DECL_ANON_UNION_VAR_P): New macro.
3554         * class.c (fixed_type_or_null): Tidy.  Use a hash table, rather
3555         than DECL_VAR_MARKED_P, to keep track of which variables we have
3556         seen.
3557         * decl.c (redeclaration_error_message): Complain about redeclaring
3558         anonymous union members at namespace scope.
3559         * decl2.c (build_anon_union_vars): Set DECL_ANON_UNION_VAR_P.
3560
3561 2007-06-14  Geoff Keating  <geoffk@apple.com>
3562
3563         * decl2.c (determine_visibility): Ensure that functions with
3564         hidden types as parameters are hidden.
3565
3566         PR 31093
3567         * decl2.c (determine_visibility): Remove duplicate code for
3568         handling type info.
3569
3570 2007-06-12  Ian Lance Taylor  <iant@google.com>
3571
3572         PR libstdc++/29286
3573         * init.c (avoid_placement_new_aliasing): New static function.
3574         (build_new_1): Call it.
3575
3576 2007-06-11  Rafael Avila de Espindola  <espindola@google.com>
3577
3578         * cp-objcp-common.h (LANG_HOOKS_SIGNED_TYPE): Remove.
3579         (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
3580
3581 2007-06-08  Jakub Jelinek  <jakub@redhat.com>
3582
3583         PR c++/32177
3584         * semantics.c (finish_omp_for): Call fold_build_cleanup_point_expr
3585         on init, the non-decl cond operand and increment value.
3586
3587 2007-06-07  Simon Martin  <simartin@users.sourceforge.net>
3588
3589         PR c++/30759
3590         * decl.c (check_initializer): Report an error when a brace enclosed
3591         initializer is used for a non-aggregate type in C++98.
3592         (redeclaration_error_message): Rewrote flag_cpp0x in terms of
3593         cxx_dialect.
3594         (grokdeclarator): Likewise.
3595         (move_fn_p): Likewise.
3596         * typeck.c (check_return_expr): Likewise.
3597         * call.c (reference_binding): Likewise.
3598         * error.c (cp_cpp_error): Likewise.
3599         * pt.c (check_default_tmpl_args): Likewise.
3600         (tsubst): Likewise.
3601         * lex.c (init_reswords): Likewise.
3602         * parser.c (p_parser_primary_expression): Likewise.
3603         (TOKEN_PRECEDENCE): Likewise.
3604         (cp_parser_init_declarator): Likewise.
3605         (cp_parser_ptr_operator): Likewise.
3606         (cp_parser_parameter_declaration): Likewise.
3607         (cp_parser_enclosed_template_argument_list): Likewise.
3608         (cp_parser_skip_to_end_of_template_parameter_list): Likewise.
3609         (cp_parser_next_token_ends_template_argument_p): Likewise.
3610
3611 2007-06-04  Simon Baldwin  <simonb@google.com>
3612
3613         * decl.c (grokdeclarator): Readability change.  Moved case labels
3614         into direct switch statement scope.
3615
3616 2007-06-04  Paolo Carlini  <pcarlini@suse.de>
3617
3618         * call.c (convert_like_real): Remove pointless code.
3619
3620 2007-05-31  Mark Mitchell  <mark@codesourcery.com>
3621
3622         * decl.c (get_atexit_fn_ptr_type): New function.
3623         (get_atexit_node): Use it.
3624         (start_cleanup_fn): Likewise.
3625         (register_dtor_fn): Use the object's destructor, instead of a
3626         separate cleanup function, where possible.
3627         * cp-tree.h (CPTI_ATEXIT_FN_PTR_TYPE): New enumerator.
3628         (atexit_fn_ptr_type_node): New macro.
3629         * decl2.c (build_cleanup): Use build_address.
3630
3631 2007-05-31  Daniel Berlin  <dberlin@dberlin.org>
3632
3633         * typeck.c (build_binary_op): Include types in error.
3634
3635 2007-05-31  Jakub Jelinek  <jakub@redhat.com>
3636
3637         PR c++/31806
3638         * decl.c (cp_finish_decl): Also clear was_readonly if a static var
3639         needs runtime initialization.
3640
3641 2007-05-31  Paolo Carlini  <pcarlini@suse.de>
3642
3643         PR c++/32158
3644         * semantics.c (finish_trait_expr): Complete the types.
3645
3646 2007-05-30  Russell Yanofsky <russ@yanofsky.org>
3647             Douglas Gregor <doug.gregor@gmail.com>
3648             Pedro Lamarao <pedro.lamarao@mndfck.org>
3649             Howard Hinnant <howard.hinnant@gmail.com>
3650
3651         PR c++/7412
3652         PR c++/29939
3653         * typeck.c (comptypes): Don't consider rvalue and lvalue
3654         reference types to be equivalent.
3655         (check_return_expr): Move from certain lvalues when returning
3656         them.
3657         * decl.c (grokdeclarator): Implement reference collapsing.
3658         (copy_fn_p): Don't consider constructors taking rvalue references
3659         to be copy constructors.
3660         (move_fn_p): New.
3661         * call.c (conversion): New "rvaluedness_matches_p" member.
3662         (convert_class_to_reference): Require reference type as first
3663         parameter instead of base type.
3664         (reference_binding): Add logic to handle rvalue references.
3665         (implicit_conversion): Update inaccurate comment.
3666         (convert_like_real): Disable creation of temporaries that are
3667         impossible to initialize for types with move constructors.
3668         (build_over_call): Elide move constructors when possible.
3669         (maybe_handle_implicit_object): Set "rvaluedness_matches_p".
3670         (maybe_handle_ref_bind): Return conversion instead of type node.
3671         (compare_ics): Add logic to use "rvaluedness_matches_p" values to
3672         determine preferred conversion sequences.
3673         * cp-tree.h (TYPE_REF_IS_RVALUE): New.
3674         (LOOKUP_PREFER_RVALUE): New.
3675         (DECL_MOVE_CONSTRUCTOR_P): New.
3676         (struct cp_declarator): Add "reference" member for reference
3677         types, with new "rvalue_ref" flag.
3678         (cp_build_reference_type): Declare.
3679         (move_fn_p): Declare.
3680         * error.c (dump_type_prefix): Format rvalue reference types
3681         correctly in error messages.
3682         * except.c (build_throw): Move from certain lvalues when
3683         throwing.
3684         * mangle.c (write_type): Mangle rvalue references differently
3685         than regular references.
3686         * parser.c (make_reference_declarator): Add boolean parameter for
3687         rvalue references.
3688         (cp_parser_make_indirect_declarator): New.
3689         (cp_parser_new_declarator_opt): Call
3690         cp_parser_make_indirect_declarator. 
3691         (cp_parser_conversion_declarator_opt): Ditto.
3692         (cp_parser_declarator): Ditto.
3693         (cp_parser_ptr_operator): Parse "&&" tokens into rvalue reference
3694         declarators.
3695         * pt.c (tsubst): Implement reference collapsing.
3696         (maybe_adjust_types_for_deduction): Implement special template
3697         parameter deduction rule for rvalue references.
3698         (type_unification_real): Update calls to
3699         maybe_adjust_types_for_deduction.
3700         (try_one_overload): Ditto.
3701         (unify_pack_expansion): Ditto.
3702         * tree.c (lvalue_p_1): Handle rvalue reference types.
3703         (cp_build_reference_type): New.
3704
3705 2007-05-30  Jakub Jelinek  <jakub@redhat.com>
3706
3707         PR c++/31809
3708         * decl.c (cp_finish_decl): Clear TREE_READONLY flag on TREE_STATIC
3709         variables that need runtime initialization.
3710
3711 2007-05-28  Andrew Pinski  <Andrew_pinski@playstation.sony.com>
3712
3713         PR c++/31339
3714         * typeck.c (build_unary_op <case PREINCREMENT_EXPR,
3715         case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,
3716         case POSTDECREMENT_EXPR>): Return the error_mark_node
3717         if either the real or imaginary parts would an
3718         error_mark_node.
3719         
3720 2007-05-25  Simon Martin  <simartin@users.sourceforge.net>
3721             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3722
3723         PR c++/31745
3724         * parser.c (cp_parser_skip_to_closing_brace): Return true if the next
3725         token is a closing brace, false if there are no tokens left.
3726         (cp_parser_namespace_alias_definition): Only consume the next token if
3727         it is a closing brace.
3728
3729         * parser.c (cp_parser_class_specifier): Likewise.
3730
3731 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
3732
3733         * semantics.c (finish_member_declaration): Fix a typo in the
3734         last checkin.
3735
3736 2007-05-25  Douglas Gregor <doug.gregor@gmail.com>
3737
3738         PR c++/31431
3739         PR c++/31432
3740         PR c++/31434
3741         PR c++/31435
3742         PR c++/31437
3743         PR c++/31438
3744         PR c++/31442
3745         PR c++/31443
3746         PR c++/31444
3747         PR c++/31445
3748         * error.c (dump_type): Dump TYPE_ARGUMENT_PACK nodes.
3749         * cp-tree.h (check_for_bare_parameter_packs): Returns bool.
3750         * pt.c (check_for_bare_parameter_packs): Return bool indicated
3751         whether everything was okay. Fix indentation.
3752         (push_template_decl_real): Check for bare parameter packs in
3753         function parameters; where errors occur, mark the parameter types
3754         with ERROR_MARK_NODEs to avert ICEs.
3755         (coerce_template_parameter_pack): New.
3756         (coerce_template_parms): Moved parameter pack coercion into
3757         coerce_template_parameter_pack, and permit it anywhere in the
3758         template parameter list (not just at the end). Parameter and
3759         argument indices can vary (somewhat) separately now, so add
3760         PARM_IDX and ARG_IDX.
3761         (fn_type_unification): Don't set an argument pack as incomplete if
3762         no argument pack was deduced.
3763         (type_unification_real): If a type parameter is a parameter pack
3764         and has not otherwise been deduced, it will be deduced to an empty
3765         parameter pack.
3766         (more_specialized_fn): Use the actual lengths of the argument
3767         lists when comparing against expansions.
3768         * semantics.c (finish_member_declaration): If a field's type has
3769         bare parameter packs, error and set its type to ERROR_MARK_NODE.
3770
3771 2007-05-24  Danny Smith  <dannysmith@users.sourceforge.net>
3772
3773         PR target/27067
3774         * mangle.c (mangle_decl): Call targetm.mangle_decl_assembler_name.
3775
3776 2007-05-22  Ollie Wild  <aaw@google.com>
3777
3778         * name-lookup.c (ambiguous_decl): Adds check for hidden types.
3779         (unqualified_namespace_lookup): Adds check for hidden types.
3780
3781 2007-05-22  Ollie Wild  <aaw@google.com>
3782
3783         * decl.c (duplicate_decls): Verify namespace names are unique.
3784
3785 2007-05-21  Mark Mitchell  <mark@codesourcery.com>
3786
3787         * decl.c (cxx_maybe_build_cleanup): Handle
3788         __attribute__((cleanup)).
3789
3790 2007-05-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3791
3792         * cvt.c (cp_convert_and_check): Don't check warnings if the
3793         conversion failed.
3794
3795 2007-05-18  Geoffrey Keating  <geoffk@apple.com>
3796
3797         * mangle.c (write_real_cst): Use 'unsigned long' for %lx.
3798
3799 2007-05-14  Paolo Carlini  <pcarlini@suse.de>
3800
3801         PR c++/29928
3802         * rtti.c (get_tinfo_decl_dynamic, get_typeid): Try to complete the
3803         type only if is a class type (5.2.8/4).
3804
3805 2007-05-14  Rafael Avila de Espindola  <espindola@google.com>
3806
3807         * cp-objcp-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
3808         * decl.c (grokdeclarator): Use unsigned_type_for instead of
3809         c_common_unsigned_type.
3810
3811 2007-05-11  Silvius Rus  <rus@google.com>
3812
3813         * typeck.c (build_indirect_ref): Add call to
3814         strict_aliasing_warning.
3815         (build_reinterpret_cast_1): Condition call to
3816         strict_aliasing_warning. 
3817
3818 2007-05-11  Jan Hubicka  <jh@suse.cz>
3819
3820         * semantics.c (expand_or_defer_fn): Do not call c_record_cdtor_fn.
3821         * decl2.c (start_objects): ctors and dtors are no longer public.
3822         (cp_write_global_declarations): Do not call c_build_cdtor_fns.
3823         
3824 2007-05-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3825
3826         * typeck.c (build_unary_op): Remove code that used to
3827         handle non lvalue increments/decrements.
3828
3829 2007-05-07  Mike Stump  <mrs@apple.com>
3830
3831         * parser.c (check_empty_body): Add.
3832         (cp_parser_iteration_statement): Add call to check_empty_body.
3833
3834 2007-05-05  Geoffrey Keating  <geoffk@apple.com>
3835
3836         PR 31775
3837         * mangle.c (write_mangled_name): Mangle static variable names.
3838         (write_unqualified_name): Use local-source-name for
3839         namespace-scope static variables.
3840
3841 2007-05-04  Dirk Mueller  <dmueller@suse.de>
3842
3843         * cp-tree.h (DECL_MAIN_P): only if -ffreestanding is
3844         not in effect.
3845
3846 2007-05-02  Seongbae Park  <seongbae.park@gmail.com>
3847
3848         PR c++/31663
3849         * decl2.c (constrain_class_visibility): 
3850         Use strip_pointer_or_array_types instead of strip_array_types.
3851
3852 2007-04-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3853
3854         PR C++/30221
3855         * decl.c (reshape_init_r): Don't reshape the first element if it
3856         is a pointer to member function.
3857
3858 2007-04-27  Simon Baldwin  <simonb@google.com>
3859
3860         * decl.c (grokparms): Changed message format from %qD to %qE.
3861
3862 2007-04-27  Douglas Gregor  <doug.gregor@gmail.com>
3863
3864         * error.c (maybe_warn_variadic_templates): Variadic templates are
3865        now in C++0x, so only warn about them in C++98 mode.
3866         
3867 2007-04-26  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3868
3869         PR C++/30016
3870         * typeck.c (build_reinterpret_cast_1): Only allow conversion to
3871         integeral types from vectors types.
3872
3873 2007-04-26  Jakub Jelinek  <jakub@redhat.com>
3874
3875         PR c++/31598
3876         * semantics.c (finish_omp_clauses): Don't create CP_OMP_CLAUSE_INFO
3877         for type dependent OMP_CLAUSE_DECLs.
3878
3879 2007-04-24  Mark Mitchell  <mark@codesourcery.com>
3880
3881         PR c++/31338
3882         * cp-tree.h (ARITHMETIC_TYPE): Include COMPLEX_TYPE.
3883         * typeck.c (type_after_usual_arithmetic_conversions): Adjust, as
3884         COMPLEX_TYPE is now an ARITHMETIC_TYPE.
3885         * init.c (build_zero_init): Adjust, as
3886         COMPLEX_TYPE is now a SCALAR_TYPE.
3887         * typeck2.c (digest_init): Allow brace-enclosed initializers for
3888         COMPLEX_TYPE, even though that is now a SCALAR_TYPE.
3889
3890 2007-04-25  Paolo Carlini  <pcarlini@suse.de>
3891
3892         * semantics.c (classtype_has_nothrow_copy_or_assign_p): Adjust
3893         per N2255; rename as classtype_has_nothrow_assign_or_copy_p.
3894         (trait_expr_value): Adjust.
3895
3896 2007-04-23  Simon Baldwin  <simonb@google.com>
3897
3898         * decl.c (grokparms): Added new error for duplicate function
3899         parameters names in function prototypes, to match gcc behavior.
3900
3901 2007-04-23  Jan Hubicka  <jh@suse.cz>
3902
3903         * decl2.c (finish_objects): Do not call target constructor/destructor
3904         bits dirrectly.
3905
3906 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3907
3908         * cp-tree.h (lang_tree_node): Use GENERIC_NEXT
3909         instead of checking GIMPLE_STMT_P in chain_next.
3910
3911 2007-04-17  Mark Mitchell  <mark@codesourcery.com>
3912
3913         PR c++/31513
3914         * call.c (convert_for_arg_passing): Convert bitfields to their
3915         declared types.
3916
3917 2007-04-17  Simon Martin  <simartin@users.sourceforge.net>
3918
3919         PR c++/31517
3920         * pt.c (value_dependent_expression_p): Handle MODOP_EXPRs.
3921
3922 2007-04-16  Seongbae Park <seongbae.park@gmail.com>
3923
3924         PR c++/29365
3925         * decl2.c (constrain_class_visibility):
3926         Do not warn about the use of anonymous namespace in the main input file.
3927
3928 2007-04-15  Mark Mitchell  <mark@codesourcery.com>
3929
3930         * cp-tree.h (current_template_parms): Fix typo in comment.
3931
3932 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
3933
3934         * cp-tree.h, error.c: Fix comment typos.
3935
3936 2007-04-13  Jason Merrill  <jason@redhat.com>
3937
3938         PR c++/31074
3939         * call.c (reference_binding): Add c_cast_p parm.  If true,
3940         add quals to TO as needed to make it reference-compatible.
3941
3942 2007-04-11  Jan Hubicka  <jh@suse.cz>
3943
3944         * class.c (convert_to_base_statically): Fold produced tree; verify
3945         that we are not processing template_decl.
3946
3947 2007-04-09  Mark Mitchell  <mark@codesourcery.com>
3948
3949         PR c++/31449
3950         * class.c (build_base_path): Ensure that the converted pointer has
3951         the same cv-qualification as the input.
3952
3953 2007-04-09  Paolo Carlini  <pcarlini@suse.de>
3954
3955         * tree.c (cp_tree_equal): Deal with TRAIT_EXPR.
3956
3957 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
3958
3959         * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS):
3960         Do not set it.
3961         (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do not set it.
3962         * tree.c (cp_add_pending_fn_decls): Remove.
3963         * cp-tree.h (cp_add_pending_fn_decls): Remove prototype.
3964
3965 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
3966
3967         Revert change removing staticp.
3968
3969 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
3970
3971         * cp-objcp-common.c (cxx_staticp): Remove.
3972         * cp-objcp-common.h (LANG_HOOKS_STATICP): Remove.
3973         * cp-tree.h (cxx_staticp):      
3974
3975 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
3976
3977         * class.c (check_for_override): Don't remove dllmport attribute
3978         of virtual methods.
3979
3980 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
3981
3982         PR c++/30847
3983         * typeck.c (build_modify_expr): For COND_EXPR on LHS, if RHS has void
3984         type issue error and return early.
3985
3986 2007-03-30  Jason Merrill  <jason@redhat.com>
3987
3988         PR c++/31187
3989         * typeck.c (cp_type_readonly): New fn.
3990         * cp-tree.h: Declare it.
3991         * decl.c (start_decl): Set implicit DECL_THIS_STATIC here.
3992         (cp_finish_decl): Not here.
3993
3994 2007-03-31  Richard Guenther  <rguenther@suse.de>
3995
3996         * optimize.c (maybe_clone_body): Replace splay-tree usage by
3997         pointer-map.
3998
3999 2007-03-31  Douglas Gregor  <doug.gregor@gmail.com>
4000
4001         PR c++/31138
4002         PR c++/31140
4003         PR c++/31141
4004         * parser.c (declarator_can_be_parameter_pack): New.
4005         (cp_parser_template_parameter): Only parse the `...' if the
4006         declarator can be a parameter pack.
4007         (cp_parser_parameter_declaration): Ditto. Also, handle when TYPE
4008         is NULL.
4009         * pt.c (find_parameter_packs_r): Look into the bounds on integer
4010         types (they could be used as array bounds). 
4011         (check_for_bare_parameter_packs): Deal with TEMPLATE_PARM_INDEX.
4012         (tsubst_pack_expansion): Handle failure to expand parameter
4013         packs.
4014         
4015 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
4016
4017         PR c++/26099
4018         * cp-tree.h (enum cp_trait_kind, struct tree_trait_expr,
4019         TRAIT_EXPR_TYPE1, TRAIT_EXPR_TYPE2, TRAIT_EXPR_KIND): Add.
4020         (enum cp_tree_node_structure_enum, union lang_tree_node): Update.
4021         (CLASS_TYPE_NON_UNION_P): Add.
4022         (struct lang_type_class): Add has_complex_dflt.
4023         (TYPE_HAS_COMPLEX_DFLT, TYPE_HAS_TRIVIAL_DFLT): Add.
4024         (locate_copy, locate_ctor, locate_dtor, finish_trait_expr): Declare.
4025         * cp-tree.def: Add TRAIT_EXPR.
4026         * cp-objcp-common.c (cp_tree_size): Add TRAIT_EXPR case.
4027         * lex.c (struct resword): Add __has_nothrow_assign,
4028         __has_nothrow_constructor, __has_nothrow_copy, __has_trivial_assign,
4029         __has_trivial_constructor, __has_trivial_copy,
4030         __has_trivial_destructor, __has_virtual_destructor, __is_abstract,
4031         __is_base_of, __is_class, __is_convertible_to, __is_empty, __is_enum,
4032         __is_pod, __is_polymorphic, __is_union.
4033         * parser.c (cp_parser_primary_expression): Deal with the new RIDs.
4034         (cp_parser_trait_expr): New.
4035         * semantics.c (finish_trait_expr, trait_expr_value
4036         classtype_has_nothrow_copy_or_assign_p): New.
4037         * method.c (locate_copy, locate_ctor, locate_dtor): Do not define
4038         as static.
4039         * decl.c (cp_tree_node_structure): Add TRAIT_EXPR.
4040         * class.c (check_bases, check_field_decl, check_bases_and_members):
4041         Deal with TYPE_HAS_COMPLEX_DFLT (t) too.
4042         * pt.c (uses_template_parms, tsubst_copy_and_build,
4043         value_dependent_expression_p, type_dependent_expression_p): Deal with
4044         TRAIT_EXPR.
4045         * tree.c (cp_walk_subtrees): Deal with TRAIT_EXPR.
4046
4047 2007-03-29  Richard Guenther  <rguenther@suse.de>
4048
4049         * tree.c (cp_walk_subtrees): Do not set input_location.
4050
4051 2007-03-28  Simon Martin  <simartin@users.sourceforge.net>
4052
4053         PR c++/29077
4054         * decl.c (grokfndecl): Properly setup decl if it is a constructor or a
4055         destructor.
4056
4057 2007-03-28 Douglas Gregor <doug.gregor@gmail.com>
4058
4059         * parser.c (struct cp_parser): Update comment for
4060         greater_than_is_operator_p.
4061         (cp_parser_primary_expression): In C++0x mode, a cast operator can
4062         be terminated with a `>>' token when !GREATER_THAN_IS_OPERATOR_P.
4063         (TOKEN_PRECEDENCE): In C++0x mode, `>>' is treated like `>' when
4064         !GREATER_THAN_IS_OPERATOR_P.
4065         (cp_parser_binary_expression): When -Wc++0x-compat, warn about
4066         `>>' operators that will become two `>' tokens in C++0x.
4067         (cp_parser_parameter_declaration): Treat `>>' like `>' in C++0x
4068         mode, allowing it to terminate default arguments.
4069         (cp_parser_enclosed_template_argument_list): In C++0x mode, treat
4070         `>>' like two consecutive `>' tokens.
4071         (cp_parser_skip_to_end_of_template_parameter_list): Ditto.
4072         (cp_parser_next_token_ends_template_argument_p): In C++0x, `>>'
4073         ends a template argument.
4074
4075 2007-03-28  Douglas Gregor  <doug.gregor@gmail.com>
4076
4077         * decl.c (redeclaration_error_message): Complain when redeclaring
4078         a friend function with default template arguments (C++0x mode only).
4079         * cp-tree.h (check_default_tmpl_args): Declare.
4080         * pt.c (check_default_tmpl_args): In C++0x mode, permit default
4081         template arguments in function templates. Add support for checking
4082         the default template arguments of friend templates.
4083         (push_template_decl_real): Fix call to check_default_tmpl_args.
4084         (type_unification_real): If a template parameter has not been
4085         deduced but provides a default template argument, substitute into
4086         that default template argument.
4087         * parser.c (cp_parser_init_declarator): When declaring (but not
4088         defining!) a function template in C++0x mode, check for default
4089         template arguments.
4090
4091 2007-03-28 Douglas Gregor <doug.gregor@gmail.com>
4092
4093         PR c++/29993
4094         * decl.c (grokdeclarator): Deal with cv-qualified function type
4095         typedefs in the same way for member and non-member functions.
4096
4097 2007-03-26  Dirk Mueller  <dmueller@suse.de>
4098
4099         * parser.c (cp_parser_member_declaration): Pedwarn
4100         about stray semicolons after member declarations.
4101
4102 2007-03-26  Paolo Carlini  <pcarlini@suse.de>
4103
4104         PR c++/30500
4105         * pt.c (instantiate_decl): Set in_system_header.
4106
4107 2007-03-22  Mark Mitchell  <mark@codesourcery.com>
4108
4109         * cp-tree.h (current_tempalte_parms): Improve documentation.
4110         * pt.c (current_template_args): Likewise.
4111
4112         PR c++/30863
4113         * parser.c (cp_parser_parse_and_diagnose_invalid_type_name): Do
4114         not consume tokens when failing.
4115
4116 2007-03-22  Jim Wilson  <wilson@specifix.com>
4117             Mark Mitchell  <mark@codesourcery.com>
4118
4119         PR c++/31273
4120         * call.c (standard_conversion): Use type_decays_to.  Keep FCODE
4121         consistent with FROM.
4122
4123 2007-03-22  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4124
4125         * error.c (dump_expr): Handle dependent names that designate types.
4126         * cxx-pretty-print.c (pp_cxx_unqualified_id): Handle TYPENAME_TYPE.
4127
4128 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
4129
4130         * cp-tree.def, parser.c, pt.c: Fix comment typos.
4131
4132 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4133
4134         * cvt.c (cp_convert_and_check) : Define.
4135         * cp-tree.h (cp_convert_and_check): Declare.
4136         * call.c (convert_conversion_warnings): Rename to
4137         conversion_null_warnings.  The warning for floating-point to
4138         integer is handled by convert_and_check in convert_like_real.
4139         (convert_like_real): convert_conversion_warnings was renamed as
4140         conversion_null_warnings.
4141         * typeck.c (build_binary_op): Use cp_convert_and_check to warn for
4142         overflow and changes of value during conversion.
4143
4144 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4145
4146         PR c++/30891
4147         * parser.c (cp_parser_statement): If 'namespace' is found, this
4148         only can be a namespace alias definition, so parse it now.
4149         (cp_parser_namespace_alias_definition): if we find an open brace
4150         instead of '=', then this is actually a misplaced namespace
4151         definition.
4152         
4153 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4154
4155         PR c++/24924
4156         * decl.c (cxx_init_decl_processing): Move command-line options
4157         processing to c-opts.c.
4158         
4159 2007-03-15  Douglas Gregor  <doug.gregor@gmail.com>
4160
4161         * ptree.c (cxx_print_type): Use formatting markup for integers
4162         when printing template parameter index/level/orig level.
4163         (cxx_print_xnode): Ditto.
4164         * cp-tree.h (TEMPLATE_PARM_PARAMETER_PACK): Use TREE_LANG_FLAG_0.
4165         (struct template_parm_index_s): Remove the PARAMETER_PACK member.
4166         Make INDEX, LEVEL, and ORIG_LEVEL integers instead of
4167         HOST_WIDE_INTs.
4168         (struct saved_scope): Make X_PROCESSING_TEMPLATE_DECL an int,
4169         rather than a HOST_WIDE_INT.
4170         Turn X_PROCESSING_EXPLICIT_INSTANTIATION, SKIP_EVALUATION, and
4171         NEED_POP_FUNCTION_CONTEXT into bool bitfields; reorder fields for
4172         better bit-packing.
4173         (struct language_function): Make RETURNS_VALUE, RETURNS_NULL,
4174         RETURNS_ABNORMALLY, IN_FUNCTION_TRY_HANDLER, and
4175         IN_BASE_INITIALIZER bool bitfields.
4176         (struct cp_declarator): Make KIND a 4-bit field. Make
4177         PARAMETER_PACK_P a bool bitfield just after KIND.
4178         * pt.c (uses_parameter_packs): Destroy the pointer set.
4179         (make_pack_expansion): Ditto.
4180         (check_for_bare_parameter_packs): Ditto.
4181         * name-lookup.c (push_to_top_level): Make need_pop a bool value.
4182         
4183 2007-03-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4184
4185         PR c++/31165
4186         * call.c  (convert_default_arg): Instead of copying the node,
4187         unshare it.
4188
4189 2007-03-15  Dirk Mueller  <dmueller@suse.de>
4190
4191         PR c++/30860
4192         * call.c (convert_conversion_warnings): New..
4193         (convert_like_real): .. factored out from here.
4194         (convert_conversion_warnings): Add warning about
4195         false being converted to NULL in argument passing.
4196
4197 2007-03-14  Dirk Mueller  <dmueller@suse.de>
4198
4199         * semantics.c (c_finish_if_stmt): Call empty_if_body_warning.
4200         (finish_do_body): Warn about empty body in do/while statement.
4201
4202 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4203
4204         * class.c (warn_hidden): Add OPT_Woverloaded_virtual to warning.
4205         
4206 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4207
4208         PR c/21438
4209         * typeck.c (build_binary_op): Call warn_for_div_zero instead of
4210         warning.
4211         
4212 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
4213
4214         * repo.c (init_repo): Initialize random_seed saved options.
4215         (finish_repo): Adjust.
4216
4217 2007-03-13  Mark Mitchell  <mark@codesourcery.com>
4218
4219         PR bootstrap/30899
4220         * Make-lang.in (doc/g++.1): Use $< to specify the location from
4221         which to copy.
4222
4223 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
4224
4225         * decl.c (compute_array_index_type): New warning flag warn_vla.
4226
4227 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
4228
4229         PR c++/30108
4230         * call.c (convert_default_arg): Copy non-constant arguments.
4231
4232 2007-03-11  Mark Mitchell  <mark@codesourcery.com>
4233
4234         PR c++/31038
4235         * parser.c (cp_parser_postfix_expression): Disallow compound
4236         literals in constant expressions.
4237
4238         PR c++/30328
4239         * semantics.c (finish_typeof): Use unlowered_expr_type.
4240         
4241 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
4242
4243         PR c++/30274
4244         * cp-tree.h (unlowered_expr_type): New function.
4245         * typeck.c (is_bitfield_expr_with_lowered_type): Handle
4246         COMPOUND_EXPR, MODIFY_EXPR, and SAVE_EXPR.
4247         (unlowered_expr_type): New function.
4248         (build_unary_op): Disallow predecrements of bool bitfields.
4249         * call.c (build_conditional_expr): Use unlowered_expr_type.
4250         * pt.c (type_unification_real): Likewise.
4251
4252 2007-03-09  Douglas Gregor  <doug.gregor@gmail.com>
4253
4254         PR c++/20599
4255         * typeck.c (check_return_expr): Check for bare parameter packs.
4256         (comptypes): Compare template parameter packs and
4257         type pack expansions.
4258         * decl.c (grokdeclarator): Deal with the declaration of function
4259         parameter packs.
4260         (grokparms): Verify that the (optional) function parameter pack is
4261         at the end of the parameter list.
4262         (xref_basetypes): Handle pack expansions in the base class.
4263         (cp_tree_node_structure): Handle ARGUMENT_PACK_SELECT.
4264         * cp-tree.def (TYPE_ARGUMENT_PACK): New.
4265         (NONTYPE_ARGUMENT_PACK): New.
4266         (TYPE_PACK_EXPANSION): New.
4267         (EXPR_PACK_EXPANSION): New.
4268         (ARGUMENT_PACK_SELECT): New.
4269         * cp-objcp-common.c (cp_tree_size): Compute size of
4270         (NON)TYPE_ARGUMENT_PACK, (TYPE|EXPR)_PACK_EXPANSION, and
4271         ARGUMENT_PACK_SELECT.
4272         * error.c (dump_template_argument): Print template argument packs.
4273         (dump_template_argument_list): Ditto.
4274         (dump_template_parameter): Dump `...' for template type parameter
4275         packs.
4276         (dump_type): Dump TYPE_PACK_EXPANSION nodes.
4277         (dump_parameters): Print function parameter packs.
4278         (dump_template_parms): Print template argument packs.
4279         (dump_expr): Dump EXPR_PACK_EXPANSION nodes.
4280         (maybe_warn_variadic_templates): New.
4281         * operators.def: Add ellipsis operator for EXPR_PACK_EXPANSION.
4282         * tree.c (cp_walk_subtrees): Walk BASELINK, TYPE_ARGUMENT_PACK,
4283         NONTYPE_ARGUMENT_PACK, TYPE_PACK_EXPANSION, EXPR_PACK_EXPANSION,
4284         CAST_EXPR. 
4285         * mangle.c (write_type): Mangle TYPE_PACK_EXPANSION.
4286         (write_template_arg): Write argument packs as separate arguments.
4287         * cp-tree.h (struct template_parm_index_s): Add flag that
4288         indicates that the template parameter is actually a parameter
4289         pack.
4290         (struct tree_argument_pack_select): New.
4291         (enum cp_tree_node_structure_enum): Add TS_CP_ARGUMENT_PACK_SELECT.
4292         (union lang_tree_node): Add argument_pack_select.
4293         (FUNCTION_PARAMETER_PACK_P): New.
4294         (PACK_EXPANSION_P): New.
4295         (PACK_EXPANSION_PATTERN): New.
4296         (SET_PACK_EXPANSION_PATTERN): New.
4297         (PACK_EXPANSION_PARAMETER_PACKS): New.
4298         (ARGUMENT_PACK_P): New.
4299         (ARGUMENT_PACK_ARGS): New.
4300         (SET_ARGUMENT_PACK_ARGS): New.
4301         (ARGUMENT_PACK_INCOMPLETE_P): New.
4302         (ARGUMENT_PACK_EXPLICIT_ARGS): New.
4303         (TEMPLATE_PARM_PARAMETER_PACK): New.
4304         (TEMPLATE_TYPE_PARAMETER_PACK): New.
4305         (ARGUMENT_PACK_SELECT_FROM_PACK): New.
4306         (ARGUMENT_PACK_SELECT_INDEX): New.
4307         (ARGUMENT_PACK_SELECT_ARG): New.
4308         (struct cp_declarator): Add parameter_pack_p flag.
4309         (maybe_warn_variadic_templates): Declare.
4310         (process_template_parm): Add bool parameter IS_PARAMETER_PACK, to
4311         indicate a template parameter pack. 
4312         (uses_parameter_packs): Declare.
4313         (template_parameter_pack_p): Declare.
4314         (template_parms_variadic_p): Declare.
4315         (make_pack_expansion): Declare.
4316         (check_for_bare_parameter_packs): Declare.
4317         * cxx-pretty-print.c (pp_cxx_unary_expression): Print
4318         sizeof... expressions. 
4319         (pp_cxx_expression): Print pack expansions and non-type argument
4320         packs.
4321         (pp_cxx_exception_specification): Print pack expansions. 
4322         (pp_cxx_direct_declarator): Print ellipsis for parameter packs.
4323         (pp_cxx_ctor_initializer): Print pack expansions.
4324         (pp_cxx_type_id): Print pack expansions.
4325         (pp_cxx_template_argument_list): Print argument packs.
4326         (pp_cxx_template_parameter): Print ellipsis for template parameter
4327         packs.
4328         * pt.c (comp_template_parms): Compare template parameter packs.
4329         (template_parameter_pack_p): New.
4330         (template_parms_variadic_p): New.
4331         (template_args_variadic_p): New.
4332         (make_ith_pack_parameter_name): New.
4333         (struct find_parameter_pack_data): New.
4334         (find_parameter_packs_r): New.
4335         (uses_parameter_packs): New.
4336         (make_pack_expansion): New.
4337         (check_for_bare_parameter_packs): New.
4338         (expand_template_argument_pack): New.
4339         (reduce_template_parm_level): Propagate parameter pack flag.
4340         (process_template_parm): Add is_parameter_pack parameter to state
4341         when the parameter is actually a parameter pack. Create template
4342         parameter packs when is_parameter_pack is true.
4343         (current_template_args): The argument for a template parameter
4344         pack is an argument pack containing a single pack expansion.
4345         (process_partial_specialization): When checking that non-type
4346         argument expressions do not involve template parameters, loop over
4347         the arguments in argument packs separately.
4348         (push_template_decl_real): Check that the type of the declaration
4349         does not have any bare parameter packs. Check that primary
4350         templates have no more than one parameter pack, and that it comes
4351         at the end of the template parameter list.
4352         (convert_template_argument): Handle coercions for pack expansion
4353         expressions by coercing the pattern then rebuilding the expansion.
4354         (coerce_template_parms): When coercing the arguments for a
4355         variadic template, pack "extra" arguments into an argument pack.
4356         (coerce_template_template_parms): Cannot coerce between parameter
4357         packs and non-pack parameters.
4358         (template_args_equal): Compare PACK_EXPANSION_P expressions.
4359         (comp_template_args): Expand all template arguments packs before
4360         comparing template argument lists.
4361         (mangle_class_name_for_template): Make argument packs as separate
4362         template arguments.
4363         (for_each_template_parm_r): No need to handle BASELINK. 
4364         (instantiate_class_template): Handle pack expansions in the base
4365         class list.
4366         (tsubst_pack_expansion): New.
4367         (tsubst_template_args): Handle substitutions of argument packs and
4368         pack expansion into template argument lists.
4369         (tsubst_decl): Expand function parameter packs into separate
4370         function parameters.
4371         (tsubst_arg_types): Expand a type pack expansion into separate
4372         argument types.
4373         (tsubst_exception_specification): Handle pack expansions in
4374         exception specifiers.
4375         (tsubst): See through ARGUMENT_PACK_SELECT arguments when 
4376         replacing a template parameter with its argument. If we encounter
4377         a substitution for an argument pack, just return the parameter
4378         itself. 
4379         (tsubst_copy): sizeof(X...) returns the number of elements in
4380         parameter pack X.  See through ARGUMENT_PACK_SELECT when the
4381         PARM_DECL is a parameter pack.
4382         (tsubst_expr): Expression pack expansions and argument packs
4383         cannot show up here; they will all be handled through function
4384         calls, sizeof, and template argument lists.
4385         (tsubst_copy_and_build): sizeof(X...) returns the number of
4386         elements in parameter pack X.  Handle pack expansions in TREE_LIST
4387         and CONSTRUCTOR nodes.
4388         (fn_type_unification): Handle "incomplete" explicit template
4389         argument lists that specify some of the arguments for a template
4390         parameter pack.
4391         (type_unification_real): Unify arguments against pack expansions.
4392         (template_parm_level_and_index): New, helper function.
4393         (unify_pack_expansion): New.
4394         (unify): Unify argument packs on an argument-by-argument basis,
4395         handling variadic argument packs as well.
4396         (more_specialized_fn): Handle unification of function parameter
4397         packs. All things being equal, prefer non-variadic function
4398         templates to variadic function templates.
4399         (more_specialized_class): Prefer the variadic class template
4400         partial specialization that binds fewer arguments to a parameter
4401         pack.
4402         (regenerate_decl_from_template): Expand function parameter packs
4403         into separate parameters.
4404         (instantiate_decl): Ditto.
4405         (tsubst_initializer_list): Handle pack expansions for base-class
4406         initializers.
4407         (dependent_type_p_r): Determine dependent types in argument packs
4408         and pack expansions.
4409         (value_dependent_expression_p): Determine value-dependence of
4410         non-type argument packs.
4411         (dependent_template_arg_p): Handle argument packs.
4412         * semantics.c (finish_cond): Check for bare parameter packs.
4413         (finish_expr_stmt): Ditto.
4414         (finish_for_expr): Ditto.
4415         (finish_switch_cond): Ditto.
4416         (finish_mem_initializers): Ditto.
4417         * name-lookup.c (arg_assoc_type): Handle pack expansions and
4418         argument packs.
4419         * decl2.c (cp_build_parm_decl): Mark function parameter packs.
4420         * parser.c (make_declarator): Declarator is not an expansion.
4421         (make_pointer_declarator): Transfer parameter pack flag to outer
4422         declarator.
4423         (make_reference_declarator): Ditto.
4424         (make_ptrmem_declarator): Ditto.
4425         (make_call_declarator): Ditto.
4426         (make_array_declarator): Ditto.
4427         (cp_parser_postfix_expression): Allow pack expansion expressions
4428         in the argument list for a call expression.
4429         (cp_parser_parenthesized_expression_list): Add new parameter
4430         ALLOW_EXPANSION_P. When true, parse the ellipsis to mean "expand
4431         into separate arguments."
4432         (cp_parser_new_placement): Allow pack expansion expressions.
4433         (cp_parser_new_initializer): Ditto.
4434         (cp_parser_mem_initializer_list): Allow ellipsis to create a
4435         base-class initializer expansion.
4436         (cp_parser_mem_initializer): Ditto.
4437         (cp_parser_template_parameter_list): Keep track of whether the
4438         template parameter is a template parameter pack.
4439         (cp_parser_template_parameter): Parse the ellipsis to indicate a
4440         template parameter pack.
4441         (cp_parser_type_parameter): Ditto.
4442         (cp_parser_template_argument_list): Parse the ellipsis to indicate
4443         a pack expansion.
4444         (cp_parser_direct_declarator): Parse the ellipsis to indicate that
4445         this declarator is a parameter pack.
4446         (cp_parser_parameter_declaration): The ellipsis does not end the
4447         parameter declaration, because it might be a parameter pack. Parse
4448         the ellipsis to indicate a parameter pack.
4449         (cp_parser_initializer): Allow pack expansions.
4450         (cp_parser_initializer_list): Allow ellipsis to create an
4451         initializer expansion.
4452         (cp_parser_base_clause): Allow ellipsis to create a base specifier
4453         expansion.
4454         (cp_parser_type_id_list): Allow ellipsis to create an exception
4455         specifier expansion.
4456         (cp_parser_attribute_list): Don't allow pack expansions.
4457         (cp_parser_functional_cast): Allow pack expansions.
4458         (cp_parser_sizeof_operand): Allow ellipsis following "sizeof" to
4459         compute the length of a parameter pack.
4460         (cp_parser_next_token_ends_template_argument_p): An ellipsis can
4461         end a template argument.
4462         * tree.c (cp_walk_subtrees): Walk BASELINK, TYPE_ARGUMENT_PACK,
4463         NONTYPE_ARGUMENT_PACK, TYPE_PACK_EXPANSION, EXPR_PACK_EXPANSION,
4464         CAST_EXPR. 
4465
4466 2007-03-09  Dirk Mueller  <dmueller@suse.de>
4467
4468         * call.c (build_new_op): Call warn_logical_operator.
4469
4470 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
4471
4472         PR c++/30852
4473         * semantics.c (finish_offsetof): Handle COMPOUND_EXPR.
4474
4475         PR c++/30534
4476         * pt.c (any_template_arguments_need_structural_equality_p):
4477         Robustify.
4478
4479 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
4480
4481         * decl.c (grokdeclarator): Disable warnings for anonymous
4482         bitfields.
4483
4484 2007-03-05  Volker Reichelt  <reichelt@netcologne.de>
4485
4486         * typeck2.c (readonly_error): Always emit a hard error.
4487         Remove last argument.
4488         * cp-tree.h (readonly_error): Adjust prototype.
4489         * semantics.c (finish_asm_stmt): Adjust call to readonly_error.
4490         * typeck.c (build_unary_op): Likewise.
4491         (build_modify_expr): Likewise.
4492
4493 2007-03-04  Simon Martin  <simartin@users.sourceforge.net>
4494
4495         PR c++/30895
4496         * tree.c (cp_tree_equal): Properly handle COMPLEX_CST trees.
4497
4498 2007-03-03  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4499
4500         PR c++/15787
4501         * parser.c (struct cp_parser): New IN_IF_STMT.
4502         (cp_parser_statement_seq_opt): Handle an unexpected 'else',
4503         returning if parsing the body of an 'if' statement or issuing an
4504         error and continuing.
4505         (cp_parser_selection_statement): Set IN_IF_STMT bit when parsing
4506         body of 'if'.
4507         (cp_parser_jump_statement): Mask new IN_IF_STMT bit.
4508         
4509 2007-03-02  Simon Martin  <simartin@users.sourceforge.net>
4510
4511         PR c++/28253
4512         * class.c (update_vtable_entry_for_fn): Properly handle invalid overriders
4513         for thunks.
4514
4515 2007-03-02  Geoffrey Keating  <geoffk@apple.com>
4516
4517         * g++spec.c (lang_specific_driver): Add -lstdc++ when compiling
4518         Objective-C++.  Don't exit early if -shared-libgcc needs to be
4519         added.
4520
4521 2007-03-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4522
4523         * typeck.c (common_base_type): Delete unused function.
4524         
4525 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
4526
4527         * Make-lang.in: Add dummy lang.install-pdf target.
4528
4529 2007-03-01  Simon Baldwin <simonb@google.com>
4530
4531         PR c++/23689
4532         * decl.c (check_tag_decl): Added new warning for typedef ignored
4533         when it precedes an otherwise valid non-typedef declaration.
4534
4535 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
4536
4537         * typeck.c (build_function_call): Store converted arguments
4538         in a stack-allocated array instead of building a list.
4539         (convert_arguments): Store arguments in the array passed in as an
4540         argument, and return the actual number of arguments.
4541         * call.c (build_call): Delete, and replace with...
4542         (build_call_n, build_call_a): New.
4543         (build_op_delete_call): Rewrite to avoid constructing argument lists.
4544         (build_over_call): Store converted arguments in a stack-allocated
4545         array instead of building a list.
4546         (build_cxx_call): Pass arguments in an array instead of as a list.
4547         (build_java_interface_fn_ref): Rewrite to avoid constructing
4548         argument lists.
4549         * tree.h: Update declarations to reflect above changes.
4550         * method.c (use_thunk): Use a stack-allocated array to hold
4551         the arguments instead of a list.
4552         * rtti.c (throw_bad_cast): Update call to cxx_call.
4553         (throw_bad_typeid): Likewise.
4554         (build_dynamic_cast_1): Likewise.
4555         * init.c (build_builtin_delete_call): Use build_call_n.
4556         * decl.c (expand_static_init): Likewise.
4557         * except.c (cp_protect_cleanup_actions): Likewise.
4558         * cp-gimplify.c (genericize_eh_spec_block): Likewise.
4559         (gimplify_must_not_throw_expr): Likewise.
4560         (cxx_omp_apply_fn): Use build_call_a.
4561
4562 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
4563
4564         * semantics.c (expand_or_defer_fn): Call c_record_cdtor_fn.
4565         * decl2.c (cp_write_gloabl_declarations): Call c_build_cdtor_fns.
4566
4567 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
4568
4569         * cp-tree.h (static_ctors): Remove.
4570         * cp-tree.h (static_dtors): Likewise.
4571         * cp-objcp-common.c (decl_shadowed_for_var_lookup): Adjust for
4572         refactoring of tree_map hierarchy.
4573         (decl_shadowed_for_var_insert): Likewise.
4574         * semantics.c (expand_body): Use c_expand_body.
4575         (expand_or_defer_fn): Don't update static_ctors or static_dtors.
4576         * decl2.c (static_ctors): Remove.
4577         (static_dtors): Likewise.
4578         (generate_ctor_or_dtor_function): Pass NULL_TREE to
4579         objc_generate_static_init_call.  Do not call static_[cd]tors.
4580         (generate_ctor_and_dtor_functions_for_priority): Do not check for
4581         static_[cd]tors.
4582         (cp_write_global_declarations): Likewise.
4583
4584 2007-02-23  Richard Guenther  <rguenther@suse.de>
4585
4586         * class.c (note_name_declared_in_class): Make declaration
4587         changes meaning a pedwarn.
4588
4589 2007-02-22  Michael Matz  <matz@suse.de>
4590
4591         PR c++/29433
4592         * cp-tree.h (TFF_UNQUALIFIED_NAME): New formatting flag.
4593         * error.c (dump_aggr_type, dump_simple_decl, dump_decl,
4594         dump_function_decl): Guard emitting outer scopes by new flag.
4595         * cp-lang.c (cxx_dwarf_name): New function.
4596         (LANG_HOOKS_DWARF_NAME): Define to cxx_dwarf_name.
4597         * pt.c (classtype_mangled_name, mangle_class_name_for_template):
4598         Remove functions.
4599         (push_template_decl_real, lookup_template_class): Remove calls
4600         to above functions.
4601
4602 2007-02-19  Mark Mitchell  <mark@codesourcery.com>
4603
4604         * call.c (build_new_method_call): Ensure that explicit calls of
4605         destructors have type "void".
4606
4607 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4608
4609         * typeck.c (build_binary_op): Replace -Wstring-literal-comparison
4610         and -Walways-true with -Waddress.
4611         * cvt.c (convert_to_void): Replace unconditional warning with
4612         -Waddress.
4613
4614 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
4615
4616         * decl.c, tree.c: Fix comment typos.
4617
4618 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4619
4620         PR C++/30158
4621         * semantics.c (finish_stmt_expr_expr): Set TREE_TYPE of the 
4622         statement expression if we had an error mark node.
4623
4624 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
4625             Brooks Moses  <brooks.moses@codesourcery.com>
4626             Lee Millward  <lee.millward@codesourcery.com>
4627
4628         * cp-tree.def (AGGR_INIT_EXPR): Adjust documentation.
4629         Change class to tcc_vl_exp.
4630
4631         * call.c (build_call): Use build_call_list instead 
4632         of build3. 
4633         (build_over_call): Likewise.
4634         (build_new_method_call): Use build_min_non_dep_call_list 
4635         instead of build_min_non_dep.
4636
4637         * error.c (dump_call_expr_args): New function.
4638         (dump_aggr_init_expr_args): New function.
4639         (dump_expr) <AGGR_INIT_EXPR, CALL_EXPR, INDIRECT_REF>: Use them. 
4640         Update to use new CALL_EXPR and AGGR_INIT_EXPR accessor macros.
4641
4642         * cvt.c (convert_to_void): Use build_call_array instead
4643         of build3; use new AGGR_INIT_EXPR accessor macros.
4644
4645         * mangle.c (write_expression): Use TREE_OPERAND_LENGTH
4646         instead of TREE_CODE_LENGTH.
4647
4648         * dump.c (cp_dump_tree) <AGGR_INIT_EXPR>: Update to use new
4649         AGGR_INIT_EXPR accessor macros.
4650
4651         * cp-gimplify.c (cp_gimplify_init_expr): Use 
4652         AGGR_INIT_EXPR_SLOT to set the slot operand.
4653
4654         * cp-tree.h (AGGR_INIT_EXPR_FN): New macro.
4655         (AGGR_INIT_EXPR_SLOT): New macro.
4656         (AGGR_INIT_EXPR_ARG): New macro.
4657         (aggr_init_expr_nargs): New macro.
4658         (AGGR_INIT_EXPR_ARGP): New macro.
4659         (aggr_init_expr_arg_iterator): New.
4660         (init_aggr_init_expr_arg_iterator): New.
4661         (next_aggr_init_expr_arg): New.
4662         (first_aggr_init_expr_arg): New.
4663         (more_aggr_init_expr_args_p): New.
4664         (FOR_EACH_AGGR_INIT_EXPR_ARG): New.
4665         (stabilize_aggr_init): New declaration.
4666         (build_min_non_dep_call_list): Likewise.
4667
4668         * tree.c (process_aggr_init_operands): New function.
4669         (build_aggr_init_array) New function.
4670         (build_cplus_new): Update to use new CALL_EXPR and
4671         AGGR_INIT_EXPR accessor macros. Replace use of build3 with
4672         build_aggr_init_array.
4673         (build_min_non_dep_call_list) New function.
4674         (build_min_nt): Assert input code parameter is not a variable
4675         length expression class.
4676         (build_min, build_min_non_dep): Likewise.
4677         (cp_tree_equal) <CALL_EXPR>: Iterate through the arguments
4678         to check for equality instead of recursing. Handle tcc_vl_exp
4679         tree code classes.
4680         (stabilize_call): Update to only handle CALL_EXPRs, not 
4681         AGGR_INIT_EXPRs; use new CALL_EXPR accessor macros.
4682         (stabilize_aggr_init): New function.
4683         (stabilize_init): Use it.
4684
4685         * cxx-pretty-print.c (pp_cxx_postfix_expression)
4686         <AGGR_INIT_EXPR, CALL_EXPR>: Update to use new CALL_EXPR and
4687         AGGR_INIT_EXPR accessor macros and argument iterators.
4688         
4689         * pt.c (tsubst_copy) <CALL_EXPR>: Replace build_nt with
4690         build_vl_exp. Iterate through the operands, recursively 
4691         processing each one.
4692         (tsubst_copy_and_build) <CALL_EXPR>: Update to use new
4693         CALL_EXPR accessor macros.
4694         (value_dependent_expression_p) <default>: Handle tcc_vl_exp
4695         tree code classes. Use TREE_OPERAND_LENGTH instead of 
4696         TREE_CODE_LENGTH.
4697
4698         * semantics.c (finish_call_expr): Use build_nt_call_list
4699         instead of build_nt.
4700         (simplify_aggr_init_expr): Update to use new AGGR_INIT_EXPR 
4701         accessor macros. Use build_call_array to construct the 
4702         CALL_EXPR node instead of build3
4703         
4704         * decl2.c (build_offset_ref_call_from_tree): Use 
4705         build_nt_call_list and build_min_non_dep_call_list instead
4706         of build_min_nt and build_min_non_dep.
4707
4708         * parser.c (cp_parser_postfix_expression) <CPP_OPEN_PAREN>:
4709         Use build_nt_call_list instead of build_min_nt.
4710
4711 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4712
4713         PR c++/28943
4714         * call.c (build_conditional_expr): Improve error message.
4715         
4716 2007-02-13  Dirk Mueller  <dmueller@suse.de>
4717
4718         * friend.c (do_friend): Annotate warning about friend
4719         declarations in templates with OPT_Wnon_template_friend.
4720         Convert informal message from warning() to inform().
4721
4722 2007-02-12  Simon Martin  <simartin@users.sourceforge.net>
4723             Mark Mitchell  <mark@codesourcery.com>
4724
4725         PR c++/14622
4726         * pt.c (do_decl_instantiation): Detect type mismatches in explicit
4727         instantiations for variables.
4728
4729 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4730
4731         PR middle-end/7651
4732         * cp-gimplify.c (gimplify_expr_stmt): Don't check extra_warnings.
4733         Check warn_unused_value just once.
4734
4735 2007-02-11  Mark Mitchell  <mark@codesourcery.com>
4736
4737         PR c++/26988
4738         * pt.c (determine_specialization): Use skip_artificial_parms_for.
4739         (fn_type_unificiation): Likewise.
4740         (get_bindings): Likewise.
4741
4742 o2007-02-06  Mark Mitchell  <mark@codesourcery.com>
4743
4744         PR target/29487
4745         * decl.c (finish_function): Use DECL_REPLACEABLE.
4746         * tree.c (cp_cannot_inline_tree_fn): Likewise.
4747
4748 2007-02-10  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4749
4750         * parser.c (cp_parser_primary_expression): Reformat overly long lines.
4751
4752 2007-02-10  Richard Henderson  <rth@redhat.com>, Jakub Jelinek  <jakub@redhat.com>
4753
4754         * decl.c (grokvardecl): Don't error if !have_tls.
4755         (grokdeclarator): Likewise.
4756         * parser.c (cp_parser_omp_threadprivate): Likewise.
4757
4758 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
4759
4760         PR c++/30703
4761         * cp-gimplify.c (cp_genericize_r): Don't dereference invisiref
4762         parameters and result decls in omp clauses.
4763         (cxx_omp_privatize_by_reference): Pass also invisiref PARM_DECLs
4764         by reference.
4765
4766 2007-02-05  Dirk Mueller  <dmueller@suse.de>
4767
4768         PR bootstrap/30510
4769         * parser.c (cp_parser_class_specifier): Always initialize bases.
4770
4771 2007-02-05  Paolo Bonzini  <bonzini@gnu.org>
4772
4773         * cp-tree.h (OMP_ATOMIC_CODE): Delete.
4774         (OMP_ATOMIC_DEPENDENT_P): Rewrite.
4775         * pt.c (tsubst_expr): Adjust for new format of dependent OMP_ATOMIC
4776         expressions.
4777         * semantics.c (finish_omp_atomic): Store a whole expression node
4778         in operand 1, and integer_zero_node in operand 0, for dependent
4779         OMP_ATOMIC.  Rewrite to make flow easier to understand.
4780
4781 2007-02-03  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4782
4783         * decl.c (grokdeclarator): Use OPT_Wreturn_type instead of 0.
4784
4785 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
4786
4787         * class.c, cp-tree.h, decl.c, decl2.c, g++spec.c, init.c,
4788         parser.c, pt.c, tree.c, typeck.c: Follow spelling conventions.
4789
4790 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
4791
4792        * parser.c (cp_lexer_get_preprocessor_token): Attach the C++0x
4793        keyword warning to -Wc++0x-compat.
4794         
4795 2007-02-03  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4796
4797         * decl.c (grokdeclarator): Update documentation.
4798
4799 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
4800
4801         PR c++/30536
4802         * decl.c (grokdeclarator): If __thread is used together with
4803         a storage class other than extern and static, clear thread_p
4804         after issuing diagnostics and fall through to checking the
4805         storage class.
4806
4807 2007-01-30  Roger Sayle  <roger@eyesopen.com>
4808
4809         * error.c (dump_type_suffix): Avoid use of cp_build_binary_op when
4810         calculating the size of an array (to avoid recursive errors).
4811
4812 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4813
4814         PR c++/24745
4815         * typeck.c (build_binary_op): Fix logic for warning. Move warning
4816         to -Wpointer-arith.
4817         * call.c (convert_like_real): Don't warn when converting to
4818         boolean type.
4819         
4820 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4821
4822         * decl.c (pop_label): Replace warning with call to
4823         warn_for_unused_label.
4824
4825 2007-01-28  Andrew Pinski  <pinskia@gmail.com>
4826
4827         PR C++/28988
4828         * semantics.c (finish_pseudo_destructor_expr): Check the
4829         destrutor name by calling check_dtor_name.
4830
4831 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
4832
4833         * lex.c (D_CPP0X): Rename.
4834         (D_CXX0X): To this.
4835         (reswords): D_CPP0X -> D_CXX0X.
4836         (init_reswords): Ditto.
4837         * parser.c (cp_lexer_get_preprocessor_token): Warn about the use
4838         of C++0x keywords as identifiers.
4839
4840 2007-01-23  Simon Martin  <simartin@users.sourceforge.net>
4841
4842         PR c++/27492
4843         * decl.c (duplicate_decls): Don't reset DECL_INVALID_OVERRIDER_P for
4844         function decls.
4845
4846 2007-01-23  Ian Lance Taylor  <iant@google.com>
4847
4848         * typeck.c (convert_for_assignment): Only warn about a = b = c
4849         when converting to bool.
4850
4851 2007-01-23  Roger Sayle  <roger@eyesopen.com>
4852
4853         * call.c (null_ptr_cst_p): Replace use of TREE_CONSTANT_OVERFLOW with
4854         TREE_OVERFLOW.
4855         * typeck.c (ignore_overflows): Remove the remaining uses of
4856         TREE_CONSTANT_OVERFLOW.
4857
4858 2007-01-20  Jan Hubicka  <jh@suse.cz>
4859
4860         * decl2.c (start_objects, start_static_storage_duration_function):
4861         Do not make the functions uninlinable.
4862
4863 2007-01-17  Ian Lance Taylor  <iant@google.com>
4864
4865         * class.c (add_method): Call VEC_reserve_exact rather than passing
4866         a negative size to VEC_reserve.
4867
4868 2007-01-11  Simon Martin  <simartin@users.sourceforge.net>
4869
4870         PR c++/29573
4871         * tree.c (cp_tree_equal): Properly handle MODOP_EXPR trees.
4872
4873 2007-01-10  Mark Mitchell  <mark@codesourcery.com>
4874
4875         PR c++/28999
4876         * decl.c (make_typename_type): If the qualified name is not a
4877         type, issue an error.
4878         * parser.c (cp_parser_elaborated_type_specifier): Fix comment
4879         formatting.
4880
4881 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
4882
4883         * rtti.c: Include target.h.
4884         (emit_support_tinfos): If ! targetm.cxx.library_rtti_comdat (),
4885         don't emit typeinfo for fundamental types as weak.
4886         * Make-lang.in (cp/rtti.o): Update and correct dependencies.
4887
4888 2007-01-08  Richard Guenther  <rguenther@suse.de>
4889
4890         * cvt.c (cp_convert_to_pointer): Use build_int_cst_type.
4891
4892 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
4893
4894         * call.c (standard_conversion): Pass flag to
4895         vector_types_convertible_p to disallow emission of note.
4896         * typeck.c (convert_for_assignment): Pass flag to
4897         vector_types_convertible_p to allow emission of note.
4898         (ptr_reasonably_similar): Pass flag to vector_types_convertible_p
4899         to disallow emission of note.
4900
4901 2007-01-07  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4902
4903         PR c++/28986
4904         * typeck.c (build_binary_op): Call overflow_warning if
4905         TREE_OVERFLOW_P is true for the result and not for any of the
4906         operands.
4907         
4908 2007-01-06  Lee Millward  <lee.millward@codesourcery.com>
4909
4910        PR c++/19439
4911        * class.c (add_method): Don't wait until template
4912        instantiation time to complain about duplicate methods.
4913         
4914 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4915
4916         PR c/19978
4917         * semantics.c (finish_unary_op_expr): Warn only if result
4918         overflowed and operands did not.
4919
4920 2007-01-05  Ian Lance Taylor  <iant@google.com>
4921
4922         * typeck.c (build_binary_op): Warn about comparing a non-weak
4923         address to NULL.
4924
4925 2007-01-05  Douglas Gregor  <doug.gregor@gmail.com>
4926
4927         * pt.c (tsubst): Propagate the need for structural equality checks
4928         when reducing the level of template parameters.
4929
4930 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
4931
4932         * pt.c: Fix a comment typo.
4933
4934 2007-01-02  Ian Lance Taylor  <iant@google.com>
4935
4936         * semantics.c (maybe_convert_cond): Optionally warn when using an
4937         assignment as a condition.
4938         * typeck.c (convert_for_assignment): Optionally warn about
4939         assigning the result of an assignment to a bool.
4940
4941 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
4942
4943         * pt.c (canonical_template_parms): Correct typo in comment.
4944         
4945 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
4946
4947         * typeck.c (structural_comptypes): Renamed from "comptypes".
4948         (comptypes): Use canonical type information to perform fast type
4949         comparison. When VERIFY_CANONICAL_TYPES, verify that the
4950         canonical type comparison returns the same results as we would see
4951         from the current, structural check. Support COMPARE_STRUCTURAL
4952         when we need structural checks.
4953         * decl.c (typename_compare): Fix comment.
4954         (build_typename_type): TYPENAME_TYPE nodes require structural
4955         equality checks, because they resolve different based on the
4956         current class type.
4957         (make_unbound_class_template): UNBOUND_CLASS_TEMPLATE nodes
4958         require structural equality checks (for now).
4959         (build_ptrmemfunc_type): Build the canonical pointer to member
4960         function type.
4961         (compute_array_index_type): Whenever we build a new index type
4962         to represent the size of an array in a template, we need to mark
4963         this index type as requiring structural equality. This goes for
4964         arrays with value-dependent sizes with the current ABI, or all
4965         arrays with ABI-1.
4966         * tree.c (cplus_array_hash): New.
4967         (struct cplus_array_info): New.
4968         (cplus_array_compare): New.
4969         (cplus_array_htab): New.
4970         (build_cplus_array_type_1): Use a hash table to cache the array
4971         types we build. Build the canonical array type for each array
4972         type.
4973         (cp_build_qualified_type_real): When building a cv-qualified array
4974         type, use the hash table of array types and build canonical array
4975         types as necessary.
4976         (bind_template_template_parm): BOUND_TEMPLATE_TEMPLATE_PARM nodes
4977         use structural equality (for now).
4978         * cp-tree.h (COMPARE_STRUCTURAL): New.
4979         * pt.c (canonical_template_parms): New.
4980         (canonical_type_parameter): New.
4981         (process_template_parm): Find the canonical type parameter.
4982         (lookup_template_class): When we have named the primary template
4983         type, set the canonical type for our template class to the primary
4984         template type. If any of the template arguments need structural
4985         equality checks, the template class needs structural equality
4986         checks.
4987         (tsubst): When reducing the level of a template template
4988         parameter, we require structural equality tests for the resulting
4989         parameter because its template parameters have not had their types
4990         canonicalized. When reducing a template type parameter, find the
4991         canonical reduced type parameter.
4992         (any_template_arguments_need_structural_equality_p): New.
4993