OSDN Git Service

* tree-ssa-ifcombine.c (get_name_for_bit_test): Use
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
1 2008-06-02  Tomas Bily  <tbily@suse.cz>
2
3         * typeck.c (is_bitfield_expr_with_lowered_type): Use CASE_CONVERT.
4         (cp_build_unary_op): Likewise.
5         (cp_build_indirect_ref): Use CONVERT_EXPR_P.
6         (maybe_warn_about_returning_address_of_local): Likewise.
7
8 2008-05-29  Paolo Carlini  <paolo.carlini@oracle.com>
9
10         PR c++/35243
11         * pt.c (tsubst_initializer_list): Consistently check the tree
12         returned by tsubst_pack_expansion for error_mark_node.
13
14 2008-05-27  Michael Matz  <matz@suse.de>
15
16         PR c++/27975
17         * call.c (build_new_op): Make warning conditional on
18         OPT_Wenum_compare.
19
20 2008-05-27  Alexandre Oliva  <aoliva@redhat.com>
21
22         PR c++/35909
23         * call.c (convert_like_real): Convert bitfield to desired type
24         before creating temporary.
25
26 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
27
28         * Makefile.in: Adjusted dependencies on c-incpath.o.
29
30 2008-05-23  Jakub Jelinek  <jakub@redhat.com>
31
32         PR c++/36237
33         * cp-gimplify.c (cxx_omp_clause_apply_fn): Call
34         fold_build_cleanup_point_expr on build_call_a results.
35
36         PR c++/36308
37         * semantics.c (omp_clause_info_fndecl): New function.
38         (finish_omp_clauses): Use it.
39
40 2008-05-21  Jakub Jelinek  <jakub@redhat.com>
41
42         PR c++/36023
43         * cp-tree.h (check_array_initializer): New prototype.
44         * decl.c (check_array_initializer): New function.
45         (check_initializer): Call it.
46         * semantics.c (finish_compound_literal): Call it for ARRAY_TYPEs.
47
48 2008-05-21  Tom Tromey  <tromey@redhat.com>
49
50         * mangle.c (save_partially_mangled_name): Remove.
51         (restore_partially_mangled_name): Likewise.
52         (write_encoding): Update.
53         (write_unqualified_name): Likewise.
54         (start_mangling): Always use name_obstack.  Remove 'ident_p'
55         argument.
56         (get_identifier_nocopy): Remove.
57         (finish_mangling_internal): Rename from finish_mangling.
58         (finish_mangling): New function.
59         (finish_mangling_get_identifier): Likewise.
60         (partially_mangled_name, partially_mangled_name_len): Remove.
61         (mangle_decl_string): Change return type.  Update.
62         (mangle_decl, mangle_type_string, mangle_special_for_type,
63         mangle_ctor_vtbl_for_type, mangle_thunk, mangle_guard_variable,
64         mangle_ref_init_variable): Update.
65
66 2008-05-12  Paolo Carlini  <paolo.carlini@oracle.com>
67
68         PR c++/35331
69         * semantics.c (begin_class_definition): Extend checks on the first
70         argument.
71
72 2008-05-12  Tomas Bily  <tbily@suse.cz>
73
74         * typeck2.c (digest_init): Use CONVERT_EXPR_P.
75         * call.c (build_over_call): Likewise.
76         * error.c (dump_expr): Use CASE_CONVERT.
77         * class.c (fixed_type_or_null): Likewise.
78
79 2008-05-11  Volker Reichelt  <v.reichelt@netcologne.de>
80
81         * parser.c (cp_parser_omp_clause_reduction): Add missing "expected"
82         in error message.
83         (cp_parser_omp_clause_schedule): Remove superfluous "expected"
84         in error message.
85
86 2008-05-07  Kenneth Zadeck  <zadeck@naturalbridge.com>
87
88         * decl.c (duplicate_decls): Merge in DECL_PURE_P, TREE_READONLY,
89         DECL_LOOPING_CONST_OR_PURE_P attributes.
90         * rtti.c (build_dynamic_cast_1): Rename DECL_IS_PURE to
91         DECL_PURE_P.
92
93 2008-05-02  Simon Baldwin  <simonb@google.com>
94
95         PR bootstrap/36108
96         * typeck.c (build_array_ref): Remove warn_array_subscript_range.
97
98 2008-05-01  Simon Baldwin  <simonb@google.com>
99
100         * typeck.c (build_array_ref): Call warn_array_subscript_range.
101
102 2008-04-30  Jakub Jelinek  <jakub@redhat.com>
103
104         PR c++/35986
105         * pt.c (more_specialized_fn): Stop the loop even if there are no
106         arguments before ellipsis.
107
108 2008-04-29  Jakub Jelinek  <jakub@redhat.com>
109
110         PR c++/35650
111         * parser.c (cp_parser_lookup_name): Look through single function
112         OVERLOAD.
113
114         PR c++/35987
115         * typeck.c (cp_build_modify_expr) <case PREINCREMENT_EXPR>: Don't build
116         COMPOUND_EXPR if the second argument would be error_mark_node.
117
118 2008-04-28  Jason Merrill  <jason@redhat.com>
119             Liu Guanwei <liu_gw@163.com>
120
121         PR c++/57
122         * parser.c (cp_parser_parameter_declaration): Handle < ambiguity
123         in default arguments.
124
125 2008-04-25  Jan Hubicka  <jh@suse.cz>
126
127         * typeck.c (check_return_expr): Update.
128         * decl.c (start_preparsed_function): Update.
129         * method.c (use_thunk): Update.
130
131 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
132
133         PR c++/35758
134         * cp-tree.h (cp_reconstruct_complex_type): New prototype.
135         * cp-objcp-common.h (LANG_HOOKS_RECONSTRUCT_COMPLEX_TYPE): Define.
136         * decl2.c (is_late_template_attribute): Only make vector_size
137         late tmpl attribute if argument is type or value dependent.
138         (cp_reconstruct_complex_type): New function.
139
140 2008-04-24  Richard Guenther  <rguenther@suse.de>
141
142         * typeck.c (cp_build_function_call): Call
143         check_builtin_function_arguments.
144
145 2008-04-23  Paolo Bonzini  <bonzini@gnu.org>
146
147         * typeck.c (get_member_function_from_ptrfunc): Don't set TREE_INVARIANT.
148         (build_ptrmemfunc1): Don't set TREE_INVARIANT.
149         * init.c (build_zero_init): Don't set TREE_INVARIANT.
150         * class.c (build_base_path): Don't set TREE_INVARIANT.
151         (build_vtbl_ref_1): Don't set TREE_INVARIANT.
152         (build_vtbl_initializer): Don't set TREE_INVARIANT.
153         * decl.c (build_enumerator): Don't set TREE_INVARIANT.
154         * rtti.c (tinfo_base_init): Don't set TREE_INVARIANT.
155         (generic_initializer): Don't set TREE_INVARIANT.
156         (ptr_initializer): Don't set TREE_INVARIANT.
157         (ptm_initializer): Don't set TREE_INVARIANT.
158         (class_initializer): Don't set TREE_INVARIANT.
159         * typeck2.c (process_init_constructor): Don't set TREE_INVARIANT.
160         * pt.c (push_inline_template_parms_recursive): Don't set TREE_INVARIANT.
161         (build_template_parm_index): Don't set TREE_INVARIANT.
162         (reduce_template_parm_level): Don't set TREE_INVARIANT.
163         (process_template_parm): Don't set TREE_INVARIANT.
164
165 2008-04-22  Jason Merrill  <jason@redhat.com>
166
167         PR c++/35316
168         * semantics.c (finish_decltype_type): Check DECL_BIT_FIELD_TYPE
169         to see if DECL_BIT_FIELD_TYPE should be used, not some other flag.
170         * typeck.c (is_bitfield_expr_with_lowered_type): Likewise.
171
172 2008-04-22  Jakub Jelinek  <jakub@redhat.com>
173
174         PR c++/35747
175         * semantics.c (finish_stmt_expr): Call pop_stmt_list even if the stmt
176         expression is errorneous.
177
178 2008-04-21  Jason Merrill  <jason@redhat.com>
179
180         PR c++/35325
181         * tree.c (cp_tree_equal): Handle FIXED_CST.
182
183         PR c++/35678
184         * pt.c (template_template_parm_bindings_ok_p): Set 
185         processing_template_decl while in this function.
186
187 2008-04-18  Kris Van Hees <kris.van.hees@oracle.com>
188
189         * cvt.c (type_promotes_to): Support char16_t and char32_t.
190         * decl.c (grokdeclarator): Disallow signed/unsigned/short/long on
191         char16_t and char32_t.
192         * lex.c (reswords): Add char16_t and char32_t (for c++0x).
193         * mangle.c (write_builtin_type): Mangle char16_t/char32_t as vendor
194         extended builtin type "u8char{16,32}_t".
195         * parser.c (cp_lexer_next_token_is_decl_specifier_keyword): Support
196         RID_CHAR{16,32}.
197         (cp_lexer_print_token): Support CPP_STRING{16,32}.
198         (cp_parser_is_string_literal): Idem.
199         (cp_parser_string_literal): Idem.
200         (cp_parser_primary_expression): Support CPP_CHAR{16,32} and
201         CPP_STRING{16,32}.
202         (cp_parser_simple_type_specifier): Support RID_CHAR{16,32}. 
203         * tree.c (char_type_p): Support char16_t and char32_t as char types.
204         * typeck.c (string_conv_p): Support char16_t and char32_t.
205
206 2008-04-17  Jason Merrill  <jason@redhat.com>
207
208         PR c++/35773
209         * call.c (build_user_type_conversion_1): Represent second step of 
210         copy-init with an rvalue conversion.
211         (convert_like_real) [ck_user]: Don't implicitly add it here.
212
213 2008-04-15  Jakub Jelinek  <jakub@redhat.com>
214
215         PR c/35751
216         * decl.c (layout_var_decl): If extern or static var has variable
217         size, set TREE_TYPE (decl) to error_mark_node.
218
219 2008-04-16  Danny Smith  <dannysmith@users.sourceforge.net>
220
221        PR target/35921
222        * optimize.c (maybe_clone_body): Copy DECL_DLLIMPORT_P flag
223        to clone.
224
225 2008-04-09  Jason Merrill  <jason@redhat.com>
226
227         PR c++/35708
228         * semantics.c (finish_compound_literal): Return a TARGET_EXPR, 
229         not a pushed variable.
230
231 2008-04-09  Volker Reichelt  <v.reichelt@netcologne.de>
232
233         * call.c (build_op_delete_call): Fix quotation in warning message.
234         * decl.c (grokdeclarator): Quote keyword in error message.
235         * pt.c (check_for_bare_parameter_packs): Fix quotation in error
236         message.
237
238         * parser.c (cp_parser_check_type_definition): Print error string
239         directly rather than using "%s".
240         (cp_parser_postfix_expression): Fix quotation.
241         (cp_parser_decltype): Likewise.
242         (cp_parser_sizeof_operand): Fix quotation. Simplify.
243
244         * parser.c (cp_parser_non_integral_constant_expression): Build error
245         message with CONCAT rather than using "%s".
246         (cp_parser_primary_expression): Fix quotation.
247         (cp_parser_postfix_expression): Likewise.
248         (cp_parser_postfix_dot_deref_expression): Likewise.
249         (cp_parser_unary_expression): Likewise.
250         (cp_parser_new_expression): Likewise.
251         (cp_parser_delete_expression): Likewise.
252
253         * parser.c (cp_parser_asm_specification_opt): Print CPP_CLOSE_PAREN
254         as `)', not as `('.  Fix quotation.
255         (cp_parser_consume_semicolon_at_end_of_statement): Fix quotation.
256         (cp_parser_primary_expression): Likewise.
257         (cp_parser_nested_name_specifier_opt): Likewise.
258         (cp_parser_postfix_expression): Likewise.
259         (cp_parser_postfix_open_square_expression): Likewise.
260         (cp_parser_parenthesized_expression_list): Likewise.
261         (cp_parser_pseudo_destructor_name): Likewise.
262         (cp_parser_new_expression): Likewise.
263         (cp_parser_direct_new_declarator): Likewise.
264         (cp_parser_delete_expression): Likewise.
265         (cp_parser_cast_expression): Likewise.
266         (cp_parser_question_colon_clause): Likewise.
267         (cp_parser_builtin_offsetof): Likewise.
268         (cp_parser_trait_expr): Likewise.
269         (cp_parser_label_for_labeled_statement): Likewise.
270         (cp_parser_compound_statement): Likewise.
271         (cp_parser_selection_statement): Likewise.
272         (cp_parser_condition): Likewise.
273         (cp_parser_iteration_statement): Likewise.
274         (cp_parser_already_scoped_statement): Likewise.
275         (cp_parser_simple_declaration): Likewise.
276         (cp_parser_linkage_specification): Likewise.
277         (cp_parser_static_assert): Likewise.
278         (cp_parser_decltype): Likewise.
279         (cp_parser_conversion_function_id): Likewise.
280         (cp_parser_operator_function_id): Likewise.
281         (cp_parser_operator): Likewise.
282         (cp_parser_type_parameter): Likewise.
283         (cp_parser_template_id): Likewise.
284         (cp_parser_explicit_instantiation): Likewise.
285         (cp_parser_explicit_specialization): Likewise.
286         (cp_parser_enum_specifier): Likewise.
287         (cp_parser_namespace_definition): Likewise.
288         (cp_parser_namespace_alias_definition): Likewise.
289         (cp_parser_using_declaration): Likewise.
290         (cp_parser_using_directive): Likewise.
291         (cp_parser_asm_definition): Likewise.
292         (cp_parser_direct_declarator): Likewise.
293         (cp_parser_ptr_operator): Likewise.
294         (cp_parser_parameter_declaration_clause): Likewise.
295         (cp_parser_initializer_clause): Likewise.
296         (cp_parser_class_specifier): Likewise.
297         (cp_parser_member_specification_opt): Likewise.
298         (cp_parser_member_declaration): Likewise.
299         (cp_parser_pure_specifier): Likewise.
300         (cp_parser_constant_initializer): Likewise.
301         (cp_parser_base_clause): Likewise.
302         (cp_parser_exception_specification_opt): Likewise.
303         (cp_parser_try_block): Likewise.
304         (cp_parser_function_try_block): Likewise.
305         (cp_parser_handler): Likewise.
306         (cp_parser_throw_expression): Likewise.
307         (cp_parser_asm_operand_list): Likewise.
308         (cp_parser_attributes_opt): Likewise.
309         (cp_parser_label_declaration): Likewise.
310         (cp_parser_constructor_declarator_p): Likewise.
311         (cp_parser_template_declaration_after_export): Likewise.
312         (cp_parser_single_declaration): Likewise.
313         (cp_parser_objc_message_expression): Likewise.
314         (cp_parser_objc_message_args): Likewise.
315         (cp_parser_objc_encode_expression): Likewise.
316         (cp_parser_objc_defs_expression): Likewise.
317         (cp_parser_objc_protocol_expression): Likewise.
318         (cp_parser_objc_selector_expression): Likewise.
319         (cp_parser_objc_protocol_refs_opt): Likewise.
320         (cp_parser_objc_typename): Likewise.
321         (cp_parser_objc_method_keyword_params): Likewise.
322         (cp_parser_objc_superclass_or_category): Likewise.
323         (cp_parser_objc_try_catch_finally_statement): Likewise.
324         (cp_parser_objc_synchronized_statement): Likewise.
325         (cp_parser_objc_throw_statement): Likewise.
326         (cp_parser_omp_var_list_no_open): Likewise.
327         (cp_parser_omp_clause_default): Likewise.
328         (cp_parser_omp_clause_if): Likewise.
329         (cp_parser_omp_clause_num_threads): Likewise.
330         (cp_parser_omp_clause_reduction): Likewise.
331         (cp_parser_omp_clause_schedule): Likewise.
332         (cp_parser_omp_critical): Likewise.
333         (cp_parser_omp_for_loop): Likewise.
334         (cp_parser_omp_sections_scope): Likewise.
335
336         * parser.c (cp_parser_template_parameter_list): Simplify.
337
338 2008-04-07  James E. Wilson  <wilson@tuliptree.org>
339
340         * pt.c (tsubst_copy, case SIZEOF_EXPR): Initialize len.
341
342 2008-04-07  Jason Merrill  <jason@redhat.com>
343
344         PR c++/35734
345         * class.c (type_has_user_nondefault_constructor): A template 
346         counts as a nondefault constructor.
347
348 2008-04-04  Paolo Bonzini  <bonzini@gnu.org>
349
350         * decl.c (cxx_push_function_context): Delete.
351         (cxx_pop_function_context): Delete.
352         (start_preparsed_function): Merge cxx_push_function_context (!f->decl
353         code only).
354         * cp-objcp-common.h (LANG_HOOKS_FUNCTION_INIT,
355         LANG_HOOKS_FUNCTION_FINAL): Delete.
356         (LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P): Rename to
357         LANG_HOOKS_MISSING_NORETURN_OK_P.
358         * cp-tree.h (cxx_push_function_context, cxx_pop_function_context):
359         Delete prototype.
360         * semantics.c (current_stmt_tree): Fix comment.
361
362 2008-04-03  Jakub Jelinek  <jakub@redhat.com>
363
364         PR c++/35741
365         * semantics.c (finish_offsetof): Undo effect of convert_from_reference
366         before calling fold_offsetof.
367
368 2008-04-03  Tom Tromey  <tromey@redhat.com>
369
370         * Make-lang.in (c++_OBJS): New variable.
371
372 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
373     
374         * optimize.c (clone_body): New, from tree-inline.c.
375
376 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
377
378         * method.c (synthesize_method): Use {push,pop}_function_context.
379         * name-lookup.c (push_to_top_level): Likewise.
380         * parser.c (cp_parser_late_parsing_for_member): Likewise.
381
382 2008-03-30  Volker Reichelt  <v.reichelt@netcologne.de>
383
384         PR c++/35578
385         * parser.c (cp_parser_decl_specifier_seq): Add location to error
386         message.
387
388 2008-03-27  Tom Tromey  <tromey@redhat.com>
389
390         * Make-lang.in: Revert automatic dependency patch.
391
392 2008-03-27  Douglas Gregor  <doug.gregor@gmail.com>
393
394         PR obj-c++/35704
395         * typeck.c (build_x_compound_expr): Use cp_build_compound_expr.
396         (build_compound_expr): New, for compatibility with C
397         build_compound_expr.
398         (cp_build_compound_expr): Renamed from build_compound_expr.
399         (build_c_cast): New, for compatibility with C build_c_cast.
400         (cp_build_c_cast): Renamed from build_c_cast.
401         * init.c (build_vec_delete_1): Fix calls to build_compound_expr.
402         * decl.c (cxx_maybe_build_cleanup): Ditto.
403         * cp-tree.h (build_compound_expr): Add C-compatibile prototype.
404         (cp_build_compound_expr): Renamed from build_compound_expr.
405         (build_c_cast): Add C-compatible prototype.
406         (cp_build_c_cast): Renamed from build_c_cast.
407         * typeck2.c (build_functional_cast): Use cp_build_c_cast.
408         * parser.c (cp_parser_cast_expression): Fix call to build_c_cast.
409
410 2008-03-27  Douglas Gregor  <doug.gregor@gmail.com>
411
412         * pt.c (tsubst_copy) <case SIZEOF_EXPR>: Cope with
413         tsubst_pack_expansion returning a pack expansion, or a TREE_VEC
414         ending in a pack expansion, both of which can occur when
415         substituting into a nested template.
416         (tsubst_copy_and_build) <case SIZEOF_EXPR>: When we're
417         instantiating the sizeof...(X) form, make tsubst_copy do the work.
418         * parser.c (cp_parser_template_parameter): Deal with unnamed
419         non-type template parameter packs identified by pack expansions in
420         the parameter type.
421
422 2008-03-26  Jakub Jelinek  <jakub@redhat.com>
423
424         PR c++/35546
425         * pt.c (apply_late_template_attributes): Don't call tsubst on
426         first attribute argument if it is IDENTIFIER_NODE.
427
428         PR c++/35332
429         * error.c (dump_expr): Pass {,UN}ORDERED_EXPR, UN{LT,LE,GT,GE,EQ}_EXPR
430         and LTGT_EXPR to pp_expression.
431
432 2008-03-26  Douglas Gregor  <doug.gregor@gmail.com>
433
434        * pt.c (coerce_template_template_parm): Moved the body of the loop
435        of coerce_template_template_parms here, to make iteration over a
436        template argument pack simpler.
437        Also, allow matching of a template parameter pack in the template
438        template parameter to a template parameter in the template
439        template argument.
440        (coerce_template_template_parms): Deal with variadic template
441        template parameters. Use coerce_template_template_parm.
442        (unify): Make sure we coerce the template template argument's
443        template arguments to the template template parameter's template
444        parameters, not the other way around.
445
446 2008-03-25  Tom Tromey  <tromey@redhat.com>
447
448         * Make-lang.in: Remove .o targets.
449         (cp/g++spec.o): Moved to cp/.  Reduce to variable setting.
450         (GXX_OBJS): Update.
451         (c++_OBJS): New variable.
452         (CXX_TREE_H, CXX_PRETTY_PRINT_H): Remove.
453
454 2008-03-25  Douglas Gregor  <doug.gregor@gmail.com>
455
456        * typeck.c (composite_pointer_type_r): Add SFINAE support.
457        (composite_pointer_type): Ditto.
458        (common_type): Fix call to composite_pointer_type.
459        (cxx_sizeof_nowarn): New; used to be a macro.
460        (cxx_sizeof_expr): Add SFINAE support.
461        (cxx_alignof_expr): Ditto.
462        (decay_conversion): Fix calls for SFINAE support.
463        (rationalize_conditional_expr): Add SFINAE support.
464        (build_class_member_access_expr): Ditto.
465        (finish_class_member_access_expr): Ditto.
466        (build_x_indirect_ref): Ditto.
467        (build_indirect_ref): Original version renamed to
468        cp_build_indirect_ref; new version provides a bridge from
469        c-common.
470        (cp_build_indirect_ref): Was build_indirect_ref; added SFINAE
471        support.
472        (get_member_function_from_ptrfunc): Fix calls for SFINAE support.
473        (build_function_call): Original version renamed to
474        cp_build_function_call; new version provides a bridge from
475        c-common.
476        (cp_build_function_call): Was build_function_call; added SFINAE
477        support.
478        (convert_arguments): Add SFINAE support.
479        (build_x_binary_op): Ditto.
480        (build_binary_op): Original version renamed to cp_build_binary_op;
481        new version provides a bridge from c-common.
482        (cp_build_binary_op): Was build_binary_op; added SFINAE support.
483        (pointer_diff): Fix calls for SFINAE.
484        (build_x_unary_op): Add SFINAE support.
485        (condition_conversion): Fix calls for SFINAE.
486        (build_unary_op): Original version renamed to cp_build_unary_op;
487        new version provides a bridge from c-common.
488        (cp_build_unary_op): Was build_unary_op; added SFINAE support.
489        (unary_complex_lvalue): Fix calls for SFINAE.
490        (build_x_conditional_expr): Add SFINAE support.
491        (build_x_compound_expr_from_list): Fix calls for SFINAE.
492        (build_x_compound_expr): Add SFINAE support.
493        (convert_ptrmem): Fix calls for SFINAE.
494        (build_static_cast_1): Add SFINAE support.
495        (build_static_cast): Ditto.
496        (build_reinterpret_cast_1): Ditto.
497        (build_reinterpret_cast): Ditto.
498        (build_const_cast_1): Ditto.
499        (build_const_cast): Ditto.
500        (build_c_cast): Ditto.
501        (build_modify_expr): Original version renamed to
502        cp_build_modify_expr; new version provides a bridge from c-common.
503        (cp_build_modify_expr): Was build_modify_expr; added SFINAE
504        support.
505        (build_x_modify_expr): Add SFINAE support.
506        (build_ptrmemfunc): Fix calls for SFINAE.
507        (convert_for_assignment): Add SFINAE support.
508        (convert_for_initialization): Ditto.
509        (check_return_expr): Fix calls for SFINAE.
510        (lvalue_or_else): Add SFINAE support.
511        * init.c (perform_member_init): Fix calls for SFINAE.
512        (emit_mem_initializers): Ditto.
513        (expand_virtual_init): Ditto.
514        (expand_cleanup_for_base): Ditto.
515        (build_aggr_init): Add SFINAE support.
516        (expand_default_init): Ditto.
517        (expand_aggr_init_1): Fix calls for SFINAE.
518        (build_offset_ref): Ditto.
519        (build_new_1): Add SFINAE support.
520        (build_new): Ditto.
521        (build_vec_delete_1): Fix calls for SFINAE.
522        (get_temp_regvar): Ditto.
523        (build_vec_init): Add SFINAE support.
524        (build_dtor_call): Fix calls for SFINAE.
525        (build_delete): Ditto.
526        (push_base_cleanups): Ditto.
527        (build_vec_delete_1): Ditto.
528        * class.c (build_base_path): Fix calls for SFINAE.
529        (build_simple_base_path): Ditto.
530        (convert_to_base_statically): Ditto.
531        (build_vfn_ref): Ditto.
532        (resolve_address_of_overloaded_function): Ditto.
533        * decl.c (check_initializer): Fix calls for SFINAE.
534        (register_dtor_fn): Ditto.
535        (compute_array_index_type): Ditto.
536        (finish_enum): Ditto.
537        (start_preparsed_function): Ditto.
538        (cxx_maybe_build_cleanup): Ditto.
539        * call.c (convert_like): Add COMPLAIN argument.
540        (convert_like_with_context): Ditto.
541        (build_this): Fix calls for SFINAE.
542        (build_user_type_conversion): Ditto.
543        (resolve_args): Ditto.
544        (build_new_function_call): Add SFINAE support.
545        (build_operator_new_call): Fix calls for SFINAE.
546        (build_object_call): Add SFINAE support.
547        (build_conditional_expr): Ditto.
548        (build_new_op): Ditto.
549        (build_op_delete_call): Fix calls for SFINAE.
550        (build_temp): Ditto.
551        (convert_like_real): Add SFINAE support.
552        (build_x_va_arg): Fix calls for SFINAE.
553        (convert_default_arg): Ditto.
554        (build_over_call): Add SFINAE support.
555        (build_java_interface_fn_ref): Fix calls for SFINAE.
556        (build_special_member_call): Add SFINAE support.
557        (build_new_method_call): Ditto.
558        (perform_implicit_conversion): Ditto.
559        (perform_direct_initialization_if_possible): Ditto.
560        (initialize_reference): Fix calls for SFINAE.
561        * method.c (do_build_assign_ref): Fix calls for SFINAE.
562        * rtti.c (build_headof): Fix calls for SFINAE.
563        (get_tinfo_decl_dynamic): Ditto.
564        (get_typeid): Ditto.
565        (build_dynamic_cast_1): Add SFINAE support.
566        (build_dynamic_cast): Ditto.
567        (tinfo_base_init): Fix calls for SFINAE.
568        * except.c (do_get_exception_ptr): Fix calls for SFINAE.
569        (do_end_catch): Ditto.
570        (initialize_handler_parm): Ditto.
571        (expand_start_catch_block): Ditto.
572        (do_allocate_exception): Ditto.
573        (do_free_exception): Ditto.
574        (build_throw): Ditto.
575        * cvt.c (build_up_reference): Fix calls for SFINAE.
576        (convert_to_reference): Ditto.
577        (ocp_convert): Ditto.
578        (convert_to_void): Add SFINAE support.
579        * tree.c (build_dummy_object): Fix calls for SFINAE.
580        (stabilize_expr): Ditto.
581        * cp-tree.h (build_conditional_expr): Add tsubst_flags_t
582        parameter.
583        (build_new_method_call): Ditto.
584        (build_special_member_call): Ditto.
585        (build_new_op): Ditto.
586        (perform_implicit_conversion): Ditto.
587        (perform_direct_initialization_if_possible): Ditto.
588        (convert_to_void): Ditto.
589        (build_aggr_init): Ditto.
590        (build_new): Ditto.
591        (build_vec_init): Ditto.
592        (build_dynamic_cast): Ditto.
593        (finish_call_expr): Ditto
594        (cxx_sizeof_or_alignof_expr): Add COMPLAIN parameter.
595        (cxx_sizeof_nowarn): Remove macro; add function declaration.
596        (build_class_member_access_expr): Add tsubst_flags_t parameter.
597        (finish_class_member_access_expr): Ditto.
598        (build_x_indirect_ref): Ditto.
599        (cp_build_indirect_ref): New.
600        (cp_build_function_call): Add tsubst_flags_t parameter.
601        (build_x_unary_op): Ditto.
602        (cp_build_unary_op): New.
603        (build_x_conditional_expr): Add tsubst_flags_t parameter.
604        (build_x_compound_expr): Ditto.
605        (build_compound_expr): Ditto.
606        (build_static_cast): Ditto.
607        (build_reinterpret_cast): Ditto.
608        (build_const_cast): Ditto.
609        (build_c_cast): Ditto.
610        (build_x_modify_expr): Ditto.
611        (cp_build_modify_expr): New.
612        (convert_for_initialization): Add tsubst_flags_t parameter.
613        (cp_build_binary_op): Remove macro; add function declaration.
614        (invalid_nonstatic_memfn_p): Add tsubst_flags_t parameter.
615        (lvalue_or_else): Ditto.
616        (build_functional_cast): Ditto.
617        * typeck2.c (digest_init): Fix calls for SFINAE.
618        (process_init_constructor_array): Ditto.
619        (process_init_constructor_record): Ditto.
620        (build_x_arrow): Ditto.
621        (build_m_component_ref): Ditto.
622        (build_functional_cast): Add SFINAE support.
623        * pt.c (tsubst_copy_and_build): Add (more) SFINAE support.
624        * semantics.c (simplify_loop_decl_cond): Fix calls for SFINAE.
625        (finish_expr_stmt): Ditto.
626        (finish_for_expr): Ditto.
627        (finish_asm_stmt): Ditto.
628        (finish_non_static_data_member): Ditto.
629        (finish_qualified_id_expr): Ditto.
630        (finish_call_expr): Add SFINAE support.
631        (finish_increment_expr): Fix calls for SFINAE.
632        (finish_unary_op_expr): Ditto.
633        (simplify_aggr_init_expr): Ditto.
634        (finish_omp_clauses): Ditto.
635        (finish_omp_for): Ditto.
636        (finish_omp_barrier): Ditto.
637        (finish_omo_flush): Ditto.
638        * decl2.c (grok_array_decl): Fix calls or SFINAE.
639        (build_anon_union_vars): Ditto.
640        (get_guard_cond): Ditto.
641        (set_guard): Ditto.
642        (one_static_initialization_or_destruction): Ditto.
643        (do_static_initialization_or_destruction): Ditto.
644        (generate_ctor_or_dtor_function): Ditto.
645        (build_offset_ref_call_from_tree): Ditto.
646        * parser.c (cp_parser_postfix_expression): Fix calls for SFINAE.
647        (cp_parser_postfix_dot_deref_expression): Ditto.
648        (cp_parser_unary_expression): Ditto.
649        (cp_parser_new_expression): Ditto.
650        (cp_parser_cast_expression): Ditto.
651        (cp_parser_binary_expression): Ditto.
652        (cp_parser_question_colon_clause): Ditto.
653        (cp_parser_assignment_expression): Ditto.
654        (cp_parser_expression): Ditto.
655        (cp_parser_builtin_offsetof): Ditto.
656        (cp_parser_template_argument): Ditto.
657        (cp_parser_functional_cast): Ditto.
658
659 2008-03-24  Tom Tromey  <tromey@redhat.com>
660
661         * lex.c (handle_pragma_interface): Don't copy the filename.
662         (handle_pragma_implementation): Copy filename using xstrdup.
663
664 2008-03-21  Paolo Carlini  <pcarlini@suse.de>
665
666         * cp-tree.h (IS_AGGR_TYPE): Rename to MAYBE_CLASS_TYPE_P.
667         (SET_IS_AGGR_TYPE): Rename to SET_CLASS_TYPE_P.
668         (IS_AGGR_TYPE_CODE): Rename to RECORD_OR_UNION_CODE_P.
669         (PROMOTES_TO_AGGR_TYPE): Remove.
670         (CLASS_TYPE_P, TYPE_NON_AGGREGATE_CLASS): Adjust.
671         * typeck.c (unary_complex_lvalue, build_modify_expr,
672         convert_for_initialization): Adjust.
673         * init.c (is_aggr_type): Remove.
674         (is_class_type): Add.
675         (build_offset_ref, build_new_1, build_vec_delete_1, build_vec_init,
676         build_delete): Adjust.
677         * lex.c (make_aggr_type): Remove.
678         (make_class_type): Add.
679         (cxx_make_type): Adjust.
680         * class.c (finish_struct_1, fixed_type_or_null, is_empty_class):
681         Adjust.
682         * decl.c (build_typename_type, make_typename_type,
683         make_unbound_class_template, cxx_init_decl_processing,
684         check_tag_decl, groktypename, start_decl_1, layout_var_decl,
685         check_initializer, cp_finish_decl, build_ptrmemfunc_type, grokparms,
686         grok_op_properties, xref_tag, check_function_type): Adjust.
687         * call.c (check_dtor_name, standard_conversion, implicit_conversion,
688         add_builtin_candidate, add_builtin_candidates,
689         build_user_type_conversion_1, convert_like_real, build_cxx_call,
690         is_subseq, compare_ics): Adjust.
691         * method.c (use_thunk): Adjust.
692         * rtti.c (build_dynamic_cast_1, create_pseudo_type_info,
693         create_tinfo_types): Adjust.
694         * cvt.c (cp_convert_to_pointer, convert_to_pointer_force,
695         build_up_reference, convert_to_reference, convert_from_reference,
696         ocp_convert, build_expr_type_conversion): Adjust.
697         * tree.c (bind_template_template_parm, error_type): Adjust.
698         * dump.c (cp_dump_tree): Adjust.
699         * search.c (lookup_member): Adjust.
700         * friend.c (make_friend_class, do_friend): Adjust.
701         * typeck2.c (store_init_value, process_init_constructor_array,
702         process_init_constructor_record, build_x_arrow, build_m_component_ref,
703         build_functional_cast): Adjust.
704         * pt.c (finish_member_template_decl, process_template_parm,
705         lookup_template_class, tsubst_function_type, tsubst,
706         tsubst_copy_and_build, get_template_base, bt_instantiate_type_proc):
707         Adjust.
708         * semantics.c (begin_class_definition, finish_base_specifier,
709         finish_typeof, cxx_omp_predetermined_sharing, finish_decltype_type):
710         Adjust.
711         * name-lookup.c (constructor_name_p, push_overloaded_decl,
712         do_class_using_decl, lookup_qualified_name,
713         maybe_process_template_type_declaration): Adjust.
714         * decl2.c (grok_array_decl, check_member_template,
715         constrain_class_visibility): Adjust.
716         * parser.c (cp_parser_class_name): Adjust.
717
718 2008-03-18  Paolo Bonzini  <bonzini@gnu.org>
719
720         * cp-lang.c (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS): Delete.
721         
722 2008-03-17  Jason Merrill  <jason@redhat.com>
723
724         PR c++/35548
725         * call.c (reference_binding): Check LOOKUP_NO_TEMP_BIND when binding
726         a temp directly to a reference as per DR391.
727
728 2008-03-12  Richard Guenther  <rguenther@suse.de>
729
730         PR c++/35469
731         Revert:
732         2008-02-04  Richard Guenther  <rguenther@suse.de>
733
734         PR java/35035
735         * decl.c (record_builtin_java_type): Make jboolean a
736         integer type again where its mode doesn't match that of bool.
737
738         2008-01-25  Richard Guenther  <rguenther@suse.de>
739
740         PR c++/33887
741         * decl.c (record_builtin_java_type): Make __java_boolean
742         a variant of bool.
743         * typeck.c (structural_comptypes): Move TYPE_FOR_JAVA check
744         after TYPE_MAIN_VARIANT check.
745
746 2008-03-10  Jakub Jelinek  <jakub@redhat.com>
747
748         PR c++/35328
749         * semantics.c (finish_omp_clauses): Look through NOP_EXPR even
750         if errorcount.
751
752         PR c++/35337
753         * semantics.c (finish_omp_clauses): Use %qD instead of %qE for
754         DECL_P in not a variable and appears more than once error messages.
755
756 2008-03-07  Paolo Bonzini  <bonzini@gnu.org>
757
758         Revert:
759
760         2008-02-06  Douglas Gregor  <doug.gregor@gmail.com>
761
762         PR c++/35049
763         PR c++/35096
764         * typeck.c (structural_comptypes): Call cp_comptypes.
765         (comptypes): New; called from the C/C++ common bits to perform
766         strict checks.
767         (cp_comptypes): Renamed from comptypes, which is already used,
768         with a different signature, by the C++ front end.
769         (build_reinterpret_cast_1): Call cp_comptypes.
770         (ptr_reasonably_similar): Ditto.
771         * decl.c (decls_match): Ditto.
772         * cvt.c (convert_to_reference): Ditto.
773         * cp-tree.h (same_type_p): Ditto.
774         (same_or_base_type_p): Ditto.
775         (comptypes): Rename to cp_comptypes.
776         * pt.c (canonical_type_parameter): Call cp_comptypes.
777
778 2008-03-07  Paolo Bonzini  <bonzini@gnu.org>
779
780         * cp-objcp-common.c (cxx_types_compatible_p): Remove obsolete
781         test for equivalence between pointer and references.
782
783 2008-03-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
784
785         PR 24924
786         * class.c (finish_struct_anon): Use permerror instead of pedwarn.
787         (check_field_decls): Likewise.
788         (note_name_declared_in_class): Likewise.
789         * call.c (build_new_op): Likewise.
790         (convert_like_real): Likewise.
791         (build_over_call): Likewise.
792         * lex.c (unqualified_fn_lookup_error): Likewise.
793         * parser.c (cp_parser_template_id): Likewise.
794         * cvt.c (warn_ref_binding): Likewise.
795         (convert_to_reference): Likewise.
796         (ocp_convert): Likewise.
797         (convert_to_void): Use error instead of pedwarn.
798         * error.c (cp_cpp_error): Use pedantic_warning_kind.
799         * decl.c (compute_array_index_type): Use constant_expression_error.
800         
801 2008-03-01  Douglas Gregor  <doug.gregor@gmail.com>
802
803         * parser.c (cp_lexer_next_token_is_decl_specifier_keyword): Note
804         that auto is either a storage class or a simple type specifier,
805         depending on the dialect.
806         (cp_parser_decl_specifier_seq): Complain about `auto' as a storage
807         specifier in C++98 mode, error in C++0x mode (since we don't
808         support auto as a type specifier, yet).
809         (cp_parser_storage_class_specifier_opt): Don't treat `auto' as a
810         storage specifier in C++0x mode.
811         (cp_parser_simple_type_specifier): Parse `auto' as a
812         simple-type-specifier, but error because we don't support it yet.
813
814 2008-02-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
815
816         * parser.c (cp_parser_nonclass_name): New.
817         (cp_parser_pseudo_destructor_name): Use it instead of
818         cp_parser_type_name.
819         (cp_parser_type_name): Move code to cp_parser_nonclass_name.
820
821 2008-02-29  Tom Tromey  <tromey@redhat.com>
822
823         * parser.c (struct cp_token) <input_file_stack_index>: Remove.
824         (cp_lexer_get_preprocessor_token): Update.
825         (cp_lexer_set_source_position_from_token): Don't call
826         restore_input_file_stack.
827         * lex.c (cxx_init): Don't use push_srcloc or pop_srcloc.
828
829 2008-02-28  Richard Guenther  <rguenther@suse.de>
830
831         Revert:
832         2008-02-26  Richard Guenther  <rguenther@suse.de>
833
834         * decl.c (duplicate_decls): Remove decl from global mapping
835         before ggc_freeing it.
836
837 2008-02-27  Jakub Jelinek  <jakub@redhat.com>
838
839         PR c++/35368
840         * rtti.c: Include c-pragma.h.
841         (push_abi_namespace, pop_abi_namespace): New functions.
842         (build_dynamic_cast_1, tinfo_base_init, get_pseudo_ti_index,
843         create_tinfo_types, emit_support_tinfos): Use them.
844         * Make-lang.in (cp/rtti.o): Depend on $(C_PRAGMA_H).
845
846 2008-02-26  Jason Merrill  <jason@redhat.com>
847
848         PR c++/35315
849         * decl.c (grokdeclarator): Allow a typedef of an unnamed struct
850         to name the struct for linkage purposes even if it has attributes.
851         (start_decl): In that case, set ATTR_FLAG_TYPE_IN_PLACE.
852
853 2008-02-26  Tom Tromey  <tromey@redhat.com>
854
855         * parser.c (eof_token): Remove old location code.
856         (check_empty_body): Remove test of USE_MAPPED_LOCATION.
857         * decl2.c (generate_ctor_or_dtor_function): Remove old location
858         code.
859         (cp_write_global_declarations): Likewise.
860         * lex.c (cxx_init): Remove old location code.
861         (handle_pragma_implementation): Remove test of
862         USE_MAPPED_LOCATION.
863         * pt.c (tsubst): Remove old location code.
864         * error.c (cp_print_error_function): Remove test of
865         USE_MAPPED_LOCATION.
866         * decl.c (pop_label): Remove old location code.
867         (finish_function): Likewise.
868
869 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
870
871         PR 26264
872         * call.c (magic_varargs_p):  Remove BUILT_IN_STDARG_START.
873         
874 2008-02-26  Richard Guenther  <rguenther@suse.de>
875
876         * decl.c (duplicate_decls): Remove decl from global mapping
877         before ggc_freeing it.
878
879 2008-02-26  Paolo Carlini  <pcarlini@suse.de>
880
881         PR c++/35323
882         * name-lookup.c (arg_assoc_type): Handle FIXED_POINT_TYPE.
883
884 2008-02-26  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
885         
886         * typeck.c (build_class_member_access_expr): Add appropriate
887         OPT_W* parameter to warning.
888         (build_reinterpret_cast_1): Likewise.
889         * name-lookup.c (push_overloaded_decl): Likewise.
890         
891 2008-02-25  Paolo Carlini  <pcarlini@suse.de>
892
893         PR c++/35333
894         * error.c (dump_expr): Handle CONJ_EXPR.
895
896 2008-02-25  Paolo Carlini  <pcarlini@suse.de>
897
898         PR c++/35338
899         * error.c (dump_type): Handle FIXED_POINT_TYPE.
900         (dump_expr): Handle FIXED_CST.
901
902 2008-02-24  Jason Merrill  <jason@redhat.com>
903
904         * parser.c (cp_parser_declaration): Handle "inline namespace".
905         (cp_parser_namespace_definition): Likewise.
906
907         PR c++/33486
908         * name-lookup.c (arg_assoc_namespace): Look down into inline 
909         namespaces, too.
910
911 2008-02-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
912
913         * typeck.c (check_for_casting_away_constness): Use 1 single
914         argument, the type of cast, to decide what diagnostics generate.
915         (build_static_cast_1): Remove unused code. Update call to
916         check_for_casting_away_constness.
917         (build_reinterpret_cast_1): Update call to
918         check_for_casting_away_constness.
919         (build_const_cast_1): Likewise.
920         
921 2008-02-24  Paolo Carlini  <pcarlini@suse.de>
922
923         * error.c (dump_expr): Don't deal directly with NEW_EXPR (and
924         VEC_NEW_EXPR), forward to pp_expression.
925         * cxx-pretty-print.c (pp_cxx_new_expression): Fix FIXME.
926
927 2008-02-24  Danny Smith  <dannysmith@users.sourceforge.net>
928
929         PR c++/34749
930         * friend.c (do_friend): Call cplus_decl_attributes earlier.
931
932 2008-02-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
933
934         PR C++/34715
935         * decl.c (duplicate_decls): Merge DECL_DISREGARD_INLINE_LIMITS for
936         template decls' function decl.
937
938 2008-02-22  Paolo Carlini  <pcarlini@suse.de>
939
940         PR c++/35282
941         Revert:
942         2008-02-14  Paolo Carlini  <pcarlini@suse.de>
943
944         PR c++/28743
945         * pt.c (determine_specialization): In case of function templates,
946         when the type of DECL does not match FN there is no match.
947
948 2008-02-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
949
950         PR c/19999
951         * typeck.c (build_binary_op): Warn about floating point
952         comparisons if FLOAT_TYPE_P, not only for REAL_TYPE.
953
954 2008-02-19  Jason Merrill  <jason@redhat.com>
955
956         PR c++/34950
957         * pt.c (resolve_overloaded_unification): Set processing_template_decl
958         while we look for possible bindings.
959
960 2008-02-19  Jakub Jelinek  <jakub@redhat.com>
961
962         PR c++/35028
963         * cp-gimplify.c (cxx_omp_clause_apply_fn): Handle vararg copy ctors.
964
965         PR c++/34964
966         PR c++/35244
967         * semantics.c (finish_omp_threadprivate): Do nothing for error_operand_p
968         vars.  Afterwards ensure v is VAR_DECL.
969
970         PR c++/35078
971         * parser.c (cp_parser_omp_for_loop): If DECL has REFERENCE_TYPE, don't
972         call cp_finish_decl.
973         * semantics.c (finish_omp_for): Fail if DECL doesn't have integral type
974         early.
975
976 2008-02-15  Douglas Gregor  <doug.gregor@gmail.com>
977
978         PR c++/35023
979         PR c++/35024
980         PR c++/35026
981         * pt.c (finish_member_template_decl): If the type in a TYPE_DECL
982         is error_mark_node, return an error early.
983         (find_parameter_packs_r): Pass the pointer set along to recursive
984         calls of cp_walk_subtrees; don't try to manage the pointer set
985         ourselves.
986         (uses_parameter_packs): Pass the pointer set to cp_walk_tree.
987         (make_pack_expansion): Ditto.
988         (check_for_bare_parameter_packs): Ditto. Also, don't bother taking
989         a second pass through the tree with find_parameter_packs_r; that
990         second pass no longer does anything.
991         (push_template_decl_real): If we have an erroneous declaration,
992         set its type to error_mark_node before returning an error.
993
994 2008-02-14  Douglas Gregor  <doug.gregor@gmail.com>
995
996         PR c++/34050
997         * pt.c (tsubst_initializer_list): Deal with the use of
998         VOID_TYPE_NODE to indicate value-initialization of the bases.
999
1000 2008-02-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1001             Jason Merrill  <jason@redhat.com>
1002
1003         PR c++/5645
1004         PR c++/11159
1005         * class.c (type_has_user_nondefault_constructor): New fn.
1006         * cp-tree.h: Declare it.
1007         * init.c (emit_mem_initializers): Use it for -W warning about
1008         missing base initializer.
1009
1010 2008-02-14  Paolo Carlini  <pcarlini@suse.de>
1011
1012         PR c++/28743
1013         * pt.c (determine_specialization): In case of function templates,
1014         when the type of DECL does not match FN there is no match.
1015
1016 2008-02-13  Jakub Jelinek  <jakub@redhat.com>
1017             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1018
1019         PR c++/35138
1020         * parser.c (cp_parser_pseudo_destructor_name): If next tokens
1021         are not identifier :: ~, return before calling cp_parser_type_name.
1022
1023 2008-02-13  Jason Merrill  <jason@redhat.com>
1024
1025         PR c++/34962, c++/34937, c++/34939
1026         * decl2.c (is_late_template_attribute): Always defer attributes 
1027         vector_size and weak.
1028
1029         PR c++/34774
1030         * pt.c (value_dependent_expression_p): Look into DECL_INITIAL
1031         of enumerators, too.
1032
1033 2008-02-12  Jason Merrill  <jason@redhat.com>
1034
1035         PR c++/34824
1036         * call.c (convert_like_real): Pass LOOKUP_NO_CONVERSION to build_temp
1037         if we're doing conversions to call a user-defined conversion function.
1038
1039 2008-02-12  Steven Bosscher  <steven@gcc.gnu.org>
1040
1041         PR c++/29048
1042         * semantics.c (finish_qualified_id_expr): Avoid duplicate access
1043         check here, too.
1044
1045 2008-02-12  Jakub Jelinek  <jakub@redhat.com>
1046
1047         PR c++/34862
1048         * init.c (build_new_1): Don't create placement_expr before
1049         constructing alloc_call.  Verify that the pointer is passed by
1050         value to operator new.
1051
1052 2008-02-11  Jason Merrill  <jason@redhat.com>
1053
1054         PR c++/35097
1055         * pt.c (tsubst): Don't look up a template typedef in an explicit
1056         specialization.
1057
1058 2008-02-11  Douglas Gregor  <doug.gregor@gmail.com>
1059
1060        PR c++/35113
1061        * tree.c (cp_build_qualified_type_real): When building a
1062        cv-qualified array type, build it as a unique type with
1063        build_cplus_array_type_1 and then adopt the unqualified type's
1064        main variant.
1065         
1066 2008-02-11  Paolo Carlini  <pcarlini@suse.de>
1067
1068         PR c++/35077
1069         * decl.c (groktypename): Check grokdeclarator return.
1070
1071 2008-02-10  Jason Merrill  <jason@redhat.com>
1072
1073         PR c++/34094
1074         * decl2.c (cp_write_global_declarations): Don't write out static 
1075         data members with DECL_IN_AGGR_P set.
1076
1077 2008-02-08  Jason Merrill  <jason@redhat.com>
1078
1079         PR c++/35116
1080         * tree.c (build_target_expr_with_type): Handle void initializer.
1081         (bot_manip): Remap slot before recursing.
1082
1083 2008-02-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1084
1085         PR other/35107
1086         * Make-lang.in (cc1plus-dummy, cc1plus): Add $(GMPLIBS).
1087
1088 2008-02-06  Alexandre Oliva  <aoliva@redhat.com>
1089
1090         PR c++/35056
1091         * tree.c: Include tree-flow.h.
1092         (build_target_expr): Check type compatibility.
1093         * Make-lang.in (cp/tree.o): Depend on $(TREE_FLOW_H).
1094         * call.c (convert_like_real): Convert bitfield to expected type.
1095
1096 2008-02-06  Douglas Gregor  <doug.gregor@gmail.com>
1097
1098         PR c++/35049
1099         PR c++/35096
1100         * typeck.c (structural_comptypes): Call cp_comptypes.
1101         (comptypes): New; called from the C/C++ common bits to perform
1102         strict checks.
1103         (cp_comptypes): Renamed from comptypes, which is already used,
1104         with a different signature, by the C++ front end.
1105         (build_reinterpret_cast_1): Call cp_comptypes.
1106         (ptr_reasonably_similar): Ditto.
1107         * decl.c (decls_match): Ditto.
1108         * cvt.c (convert_to_reference): Ditto.
1109         * cp-tree.h (same_type_p): Ditto.
1110         (same_or_base_type_p): Ditto.
1111         (comptypes): Rename to cp_comptypes.
1112         * pt.c (canonical_type_parameter): Call cp_comptypes.
1113
1114 2008-02-05  Jakub Jelinek  <jakub@redhat.com>
1115
1116         PR c++/33553
1117         * pt.c (tsubst) <case INTEGER_TYPE>: Don't issue error if max is
1118         value dependent expression.
1119
1120 2008-02-05  Douglas Gregor  <doug.gregor@gmail.com>
1121
1122         PR c++/35074
1123         * decl2.c (save_template_attributes): When we're modifying the
1124         TYPE_MAIN_VARIANT to add new attributes, be sure to also modify
1125         all of the other variants to add those same attributes. Otherwise,
1126         the main variant will be inconsistent with those other variants.
1127         
1128 2008-02-04  Richard Guenther  <rguenther@suse.de>
1129
1130         PR java/35035
1131         * decl.c (record_builtin_java_type): Make jboolean a
1132         integer type again where its mode doesn't match that of bool.
1133
1134 2008-02-02  Jason Merrill  <jason@redhat.com>
1135             Mark Mitchell  <mark@codesourcery.com>
1136
1137         PR c++/33916
1138         * init.c (build_value_init_1): New function.
1139         (build_value_init): New function.
1140         * typeck2.c (build_functional_cast): Call it.
1141         * cp-gimplify.c (cp_gimplify_init_expr): Handle its output.
1142
1143         * cp-tree.h (TYPE_HAS_USER_CONSTRUCTOR): Rename from 
1144         TYPE_HAS_CONSTRUCTOR.
1145         * class.c (finish_struct_bits, maybe_warn_about_overly_private_class,
1146         add_implicitly_declared_members): Adjust.
1147         (check_field_decls): Adjust. Remove warnings about reference/const
1148         in class without constructor.
1149         (check_bases_and_members): Adjust.  Give those warnings here instead.
1150         * decl.c (fixup_anonymous_aggr): Adjust.
1151         (check_initializer): Adjust, clarify logic slightly.
1152         (grok_special_member_properties): Adjust, only set if user-provided.
1153         * rtti.c (create_tinfo_types): Don't set.
1154         * cvt.c (ocp_convert): Remove exception for vtable_entry_type et al.
1155         Use same_type_ignoring_top_level_qualifiers_p.
1156         * pt.c (check_explicit_specialization): Adjust.
1157         (instantiate_class_template): Adjust.
1158
1159 2008-01-31  Douglas Gregor  <doug.gregor@gmail.com>
1160            Jakub Jelinek  <jakub@redhat.com>
1161
1162        PR c++/34935
1163        PR c++/34936
1164        * typeck.c (structural_comptypes): Handle comparisons of
1165        VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, FIXED_POINT_TYPE, and
1166        REAL_TYPE nodes.
1167        * mangle.c (write_builtin_type): Map down to the canonical type,
1168        which will be one of the predefined type nodes.
1169
1170 2008-01-29  Michael Meissner  <michael.meissner@amd.com>
1171
1172         PR 35004
1173         * cp-tree.h (struct full_lang_decl): Make tree_code bitfield 16
1174         bits to allow for expansion of the number of middle end tree
1175         codes.
1176
1177 2008-01-29  Douglas Gregor  <doug.gregor@gmail.com>
1178
1179         PR c++/34055
1180         PR c++/34103
1181         PR c++/34219
1182         PR c++/34606
1183         PR c++/34753
1184         PR c++/34754
1185         PR c++/34755
1186         PR c++/34919
1187         PR c++/34961
1188         * typeck.c (check_return_expr): Tweak call to
1189         check_for_bare_parameter_packs.
1190         * class.c (add_method): Be careful with error_mark_nodes.
1191         * cp-tree.h (check_for_bare_parameter_packs): Remove "*" from
1192         signature.
1193         * pt.c (struct find_parameter_pack_data): Remove
1194         SET_PACKS_TO_ERROR.
1195         (find_parameter_packs_r): Don't use SET_PACKS_TO_ERROR.
1196         (uses_parameter_packs): Don't set SET_PACKS_TO_ERROR.
1197         (make_pack_expansion): Ditto.
1198         (check_for_bare_parameter_packs): Parameter is now a tree, not a
1199         tree*.
1200         (process_template_parm): Tweak call to
1201         check_for_bare_parameter_packs.  
1202         (push_template_decl_real): Tweak calls to
1203         check_for_bare_parameter_packs. If bare parameter packs are found
1204         in the list of exceptions, clear out that list after giving an
1205         error.
1206         * semantics.c (finish_cond): Tweak call to
1207         check_for_bare_parameter_packs.
1208         (finish_expr_stmt): Ditto.
1209         (finish_for_expr): Ditto.
1210         (finish_switch_cond): Ditto.
1211         (finish_mem_initializers): Ditto.
1212         (finish_member_declaration): Ditto.
1213         (finish_static_assert): Check for bare parameter packs in the
1214         condition.
1215         * decl2.c (cplus_decl_attributes): Check for bare parameter packs in the
1216         attributes of a declaration.
1217         * parser.c (cp_parser_using_declaration): Tweak call to
1218         check_for_bare_parameter_packs.
1219         (cp_parser_base_clause): Ditto.
1220
1221 2008-01-28  Jason Merrill  <jason@redhat.com>
1222
1223         PR c++/35007
1224         * class.c (build_base_path): Fix !want_pointer case.
1225
1226 2008-01-27  Jason Merrill  <jason@redhat.com>
1227
1228         PR c++/27177
1229         * class.c (build_base_path): Fix previous change.
1230
1231 2008-01-26  Jakub Jelinek  <jakub@redhat.com>
1232
1233         PR c++/34965
1234         * error.c (dump_expr): Handle TRUTH_AND_EXPR, TRUTH_OR_EXPR
1235         and TRUTH_XOR_EXPR.
1236
1237 2008-01-26  Richard Guenther  <rguenther@suse.de>
1238
1239         PR c++/34235
1240         * typeck.c (build_binary_op): Remove code to shorten compares.
1241
1242 2008-01-25  Richard Guenther  <rguenther@suse.de>
1243
1244         PR c++/33887
1245         * decl.c (record_builtin_java_type): Make __java_boolean
1246         a variant of bool.
1247         * typeck.c (structural_comptypes): Move TYPE_FOR_JAVA check
1248         after TYPE_MAIN_VARIANT check.
1249
1250 2008-01-25  Jason Merrill  <jason@redhat.com>
1251
1252         PR c++/27177
1253         * class.c (build_base_path): Don't mess with virtual access if
1254         skip_evaluation.
1255         * call.c (standard_conversion): Don't check whether source type
1256         is complete.
1257
1258         * decl2.c (is_late_template_attribute): Don't defer attribute
1259         visibility just because the type is dependent.
1260
1261 2008-01-25  Jason Merrill  <jason@redhat.com>
1262             Mark Mitchell  <mark@codesourcery.com>
1263
1264         PR c++/31780
1265         * call.c (standard_conversion): Allow conversion from integer/real
1266         to complex.
1267         (compare_ics): Such a conversion is worse than a normal arithmetic
1268         conversion.
1269         
1270 2008-01-25  Richard Guenther  <rguenther@suse.de>
1271
1272         PR c++/33887
1273         * cp-lang.c (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS): Define
1274         to true.
1275
1276 2008-01-24  Paolo Carlini  <pcarlini@suse.de>
1277
1278         PR c++/34603
1279         * pt.c (push_template_decl_real): Return error_mark_node in case
1280         of template definition of non-template.
1281
1282 2008-01-24  Jason Merrill  <jason@redhat.com>
1283
1284         PR c++/34913
1285         * decl2.c (is_late_template_attribute): Defer any attribute with 
1286         dependent args.  Also defer type attributes if the type is dependent.
1287
1288 2008-01-22  Jakub Jelinek  <jakub@redhat.com>
1289             Alexandre Oliva  <aoliva@redhat.com>
1290
1291         PR c++/33984
1292         * call.c (reference_binding): For bitfields use the declared bitfield
1293         type.
1294         (add_builtin_candidates): Likewise.
1295         * class.c (layout_class_type): For bitfields copy over the
1296         original type quals.
1297
1298 2008-01-22  Jason Merrill  <jason@redhat.com>
1299
1300         PR c++/28560
1301         * decl.c (groktypename): Also ignore attributes on dependent 
1302         possibly-class types.
1303
1304         PR c++/34912
1305         * friend.c (do_friend): Check for prior declaration of a friend 
1306         function of a local class.
1307         * name-lookup.c (lookup_name_innermost_nonclass_level): 
1308         No longer static.
1309         * name-lookup.h: Declare it.
1310
1311 2008-01-22  Tom Tromey  <tromey@redhat.com>
1312
1313         PR c++/34829:
1314         * init.c (build_new_1): Only disallow Java aggregates.
1315
1316 2008-01-22  Jakub Jelinek  <jakub@redhat.com>
1317
1318         PR c++/34607
1319         * semantics.c (finish_omp_for): Don't call c_finish_omp_for
1320         if decl or init is error_mark_node.
1321
1322         PR c++/34918
1323         * error.c (dump_expr): Handle VECTOR_CST.
1324
1325 2008-01-21  Jason Merrill  <jason@redhat.com>
1326
1327         PR c++/33959
1328         * pt.c (tsubst_aggr_type): Make sure our context is complete.
1329
1330         PR c++/34573
1331         * pt.c (retrieve_local_specialization): Robustify.
1332         (tsubst_pack_expansion, tsubst_decl): Remove redundant checks.
1333
1334         PR c++/34846
1335         * pt.c (tsubst): Only call retrieve_local_specialization if the
1336         original typedef was in a function template.
1337
1338         PR c++/34196
1339         * decl.c (wrap_cleanups_r): Set TRY_CATCH_IS_CLEANUP.
1340
1341 2008-01-21  Richard Guenther  <rguenther@suse.de>
1342
1343         PR c++/34850
1344         * error.c (cp_print_error_function): Deal with recursive
1345         BLOCK trees.
1346
1347 2008-01-20  Paolo Carlini  <pcarlini@suse.de>
1348
1349         PR c++/34891
1350         * error.c (dump_expr): Deal with VIEW_CONVERT_EXPR.
1351
1352 2008-01-20  Paolo Carlini  <pcarlini@suse.de>
1353
1354         PR c++/34776
1355         PR c++/34486
1356         * name-lookup.c (do_class_using_decl): Do not call constructor_name_p
1357         on non-IS_AGGR_TYPE scope.
1358         (constructor_name_p): Assert IS_AGGR_TYPE.
1359
1360 2008-01-18  Ian Lance Taylor  <iant@google.com>
1361
1362         PR c++/33407
1363         * decl.c (duplicate_decls): Copy DECL_IS_OPERATOR_NEW flag.
1364         (grok_op_properties): For NEW_EXPR and VEC_NEW_EXPR set
1365         DECL_IS_OPERATOR_NEW flag.
1366
1367 2008-01-16  Richard Guenther  <rguenther@suse.de>
1368
1369         PR c++/33819
1370         * typeck.c (is_bitfield_expr_with_lowered_type): Recurse
1371         for conversions to type variants.
1372
1373 2008-01-15  Andreas Tobler  <a.tobler@schweiz.org>
1374
1375         * parser.c (cp_parser_template_parameter): Fix C90 issue with mixing
1376         declaration and code.  Update copyright year.
1377
1378 2008-01-15  Douglas Gregor  <doug.gregor@gmail.com>
1379
1380         PR c++/34399
1381         * friend.c (do_friend): Don't query TYPE_BEING_DEFINED unless we
1382         know we have a class type.
1383
1384 2008-01-15  Douglas Gregor  <doug.gregor@gmail.com>
1385
1386         PR c++/34751
1387         * pt.c (coerce_template_parameter_pack): When substituting into
1388         the type of a non-type template parameter pack. use the
1389         deduced/substituted arguments.
1390         * parser.c (declarator_can_be_parameter_pack): A pointer-to-member
1391         can be a parameter pack with the ellipsis following it.  When we
1392         have an erroneous declaration, allow it to be a parameter pack.
1393         (cp_parser_template_parameter): Complain about default
1394         arguments on non-type template parameter packs, and parse them
1395         using the new cp_parser_default_argument.
1396         (cp_parser_parameter_declaration): Complain about parameter packs
1397         with default arguments. Move parsing of default arguments into a
1398         new function, cp_parser_default_argument.
1399         (cp_parser_default_argument): New; extracted from
1400         cp_parser_parameter_declaration.
1401
1402 2008-01-15  Douglas Gregor  <doug.gregor@gmail.com>
1403
1404         PR c++/34051
1405         PR c++/34055
1406         PR c++/34102
1407         PR c++/34103
1408         * typeck.c (check_return_expr): If there are bare parameter packs
1409         in the return value, set it to error_mark_node.
1410         * tree.c (cp_walk_subtrees): Walk USING_DECL nodes.
1411         * pt.c (find_parameter_packs_r): Look at the type of
1412         IDENTIFIER_NODEs (e.g., for user-defined conversions).
1413         (check_for_bare_parameter_packs): Flip the result: now returns
1414         TRUE when there were bare parameter packs, FALSE otherwise.
1415         (push_template_decl_real): Deal with flipped result of
1416         check_for_bare_parameter_packs.
1417         * semantics.c (finish_cond): If there are bare parameter packs in
1418         the conditional, set it to error_mark_node.
1419         (finish_expr_stmt): If there are bare parameter packs in the
1420         expression, set it to error_mark_node.
1421         (finish_for_expr): Ditto.
1422         (finish_switch_cond): If there are bare parameter packs in
1423         the conditional, set it to error_mark_node.
1424         (finish_mem_initializers): If there are bare parameter packs in
1425         the member initializer, set it to error_mark_node.
1426         (finish_member_declaration): Check the attributes of the
1427         declaration for bare parameter packs, and remove the attributes if
1428         any have bare parameter packs.
1429         * parser.c (cp_parser_using_declaration): Check the using
1430         declaration for bare parameter packs.
1431         (cp_parser_base_clause): If there are bare parameter packs in a
1432         base specifier, don't add it to the chain.
1433
1434 2008-01-15  Douglas Gregor  <doug.gregor@gmail.com>
1435
1436        PR c++/34314
1437        * error.c (dump_simple_decl): Display ellipsis for template
1438        non-type parameter packs.
1439        (dump_decl): Display ellipsis for template type parameter packs.
1440        (dump_template_decl): Display ellipsis for template template
1441        parameter packs.
1442        * pt.c (redeclare_class_template): When redeclaring a class
1443        template, check for collisions between template parameters and
1444        template parameter packs.
1445
1446 2008-01-15  Douglas Gregor  <doug.gregor@gmail.com>
1447
1448        PR c++/33964
1449        * pt.c (process_partial_specialization): Don't mark template
1450        parameters that occur in non-deduced contexts.
1451        (struct pair_fn_data): Add include_nondeduced_p.
1452        (for_each_template_parm_r): Only visit non-deduced contexts if
1453        include_nondeduced_p is set.
1454        (for_each_template_parm): Added parameter include_nondeduced_p,
1455        which states whether template parameters found in non-deduced
1456        contexts should be visited.
1457        (uses_template_parms): Visit all template parameters, even those
1458        in non-deduced contexts.
1459
1460 2008-01-15  Douglas Gregor  <doug.gregor@gmail.com>
1461
1462        PR c++/34052
1463        * pt.c (check_default_tmpl_args): Check for parameter packs that
1464        aren't at the end of a primary template.
1465        (push_template_decl_real): Remove check for parameter packs that
1466        aren't at the end of a primary template; that now happens in
1467        check_default_tmpl_args.
1468        * semantics.c (finish_template_template_parm): Use
1469        check_default_tmpl_args to check for errors in the template
1470        parameter list.
1471         
1472 2008-01-12  Doug Kwan  <dougkwan@google.com>
1473
1474         * decl.c: (grokdeclarator): Use OPT_Wignored_qualifiers
1475         instead of OPT_Wreturn_type in warning due to ignored return type
1476         qualifiers.
1477         * pt.c: (tsubst_function_type): Use OPT_Wignored_qualifiers
1478         instead of OPT_Wreturn_type in warning due to ignored return type
1479         qualifiers.
1480
1481 2008-01-08  Jakub Jelinek  <jakub@redhat.com>
1482
1483         PR c++/33890
1484         * semantics.c (finish_omp_for): Don't call
1485         fold_build_cleanup_point_expr if processing_template_decl.
1486
1487 2008-01-04  Paolo Carlini  <pcarlini@suse.de>
1488             Jakub Jelinek  <jakub@redhat.com>
1489
1490         PR c++/34611
1491         * error.c (dump_template_argument): Deal with TREE_LIST.
1492
1493 2008-01-01  Douglas Gregor  <doug.gregor@gmail.com>
1494
1495        * parser.c (cp_parser_check_decl_spec): Don't warn about "long
1496        long" in C++0x mode; change the warning to note that "long long"
1497        is only unsupported in C++98 mode.
1498
1499 2007-12-20  Jason Merrill  <jason@redhat.com>
1500
1501         PR c++/34111
1502         * call.c (standard_conversion): Derived-to-base is considered a
1503         standard conversion.
1504
1505 2007-12-19  Jakub Jelinek  <jakub@redhat.com>
1506
1507         PR c++/34513
1508         * parser.c (cp_parser_omp_parallel): For non-combined parallel
1509         call cp_parser_statement rather than
1510         cp_parser_already_scoped_statement.
1511
1512 2007-12-18  Jason Merrill  <jason@redhat.com>
1513
1514         PR c++/34206
1515         * pt.c (tsubst_aggr_type): Do nothing if the type already doesn't 
1516         use template parms.
1517         (dependent_type_p_r): Handle the domain of an array.
1518
1519 2007-12-18  Douglas Gregor  <doug.gregor@gmail.com>
1520             Jakub Jelinek  <jakub@redhat.com>
1521         
1522         PR c++/32565
1523         PR c++/33943
1524         PR c++/33965
1525         * pt.c (template_template_parm_bindings_ok_p): New; verifies
1526         bindings of template template parameters after all template
1527         arguments have been deduced.
1528         (coerce_template_parms): Don't complain when COMPLAIN doesn't
1529         include tf_error.
1530         (fn_type_unification): Use template_template_parm_bindings_ok_p. 
1531         (unify): Deal with variadic, bound template template parameters. 
1532         (get_class_bindings): Use template_template_parm_bindings_ok_p. 
1533
1534 2007-12-18  Jakub Jelinek  <jakub@redhat.com>
1535
1536         PR c++/34488
1537         * decl.c (grokdeclarator): Reject friend sfk_constructor
1538         FUNCTION_TYPE.
1539
1540 2007-12-17  Jakub Jelinek  <jakub@redhat.com>
1541
1542         PR c/34506
1543         * parser.c (cp_parser_omp_all_clauses): Accept optional comma
1544         in between clauses.
1545
1546 2007-12-15  Alexandre Oliva  <aoliva@redhat.com>
1547
1548         PR debug/7081
1549         * cp-lang.c (cp_classify_record): New.
1550         (LANG_HOOKS_CLASSIFY_RECORD): Override.
1551
1552 2007-12-11  Jakub Jelinek  <jakub@redhat.com>
1553
1554         PR c++/34238
1555         * decl2.c (cp_write_global_declarations): Revert 2007-11-22 change.
1556
1557         PR c++/34364
1558         * rtti.c (build_dynamic_cast): Call convert_from_reference even for
1559         dynamic_cast in a template.
1560
1561 2007-12-10  Simon Martin  <simartin@users.sourceforge.net>
1562
1563         PR c++/34059
1564         * typeck.c (build_class_member_access_expr): Compute MEMBER_SCOPE from
1565         MEMBER's BASELINK_ACCESS_BINFO instead of its BASELINK_BINFO.
1566
1567 2007-12-10  Jakub Jelinek  <jakub@redhat.com>
1568
1569         PR c++/34395
1570         * error.c (dump_type_prefix, dump_type_suffix): Handle
1571         TYPE_PACK_EXPANSION.
1572
1573         PR c++/34394
1574         * error.c (dump_expr): Handle ABS_EXPR.
1575
1576 2007-12-09  Jakub Jelinek  <jakub@redhat.com>
1577
1578         PR c++/34178
1579         PR c++/34340
1580         * repo.c (repo_emit_p): Return 2 for DECL_INTEGRAL_CONSTANT_VAR_P
1581         in class scope rather than DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P.
1582         Return 2 also if DECL_EXPLICIT_INSTANTIATION.
1583         * decl2.c (import_export_decl): Don't make VAR_DECLs import_p when
1584         flag_use_repository and repo_emit_p returned 2.
1585
1586 2007-12-06  Jakub Jelinek  <jakub@redhat.com>
1587
1588         PR c++/34336
1589         * tree.c (stabilize_call, stabilize_init): Do nothing if
1590         processing_template_decl.
1591
1592 2007-12-05  Jakub Jelinek  <jakub@redhat.com>
1593
1594         PR c++/34271
1595         * semantics.c (finish_decltype_type): For SCOPE_REF issue an
1596         error instead of assertion failure.
1597         * parser.c (cp_parser_decltype): If closing paren is not found,
1598         return error_mark_node.
1599
1600 2007-12-04  Douglas Gregor  <doug.gregor@gmail.com>
1601
1602        PR c++/34101
1603        * name-lookup.c (arg_assoc_template_arg): Recurse on argument
1604        packs.
1605        (arg_assoc_type): We don't need to handle TYPE_ARGUMENT_PACK here,
1606        since arg_assoc_template_arg will deal with them (better).
1607
1608 2007-12-04  Douglas Gregor  <doug.gregor@gmail.com>
1609
1610        PR c++/33509
1611        * pt.c (tsubst_exception_specification): Handle substitutions into
1612        member templates, where tsubst_pack_expansion returns a
1613        TYPE_PACK_EXPANSION.
1614
1615 2007-12-04  Douglas Gregor  <doug.gregor@gmail.com>
1616
1617        PR c++/33091
1618        * pt.c (unify_pack_expansion): If we didn't deduce any actual
1619        bindings for the template parameter pack, don't try to keep the
1620        empty deduced arguments.
1621        (unify): If a parameter is a template-id whose template argument
1622        list contains a pack expansion that is not at the end, then we
1623        cannot unify against that template-id.
1624
1625 2007-12-02  Paolo Carlini  <pcarlini@suse.de>
1626
1627         PR c++/34061
1628         * pt.c (current_template_args): Use error_operand_p.
1629
1630 2007-12-02  Paolo Carlini  <pcarlini@suse.de>
1631
1632         PR c++/34273
1633         * error.c (dump_decl): Handle TREE_BINFO.
1634
1635 2007-12-01  Ollie Wild  <aaw@google.com>
1636
1637         PR c++/8171
1638         * typeck.c (build_binary_op): Add conversion of pointers to function
1639         members appearing as operands to the equality operators.
1640
1641 2007-11-30  Jakub Jelinek  <jakub@redhat.com>
1642
1643         PR c++/34275
1644         * error.c (dump_expr): Handle OBJ_TYPE_REF.
1645
1646 2007-11-29  Jakub Jelinek  <jakub@redhat.com>
1647
1648         PR c++/34270
1649         * tree.c (lvalue_p_1) <case COND_EXPR>: Handle x ?: y
1650         in templates.
1651         * typeck.c (is_bitfield_expr_with_lowered_type) <case COND_EXPR>:
1652         Likewise.
1653
1654         PR c++/34267
1655         PR c++/34268
1656         * parser.c (cp_parser_decltype): Don't call finish_id_expression
1657         on ~type.
1658         * semantics.c (finish_decltype_type): Issue error on types, TYPE_DECLs
1659         and ~type early.
1660
1661 2007-11-27  Jakub Jelinek  <jakub@redhat.com>
1662
1663         PR tree-optimization/34181
1664         * method.c (use_thunk): Don't inline the call in the thunk.
1665
1666         PR c++/34213
1667         * tree.c (decl_linkage): Static data members and static member
1668         functions in anonymous ns classes are lk_external.
1669
1670 2007-11-26  Andreas Krebbel  <krebbel1@de.ibm.com>
1671
1672         PR c++/34081
1673         * decl.c (start_preparsed_function): Pass 
1674         processing_template_decl for the new allocate_struct_function
1675         parameter.
1676
1677 2007-11-25  Richard Guenther  <rguenther@suse.de>
1678
1679         * decl.c (poplevel): Use BLOCK_CHAIN.
1680
1681 2007-11-24  Ollie Wild  <aaw@google.com>
1682
1683         * typeck.c (delta_from_ptrmemfunc): New function.
1684         (get_member_function_from_ptrfunc): Call delta_from_ptrmemfunc.
1685         (build_binary_op): Call delta_from_ptrmemfunc.
1686
1687 2007-11-23  Jakub Jelinek  <jakub@redhat.com>
1688
1689         PR c++/30293
1690         PR c++/30294
1691         * decl.c (cp_finish_decl): Disallow variable or field
1692         definitions if extern "Java" aggregates.
1693         (grokparms): Disallow parameters with extern "Java"
1694         aggregates.
1695         (check_function_type): Disallow function return values
1696         with extern "Java" aggregates.
1697         * init.c (build_new_1): Disallow placement new with
1698         extern "Java" aggregates.
1699
1700 2007-11-23  Mark Mitchell  <mark@codesourcery.com>
1701             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1702         
1703         PR c++/5310
1704         * call.c (convert_like_real): Build a zero constant when __null is
1705         converted to an integer type.
1706         
1707 2007-11-22  Jakub Jelinek  <jakub@redhat.com>
1708
1709         PR c++/34094
1710         * decl2.c (cp_write_global_declarations): Issue error about static
1711         data members in anonymous namespace which are declared and used,
1712         but not defined.
1713
1714 2007-11-20  Jakub Jelinek  <jakub@redhat.com>
1715
1716         PR c++/34089
1717         * parser.c (cp_parser_class_head): Reject function template ids.
1718
1719         PR c++/28879
1720         * tree.c (build_cplus_array_type_1): Don't pass any VLA types
1721         when processing_template_decl to build_array_type.
1722
1723         PR c++/33962
1724         * pt.c (more_specialized_fn): Don't segfault if one or
1725         both argument list end with ellipsis.
1726
1727 2007-11-18  Jakub Jelinek  <jakub@redhat.com>
1728
1729         PR c++/30988
1730         * semantics.c (finish_call_expr): Set
1731         current_function_returns_abnormally if fn is noreturn FUNCTION_DECL
1732         or OVERLOAD with all noreturn functions.
1733
1734 2007-11-16  Jakub Jelinek  <jakub@redhat.com>
1735
1736         PR c++/34100
1737         * pt.c (apply_late_template_attributes): Do nothing if decl's type is
1738         error_mark_node.
1739
1740 2007-11-13  Jakub Jelinek  <jakub@redhat.com>
1741
1742         PR c++/34054
1743         PR c++/34056
1744         PR c++/34057
1745         PR c++/34058
1746         PR c++/34060
1747         * pt.c (find_parameter_packs_r): If ppd->set_packs_to_error,
1748         set to error_mark_node the outermost POINTER_TYPE to the pack if
1749         it is seen in a POINTER_TYPE.
1750         (push_template_decl_real): If check_for_bare_parameter_packs
1751         fails for function return type, set the return type to
1752         integer_type_node.  If check_for_bare_parameter_packs failed
1753         for non-function, return error_mark_node.
1754
1755         PR c++/29225
1756         * call.c (build_new_op): Call resolve_args before calling
1757         build_over_call.
1758
1759 2007-11-11  Tom Tromey  <tromey@redhat.com>
1760
1761         PR c++/17577:
1762         * lex.c (handle_pragma_implementation): Use cpp_included_before.
1763
1764 2007-11-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1765
1766         PR c++/8570
1767         * pt.c (redeclare_class_template): Update error message. Use a
1768         note to show the previous declaration.
1769         (tsubst_friend_class): Use the location of the friend template as
1770         the input location before calling redeclare_class_template.
1771
1772 2007-11-11  Jakub Jelinek  <jakub@redhat.com>
1773
1774         PR c++/34068
1775         * semantics.c (finish_pseudo_destructor_expr): Handle
1776         object == error_mark_node.
1777
1778 2007-11-10  Jakub Jelinek  <jakub@redhat.com>
1779
1780         PR c++/32241
1781         * pt.c (tsubst_copy_and_build) <case COMPONENT_REF>: If object_type
1782         is not scalar type, let finish_class_member_access_expr handle
1783         diagnostics.  Pass BIT_NOT_EXPR argument to
1784         finish_pseudo_destructor_expr.  Handle SCOPE_REF properly.
1785
1786 2007-11-09  Douglas Gregor  <doug.gregor@gmail.com>
1787
1788         PR c++/33510
1789         * decl.c (cp_complete_array_type): If any of the initializer
1790         elements are pack expansions, don't compute the array size yet.
1791
1792 2007-11-08  Andrew Pinski  <pinskia@gmail.com>
1793
1794         PR c++/30297:
1795         * tree.c (decl_linkage): Fields have no linkage.
1796
1797 2007-11-08  Daniel Jacobowitz  <dan@codesourcery.com>
1798
1799         * class.c (build_ctor_vtbl_group): Lay out the new type and decl.
1800
1801 2007-11-07  Douglas Gregor  <doug.gregor@gmail.com>
1802
1803         PR c++/33045
1804         PR c++/33837
1805         PR c++/33838
1806         * semantics.c (finish_decltype_type): See through INDIRECT_REFs.
1807         Be careful with ERROR_MARK_NODEs.
1808         * parser.c (cp_parser_check_access_in_redeclaration): Handle NULL
1809         argument.
1810
1811 2007-11-07  Jakub Jelinek  <jakub@redhat.com>
1812
1813         PR c++/33501
1814         * call.c (build_over_call): Don't check TREE_ADDRESSABLE
1815         on incomplete type.
1816
1817 2007-11-06  Douglas Gregor  <doug.gregor@gmail.com>
1818
1819         PR c++/33977
1820         PR c++/33886
1821         * tree.c (c_build_qualified_type): Define bridge to
1822         cp_build_qualified_type.
1823
1824 2007-11-06  Douglas Gregor  <doug.gregor@gmail.com>
1825
1826         PR c++/31439
1827         PR c++/32114
1828         PR c++/32115
1829         PR c++/32125
1830         PR c++/32126
1831         PR c++/32127
1832         PR c++/32128
1833         PR c++/32253
1834         PR c++/32566
1835         * typeck.c (check_return_expr): Pass address of retval to
1836         check_for_bare_parameter_packs.
1837         * class.c (build_base_field): Tolerate bases that have no layout
1838         due to errors.
1839         (end_of_base): Ditto.
1840         * tree.c (canonical_type_variant): Be careful with
1841         ERROR_MARK_NODE.
1842         * cp-tree.h (check_for_bare_parameter_packs): Now accepts a
1843         tree*.
1844         * pt.c (find_parameter_pack_data): Add set_packs_to_error field,
1845         which states whether parameter packs should be replaced with
1846         ERROR_MARK_NODE.
1847         (find_parameter_packs_r): Pass addresses to cp_walk_tree wherever
1848         possible. If set_packs_to_error is set true, replace the parameter
1849         pack with ERROR_MARK_NODE. Manage our own pointer sets.
1850         (uses_parameter_packs): Don't set parameter packs to
1851         ERROR_MARK_NODE.
1852         (check_for_bare_parameter_packs): Now takes a pointer to a tree,
1853         which may be modified (if it is a parameter pack). Instructs
1854         find_parameter_packs_r to replace parameter packs with
1855         ERROR_MARK_NODE (so that they won't cause errors later on).
1856         (process_template_parm): Pass pointer to
1857         check_for_bare_parameter_packs.
1858         (process_partial_specialization): Replace pack expansions before
1859         the end of the template argument list with ERROR_MARK_NODE.
1860         (push_template_decl_real): Pass pointer to
1861         check_for_bare_parameter_packs. Replace parameter packs not at the
1862         end of the template parameter list with ERROR_MARK_NODE.
1863         (convert_template_argument): Be more careful about using DECL_NAME
1864         on only declarations.
1865         (unify): Can't unify against ERROR_MARK_NODE.
1866         * semantics.c (finish_cond): Pass pointer to
1867         check_for_bare_parameter_packs.
1868         (finish_expr_stmt): Ditto.
1869         (finish_for_expr): Ditto.
1870         (finish_switch_cond): Pass pointer to
1871         check_for_bare_parameter_packs, and call it before we put the
1872         condition into the statement.
1873         (finish_mem_initializers): Pass pointer to
1874         check_for_bare_parameter_packs.
1875         (finish_member_declaration): Ditto.
1876         * parser.c (cp_parser_base_clause): Ditto.
1877         
1878 2007-11-06  Jakub Jelinek  <jakub@redhat.com>
1879
1880         PR target/33168
1881         * decl.c (cp_finish_decl): Call make_rtl_for_nonlocal_decl already
1882         with the final TREE_READONLY flag in place.  processing_template_decl
1883         is known to be 0 in this part of function.
1884
1885         PR c++/33894
1886         * cp-tree.h: Update comment - TYPE_LANG_FLAG_0 is not
1887         OMP_ATOMIC_DEPENDENT_P in OMP_ATOMIC.
1888         * pt.c (tsubst_expr): Assert OMP_ATOMIC_DEPENDENT_P.
1889         * semantics.c (finish_omp_atomic): Revert most of the
1890         2007-02-05 changes, just keep the new representation of
1891         OMP_ATOMIC_DEPENDENT_P OMP_ATOMIC.
1892
1893 2007-11-05  H.J. Lu  <hongjiu.lu@intel.com>
1894
1895         PR c++/33871
1896         * decl2.c (constrain_visibility): Clear DECL_ONE_ONLY if marked
1897         local.
1898
1899 2007-11-05  Douglas Gregor  <doug.gregor@gmail.com>
1900
1901         PR c++/33996
1902         PR c++/33235
1903         PR c++/33930
1904         * typeck.c (merge_types): Don't lose rvalue references when
1905         merging types.
1906         * call.c (build_over_call): Don't elide move constructors just
1907         because the copy constructor is trivial (!).
1908         (compare_ics): If comparing cv-qualifiers fails, we can still order
1909         based on binding lvalues vs. rvalues.
1910
1911 2007-11-05  Douglas Gregor  <doug.gregor@gmail.com>
1912
1913         PR c++/33939
1914         * pt.c (unify_pack_expansion): bring handling of function call
1915         arguments into line with type_unification_real. 
1916
1917 2007-11-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1918
1919         * typeck.c (build_binary_op): Use pedwarn instead of error for
1920         consistency.
1921
1922 2007-11-05  Jakub Jelinek  <jakub@redhat.com>
1923
1924         PR c++/33836
1925         * parser.c (cp_parser_unary_expression): For &&label call
1926         cp_parser_non_integral_constant_expression and return error_mark_node
1927         if it returned true.
1928
1929         PR c++/33969
1930         * decl.c (grokdeclarator): Don't call build_memfn_type if type
1931         is neither FUNCTION_TYPE nor METHOD_TYPE.
1932
1933 2007-11-02  Jakub Jelinek  <jakub@redhat.com>
1934
1935         PR c++/33516
1936         * parser.c (cp_parser_nested_name_specifier_opt): Use
1937         TYPE_MAIN_VARIANT (new_scope) as scope if new_scope is an incomplete
1938         typedef of currently open class.
1939
1940 2007-11-02  Paolo Carlini  <pcarlini@suse.de>
1941
1942         PR c++/33495
1943         * error.c (dump_expr): Deal specially with statements.
1944
1945 2007-11-01  Jason Merrill  <jason@redhat.com>
1946
1947         PR c++/30897
1948         * pt.c (push_template_decl_real): Set DECL_CONTEXT on template
1949         template parms.
1950         (lookup_template_class): Use it to get the outer template args
1951         for instantiating one.
1952
1953         PR c++/29236
1954         * pt.c (reduce_template_parm_level): tsubst the parameters
1955         of a template template parm.
1956
1957 2007-11-01  Douglas Gregor  <doug.gregor@gmail.com>
1958
1959         PR c++/33955
1960         * pt.c (find_parameter_packs_r): Handle TYPENAME_TYPE.
1961
1962 2007-11-01  Jakub Jelinek  <jakub@redhat.com>
1963
1964         PR c++/32384
1965         * parser.c (cp_parser_postfix_dot_deref_expression): If
1966         POSTFIX_EXPRESSION is type dependent, try to parse it as pseudo dtor
1967         first and if that succeeds and type is SCALAR_TYPE_P, create
1968         PSEUDO_DTOR_EXPR.
1969
1970         PR c++/32260
1971         * rtti.c (enum_tinfo_kind): Fix TK_TYPE_INFO_TYPE comment.
1972         (typeid_ok_p): Use the same alias set for abi::__type_info_pseudo
1973         as for std::type_info.
1974
1975 2007-10-31  Paolo Carlini  <pcarlini@suse.de>
1976
1977         PR c++/33494
1978         * cxx-pretty-print.c (pp_cxx_typeid_expression,
1979         pp_cxx_delete_expression): Change to static linkage.
1980         * cxx-pretty-print.h: Adjust declarations.
1981         * error.c (dump_expr, case EXPR_PACK_EXPANSION, TYPEID_EXPR,
1982         MEMBER_REF, DOTSTAR_EXPR, DELETE_EXPR, VEC_DELETE_EXPR,
1983         MODOP_EXPR): Forward to pp_expression.
1984
1985         * cxx-pretty-print.c (pp_cxx_expression, case NON_DEPENDENT_EXPR):
1986         Fix typo.
1987
1988 2007-10-31 Christian Bruel  <christian.bruel@st.com>
1989            Mark Mitchell  <mark@codesourcery.com>
1990
1991         PR c++/19531
1992         * typeck.c (check_return_expr): Don't set named_return_value_okay_p
1993         if retval is volatile. 
1994         
1995 2007-10-30  Jakub Jelinek  <jakub@redhat.com>
1996
1997         PR c++/33616
1998         * decl2.c (build_offset_ref_call_from_tree): Call
1999         build_non_dependent_expr on object prior to building ADDR_EXPR from it
2000         if FN is DOTSTAR_EXPR.
2001
2002 2007-10-30  Douglas Gregor  <doug.gregor@gmail.com>
2003
2004         PR c++/31993
2005         PR c++/32252
2006         * pt.c (find_parameter_packs_r): Fix typo in comment.
2007         (convert_template_argument): Look at the pattern of a pack
2008         expansion to determine what kind of entity we're converting.
2009         (coerce_template_parameter_pack): When we have coerced a non-type
2010         template parameter pack, substitute into the type of that pack.
2011         (tsubst_pack_expansion): When our substitution of a parameter pack
2012         is a "trivial" substitution of itself, just substitute into the
2013         pack expansion rather than actually expanding.
2014
2015 2007-10-29  Jakub Jelinek  <jakub@redhat.com>
2016
2017         PR c++/33841
2018         * class.c (check_bitfield_decl): Don't set field's type to error_mark_node
2019         for non-integral type bitfields.  Return true if bitfield is correct, false
2020         error has been diagnosed.
2021         (check_field_decls): If check_bitfield_decl returned false, call also
2022         check_field_decl.
2023
2024 2007-10-28  Paolo Carlini  <pcarlini@suse.de>
2025             Mark Mitchell  <mark@codesourcery.com>
2026
2027         PR c++/30659
2028         * pt.c (do_decl_instantiation): If the VAR_DECL is not a
2029         class member error out and return.
2030
2031 2007-10-27  Jakub Jelinek  <jakub@redhat.com>
2032
2033         * error.c (reinit_cxx_pp): Initialize cxx_pp->enclosing_scope
2034         to current_function_decl rather than 0.
2035
2036         PR c++/33844
2037         * cxx-pretty-print.c (pp_cxx_pm_expression) <case MEMBER_REF>: Print
2038         ->* rather than .*.
2039         * error.c (dump_expr): Handle MEMBER_REF and DOTSTAR_EXPR.
2040
2041 2007-10-27  Jason Merrill  <jason@redhat.com>
2042
2043         PR c++/5247
2044         * call.c (convert_default_arg): Detect recursion.
2045
2046 2007-10-27  Jakub Jelinek  <jakub@redhat.com>
2047
2048         PR c++/33842
2049         * cxx-pretty-print.h (pp_cxx_offsetof_expression): New prototype.
2050         * cxx-pretty-print.c (pp_cxx_primary_expression): Handle
2051         OFFSETOF_EXPR.
2052         (pp_cxx_offsetof_expression_1, pp_cxx_offsetof_expression): New
2053         functions.
2054         * error.c (dump_expr): Handle OFFSETOF_EXPR.
2055
2056 2007-10-26  Jason Merrill  <jason@redhat.com>
2057
2058         PR c++/24791
2059         * pt.c (get_template_info): New fn.
2060         (template_class_depth): Use it.
2061         (push_template_decl_real): Check that the template args of the 
2062         definition match the args of the previous declaration.
2063
2064 2007-10-26  Paolo Carlini  <pcarlini@suse.de>
2065
2066         PR c++/31988
2067         * decl2.c (coerce_new_type): Do not allow a default argument for
2068         the first parameter.
2069
2070 2007-10-26  Douglas Gregor  <doug.gregor@gmail.com>
2071
2072         PR c++/33839
2073         * parser.c (cp_parser_decltype): Return ERROR_MARK_NODE if we
2074         don't see the leading '('. Only lookup names if we get an
2075         IDENTIFIER_NODE.
2076
2077 2007-10-26  Jakub Jelinek  <jakub@redhat.com>
2078
2079         PR c++/33744
2080         * parser.c (cp_parser_parenthesized_expression_list): Set
2081         greater_than_is_operator_p to true in between the parens.
2082
2083 2007-10-26  Paolo Carlini  <pcarlini@suse.de>
2084
2085         PR c++/31747
2086         * decl.c (grokdeclarator): In case of conflicting specifiers
2087         just return error_mark_node.
2088
2089 2007-10-26  Ollie Wild  <aaw@google.com>
2090
2091         * expr.c (cxx_expand_expr): Removed.
2092         * cp-tree.h (exx_expand_expr): Removed.
2093         * cp-objcp-common.h (LANK_HOOKS_EXPAND_EXPR): Replace cxx_expand_expr
2094         with c_expand_expr.
2095
2096 2007-10-25  Paolo Carlini  <pcarlini@suse.de>
2097
2098         PR c++/33843
2099         * cxx-pretty-print.c (pp_cxx_unqualified_id): Deal with BIT_NOT_EXPR.
2100
2101 2007-10-23  Jason Merrill  <jason@redhat.com>
2102
2103         PR c++/25950 (DR 391)
2104         * call.c (struct conversion): Remove check_copy_constructor_p.
2105         (reference_binding): Always bind a reference directly to a 
2106         compatible class rvalue.  Pass down LOOKUP_NO_TEMP_BIND during 
2107         temporary creation.
2108         (check_constructor_callable): Remove.
2109         (convert_like_real): Don't call it.
2110         (initialize_reference): Don't call check_constructor_callable.
2111         (standard_conversion): Check LOOKUP_NO_CONVERSION instead of
2112         LOOKUP_CONSTRUCTOR_CALLABLE.  Don't require a temporary for base
2113         conversions if LOOKUP_NO_TEMP_BIND.
2114         (implicit_conversion): Pass through LOOKUP_NO_TEMP_BIND.
2115         (build_user_type_conversion_1): Pass through LOOKUP_NO_TEMP_BIND for
2116         second conversion.
2117         * cp-tree.h (LOOKUP_CONSTRUCTOR_CALLABLE): Remove.
2118
2119 2007-10-22  Jakub Jelinek  <jakub@redhat.com>
2120
2121         PR c++/33372
2122         * semantics.c (finish_omp_clauses): Check !type_dependent_expression_p
2123         before checking if its type is integral.
2124
2125 2007-10-22  Jason Merrill  <jason@redhat.com>
2126
2127         PR c++/33620
2128         * class.c (finish_struct_bits): Copy TYPE_ATTRIBUTES.
2129         * pt.c (apply_late_template_attributes): Splice out dependent
2130         attributes from DECL_ATTRIBUTES.
2131
2132         * decl.c (cxx_maybe_build_cleanup): Use build_address.
2133
2134 2007-10-17  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2135
2136         * typeck.c (build_binary_op) : Use appropriate warning option
2137         instead of unnamed warning.
2138
2139 2007-10-16  Paolo Carlini  <pcarlini@suse.de>
2140
2141         PR c++/31446
2142         * pt.c (current_template_args): Do not change TREE_LIST elements
2143         with a TREE_VALUE of error_mark_node.
2144
2145 2007-10-16  Mark Mitchell  <mark@codesourcery.com>
2146
2147         * typeck.c (cp_apply_type_quals_to_decl): Expand documentation.
2148         * decl.c (start_decl): Tidy.
2149         (start_decl_1): Call cp_apply_type_quals_to_decl after completing
2150         the type.
2151         (grokdeclarator): Clarify comment.
2152
2153 2007-10-14  Andrew Pinski  <pinskia@gmail.com>
2154
2155         PR c++/30303
2156         * decl.c (grokfndecl): Return NULL after the "definition of
2157         implicitly-declared" error happened.
2158
2159 2007-10-12  Simon Martin  <simartin@users.sourceforge.net>
2160
2161         PR c++/26698
2162         * call.c (build_user_type_conversion_1): Do not consider conversion
2163         functions to convert a (possibly cv-qualified) object to the (possibly
2164         cv-qualified) same object type (or a reference to it), to a (possibly
2165         cv-qualified) base class of that type (or a reference to it).
2166
2167 2007-10-12  Paolo Carlini  <pcarlini@suse.de>
2168
2169         * pt.c (tsubst): Use template_parm_level_and_index.
2170
2171 2007-10-12  Jakub Jelinek  <jakub@redhat.com>
2172
2173         PR c++/32121
2174         * parser.c (cp_parser_compound_statement): Handle label-declarations
2175         at the beginning of the compound statement.
2176         (cp_parser_block_declaration): Issue diagnostics about __label__
2177         not at the beginning of a block.
2178
2179 2007-10-11  Paolo Carlini  <pcarlini@suse.de>
2180
2181         PR c++/33461
2182         * pt.c (coerce_template_parameter_pack): Do not pass error_mark_node
2183         to convert_template_argument.
2184         (coerce_template_parms): Return error_mark_node after fixed-length
2185         error.
2186         (tsubst_decl): Check for error_mark_node the return value of the
2187         first tsubst in 'case VAR_DECL'.
2188
2189 2007-10-08  Ollie Wild  <aaw@google.com>
2190
2191         * typeck2.c (digest_init): Call cplus_expand_constant after
2192         convert_for_initialization.
2193         * cp-objcp-common.h (LANG_HOOKS_EXPAND_CONSTANT): Removed.
2194         * expr.c (cplus_expand_constant): Updated function description.
2195
2196 2007-10-04  Jason Merrill  <jason@redhat.com>
2197
2198         PR c++/20416
2199         * call.c (initialize_reference): Handle local static reference
2200         temps properly.
2201
2202 2007-10-03  Jason Merrill  <jason@redhat.com>
2203
2204         PR c++/32470
2205         * name-lookup.c (push_namespace_with_attrs): Fold back into...
2206         (push_namespace): Here.
2207         (handle_namespace_attrs): New fn for the attr code.
2208         (leave_scope): Don't pop_visibility.
2209         * name-lookup.h (struct cp_binding_level): Remove has_visibility.
2210         * parser.c (cp_parser_namespace_definition): Call
2211         handle_namespace_attrs and pop_visibility as appropriate. 
2212
2213         PR c++/11756
2214         * mangle.c (write_type) [TYPEOF_TYPE]: Just sorry.
2215
2216 2007-10-03  Alexandre Oliva  <aoliva@redhat.com>
2217
2218         * decl.c (duplicate_decls): Preserve linkage flags for mere
2219         redeclarations of gnu_inline definitions.
2220
2221 2007-10-03  Jason Merrill  <jason@redhat.com>
2222
2223         PR c++/15764
2224         * decl.c (wrap_cleanups_r): New fn.
2225         (wrap_temporary_cleanups): New fn.
2226         (initialize_local_var): Call it.
2227
2228 2007-09-29  Jason Merrill  <jason@redhat.com>
2229
2230         PR c++/33094
2231         * decl.c (make_rtl_for_nonlocal_decl): It's ok for a member 
2232         constant to not have DECL_EXTERNAL if it's file-local.
2233
2234 2007-09-28  Ollie Wild  <aaw@google.com>
2235
2236         Revert
2237         2007-09-27  Ollie Wild  <aaw@google.com>
2238
2239         * typeck2.c (digest_init): Call cplus_expand_constant after
2240         convert_for_initialization.
2241         * cp-objcp-common.h (LANG_HOOKS_EXPAND_CONSTANT): Removed.
2242         * expr.c (cplus_expand_constant): Updated function description.
2243
2244 2007-09-28  Jason Merrill  <jason@redhat.com>
2245
2246         PR c++/10179
2247         * class.c (layout_empty_base): Take rli parameter, update
2248         rli->record_align if empty base has user-specified alignment.
2249         (build_base_field): Pass rli to it.
2250
2251 2007-09-28  Paolo Carlini  <pcarlini@suse.de>
2252
2253         PR c++/33213
2254         * error.c (dump_decl): Deal with TYPE_PACK_EXPANSION.
2255
2256 2007-09-28  Paolo Carlini  <pcarlini@suse.de>
2257
2258         PR c++/33118
2259         * error.c (dump_expr): Deal with ARGUMENT_PACK_SELECT.
2260         (dump_type): Use dump_template_argument for TYPE_ARGUMENT_PACK.
2261         (dump_parameters): Just call dump_type for argument packs too.
2262
2263 2007-09-28  Jakub Jelinek  <jakub@redhat.com>
2264
2265         PR c++/31434
2266         * tree.c (cp_build_qualified_type_real): Handle TYPE_PACK_EXPANSION
2267         qualification by creating qualified PACK_EXPANSION_PATTERN and
2268         then calling make_pack_expansion on it.
2269
2270 2007-09-27  Ollie Wild  <aaw@google.com>
2271
2272         * typeck2.c (digest_init): Call cplus_expand_constant after
2273         convert_for_initialization.
2274         * cp-objcp-common.h (LANG_HOOKS_EXPAND_CONSTANT): Removed.
2275         * expr.c (cplus_expand_constant): Updated function description.
2276
2277 2007-09-27  Jason Merrill  <jason@redhat.com>
2278
2279         PR c++/33571
2280         * decl2.c (is_late_template_attribute): Don't crash on unknown
2281         attribute.
2282
2283 2007-09-27  Paolo Carlini  <pcarlini@suse.de>
2284
2285         PR c++/33493
2286         * error.c (dump_expr): Deal with DELETE_EXPR and VEC_DELETE_EXPR.
2287         * cxx-pretty-print.c (pp_cxx_delete_expression): Add missing
2288         spaces in the formatting.
2289         * cxx-pretty-print.h (pp_cxx_delete_expression): Declare.
2290
2291 2007-09-27  Jakub Jelinek  <jakub@redhat.com>
2292
2293         * error.c (cxx_print_error_function): Add third argument, pass
2294         it over to lhd_print_error_function.
2295         (cp_print_error_function): If diagnostic->abstract_origin, print
2296         virtual backtrace.
2297         * cp-tree.h (struct diagnostic_info): New forward decl.
2298         (cxx_print_error_function): Add third argument.
2299
2300 2007-09-25  Simon Martin  <simartin@users.sourceforge.net>
2301
2302         PR c++/33207
2303         * name-lookup.c (pushtag): Do not create an implicit typedef before
2304         the associated type declaration is known to be valid.
2305
2306 2007-09-25  Jakub Jelinek  <jakub@redhat.com>
2307
2308         * tree.c (cxx_printable_name): Compare FUNCTION_DECL uids
2309         rather than pointers.
2310
2311 2007-09-24  Danny Smith  <dannysmith@user.sourceforge.net>
2312
2313         PR c++/14688
2314         * search.c (check_final_overrider): Fail if
2315         targetm.comp_type_attributes returns 0.
2316
2317 2007-09-24  Jason Merrill  <jason@redhat.com>
2318
2319         PR c++/33239
2320         * pt.c (resolve_typename_type): Don't look things up in the original
2321         template if it would mean losing template arguments.    
2322
2323 2007-09-24  Jakub Jelinek  <jakub@redhat.com>
2324
2325         PR c++/33506
2326         * cp-tree.h (cxx_type_hash_eq): New prototype.
2327         * cp-objcp-common.h (LANG_HOOKS_TYPE_HASH_EQ): Redefine.
2328         * tree.c (cxx_type_hash_eq): New function.
2329
2330 2007-09-24  Douglas Gregor  <doug.gregor@gmail.com>
2331
2332         PR c++/33185    
2333         * tree.c (cp_build_qualified_type_real): Build a canonical
2334         ARRAY_TYPE if the original ARRAY_TYPE was not a canonical type.
2335         
2336 2007-09-24  Douglas Gregor  <doug.gregor@gmail.com>
2337
2338         PR c++/33112
2339         PR c++/33185    
2340         * tree.c (cplus_array_compare): Compare pointers, not types.
2341         (build_cplus_array_type_1): Store new array type into the hash
2342         table before building the canonical type; build the canonical type
2343         correctly.
2344         (cp_build_qualified_type_real): Put all of the array types with
2345         cv-qualified element types into the C++ array hash table, built as 
2346         variants of the unqualified versions.
2347         
2348 2007-09-23  Jason Merrill  <jason@redhat.com>
2349
2350         PR c++/16370
2351         * decl.c (grokdeclarator): Look through implicit TYPE_DECLs
2352         for deprecation warnings.
2353
2354 2007-09-22  Jason Merrill  <jason@redhat.com>
2355
2356         PR c++/15269
2357         * call.c (build_over_call): Warn about deprecated virtuals.
2358
2359         PR c++/19407
2360         * cp-tree.h (ATTR_IS_DEPENDENT): New macro.
2361         (MAYBE_TAGGED_TYPE_P): Remove.
2362         * pt.c (apply_late_template_attributes): Check ATTR_IS_DEPENDENT
2363         instead of calling is_late_template_attribute again.
2364         (tsubst_decl) [TYPE_DECL]: Just check if the name is the tag.
2365         (tsubst): A typedef is a TYPE_NAME != TYPE_MAIN_DECL.
2366         Don't crash on typedefs from non-template classes.
2367         * decl2.c (grokfield): Don't sorry about attrs on template parms.
2368         (is_late_template_attribute): All attributes applied to template
2369         parms or typename types are dependent.  Static.
2370         (splice_template_attributes): Pass decl through.
2371         (save_template_attributes): Likewise.
2372
2373 2007-09-20  Jakub Jelinek  <jakub@redhat.com>
2374
2375         PR c++/33496
2376         * pt.c (tsubst_copy) <case SIZEOF_EXPR>: Handle error_mark_node
2377         returned from tsubst_pack_expansion.
2378         (tsubst_copy_and_build) <case SIZEOF_EXPR>: Likewise.
2379         (tsubst_copy_and_build) <case CONSTRUCTOR>: Likewise.
2380
2381 2007-09-20  Paolo Carlini  <pcarlini@suse.de>
2382
2383         PR c++/33460
2384         * semantics.c (finish_id_expression): Use consistently
2385         context_for_name_lookup.
2386         * decl.c (fixup_anonymous_aggr): Fix error message for
2387         anonymous struct (vs union).
2388
2389 2007-09-19  Jason Merrill  <jason@redhat.com>
2390
2391         PR c++/7586
2392         * pt.c (tsubst): Handle typedefs by looking for the specialization.
2393         (retrieve_specialization): Only tagged types use 
2394         DECL_TEMPLATE_INSTANTIATIONS.
2395         (instantiate_class_template): Push nested classes too.
2396         (tsubst_decl) [TYPE_DECL]: Only check for canonical decl for
2397         tagged types.
2398         * cp-tree.h (MAYBE_TAGGED_TYPE_P): New macro.
2399         * init.c (is_aggr_type): Remove redundant tests.
2400         * class.c (push_nested_class): Use CLASS_TYPE_P.
2401
2402 2007-09-20  Paolo Carlini  <pcarlini@suse.de>
2403
2404         PR c++/33459
2405         * init.c (build_zero_init): If, recursively, build_zero_init
2406         returns a NULL_TREE, do not append it to the VEC of constructors.
2407
2408 2007-09-18  Jason Merrill  <jason@redhat.com>
2409
2410         PR c++/17743
2411         * pt.c (apply_late_template_attributes): Set processing_template_decl.
2412         (tsubst_decl) [TYPE_DECL]: Preserve naming typedef, pass
2413         ATTR_FLAG_TYPE_IN_PLACE.
2414         (tsubst): Do unqualified lookup to find typedefs from current class.
2415         [ARRAY_TYPE]: Propagate alignment info.
2416         * decl2.c (is_late_template_attribute): Only defer handling of
2417         attribute aligned if the expression is dependent.
2418         (save_template_attributes): If we're deferring any attributes,
2419         make this a naming typedef.
2420
2421 2007-09-18  Paolo Carlini  <pcarlini@suse.de>
2422
2423         PR c++/33462 (again)
2424         * cxx-pretty-print.c (pp_cxx_va_arg_expression): Print
2425         va_arg instead of __builtin_va_arg.
2426
2427 2007-09-18  Paolo Carlini  <pcarlini@suse.de>
2428
2429         PR c++/33462
2430         * cxx-pretty-print.c (pp_cxx_va_arg_expression): Add.
2431         (pp_cxx_primary_expression): Use it.
2432         * cxx-pretty-print.h (pp_cxx_va_arg_expression): Declare.
2433         * error.c (dump_expr): Use it.
2434
2435 2007-09-18  Paolo Carlini  <pcarlini@suse.de>
2436
2437         PR c++/33463
2438         * cxx-pretty-print.c (pp_cxx_postfix_expression): Split
2439         out case TYPEID_EXPR to...
2440         (pp_cxx_typeid_expression): ... here; use pp_cxx_left_paren
2441         and pp_cxx_right_paren.
2442         * cxx-pretty-print.h (pp_cxx_typeid_expression): Declare.
2443         * error.c (dump_expr): Use it.
2444
2445 2007-09-18  Paolo Carlini  <pcarlini@suse.de>
2446
2447         PR c++/33464
2448         * cxx-pretty-print.c (pp_cxx_trait_expression): Add.
2449         (pp_cxx_primary_expression): Use it.
2450         * cxx-pretty-print.h (pp_cxx_trait_expression): Declare.
2451         * error.c (dump_expr): Use it.
2452
2453 2007-09-16  Paolo Carlini  <pcarlini@suse.de>
2454
2455         PR c++/33124
2456         * init.c (build_new): Remove warning for zero-element
2457         allocations.
2458
2459 2007-09-16  Nathan Sidwell  <nathan@codesourcery.com>
2460
2461         PR c++/32756
2462         * call.c (maybe_handle_implicit_object): Set this_p, clear
2463         rvaluedness_matches_p.
2464         (compare_ics): Do not compare rvaluedness matching when one of the
2465         operands is an implicit object.
2466
2467 2007-09-14  Jason Merrill  <jason@redhat.com>
2468
2469         PR c++/17743, c++/19163
2470         * decl2.c (is_late_template_attribute): New fn.
2471         (splice_template_attributes, save_template_attributes): New fns.
2472         (cplus_decl_attributes): Call save_template_attributes.
2473         * pt.c (apply_late_template_attributes): New fn.
2474         (instantiate_class_template, tsubst_decl): Use it.
2475         * cp-tree.h: Declare is_late_template_attribute.
2476
2477 2007-09-13  Tom Tromey  <tromey@redhat.com>
2478
2479         * parser.c (cp_lexer_new_main): Don't use
2480         c_lex_return_raw_strings.
2481         (cp_lexer_get_preprocessor_token): Update.  Add special case when
2482         lexer is NULL.
2483
2484 2007-09-11  Jan Hubicka <jh@suse.cz>
2485
2486         * method.c (use_thunk): Use tree_rest_of_compilation
2487         * cp-objecp-common.h (LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Kill.
2488         (LANG_HOOKS_CALLGRAPH_EMIT_ASSOCIATED_THUNKS): Define.
2489         * cp-tree.h (expand_body): Kill.
2490         (emit_associated_thunks): Declare.
2491         * semantics.c (emit_associated_thunks): Export.
2492         (expand_body): Kill.
2493
2494 2007-09-09  David Daney  <ddaney@avtrex.com>
2495
2496         PR c++/33324
2497         * init.c (build_new_1):  Use POINTER_PLUS_EXPR instead of MINUS_EXPR
2498         to calculate cookie_ptr.
2499
2500 2007-09-08  Jason Merrill  <jason@redhat.com>
2501
2502         PR c++/33342
2503         * pt.c (most_specialized_class): Set processing_template_decl
2504         while tsubsting partial spec args.
2505
2506 2007-09-06  Jason Merrill  <jason@redhat.com>
2507
2508         * decl2.c (get_guard): Copy visibility from the guarded variable.
2509
2510 2007-09-06  Jan Hubicka  <jh@suse.cz>
2511
2512         * semantics.c (expand_body): Do not mark arguments of clones used.
2513
2514 2007-09-06  Paolo Carlini  <pcarlini@suse.de>
2515
2516         PR c++/32674
2517         * decl.c (cp_finish_decl): When processing_template_decl,
2518         deal correctly with init as TREE_LIST.
2519
2520 2007-09-06  Tom Tromey  <tromey@redhat.com>
2521
2522         * decl.c (finish_function): Put return's location on line zero of
2523         file.
2524
2525 2007-09-05  Jason Merrill  <jason@redhat.com>
2526
2527         PR c++/15745
2528         * except.c (prepare_eh_type): Use type_decays_to.
2529
2530         PR c++/15097
2531         * init.c (build_delete): Use build_headof to get the address of the
2532         complete object if we aren't using the deleting destructor.
2533         * rtti.c (build_headof): No longer static.
2534         * cp-tree.h: Declare it.
2535
2536 2007-09-06  Jakub Jelinek  <jakub@redhat.com>
2537
2538         * decl.c (duplicate_decls): Set TREE_NOTHROW on __builtin_XX
2539         decl if a prototype for XX is provided with throw().
2540
2541         PR c++/33289
2542         * decl.c (builtin_function_1): Set DECL_ANTICIPATED also
2543         on __*_chk non-__builtin_* decls.
2544
2545 2007-09-05  Paolo Carlini  <pcarlini@suse.de>
2546
2547         PR c++/30302
2548         * semantics.c (finish_id_expression): Use context_for_name_lookup
2549         insted of DECL_CONTEXT, to see through anonymous structs and unions.
2550         * class.c (finish_struct_anon): Deal correctly with anonymous
2551         structs (vs unions, as GNU extension) in error messages.
2552
2553 2007-09-05  Jan Hubicka  <jh@suse.cz>
2554
2555         * sematics.c (expand_body): Remove unnecesary import_export_decl
2556         call, DECL_EXTERNAL checks and current_function_decl saving.
2557
2558 2007-09-05  Paolo Carlini  <pcarlini@suse.de>
2559
2560         PR c++/29731 (again)
2561         * parser.c (cp_parser_primary_expression): Return error_mark_node
2562         when a statement-expression is found in a template-argument list.
2563
2564 2007-09-04  Jason Merrill  <jason@redhat.com>
2565
2566         * except.c (initialize_handler_parm): Use
2567         fold_build_cleanup_point_expr.
2568
2569         PR c++/31419
2570         * call.c (reference_binding): Don't look for user-defined conversions
2571         to the same type.
2572
2573         PR c++/31411
2574         * except.c (initialize_handler_parm): Put a CLEANUP_POINT_EXPR inside
2575         the MUST_NOT_THROW_EXPR.
2576
2577 2007-09-04  Richard Sandiford  <richard@codesourcery.com>
2578
2579         * decl.c (cp_finish_decl): Call determine_visibility before
2580         make_rtl_for_nonlocal_decl.
2581
2582 2007-09-04  Jason Merrill  <jason@redhat.com>
2583
2584         PR c++/14032
2585         * pt.c (most_specialized_class): Substitute outer template
2586         arguments into the arguments of a member template partial
2587         specialization.
2588         (strip_innermost_template_args): New fn.
2589
2590 2007-09-03  Daniel Jacobowitz  <dan@codesourcery.com>
2591
2592         * Make-lang.in (g++spec.o): Remove SHLIB_MULTILIB.
2593
2594 2007-09-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2595
2596         * call.c (name_as_c_string): Supply a TYPE for CONST_CAST.
2597         * decl.c (cp_make_fname_decl): Likewise,
2598         * parser.c (cp_parser_string_literal): Likewise,
2599         * tree.c (pod_type_p, zero_init_p): Use CONST_CAST_TREE.
2600         * typeck.c (cp_type_quals, cp_type_readonly, cp_has_mutable_p):
2601         Likewise,
2602
2603 2007-09-02  Paolo Carlini  <pcarlini@suse.de>
2604
2605         PR c++/33208
2606         * typeck.c (build_unary_op): Fix error message for
2607         Boolean expression as operand to operator--.
2608
2609 2007-09-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2610
2611         * tree.c (pod_type_p, zero_init_p): Use strip_array_types.
2612         * typeck.c (cp_type_quals, cp_type_readonly, cp_has_mutable_p):
2613         Likewise.
2614
2615 2007-08-31 Douglas Gregor <doug.gregor@gmail.com>
2616
2617         PR c++/32597
2618         * init.c (build_default_init): Make extern.
2619         * cp-tree.h (build_default_init): Declare here.
2620         * pt.c (tsubst_expr): When the instantiation of the initializer of
2621         a variable results in an empty list, default-initialize the
2622         variable.
2623         (tsubst_copy_and_build): When the instantiation of the initializer
2624         in a new expression results in an empty initializer list,
2625         default-initialize it.
2626
2627 2007-08-31  Douglas Gregor  <doug.gregor@gmail.com>
2628
2629         * mangle.c (write_type): Change mangling of rvalue reference from
2630         `RR' to `O'. 
2631
2632 2007-08-31  Jakub Jelinek  <jakub@redhat.com>
2633
2634         * decl.c (duplicate_decls): Remove duplicated line.
2635
2636 2007-08-31  Paolo Carlini  <pcarlini@suse.de>
2637
2638         PR c++/33210
2639         * cxx-pretty-print.c (pp_cxx_unqualified_id): Deal with
2640         BOUND_TEMPLATE_TEMPLATE_PARM.
2641
2642 2007-08-31  Paolo Carlini  <pcarlini@suse.de>
2643
2644         PR c++/32113
2645         * search.c (lookup_member): Check the name argument for
2646         error_mark_node.
2647
2648 2007-08-31  Paolo Carlini  <pcarlini@suse.de>
2649
2650         PR c++/33212
2651         * parser.c (cp_parser_trait_expr): Check rerurn value of
2652         cp_parser_type_id.
2653
2654 2007-08-30  Ollie Wild  <aaw@google.com>
2655
2656         * cvt.c (cp_convert_to_pointer): Remove force parameter. Call
2657         convert_ptrmem for pointer to member conversions.
2658         (convert_to_pointer_force): Update cp_convert_to_pointer call.
2659         (ocp_convert): Update cp_convert_to_pointer call.
2660         * typeck.c (convert_ptrmem): Add conditional for null pointers to
2661         members.
2662         (build_static_cast_1): Check can_convert for conversions in either
2663         direction.
2664         (get_delta_difference_1): New function.
2665         (get_delta_difference): Refactor to call get_delta_difference_1.
2666
2667 2007-08-30  Jakub Jelinek  <jakub@redhat.com>
2668
2669         * decl.c (start_preparsed_function): Set
2670         DECL_DISREGARD_INLINE_LIMITS for GNU_INLINE_P functions.
2671
2672 2007-08-28  Paolo Carlini  <pcarlini@suse.de>
2673
2674         PR c++/33209
2675         * error.c (dump_expr): Deal with TEMPLATE_TYPE_PARM and
2676         BOUND_TEMPLATE_TEMPLATE_PARM.
2677
2678 2007-08-28  Jakub Jelinek  <jakub@redhat.com>
2679
2680         PR c++/32596
2681         PR c++/32400
2682         * pt.c (check_explicit_specialization): Set DECL_INTERFACE_KNOWN
2683         and DECL_NOT_REALLY_EXTERN if tmpl_func is not public.
2684
2685 2007-08-27  Jason Merrill  <jason@redhat.com>
2686
2687         PR c++/29000
2688         * pt.c (build_non_dependent_expr, type_dependent_expression_p): 
2689         Look inside STMT_EXPR.
2690         * semantics.c (stmt_expr_value_expr): New fn.
2691         * cp-tree.h: Declare it.
2692
2693         PR c++/28558
2694         * decl.c (groktypename): Ignore attributes applied to class type.
2695
2696 2007-08-28  Richard Guenther  <rguenther@suse.de>
2697
2698         * decl.c (duplicate_decls): Merge DECL_DISREGARD_INLINE_LIMITS.
2699
2700 2007-08-28  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2701         
2702         * error.c (dump_expr): Handle COMPLEX_CST.
2703         * cxx-pretty-print.c (pp_cxx_primary_expression): Likewise.
2704         (pp_cxx_expression): Likewise.
2705
2706 2007-08-27  Alexandre Oliva  <aoliva@redhat.com>
2707
2708         * decl.c (GNU_INLINE_P): New.
2709         (duplicate_decls): Handle gnu_inline.  Merge attributes and
2710         some flags in overriding definitions.
2711         (redeclaration_error_message): Handle gnu_inline.
2712         (start_preparsed_function): Likewise.
2713
2714 2007-08-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2715
2716         * call.c (sufficient_parms_p): Constify.
2717         * class.c (same_signature_p): Likewise.
2718         * cp-gimplify.c (is_invisiref_parm,
2719         cxx_omp_privatize_by_reference): Likewise.
2720         * cp-objcp-common.c (has_c_linkage): Likewise.
2721         * cp-tree.h (NON_THUNK_FUNCTION_CHECK, THUNK_FUNCTION_CHECK,
2722         sufficient_parms_p, same_signature_p, copy_fn_p, move_fn_p,
2723         grok_ctor_properties, nothrow_libfn_p, skip_artificial_parms_for,
2724         num_artificial_parms_for, comp_template_parms,
2725         template_parameter_pack_p, any_dependent_template_arguments_p,
2726         any_type_dependent_arguments_p, any_value_dependent_elements_p,
2727         repo_export_class_p, cxx_omp_privatize_by_reference, pod_type_p,
2728         zero_init_p, member_p, cp_lvalue_kind,
2729         builtin_valid_in_constant_expr_p, decl_anon_ns_mem_p,
2730         varargs_function_p, is_dummy_object, special_function_kind,
2731         string_conv_p, type_unknown_p, comp_except_specs, compparms,
2732         comp_cv_qualification, is_bitfield_expr_with_lowered_type,
2733         unlowered_expr_type, ptr_reasonably_similar, cp_type_readonly,
2734         cp_has_mutable_p, at_least_as_qualified_p,
2735         invalid_nonstatic_memfn_p, lvalue_or_else, lvalue_p): Likewise.
2736         * decl.c (copy_fn_p, move_fn_p, grok_ctor_properties): Likewise.
2737         * except.c (nothrow_libfn_p): Likewise.
2738         * method.c (skip_artificial_parms_for, num_artificial_parms_for):
2739         Likewise.
2740         * pt.c (comp_template_parms, template_parameter_pack_p,
2741         any_type_dependent_arguments_p, any_value_dependent_elements_p,
2742         any_dependent_template_arguments_p): Likewise.
2743         * repo.c (repo_export_class_p): Likewise.
2744         * semantics.c (anon_aggr_type_p): Likewise.
2745         * tree.c (lvalue_p_1, real_lvalue_p, lvalue_p,
2746         builtin_valid_in_constant_expr_p, decl_anon_ns_mem_p,
2747         varargs_function_p, member_p, is_dummy_object, pod_type_p,
2748         zero_init_p, special_function_p): Likewise.
2749         * typeck.c (comp_array_types, type_unknown_p, comp_except_specs,
2750         comp_array_types, at_least_as_qualified_p, comp_cv_qualification,
2751         compparms, invalid_nonstatic_memfn_p,
2752         is_bitfield_expr_with_lowered_type, unlowered_expr_type,
2753         string_conv_p, ptr_reasonably_similar, cp_type_readonly,
2754         cp_has_mutable_p, lvalue_or_else): Likewise.
2755
2756 2007-08-25  Paolo Bonzini  <bonzini@gnu.org>
2757
2758         * decl.c (cp_tree_node_structure): Kill TINST_LEVEL case.
2759         * cp-objcp-common.c (cp_tree_size): Ditto.
2760         * tree.c (cp_walk_subtrees): Ditto
2761         * cp-tree.def (TINST_LEVEL): Go away.
2762         * cp-tree.h (struct tinst_level_s): Rename to struct tinst_level,
2763         move together with other non-tree structs.
2764         (enum cp_tree_node_structure_enum): Nuke TS_CP_TINST_LEVEL.
2765         (union lang_tree_node): Eliminate tinst_level field.
2766         (TINST_DECL, TINST_LOCATION, TINST_IN_SYSTEM_HEADER_P): Annihilate.
2767         (current_instantiation, outermost_tinst_level): Return
2768         a "struct tinst_level *".
2769
2770         * error.c (print_instantiation_partial_context): Change second
2771         parameter to a "struct tinst_level *".  Replace accessor macros
2772         with field access.
2773         (print_instantiation_full_context): Likewise.
2774         * lex.c (in_main_input_context): Likewise.
2775
2776         * pt.c (struct pending_templates): New.
2777         (pending_templates, last_pending_template): Use it as a type.
2778         (current_tinst_level): Change typo to "struct tinst_level *"
2779         (reopen_tinst_level): Accept "struct tinst_level *", return decl.
2780         (add_pending_template): Construct a "struct pending_template".
2781         Replace TINST_LEVEL accessor macros with field access.
2782         (push_tinst_level): Likewise, using GGC_NEW instead of make_node.
2783         (pop_tinst_level): Likewise.
2784         (instantiate_pending_templates): Likewise.  Factor common code used
2785         when an instantiation has been done.
2786         (outermost_tinst_level): Replace tree_last with loop.
2787         (current_instantiation): Return a "struct tinst_level *".
2788
2789 2007-08-24  Ollie Wild  <aaw@google.com>
2790
2791         * name-lookup.c (add_decl_to_level): Remove addition to vtables chain.
2792         * name-lookup.h (cp_binding_level): Remove vtables member.
2793
2794 2007-08-24  Richard Guenther  <rguenther@suse.de>
2795
2796         * tree.c (cp_cannot_inline_tree_fn): Remove.
2797         * cp-tree.h (cp_cannot_inline_tree_fn): Likewise.
2798         * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN):
2799         Remove define.
2800
2801 2007-08-24  Jakub Jelinek  <jakub@redhat.com>
2802
2803         PR c++/32567
2804         * typeck.c (build_unary_op) <case PREINCREMENT_EXPR>: Return
2805         error_mark_node right away if build_expr_type_conversion
2806         returned it.
2807
2808         PR c++/32898
2809         * name-lookup.c (set_decl_namespace): lookup_qualified_name failure
2810         is error_mark_node rather than NULL_TREE.
2811         * pt.c (check_explicit_specialization): Likewise.
2812
2813         PR c++/31941
2814         * error.c (resolve_virtual_fun_from_obj_type_ref): Handle
2815         TARGET_VTABLE_USES_DESCRIPTORS targets properly.
2816
2817 2007-08-22  Jason Merrill  <jason@redhat.com>
2818
2819         PR c++/29365
2820         * pt.c (outermost_tinst_level): New function.
2821         * lex.c (in_main_input_context): New function.
2822         * cp-tree.h: Declare it.
2823         * decl2.c (constrain_class_visibility): Use it to avoid warning
2824         about uses of the anonymous namespace in the main input file.
2825
2826 2007-08-21  Jakub Jelinek  <jakub@redhat.com>
2827
2828         * init.c (build_new_1): Use get_target_expr instead of save_expr.
2829
2830 2007-08-20  Pawel Sikora  <pluto@pld-linux.org>
2831
2832         PR c++/7302
2833         * class.c (finish_struct_1): Warn when a class has virtual
2834         functions and accessible non-virtual destructor.
2835
2836 2007-08-20  Richard Guenther  <rguenther@suse.de>
2837
2838         PR c++/22369
2839         PR c++/22451
2840         * call.c (build_new_method_call): Convert initializer to
2841         the basetype.
2842         * init.c (build_aggr_init): Do not fiddle with types.
2843         (build_vec_delete_1): Use correct type for POINTER_PLUS_EXPR.
2844         * except.c (build_throw): Do not drop qualifiers for the
2845         pointer type.
2846         * typeck.c (get_member_function_from_ptrfunc): Do not
2847         fiddle with types, instead convert.
2848         (build_ptrmemfunc1): Convert to the target type for
2849         initialization.
2850         (gfc_trans_allocate): Convert result to target type.
2851         * cp-objcp-common.c (cxx_get_alias_set): Pointers to
2852         pointer-to-member structures shall have alias set zero as well.
2853
2854 2007-08-20  Richard Guenther  <rguenther@suse.de>
2855
2856         * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P):
2857         Remove.
2858         * cp-tree.h (cp_auto_var_in_fn_p): Remove.
2859         (nonstatic_local_decl_p): Likewise.
2860         * tree.c (cp_auto_var_in_fn_p): Remove.
2861         * decl.c (nonstatic_local_decl_p): Remove.
2862
2863 2007-08-20  Richard Guenther  <rguenther@suse.de>
2864
2865         * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_WALK_SUBTREES):
2866         Remove define.
2867         * tree.h (cp_walk_tree): New define to walk_tree_1 with
2868         cp_walk_subtrees lh parameter.
2869         (cp_walk_tree_without_duplicates): New define to
2870         walk_tree_without_duplicates_1 with cp_walk_subtrees lh parameter.
2871         * tree.c (count_trees): Call
2872         cp_walk_tree_without_duplicates.
2873         (verify_stmt_tree): Call cp_walk_tree.
2874         (break_out_target_exprs): Likewise.
2875         (WALK_SUBTREE): Likewise.
2876         * cp-gimplify.c (cp_genericize): Likewise.
2877         * cp-pt.c (find_parameter_packs_r): Likewise.
2878         (uses_parameter_packs): Likewise.
2879         (make_pack_expansion): Likewise.
2880         (check_for_bare_parameter_packs): Likewise.
2881         (for_each_template_parm): Likewise.
2882         * decl.c (check_default_argument): Call
2883         cp_walk_tree_without_duplicates.
2884         * except.c (build_throw): Likewise.
2885         * decl2.c (type_visibility): Likewise.
2886         * semantics.c (expand_or_defer_fn): Likewise.
2887         (finalize_nrv): Call cp_walk_tree.
2888
2889 2007-08-20  Jakub Jelinek  <jakub@redhat.com>
2890
2891         PR c++/33025
2892         * init.c (build_new_1): Rename placement_var variable to placement_expr.
2893         Initialize it with save_expr rather than get_temp_regvar.
2894
2895 2007-08-17  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2896
2897         PR c++/28989
2898         * tree.c (lvalue_p_1 <case SAVE_EXPR>): SAVE_EXPRs are never
2899         lvalues.
2900
2901 2007-08-17  Ollie Wild  <aaw@google.com>
2902
2903         PR c++/31749
2904         * name-lookup.c (do_nonmember_using_decl): Shift implicit type
2905         declarations into appropriate slots for comparison.  Fix type
2906         comparison.
2907
2908 2007-08-17  Paolo Carlini  <pcarlini@suse.de>
2909
2910         PR c++/32112
2911         * error.c (dump_decl): Deal with UNBOUND_CLASS_TEMPLATE.
2912         * cxx-pretty-print.c (pp_cxx_unqualified_id): Likewise.
2913
2914 2007-08-17  Paolo Carlini  <pcarlini@suse.de>
2915
2916         PR c++/32870
2917         * parser.c (cp_parser_class_head): Improve error message.
2918
2919 2007-08-16  Seongbae Park  <seongbae.park@gmail.com>
2920
2921         * pt.c (instantiate_decl): Set input_location
2922         for the function end.
2923
2924 2007-08-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2925
2926         * cp-objcp-common.c (cxx_warn_unused_global_decl, cp_expr_size):
2927         Constify.
2928         * cp-tree.h (local_variable_p, nonstatic_local_decl_p,
2929         class_tmpl_impl_spec_p, cp_auto_var_in_fn_p, cp_type_quals,
2930         cxx_incomplete_type_diagnostic, cxx_incomplete_type_error,
2931         cxx_warn_unused_global_decl, cp_expr_size): Likewise.
2932         * decl.c (local_variable_p, nonstatic_local_decl_p): Likewise.
2933         * tree.c (class_tmpl_impl_spec_p, cp_auto_var_in_fn_p): Likewise.
2934         * typeck.c (cp_type_quals): Likewise.
2935         * typeck2.c (cxx_incomplete_type_diagnostic,
2936         cxx_incomplete_type_error): Likewise.
2937
2938 2007-08-16  Paolo Carlini  <pcarlini@suse.de>
2939
2940         PR c++/31132
2941         * pt.c (tsubst_friend_function): When check_classfn
2942         returns error_mark_node likewise return it.
2943
2944 2007-08-15  Jakub Jelinek  <jakub@redhat.com>
2945
2946         PR c++/32992
2947         * typeck.c (check_return_expr): Don't NRV optimize vars in
2948         anonymous unions.
2949         * decl.c (finish_function): Comment fix.
2950
2951 2007-08-15  Paolo Carlini  <pcarlini@suse.de>
2952
2953         PR c++/33035
2954         * pt.c (push_template_decl_real): Depending on TYPE_P
2955         use either TYPE_CONTEXT or DECL_CONTEXT.
2956
2957 2007-08-14  Mark Mitchell  <mark@codesourcery.com>
2958
2959         * semantics.c (finish_omp_clauses): Strip a NOP_EXPR if
2960         constructors and destructors return this.
2961
2962 2007-08-14  Paolo Carlini  <pcarlini@suse.de>
2963
2964         PR c++/27211
2965         * decl2.c (check_classfn): Return error_mark_node in case of error;
2966         in that case, do not call add_method.
2967         * decl.c (start_decl): Deal with check_classfn returning
2968         error_mark_node.
2969         (grokfndecl): Likewise.
2970         * pt.c (tsubst_friend_function): Likewise.
2971
2972 2007-08-14  Andrew Pinski  <pinskia@gmail.com>
2973
2974         PR c++/30428
2975         * typeck.c (build_binary_op): Disallow vector float types with
2976         BIT_IOR_EXPR, BIT_AND_EXPR, and BIT_XOR_EXPR.
2977
2978 2007-08-11  Ian Lance Taylor  <iant@google.com>
2979
2980         * cp-objcp-common.c (cxx_get_alias_set): Change return type to
2981         alias_set_type.
2982         * cp-tree.h (cxx_get_alias_set): Update declaration.
2983
2984 2007-08-10  Ollie Wild  <aaw@google.com>
2985
2986         * name-lookup.c (do_nonmember_using_decl): Print an error for ambiguous
2987         type lookups.
2988         (ambiguous_decl): Construct tree of ambiguous types.  Remove extaneous
2989         function parameter.
2990         (unqualified_namespace_lookup): Fix ambiguous_decl call.
2991         (lookup_using_namespace): Fix ambiguous_decl call.
2992         (qualified_lookup_using_namespace): Fix ambiguous_decl call.
2993
2994 2007-08-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2995
2996         * call.c (name_as_c_string): Use CONST_CAST.
2997         * decl.c (build_decl): Likewise.
2998         * parser.c (cp_parser_string_literal): Likewise.
2999
3000 2007-08-10  Paolo Carlini  <pcarlini@suse.de>
3001
3002         PR c++/17763
3003         * error.c (dump_expr): Consistently use the *_cxx_*
3004         variants of the pretty-print functions.
3005
3006 2007-08-10  Paolo Carlini  <pcarlini@suse.de>
3007
3008         PR c++/22256
3009         * decl.c (check_special_function_return_type): Just error
3010         on return type specified for conversion operator.
3011
3012 2007-08-09  Daniel Berlin  <dberlin@dberlin.org>
3013
3014         * typeck2.c (readonly_error): Handle general expressions.
3015         * error.c (dump_expr): Handle POINTER_PLUS_EXPR
3016
3017 2007-08-06  Dan Hipschman  <dsh@google.com>
3018
3019         * method.c (use_thunk): Use DECL_NAME instead of DECL_RTL to
3020         access function name.
3021
3022 2007-08-04  Alfred Minarik  <a.minarik@aon.at>
3023
3024         PR pch/13676
3025         * lang-specs.h: Add .hp, .hxx, .hpp, .h, .HPP, .tcc as c++ header.
3026         * g++spec.c (lang_specific_driver): Check them.
3027
3028 2007-08-06  Paolo Carlini  <pcarlini@suse.de>
3029
3030         PR c++/19532
3031         * pt.c (inline_needs_template_parms): Fix comment; change return type
3032         to bool.
3033
3034 2007-08-05  Volker Reichelt  <v.reichelt@netcologne.de>
3035
3036         Revert:
3037         2007-03-26  Dirk Mueller  <dmueller@suse.de>
3038
3039         * parser.c (cp_parser_member_declaration): Pedwarn
3040         about stray semicolons after member declarations.
3041
3042 2007-08-02  Lee Millward  <lee.millward@gmail.com>
3043
3044         PR c++/30849
3045         PR c++/30850
3046         PR c++/30851
3047         * parser.c (cp_parser_asm_definition): Detect and discard asm
3048         statements with invalid inputs or outputs.
3049         (cp_parser_asm_operand_list): Return error mark node if any
3050         of the operands are invalid. Adjust documentation.
3051         
3052 2007-08-02  Nick Clifton  <nickc@redhat.com>
3053
3054         * typeck.c: Change copyright header to refer to version 3 of the
3055         GNU General Public License and to point readers at the COPYING3
3056         file and the FSF's license web page.
3057         * optimize.c, lang-specs.h, init.c, class.c, repo.c, decl.c,
3058         config-lang.in, cp-tree.def, call.c, decl.h, ptree.c,
3059         Make-lang.in, method.c, rtti.c, cp-objcp-common.c, g++spec.c,
3060         cp-objcp-common.h, except.c, error.c, operators.def, cvt.c,
3061         tree.c, mangle.c, cp-tree.h, dump.c, search.c, friend.c, expr.c,
3062         cp-gimplify.c, cxx-pretty-print.c, cp-lang.c, typeck2.c, pt.c,
3063         cxx-pretty-print.h, semantics.c, name-lookup.c, lex.c, decl2.c,
3064         name-lookup.h, parser.c: Likewise.
3065
3066 2007-08-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3067
3068         PR middle-end/32668
3069         * call.c (magic_varargs_p): Honor the "type generic" attribute.
3070
3071 2007-07-30  Paolo Carlini  <pcarlini@suse.de>
3072
3073         PR c++/32108
3074         * semantics.c (finish_label_stmt): Reject the __label__
3075         extension outside function scopes.
3076
3077 2007-07-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3078
3079         * parser.c (eof_token): Un-constify.
3080         (cp_lexer_new_main, cp_lexer_new_from_tokens, VEC_alloc,
3081         cp_lexer_consume_token, cp_lexer_purge_token): Remove spurious
3082         casts.
3083
3084 2007-07-28  Kazu Hirata  <kazu@codesourcery.com>
3085
3086         * pt.c, tree.c, typeck2.c: Fix comment typos.
3087
3088 2007-07-28  Simon Martin  <simartin@users.sourceforge.net>
3089             Mark Mitchell  <mark@codesourcery.com>
3090
3091         PR c++/30917
3092         * name-lookup.c (lookup_name_real): Non namespace-scope bindings can be
3093         hidden due to friend declarations in local classes.
3094
3095 2007-07-27  Douglas Gregor  <doug.gregor@gmail.com>
3096
3097         * typeck.c (structural_comptypes): Compare DECLTYPE_TYPE nodes.
3098         * cp-tree.def (DECLTYPE_TYPE): New.
3099         * error.c (dump_type): Dump DECLTYPE_TYPE nodes.
3100         (dump_type_prefix): Ditto.
3101         (dump_type_suffix): Ditto.
3102         * tree.c (DECLTYPE_TYPE): Walk DECLTYPE_TYPE nodes.
3103         * mangle.c (write_type): Handle DECLTYPE_TYPE.
3104         * cp-tree.h (IS_AGGR_TYPE): DECLTYPE_TYPE nodes can be aggregate
3105         types.
3106         (DECLTYPE_TYPE_EXPR): New.
3107         (DECLTYPE_TYPE_ID_EXPR_OR_MEMBER_ACCESS_P): New.
3108         (finish_declared_type): Declare.
3109         * cxx-pretty-print.c (pp_cxx_type_specifier_seq): Print
3110         DECLTYPE_TYPE nodes.
3111         (pp_cxx_type_id): Ditto.
3112         * pt.c (for_each_template_parm_r): Walk DECLTYPE_TYPE children.
3113         (tsubst): Substitute into a DECLTYPE_TYPE node.
3114         (tsubst_copy): Ditto.
3115         (unify): Cannot deduce anything from TYPEOF_TYPE or DECLTYPE_TYPE
3116         nodes.
3117         (dependent_type_p_r): DECLTYPE_TYPE types are always dependent.
3118         * semantics.c (finish_typeof): TYPEOF_TYPE types need to use
3119         structural equality (because we can't hash the expressions).
3120         (finish_declared_type): New.
3121         * lex.c (reswords): Add "decltype" keyword.
3122         * parser.c cp_lexer_next_token_is_decl_specifier_keyword
3123         (cp_parser_postfix_expression): Add member_access_only_p to
3124         restrict postfix expression to member access expressions.
3125         (cp_parser_unary_expression): Update call to
3126         cp_parser_postfix_expression to reflect new parameter.
3127         (cp_parser_declared_type): New.
3128         (cp_parser_simple_type_specifier): Parse decltype types.
3129
3130 2007-07-27  Mark Mitchell  <mark@codesourcery.com>
3131
3132         PR c++/32346
3133         * call.c (convert_for_arg_passing): Only widen bitfields to their
3134         declared types if necessary.
3135
3136 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3137
3138         * parser.c (cp_parser_string_literal, cp_parser_sizeof_operand):
3139         Constify.
3140
3141 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3142
3143         * decl.c (typename_hash, typename_compare): Constify.
3144         * mangle.c (hash_type, compare_type): Likewise.
3145         * pt.c (eq_local_specializations, hash_local_specialization):
3146         Likewise.
3147         * tree.c (cplus_array_hash, cplus_array_compare, list_hash_eq,
3148         list_hash): Likewise.
3149         * typeck2.c (pat_compare): Likewise.
3150
3151 2007-07-24  Nathan Sidwell  <nathan@codesourcery.com>
3152
3153         * method.c (implicitly_declare_fn): Increase alignment if member
3154         function pointer format requires it.
3155
3156 2007-07-24  Paolo Carlini  <pcarlini@suse.de>
3157
3158         PR c++/29001
3159         * typeck.c (check_return_expr): Do not pass a null argument
3160         to null_ptr_cst_p.
3161
3162 2007-07-24  Paolo Carlini  <pcarlini@suse.de>
3163
3164         PR c++/32561
3165         * decl.c (redeclaration_error_message): Call DECL_ANON_UNION_VAR_P
3166         only on VAR_DECL.
3167
3168 2007-07-22  Nathan Sidwell  <nathan@codesourcery.com>
3169
3170         PR c++/32839
3171         * typeck.c (convert_arguments): Only use default args if we have
3172         a function decl.
3173
3174         PR c++/30818
3175         * typeck.c (structural_comptypes): No need to check
3176         resolve_typename_type return value here.
3177         * cp-tree.h (TYPENAME_IS_RESOLVING_P): New.
3178         * pt.c (resolve_typename_type): Follow typename typedefs.  Return
3179         original type rather than error_mark_node in case of failure.
3180         * parser.c (cp_parser_nested_name_specifier_opt): Adjust
3181         resolve_typename_type result check.
3182         (cp_parser_direct_declarator, cp_parser_head,
3183         cp_parser_constructor_declarator_p): Likewise.
3184
3185 2007-07-12  Kazu Hirata  <kazu@codesourcery.com>
3186
3187         * pt.c (template_parms_variadic_p): Remove.
3188         * cp-tree.h: Remove the prototype for template_parms_variadic_p.
3189
3190 2007-07-12  Jakub Jelinek  <jakub@redhat.com>
3191
3192         PR c++/30854
3193         * error.c (dump_expr) <case AGGR_INIT_EXPR>: Pass true as last
3194         argument to dump_aggr_init_expr_args instead of false.
3195
3196 2007-07-11  Douglas Gregor  <doug.gregor@gmail.com>
3197
3198         * typeck.c (comptypes): When USE_CANONICAL_TYPES, use the
3199         canonical types; otherwise, fall back to structural type
3200         comparisons. If ENABLE_CHECKING and USE_CANONICAL_TYPES, give an
3201         internal compiler error if the canonical types are wrong.
3202         
3203 2007-07-11  Paolo Carlini  <pcarlini@suse.de>
3204
3205         PR c++/32560
3206         * parser.c (cp_parser_make_indirect_declarator): When the
3207         the code argument is ERROR_MARK return cp_error_declarator.
3208
3209 2007-07-09  Geoffrey Keating  <geoffk@apple.com>
3210
3211         PR 32617
3212         * decl.c (cxx_init_decl_processing): Don't set
3213         force_align_functions_log.
3214         (grokfndecl): Honour ptrmemfunc_vbit_in_pfn.
3215         * typeck.c (cxx_alignof_expr): When alignof is used on a plain
3216         FUNCTION_DECL, return its alignment.
3217
3218 2007-07-09  Richard Guenther  <rguenther@suse.de>
3219
3220         * decl.c (start_preparsed_function): Do not promote return type.
3221
3222 2007-07-08  Paolo Carlini  <pcarlini@suse.de>
3223
3224         PR c++/30535
3225         * pt.c (unify): Never pass error_mark_node to template_decl_level.
3226
3227 2007-07-07  Mark Mitchell  <mark@codesourcery.com>
3228
3229         PR c++/32232
3230         * pt.c (resolve_overloaded_unification): Robustify.  Return a
3231         bool, not an int.
3232         (type_unification_real): Adjust accordingly.
3233
3234 2007-07-06  Richard Guenther  <rguenther@suse.de>
3235
3236         * init.c (build_new_1): Use the correct pointer type.
3237         * typeck2.c (build_m_component_ref): Likewise.
3238
3239 2007-07-05  Mark Mitchell  <mark@codesourcery.com>
3240
3241         PR c++/32245
3242         * init.c (build_zero_init): Always build an initializer for
3243         non-static storage.
3244         * typeck2.c (build_functional_cast): Use build_zero_init.
3245
3246         PR c++/32251
3247         * init.c (build_new_1): Always pass the allocation function to
3248         build_op_delete_call.
3249         * call.c (build_op_delete_call): Handle operator delete with a
3250         variable-argument list.  Do not issue an error when no matching
3251         deallocation function is available for a new operator.
3252
3253         PR c++/31992
3254         * cp-tree.h (any_value_dependent_elements_p): Declare it.
3255         * decl.c (value_dependent_init_p): New function.
3256         (cp_finish_decl): Use it.
3257         * pt.c (value_dependent_expression_p): Use
3258         any_value_dependent_elements_p.
3259         * parser.c (cp_parser_primary_expression): Add comment about
3260         treating dependent qualified names as integral
3261         constant-expressions.
3262
3263 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
3264
3265         * decl.c (build_ptrmemfunc_type): Always use structural equality
3266         tests when comparing pointer-to-member-function types, because the
3267         handling of TYPE_GET_PTRMEMFUNC_TYPE currently defeats canonical
3268         types.
3269         
3270 2007-07-03  Mark Mitchell  <mark@codesourcery.com>
3271
3272         * init.c (build_new): Tweak comment.
3273
3274 2007-06-29  Dave Brolley  <brolley@redhat.com>
3275
3276         PR c++/31743
3277         * parser.c (cp_parser_new_type_id): Don't reduce a named array
3278         type to its base type and number of elements here.
3279         * init.c (build_new): Call complete_type_or_else to ensure that the
3280         type is complete and to issue a diagnostic if it is not.
3281         (build_new_1): Don't call complete_type_or_else here.
3282
3283 2007-07-03  Richard Guenther  <rguenther@suse.de>
3284
3285         PR c++/32609
3286         * class.c (fixed_type_or_null): Re-lookup the hashtable slot
3287         after recursing.
3288
3289 2007-07-02  Simon Baldwin  <simonb@google.com>
3290
3291         * parser.c (cp_parser_elaborated_type_specifier): Added a warning
3292         for inner-style nested forward declarations that don't declare
3293         anything useful.
3294
3295 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
3296
3297         PR c++/31748
3298         * semantics.c (finish_omp_clauses): Use %qD instead of %qE for
3299         DECL_P in not a variable and appears more than once error messages.
3300
3301 2007-07-01  Ollie Wild  <aaw@google.com>
3302
3303         * name-lookup.c (ambiguous_decl): Fix case when new->value is hidden.
3304         (select_decl): Remove function.
3305         (unqualified_namespace_lookup): Populate binding by calling
3306         ambiguous_decl.  Remove select_decl call.
3307         (lookup_qualified_name): Remove select_decl call.
3308         * decl.c (lookup_and_check_tag): Check for ambiguous references.
3309         * parser.c (cp_parser_elaborated_type_specifier): Skip redundant error
3310         generation when name lookup is ambiguous.
3311
3312 2007-06-29  Douglas Gregor  <doug.gregor@gmail.com>
3313
3314         PR c++/31724
3315         * init.c (build_new_1): Use structural equality on the copy of the
3316         array type.
3317
3318 2007-06-28  Geoffrey Keating  <geoffk@apple.com>
3319
3320         * decl2.c (determine_visibility): Implement
3321         flag_visibility_ms_compat effect on type info.
3322         * decl.c (cxx_init_decl_processing): Implement
3323         global effect of flag_visibility_ms_compat.
3324
3325 2007-06-28  Geoffrey Keating  <geoffk@apple.com>
3326
3327         * decl2.c (start_objects): Mark constructor-running function
3328         as artificial.
3329
3330 2007-06-26  Simon Martin  <simartin@users.sourceforge.net>
3331
3332         PR c++/32111
3333         * decl.c (grokdeclarator): Reset friendp for member functions declared
3334         friend of their own class.
3335
3336 2007-06-23  Mark Mitchell  <mark@codesourcery.com>
3337
3338         * decl2.c (determine_visibility): Don't look for dllexport here.
3339         (determine_visibility_from_class): Tidy.
3340
3341 2007-06-18  Simon Baldwin <simonb@google.com>
3342
3343         PR c++/31923
3344         * parser.c (cp_parser_single_declaration): Added check for storage
3345         class other than sc_none in parsed declaration, and a flag to indicate
3346         if the call is part of an explicit template specialization parse.
3347         * (cp_parser_explicit_specialization): Specialization check flag added
3348         to call to cp_parser_single_declaration(), set true.
3349         * (cp_parser_template_declaration_after_export): Specialization check
3350         flag added to call to cp_parser_single_declaration(), set false.
3351         * pt.c (check_explicit_specialization): Added code to copy visiblity
3352         and linkage from the templated function to the explicit specialization.
3353
3354 2007-06-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3355
3356         * typeck.c (build_binary_op): For templates build the
3357         expression in pieces to avoid the assert in build2_stat.
3358         (get_member_function_from_ptrfunc):
3359         Change over to using POINTER_PLUS_EXPR and convert
3360         the second operand to sizetype.
3361         * typeck2.c (build_m_component_ref):  Likewise.
3362         * init.c (expand_virtual_init): Create a POINTER_PLUS_EXPR
3363         instead of PLUS_EXPR for pointers.
3364         (build_new_1): Likewise.
3365         (build_vec_delete_1): Likewise.
3366         (build_vec_delete): Likewise.
3367         * class.c (build_base_path): Likewise.
3368         (build_base_path): Likewise.
3369         (convert_to_base_statically): Likewise.
3370         (fixed_type_or_null): Handle POINTER_PLUS_EXPR.
3371         (get_vtbl_decl_for_binfo): Handle POINTER_PLUS_EXPR
3372         instead of PLUS_EXPR.
3373         (dfs_accumulate_vtbl_inits): Create a POINTER_PLUS_EXPR
3374         instead of PLUS_EXPR for pointers.
3375         * call.c (build_special_member_call): Likewise.
3376         * rtti.c (build_headof): Likewise.
3377         Use sizetype instead of ptrdiff_type_node.
3378         (tinfo_base_init): Create a POINTER_PLUS_EXPR
3379         instead of PLUS_EXPR for pointers.
3380         * except.c (expand_start_catch_block):  Do a
3381         NEGATIVE and then a POINTER_PLUS_EXPR instead
3382         of a MINUS_EXPR.
3383         * cp-gimplify.c (cxx_omp_clause_apply_fn): Convert
3384         PLUS_EXPR on pointer types over to use
3385         POINTER_PLUS_EXPR and remove the conversion
3386         to the pointer types.
3387         * method.c (thunk_adjust): Use POINTER_PLUS_EXPR for
3388         adding to a pointer type. Use size_int instead of
3389         ssize_int. Convert the index to sizetype before
3390         adding it to the pointer.
3391
3392 2007-06-15  Mark Mitchell  <mark@codesourcery.com>
3393
3394         * cp-tree.h (DECL_VAR_MARKED_P): Remove.
3395         (DECL_ANON_UNION_VAR_P): New macro.
3396         * class.c (fixed_type_or_null): Tidy.  Use a hash table, rather
3397         than DECL_VAR_MARKED_P, to keep track of which variables we have
3398         seen.
3399         * decl.c (redeclaration_error_message): Complain about redeclaring
3400         anonymous union members at namespace scope.
3401         * decl2.c (build_anon_union_vars): Set DECL_ANON_UNION_VAR_P.
3402
3403 2007-06-14  Geoff Keating  <geoffk@apple.com>
3404
3405         * decl2.c (determine_visibility): Ensure that functions with
3406         hidden types as parameters are hidden.
3407
3408         PR 31093
3409         * decl2.c (determine_visibility): Remove duplicate code for
3410         handling type info.
3411
3412 2007-06-12  Ian Lance Taylor  <iant@google.com>
3413
3414         PR libstdc++/29286
3415         * init.c (avoid_placement_new_aliasing): New static function.
3416         (build_new_1): Call it.
3417
3418 2007-06-11  Rafael Avila de Espindola  <espindola@google.com>
3419
3420         * cp-objcp-common.h (LANG_HOOKS_SIGNED_TYPE): Remove.
3421         (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
3422
3423 2007-06-08  Jakub Jelinek  <jakub@redhat.com>
3424
3425         PR c++/32177
3426         * semantics.c (finish_omp_for): Call fold_build_cleanup_point_expr
3427         on init, the non-decl cond operand and increment value.
3428
3429 2007-06-07  Simon Martin  <simartin@users.sourceforge.net>
3430
3431         PR c++/30759
3432         * decl.c (check_initializer): Report an error when a brace enclosed
3433         initializer is used for a non-aggregate type in C++98.
3434         (redeclaration_error_message): Rewrote flag_cpp0x in terms of
3435         cxx_dialect.
3436         (grokdeclarator): Likewise.
3437         (move_fn_p): Likewise.
3438         * typeck.c (check_return_expr): Likewise.
3439         * call.c (reference_binding): Likewise.
3440         * error.c (cp_cpp_error): Likewise.
3441         * pt.c (check_default_tmpl_args): Likewise.
3442         (tsubst): Likewise.
3443         * lex.c (init_reswords): Likewise.
3444         * parser.c (p_parser_primary_expression): Likewise.
3445         (TOKEN_PRECEDENCE): Likewise.
3446         (cp_parser_init_declarator): Likewise.
3447         (cp_parser_ptr_operator): Likewise.
3448         (cp_parser_parameter_declaration): Likewise.
3449         (cp_parser_enclosed_template_argument_list): Likewise.
3450         (cp_parser_skip_to_end_of_template_parameter_list): Likewise.
3451         (cp_parser_next_token_ends_template_argument_p): Likewise.
3452
3453 2007-06-04  Simon Baldwin  <simonb@google.com>
3454
3455         * decl.c (grokdeclarator): Readability change.  Moved case labels
3456         into direct switch statement scope.
3457
3458 2007-06-04  Paolo Carlini  <pcarlini@suse.de>
3459
3460         * call.c (convert_like_real): Remove pointless code.
3461
3462 2007-05-31  Mark Mitchell  <mark@codesourcery.com>
3463
3464         * decl.c (get_atexit_fn_ptr_type): New function.
3465         (get_atexit_node): Use it.
3466         (start_cleanup_fn): Likewise.
3467         (register_dtor_fn): Use the object's destructor, instead of a
3468         separate cleanup function, where possible.
3469         * cp-tree.h (CPTI_ATEXIT_FN_PTR_TYPE): New enumerator.
3470         (atexit_fn_ptr_type_node): New macro.