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.