OSDN Git Service

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