OSDN Git Service

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