OSDN Git Service

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