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