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>