OSDN Git Service

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