1 2008-10-21 Richard Guenther <rguenther@suse.de>
3 * semantics.c (simplify_aggr_init_exprs_r): Remove.
4 (expand_or_defer_fn): Do not walk the function body to
5 simplify aggr_init_exprs.
7 2008-10-20 Manuel López-Ibáñez <manu@gcc.gnu.org>
10 * typeck.c (cp_common_type): New. The same as
11 type_after_usual_arithmetic_conversions but without promotions.
12 (type_after_usual_arithmetic_conversions): Do the promotions and
14 (common_type): Make it behave like the C version of this
15 function. Do not handle pointer types.
16 (common_pointer_type): Move handling of pointer types from
18 (cp_build_binary_op): Use common_pointer_type instead of
19 common_type in call to pointer_diff.
20 Use cp_common_type instead of common_type.
21 * cp-tree.h (common_pointer_type): Declare.
23 2008-10-14 Jakub Jelinek <jakub@redhat.com>
26 * cp-gimplify.c (cp_genericize_r): Only fold_convert COND_EXPR
27 arguments if they don't already have COND_EXPR's type.
29 2008-10-14 Paolo Carlini <paolo.carlini@oracle.com>
32 * pt.c (push_template_decl_real): Check that current_template_parms
34 (process_partial_specialization): Assert current_template_parms not
37 2008-10-13 Doug Evans <dje@google.com>
39 * cp-tree.h (DECL_MAIN_P): Fix parentheses around expression.
41 2008-10-10 Jakub Jelinek <jakub@redhat.com>
44 * cp-gimplify.c (cp_genericize_r): Fix up bitfield operands of
47 2008-10-09 Jakub Jelinek <jakub@redhat.com>
50 * semantics.c (finalize_nrv_r): Clear DECL_INITIAL instead of
51 setting it to error_mark_node.
53 2008-10-07 Steve Ellcey <sje@cup.hp.com>
55 * decl.c (start_cleanup_fn): Declare as inline.
57 2008-10-06 Jason Merrill <jason@redhat.com>
59 PR c++/37376, other mangling issues
60 * mangle.c (write_type): Update TYPE_PACK_EXPANSION mangling.
61 (write_member_name): Break out from...
62 (write_expression): ...here. Handle dependent COMPONENT_REF.
63 (write_template_arg): Wrap an argument pack in 'I'/'E'.
64 (write_builtin_type): Update char16/32_t mangling.
65 (write_nested_name, write_prefix): Don't forget template args
67 * operators.def: Add ARROW_EXPR, update COMPONENT_REF and
70 2008-10-06 Aldy Hernandez <aldyh@redhat.com>
72 * typeck.c (build_x_indirect_ref): Add location argument.
73 (cp_build_binary_op): Pass location to warn_for_div_by_zero.
74 (cp_build_unary_op): Add location argument.
75 (cp_build_modify_expr): Same.
76 * class.c (build_base_path): Pass location to build_indirect_ref.
77 * semantics.c (handle_omp_for_class_iterator): Pass elocus to
80 2008-10-05 Dodji Seketeli <dodji@redhat.com>
83 * cp-gimplify.c (cp_gimplify_expr): For each USING_STMT
84 make sure an IMPORTED_DECL node is added to the BLOCK_VARS list
85 of the innermost containing BLOCK.
87 2008-10-03 Paolo Carlini <paolo.carlini@oracle.com>
90 * error.c (dump_function_decl): Save the exceptions in case of
91 error about incompatible specifications in a specialization.
93 2008-10-01 Andrew Pinski <andrew_pinski@playstation.sony.com>
95 * tree.c (lvalue_p_1): COMPOUND_LITERAL_EXPR is also an lvalue.
97 2008-09-30 H.J. Lu <hongjiu.lu@intel.com>
100 * parser.c (cp_parser_selection_statement): Fix uninitialized
103 2008-09-30 Simon Martin <simartin@users.sourceforge.net>
107 * decl.c (grokdeclarator): Set the type for typedefs to a
108 nested-name-specifier to error_mark_node.
110 2008-09-30 Paolo Bonzini <bonzini@gnu.org>
112 * parser.c (cp_parser_selection_statement): Implement here the
113 -Wempty-body warning for `if' and `else' statements.
114 * semantics.c (finish_if_stmt): Do not call empty_body_warning.
116 2008-09-25 Paolo Carlini <paolo.carlini@oracle.com>
119 * name-lookup.c (maybe_process_template_type_declaration): Check
120 return value of push_template_decl_real for error_mark_node.
122 2008-09-24 Aldy Hernandez <aldyh@redhat.com>
124 * semantics.c (finish_fname): Pass location to fname_decl.
126 2008-09-23 Jakub Jelinek <jakub@redhat.com>
129 * semantics.c (finish_omp_for): If processing_template_decl, just build
130 MODIFY_EXPR for init instead of calling cp_build_modify_expr.
132 2008-09-23 Aldy Hernandez <aldyh@redhat.com>
134 * typeck.c (build_array_ref): Pass location to cp_build_binary_op.
135 (get_member_function_from_ptrfunc): Same.
136 (build_x_binary_op): Same.
137 (build_binary_op): Same.
138 (cp_build_binary_op): New location argument.
139 (pointer_diff): Pass location to cp_build_binary_op.
140 (cp_truthvalue_conversion): Pass location to build_binary_op.
141 (convert_ptrmem): Pass location to cp_build_binary_op.
142 (cp_build_modify_expr): Same.
143 (build_ptrmemfunc): Same.
144 * init.c (expand_cleanup_for_base): Pass location to
145 c_common_truthvalue_conversion.
146 (build_new_1): Pass location to cp_build_binary_op.
147 (build_vec_delete_1): Pass location to *build_binary_op,
148 c_common_truthvalue_conversion.
149 (build_vec_init): Same.
150 (build_delete): Same.
151 * decl.c (compute_array_index_type): Same.
152 * call.c (build_new_op): Same.
153 * rtti.c (build_dynamic_cast_1): Same.
154 * cp-tree.h: Add argument to cp_build_binary_op.
155 * semantics.c (handle_omp_for_class_iterator): Pass location to
156 *build_binary_op, c_common_truthvalue_conversion.
157 * decl2.c (get_guard_cond): Same.
159 2008-09-17 Richard Guenther <rguenther@suse.de>
162 * rtti.c (build_dynamic_cast_1): Convert the COND_EXPR
163 result to the correct type.
165 2008-09-17 H.J. Lu <hongjiu.lu@intel.com>
168 * name-lookup.c (pushdecl_maybe_friend): Don't return the old
169 parameter for duplicate.
171 2008-09-17 Jason Merrill <jason@redhat.com>
174 * name-lookup.c (lookup_type_scope): Look through sk_function_parms.
176 2008-09-17 Jakub Jelinek <jakub@redhat.com>
179 * typeck.c (build_array_ref): Use protected_set_expr_location instead
180 of SET_EXPR_LOCATION when ret might not be an expression.
182 2008-09-17 Jan Hubicka <jh@suse.cz>
185 * cp/decl.c (start_method): Set DECL_NO_INLINE_WARNING_P.
187 2008-09-16 Jakub Jelinek <jakub@redhat.com>
190 * semantics.c (finish_compound_literal): Return error_mark_node if
194 * lex.c (init_reswords): Don't populate ridpointers for D_CONLY
197 2008-09-15 Aldy Hernandez <aldyh@redhat.com>
199 * decl.c (duplicate_decls): Call error_at.
200 (grokfndecl): New location argument. Use location if available.
201 (grokdeclarator): Pass declarator location to grokfndecl.
202 * cp-tree.h (struct cp_declarator): Update comment for id_loc.
203 * decl2.c (check_classfn): Use error_at.
204 * parser.c (cp_parser_init_declarator): Set function_start_locus
206 (cp_parser_member_declaration): Set id_loc for function declarators.
208 2008-09-09 Jan Hubicka <jh@suse.cz>
211 * pt.c (tsubst_decl): Do not copy DECL_STRUCT_FUNCTION pointer.
213 2008-09-09 Jakub Jelinek <jakub@redhat.com>
216 * tree.c (array_type_nelts_top): Add size_one_node instead of
219 2008-09-09 Jason Merrill <jason@redhat.com>
222 * pt.c (tsubst_copy) [PARM_DECL]: Don't abort if the parm has
225 2008-09-09 Jakub Jelinek <jakub@redhat.com>
228 * decl.c (build_enumerator): Handle previous value's DECL_INITIAL
229 being error_operand_p. Don't clear value if it was error_mark_node.
231 2008-09-09 Paolo Bonzini <bonzini@gnu.org>
233 * cp-objcp-common.h (LANG_HOOKS_EXPAND_DECL): Remove.
234 * cp-tree.h: Don't mention DECL_ANON_UNION_ELEMS.
235 * semantics.c (anon_aggr_type_p): Remove.
237 2008-09-06 Jason Merrill <jason@redhat.com>
240 * parser.c (cp_parser_parameter_declaration_list): Process the
241 PARM_DECLs as we go and push them. Return a TREE_LIST.
242 (cp_parser_parameter_declaration_clause): Return a TREE_LIST.
243 (cp_parser_direct_declarator): Create a binding level and
244 suppress deprecated warnings in the parameter list.
245 (make_call_declarator): PARMS is now a tree.
246 * cp-tree.h (struct cp_declarator): Function parms are now a tree.
247 * decl.h (enum deprecated_states, deprecated_state): Move here.
249 (type_is_deprecated): New fn.
250 (grokparms): PARMLIST is a tree now. Warn about parms that
251 use deprecated types.
252 * mangle.c (write_expression): Handle PARM_DECL, CALL_EXPR and
254 * pt.c (tsubst) [DECLTYPE_TYPE]: Set skip_evaluation.
255 (tsubst_copy) [PARM_DECL]: Handle a PARM_DECL used outside of a
257 * name-lookup.c (pushtag): Look through function parameter scopes.
258 (pushdecl_maybe_friend): Don't set DECL_CONTEXT on a PARM_DECL
259 when we're parsing a function declarator.
261 2008-09-05 Douglas Gregor <doug.gregor@gmail.com>
264 * tree.c (cp_build_qualified_type_real): Deal with sharing of
265 TYPE_LANG_SPECIFIC in the canonical types of pointer-to-method
268 2008-09-04 Ian Lance Taylor <iant@google.com>
270 * parser.c (check_no_duplicate_clause): Change code parameter to
271 enum omp_clause_code.
273 2008-09-03 Jakub Jelinek <jakub@redhat.com>
276 * decl.c (cp_finish_decl): Only set
277 DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P if decl is VAR_DECL.
280 * cp-tree.h (defer_mark_used_calls, deferred_mark_used_calls): New
282 * decl2.c (mark_used): If defer_mark_used_calls, push decl into
283 deferred_mark_used_calls vector and exit early.
284 * decl.c (defer_mark_used_calls, deferred_mark_used_calls): New
286 (finish_function): Set defer_mark_used_calls for the duration of the
287 function. Call mark_used on any queued decls.
289 2008-09-02 Jason Merrill <jason@redhat.com>
292 * call.c (build_over_call): Make =delete work with SFINAE.
293 * class.c (resolve_address_of_overloaded_function): Likewise.
295 * cp-tree.h (struct lang_decl_flags): Rename threadprivate_p to
296 threadprivate_or_deleted_p.
297 (CP_DECL_THREADPRIVATE_P): Adjust.
298 (DECL_DELETED_FN): Likewise.
299 (SD_UNINITIALIZED, SD_INITIALIZED, SD_DEFAULTED): New macros.
300 (SD_DELETED): New macro.
301 * parser.c (cp_parser_init_declarator): Use them.
302 * decl.c (start_decl): Use them.
304 * decl2.c (mark_used): Give =deleted error even in sizeof.
306 * typeck2.c (check_narrowing): Downgrade narrowing error to
309 2008-09-02 Aldy Hernandez <aldyh@redhat.com>
311 * typeck.c (build_array_ref): Use new location argument.
312 * class.c (build_vtbl_ref_1): Pass location to build_array_ref.
313 * call.c (build_new_op): Same.
314 * decl2.c (grok_array_decl): Same.
315 * cp-tree.h (build_array_ref): Add location argument to prototype.
317 2008-09-01 Aldy Hernandez <aldyh@redhat.com>
319 * typeck.c (build_x_indirect_ref): Add location argument.
320 * class.c (build_base_path): Pass location to build_indirect_ref.
321 * pt.c (tsubst_copy_and_build): Pass location to
322 finish_label_address_expr.
323 * parser.c (cp_parser_unary_expression): Same.
325 2008-08-31 Jason Merrill <jason@redhat.com>
327 Implement late-specified return type using 'auto'.
328 * cp-tree.h (struct cp_declarator): Add late_return_type field to
330 * parser.c (cp_parser_late_return_type_opt): New fn.
331 (cp_parser_direct_declarator): Use it.
332 (make_call_declarator): Put it in the declarator.
333 * decl.c (grokdeclarator): Splice in late-specified return type.
334 * pt.c (splice_late_return_type): New fn.
336 2008-08-29 Michael Meissner <gnu@the-meissners.org>
338 * decl.c (builtin_function_1): Take a bool argument to decide
339 whether to use pushdecl or pushdecl_top_level.
340 (duplicate_decls): Copy function specific target and optimization
341 options on duplicate declarations.
342 (cxx_builtin_function): Update builtin_function_1 call.
343 (cxx_builtin_function_ext_scope): New function, guarantee that the
344 declaration is done at global scope.
346 * cp-objcp-common.h (LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE): New
347 macro, define builtin function hook for delayed machine specific
350 * cp-tree.h (cxx_builtin_function_ext_scope): Add declaration.
352 2008-08-30 Jason Merrill <jason@redhat.com>
355 * pt.c (dependent_type_p): Don't abort on auto outside of a template.
357 2008-08-29 Jason Merrill <jason@redhat.com>
359 Implement C++0x 'auto' semantics.
360 * decl.c (start_decl_1): Don't complain about auto being incomplete.
361 (cp_finish_decl): Deduce auto.
362 * init.c (build_new): Handle 'new auto'.
363 * typeck2.c (cxx_incomplete_type_diagnostic): Give a different
364 message for auto than for normal template type parms.
365 * pt.c (type_dependent_expression_p): Handle { }.
366 (make_auto): New function.
367 (listify_autos): New function.
368 (do_auto_deduction): New function.
369 (is_auto): New function.
370 (type_uses_auto): New function.
371 * cp-tree.h: Declare them.
372 * parser.c (cp_parser_decl_specifier_seq): In C++0x mode, don't
373 treat auto as a declspec.
374 (cp_parser_simple_type_specifier): It's a type-specifier.
376 2008-08-29 Mark Mitchell <mark@codesourcery.com>
378 * mangle.c (write_type): Add target-specific manglings for
379 non-fundamental types to the substitution table.
382 2008-08-29 Jakub Jelinek <jakub@redhat.com>
386 * name-lookup.c (do_using_directive, cp_emit_debug_info_for_using):
387 Adjust debug_hooks->imported_module_or_decl callers.
389 2008-08-29 Jan Hubicka <jh@suse.cz>
391 * cp-gimplify.c (cp_gimplify_expr): Add PRED_CONTINUE heuristic.
393 2008-08-28 Paolo Carlini <paolo.carlini@oracle.com>
396 * decl.c (reshape_init_r): Check init for error_mark_node.
398 2008-08-27 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
401 * semantics.c (maybe_convert_cond): Call verify_sequence_points.
402 (finish_return_stmt): Likewise.
403 (finish_switch_condition): Likewise.
405 2008-08-27 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
407 * cp-tree.h: Fix #error directive.
409 2008-08-26 Douglas Gregor <doug.gregor@gmail.com>
411 * typeck.c (type_after_usual_arithmetic_conversions): Don't do the
412 usual arithmetic conversions on scoped enumeration types.
413 (common_type): Ditto.
414 (default_conversion): Don't perform integral promotions on scoped
416 (build_array_ref): Scoped enumeration types can't be used as
418 * decl.c (start_enum): If building a C++0x scoped enumeration,
419 enter its scope. If provided with an underlying type, check that
420 underlying type and set up the enumeration type accordingly.
421 (finish_enum): Only compute an underlying type if the underlying
422 type isn't already fixed, and only convert the enumerator values
423 now if we've just computed the underlying type. Finish the scope
424 of C++0x scoped enumerations.
425 (build_enumerator): For enumerations with a fixed underlying type,
426 check the enumerator values when the enumerator is defined.
427 (lookup_enumerator): New.
428 * call.c (standard_conversion): Don't allow assignment from
429 integers to scoped enumeration types, even with -fpermissive.
430 Don't convert from scoped enumerations to bool or any arithmetic
432 (build_conditional_expr): Don't per the usual arithmetic
433 conversions for scoped enumeration types.
434 (convert_like_real): Check complain to see if we should
436 * error.c (class_key_or_enum_as_string): Print scoped enums.
437 * cp-tree.h (MAYBE_CLASS_TYPE_P): Check CLASS_TYPE_P, not
439 (INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P): New.
440 (SCOPED_ENUM_P): New.
441 (UNSCOPED_ENUM_P): New.
442 (SET_SCOPED_ENUM_P): New.
443 (ENUM_UNDERLYING_TYPE): New.
444 * pt.c (lookup_template_class): Update the instantiation of enum
445 types to deal with C++0x scoped enumerations and underlying
447 * name-lookup.c (begin_scope): Deal with scoped enumeration
449 (lookup_qualified_name): Deal with lookup into enumeration types.
450 * name-lookup.h (enum scope_kind): Add sk_scoped_enum.
451 * parser.c (cp_parser_class_or_namespace_name): Rename to...
452 (cp_parser_qualifying_entity): ... this. Also, in C++0x mode,
453 parse a type-name that can be an enumeration type.
454 (cp_parser_nested_name_specifier_opt): Update with C++0x grammar.
455 (cp_parser_elaborated_type_specifier): Parse the
456 optional `struct' or `class' following enum (in C++0x).
457 (cp_parser_enum_specifier): Parse C++0x scoped enumerations and
460 2008-08-21 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
462 * typeck.c: Update all calls to pedwarn.
467 * name-lookup.c: Likewise.
468 * parser.c: Likewise.
470 2008-08-20 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
473 * parser.c (cp_parser_omp_for_loop): Handle parenthesized
476 2008-08-20 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
478 * parser.c: Update all calls to inform.
479 * typeck.c: Likewise.
483 * method.c: Likewise.
484 * friend.c: Likewise.
485 * typeck2.c: Likewise.
487 * name-lookup.c: Likewise.
490 2008-08-19 Jakub Jelinek <jakub@redhat.com>
493 * error.c (cp_print_error_function): Deal with recursive BLOCK trees.
495 2008-08-18 Tomas Bily <tbily@suse.cz>
497 * tree.c (cp_tree_equal): Use CONVERT_EXPR_CODE_P.
499 2008-08-18 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
501 * typeck.c: Update all callers of permerror.
506 * except.c: Likewise.
508 * typeck2.c: Likewise.
510 * semantics.c: Likewise.
511 * name-lookup.c: Likewise.
514 * parser.c: Likewise.
516 2008-08-14 Paolo Carlini <paolo.carlini@oracle.com>
519 * pt.c (check_template_shadow): Change to return a bool.
520 * name-lookup.c (push_class_level_binding): Early return if
521 check_template_shadow returns false.
522 * cp-tree.h (check_template_shadow): Adjust declaration.
524 2008-08-14 Paolo Carlini <paolo.carlini@oracle.com>
527 * decl.c (grokdeclarator): In case of extern and initializer, return
528 error_mark_node after the error.
530 2008-08-13 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
533 * decl.c (grokfndecl): Call check_main_parameters_type only if
536 2008-08-12 Paolo Carlini <paolo.carlini@oracle.com>
539 * parser.c (cp_parser_class_head): Early return error_mark_node in
540 case of global qualification of class name or qualified name that
541 does not name a class.
543 2008-08-09 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
546 * cvt.c (ocp_convert): Warn for out-of-range conversions to enum.
548 2008-08-09 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
551 * cp-tree.h (struct diagnostic_context, struct diagnostic_info):
552 Delete forward declarations. Check that toplev.h has not been
553 included before this file. Include toplev.h and diagnostic.h.
554 * error.c (cp_cpp_error): Use DK_PEDWARN.
555 (cxx_incomplete_type_diagnostic): Update declaration.
556 (cxx_incomplete_type_error): Use DK_ERROR.
557 * typeck2.c (cxx_incomplete_type_diagnostic): Take a diagnostic_t
558 as argument. Use emit_diagnostic.
559 (cxx_incomplete_type_error): Use DK_ERROR.
560 (add_exception_specifier): Use diagnostic_t instead of custom
562 * typeck.c (complete_type_or_else): Update call to
563 cxx_incomplete_type_diagnostic.
564 * init.c (build_delete): Likewise.
565 * call.c (diagnostic_fn_t): Remove unused typedef.
566 (build_temp): Pass a pointer to diagnostic_t.
567 (convert_like_real): Use emit_diagnostic.
568 (joust): Check return value of warning before giving informative
570 * friend.c (do_friend): Check return value of warning
571 before giving informative note.
572 * parser.c (cp_parser_template_id): Likewise.
574 2008-08-09 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
577 * class.c (check_bases_and_members): Warn with -Wuninitialized
580 2008-08-08 Volker Reichelt <v.reichelt@netcologne.de>
583 * decl.c (xref_basetypes): Check base for MAYBE_CLASS_TYPE_P,
584 and make sure it is not a union.
586 2008-08-07 H.J. Lu <hongjiu.lu@intel.com>
588 * semantics.c (finish_decltype_type): Initialize type.
590 2008-08-07 Douglas Gregor <doug.gregor@gmail.com>
592 * semantics.c (finish_decltype_type): Handle calls to function
593 pointers and references to functions properly.
595 2008-08-06 Douglas Gregor <doug.gregor@gmail.com>
598 * parser.c (cp_parser_template_argument): Don't assume that '>>'
599 following a type-id is an error when in C++0x mode.
601 2008-08-06 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
604 * decl.c (grokdeclarator): Use explicit location with permerror_at.
606 2008-08-06 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
609 * typeck.c (cp_build_binary_op): Move code to c-common.c.
611 2008-08-05 Jason Merrill <jason@redhat.com>
614 * decl.c (build_ptrmemfunc_type): Don't require structural
615 comparison of PMF types.
616 * tree.c (cp_build_qualified_type_real): Don't clear
617 a valid TYPE_PTRMEMFUNC_TYPE.
618 * typeck.c (cp_build_unary_op): Still do build_ptrmemfunc in
621 2008-08-04 Jason Merrill <jason@redhat.com>
624 * typeck2.c (check_narrowing): Allow narrowing conversion
625 from an explicit floating-point constant.
628 * pt.c (tsubst_decl): Leave DECL_INITIAL set on deleted
631 2008-08-04 Simon Baldwin <simonb@google.com>
634 * parser.c (cp_parser_elaborated_type_specifier): Warn only when
635 the declaration's id is followed by a semicolon.
637 2008-07-31 Jakub Jelinek <jakub@redhat.com>
640 * rtti.c (get_tinfo_decl_dynamic, get_typeid): Call
641 complete_type_or_else even for UNKNOWN_TYPE to get diagnostics.
643 2008-07-31 Jason Merrill <jason@redhat.com>
646 * init.c (build_new_1): Don't convert pointer to the data type
647 until we're actually going to treat it as that type.
650 * tree.c (build_aggr_init_expr): Split out...
651 (build_cplus_new): ...from here.
652 (stabilize_init): Don't mess with AGGR_INIT_EXPR either.
653 * init.c (build_new_1): new T() means value-initialization,
654 not default-initialization.
655 (build_vec_init): Likewise.
656 (build_value_init_1): Use build_aggr_init_expr.
658 2008-07-30 Dodji Seketeli <dseketel@redhat.com>
661 * decl2.c (fix_temporary_vars_context_r): New function.
662 (one_static_initialization_or_destruction): Make sure temporary
663 variables part of the initialiser have their DECL_CONTEXT()
666 2008-07-30 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
669 * typeck.c (build_binary_op): Encapsulate code into
672 2008-07-29 Jakub Jelinek <jakub@redhat.com>
675 * tree.c (cplus_array_hash, build_cplus_array_type_1): Hash on
676 TYPE_UID instead of pointers.
678 2008-07-29 Jan Hubicka <jh@suse.cz>
680 * optimize.c (maybe_clone_body): Remove DECL_INLINE.
681 * decl.c (duplicate_decls): Likewise.
682 (grokfndecl): Likewise.
683 (start_method): Likewise.
684 * method.c (make_thunk, make_alias_for, implicitly_declare_fn):
686 * pt.c (register_specialization, regenerate_decl_from_template):
688 * decl2.c (grokfield): Likewise.
690 2008-07-29 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
693 * decl.c (duplicate_decls): Merge USED flags.
695 2008-07-27 Jason Merrill <jason@redhat.com>
698 * decl.c (reshape_init_r): Allow C++0x initializer lists.
700 2008-07-28 Richard Guenther <rguenther@suse.de>
702 Merge from gimple-tuples-branch.
704 2008-07-22 Aldy Hernandez <aldyh@redhat.com>
706 * cp-gimplify.c (gimplify_if_stmt): Set location on newly created
709 2008-07-18 Jakub Jelinek <jakub@redhat.com>
711 * decl.c (finish_function): Call gimple_body after cp_genericize.
713 2008-07-18 Aldy Hernandez <aldyh@redhat.com>
715 * optimize.c: Include gimple.h instead of tree-gimple.h.
716 * Make-lang.in (cp-gimplify.o): Depend on tree-iterator.h.
717 * cp-gimplify.c: Rename tree-gimple.h to gimple.h. Include
720 2008-07-16 Jakub Jelinek <jakub@redhat.com>
722 * optimize.c (maybe_clone_body): Clear DECL_SAVED_TREE for the clone.
724 2008-07-14 Jakub Jelinek <jakub@redhat.com>
726 * cp-gimplify.c (cp_gimplify_expr): Update comment.
728 2008-07-14 Aldy Hernandez <aldyh@redhat.com>
730 * cp-tree.h (union lang_tree_node): Rename GENERIC_NEXT to
732 * cp-gimplify.c (cxx_omp_clause_apply_fn): Rename
733 GIMPLE_MODIFY_STMT to MODIFY_EXPR.
734 (cxx_omp_clause_copy_ctor): Same.
735 (cxx_omp_clause_assign_op): Same.
737 2008-05-28 Jakub Jelinek <jakub@redhat.com>
739 * cp-gimplify.c (cp_gimplify_omp_for): Add pre_p argument. Tuplify.
740 (cp_gimplify_expr): Adjust caller.
742 2008-05-11 Doug Kwan <dougkwan@google.com>
744 * init.c (build_vec_delete): Add type conversion for argument
745 0 of POINTER_PLUS_EXPR.
747 2008-04-29 Doug Kwan <dougkwan@google.com>
749 * decl2 (File): Include "gimple.h"
750 (cp_write_global_declarations): Use gimple_body instead of
752 * Make-lang.in (cp/decl2.o): Add $(GIMPLE_H)
754 2008-04-10 Diego Novillo <dnovillo@google.com>
756 http://gcc.gnu.org/ml/gcc-patches/2008-04/msg00913.html
758 * optimize.c (maybe_clone_body): Re-enable call to
760 * cp-gimplify.c (cp_gimplify_omp_for): Mark disabled
761 code with call to gimple_unreachable.
762 (cp_genericize): Fix handling of clone bodies.
764 2008-04-04 Diego Novillo <dnovillo@google.com>
766 http://gcc.gnu.org/ml/gcc-patches/2008-04/msg00413.html
768 * optimize.c (maybe_clone_body): Re-enable.
770 2008-02-19 Diego Novillo <dnovillo@google.com>
771 Oleg Ryjkov <olegr@google.com>
773 http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00804.html
775 * cp-gimplify.c (gimplify_for_stmt): Change gimple_seq
776 argument to gimple_seq *. Update all users.
777 (gimplify_must_not_throw_expr): Likewise.
779 2008-02-04 Oleg Ryjkov <olegr@google.com>
781 * except.c: Include gimple.h
782 (cp_protect_cleanup_actions): Convert to tuples.
783 * Make-lang.in (cp/except.o): Add dependency on gimple.h
785 2007-11-10 Aldy Hernandez <aldyh@redhat.com>
787 * cp-gimplify.c (gimplify_cp_loop): Call tree_annotate_all_with_locus
788 instead of annotating each block manually.
790 2007-10-30 Aldy Hernandez <aldyh@redhat.com>
792 * cp-gimplify.c (gimplify_cp_loop): Tuplify.
793 (gimplify_for_stmt): Same.
794 (gimplify_switch_stmt): Same.
795 (cp_gimplify_expr): [FOR_STMT]: Do not call gimplify_for_stmt. Return
797 [WHILE_STMT]: Return GS_OK.
799 [CONTINUE_STMT]: Same.
801 (cp_genericize): Set gimple_body() of cloned functions when needed.
803 2007-10-29 Aldy Hernandez <aldy@quesejoda.com>
805 * cp-gimplify.c: Move build_gimple_eh_filter_tree here.
806 (cp_gimplify_init_expr): Convert to tuples.
807 (gimplify_must_not_throw_expr): Make function return a
808 gimplify_status and convert to tuples.
810 2007-10-18 Aldy Hernandez <aldy@quesejoda.com>
812 * cp-gimplify.c (genericize_try_block): Enable and do not call
814 (genericize_catch_block): Same.
815 (genericize_eh_spec_block): Same.
816 Rename gimple_build_eh_filter_tree to build_gimple_eh_filter_tree.
817 (cp_gimplify_expr): Enable TRY_BLOCK, HANDLER, and EH_SPEC_BLOCK.
819 2007-10-16 Aldy Hernandez <aldy@quesejoda.com>
821 * optimize.c (maybe_clone_body): Comment out call to clone_body.
822 * decl.c (finish_function): Use gimple_body instead of
824 * cp-tree.h (cp_gimplify_expr): Last 2 arguments are sequences.
825 * cp-gimplify.c (genericize_try_block): Comment out.
826 (genericize_catch_block): Same.
827 (genericize_eh_spec_block): Same.
828 (gimplify_cp_loop): Comment out calls to gimplify_stmt.
829 (gimplify_for_stmt): Comment out.
830 (gimplify_switch_stmt): Comment out call to gimplify_stmt.
831 (cp_gimplify_omp_for): Same.
832 (gimplify_must_not_throw_expr): Argument pre_p is a sequence.
833 Comment out call to gimplify_stmt and append_to_statement_list.
834 Rename gimple_build_eh_filter_tree to build_gimple_eh_filter_tree.
835 (cp_gimplify_init_expr): Arguments pre_p and post_p are sequences.
836 (cp_gimplify_expr): Same.
837 Comment out calls to genericize_*_block. Comment out call to
840 2008-07-27 H.J. Lu <hongjiu.lu@intel.com>
843 * class.c (type_has_user_provided_default_constructor): Handle
846 2008-07-27 Paolo Carlini <paolo.carlini@oracle.com>
848 * decl.c (push_library_fn): Add a parameter for the exceptions that
849 the function may throw.
850 (push_void_library_fn, push_throw_library_fn, expand_static_init):
852 (build_library_fn): Change to static.
853 * cp-tree.h: Adjust declarations.
854 * except.c (declare_nothrow_library_fn): New.
855 (do_get_exception_ptr, do_begin_catch, do_free_exception,
856 do_allocate_exception): Use the latter, adjust the declarations
857 (ie, add empty exception-specification), consistently with the
858 actual implementation in libsupc++.
860 2008-07-25 Jan Hubicka <jh@suse.cz>
862 * typeck.c (inline_conversion): Remove.
863 (cp_build_function_call): Do not use inline_conversion.
864 * decl.c (duplicate_decls): Do not insist on inline being declared
866 (start_cleanup_fn): Do not assume that INLINE flags prevent function
867 from being output. We now remove static functions always.
868 (finish_function): Do return warning on all static functions.
869 * call.c (build_over_call): Do not use inline_conversion.
870 * cp-tree.h (possibly_inlined_p): Declare.
871 (inline_conversion): Remove.
872 * pt.c (instantiate_decl): Use possibly_inlined_p predicate.
873 * decl2.c (cp_write_global_declarations): Likewise.
874 (mark_used): Likewise.
875 (possibly_inlined_p): New functions.
877 2008-07-25 Jason Merrill <jason@redhat.com>
879 * class.c (type_has_user_provided_default_constructor): Handle
882 2008-07-23 Jan Hubicka <jh@suse.cz>
884 * decl.c (duplicate_decls): Update comment and unit-at-a-time.
885 (grogfndecl): Drop flag_inline_trees code.
886 * pt.c (instantiate_decl): Drop flag_iline_trees code.
887 * lex.c (cxx_init): Do not set unit-at-a-time.
889 2008-07-23 Jason Merrill <jason@redhat.com>
891 * mangle.c (write_unqualified_name): Avoid infinite recursion when
892 trying to mangle a decl with no name.
894 Implement defaulted/deleted functions as per N2346
895 * cp-tree.h (struct lang_decl_flags): Add defaulted_p bitfield.
896 (DECL_DELETED_FN): New macro.
897 (DECL_DEFAULTED_FN): New macro.
898 * class.c (user_provided_p): New fn.
899 (defaultable_fn_p): New fn.
900 (type_has_user_provided_constructor): New fn.
901 (type_has_user_provided_default_constructor): New fn.
902 (check_methods): A defaulted fn is still trivial.
903 (check_bases_and_members): Likewise.
904 * decl.c (grok_special_member_properties): Likewise.
905 (duplicate_decls): Complain about redeclaring a function as deleted.
906 (start_decl): initialized==2 means deleted.
907 (cp_finish_decl): Handle deleted/defaulted semantics.
908 * decl2.c (grokfield): Likewise.
909 (mark_used): Check DECL_DEFAULTED_FN instead of DECL_ARTIFICIAL.
910 Complain about using a deleted fn.
911 * init.c (build_value_init_1): Use type_has_user_provided_constructor.
912 (perform_member_init): Check for a user-provided default constructor
913 even if TYPE_NEEDS_CONSTRUCTING.
914 (build_new_1): Likewise.
915 * call.c (build_over_call): Don't call mark_used twice.
916 * method.c (implicitly_declare_fn): Set DECL_DEFAULTED_FN.
917 * search.c (check_final_overrider): Check for deleted mismatch.
918 * parser.c (cp_parser_init_declarator): Tell start_decl about =delete.
919 (cp_parser_pure_specifier): Handle =default and =delete.
921 * error.c (maybe_warn_cpp0x): Suggest -std=gnu++0x as well.
923 2008-07-23 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
926 * typeck.c: All calls to pedwarn changed.
927 * decl.c: All calls to pedwarn changed.
928 * call.c: All calls to pedwarn changed.
929 * error.c: All calls to pedwarn changed.
930 * typeck2.c: All calls to pedwarn changed.
931 * pt.c: All calls to pedwarn changed.
932 * name-lookup.c: All calls to pedwarn changed.
933 * parser.c: All calls to pedwarn changed.
935 2008-07-21 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
937 * call.c: Fix comment typos.
939 * cp-tree.h: Likewise.
940 * cxx-pretty-print.c: Likewise.
943 * name-lookup.c: Likewise.
944 * operators.def: Likewise.
945 * parser.c: Likewise.
948 * typeck.c: Likewise.
950 2008-07-21 Paolo Carlini <paolo.carlini@oracle.com>
954 * semantics.c (classtype_has_nothrow_assign_or_copy_p): Only check
955 copy constructors and copy assignment operators proper.
957 2008-07-21 Rafael Ávila de Espíndola <espindola@google.com>
959 * parser.c (cp_token): Remove in_system_header.
960 (eof_token): Remove in_system_header.
961 (cp_lexer_get_preprocessor_token): Don't set in_system_header.
962 (cp_lexer_set_source_position_from_token): Don't set in_system_header.
963 (cp_parser_member_declaration): Use in_system_header_at.
964 * pt.c (lookup_template_class): Don't set DECL_IN_SYSTEM_HEADER.
965 (pop_tinst_level): Don't set in_system_header.
966 (instantiate_class_template): Don't set in_system_header.
967 (instantiate_decl): Don't set in_system_header.
968 (instantiate_pending_templates): Don't set in_system_header.
970 2008-07-21 Paolo Carlini <paolo.carlini@oracle.com>
973 * semantics.c (classtype_has_nothrow_assign_or_copy_p): Use
974 TYPE_NOTHROW_P, not TREE_NOTHROW.
975 (trait_expr_value): Likewise.
977 2008-07-18 Dodji Seketeli <dseketel@redhat.com>
980 * call.c (convert_like_real): Don't take the error code path
981 when a rvalue or base conversion has the bad_p field set.
983 2008-07-18 Kris Van Hees <kris.van.hees@oracle.com>
985 * rtti.c (emit_support_tinfos): Add char16_type_node and
987 * typeck2.c (digest_init): Support char16_t and char32_t.
989 2008-07-18 Kavih R. Ghazi <ghazi@caip.rutgers.edu>
991 * cvt.c (convert_to_void): Avoid C++ keywords.
992 * decl.c (walk_namespaces_r, wrapup_globals_for_namespace):
994 * friend.c (is_friend): Likewise.
995 * init.c (perform_member_init): Likewise.
996 * mangle.c (write_template_prefix, write_template_template_param):
998 * name-lookup.c (do_namespace_alias, do_using_directive,
999 parse_using_directive, ambiguous_decl, arg_assoc): Likewise.
1000 * parser.c (cp_parser_template_id, cp_parser_namespace_definition,
1001 cp_parser_objc_typename, cp_parser_objc_method_keyword_params):
1003 * pt.c (is_specialization_of_friend, lookup_template_class,
1004 push_tinst_level, instantiate_class_template,
1005 tsubst_copy_and_build): Likewise.
1006 * tree.c (add_stmt_to_compound): Likewise.
1007 * typeck.c (finish_class_member_access_expr): Likewise.
1009 2008-07-17 Julian Brown <julian@codesourcery.com>
1010 Mark Mitchell <mark@codesourcery.com>
1012 * decl2.c (determine_visibility): Allow target to override
1013 visibility of class data.
1015 2008-07-17 Paolo Carlini <paolo.carlini@oracle.com>
1018 * semantics.c (trait_expr_value): Update __has_trivial_destructor
1019 semantics to the current WP (N2691).
1021 2008-07-16 Dodji Seketeli <dseketel@redhat.com>
1024 * name-lookup.c (lookup_extern_c_fun_binding_in_all_ns): New function.
1025 (pushdecl_maybe_friend): Check if a redeclaration of extern C function
1026 complies with exception specification constraints.
1028 2008-07-14 Jason Merrill <jason@redhat.com>
1030 * lex.c (init_reswords): Always set D_OBJC.
1032 2008-07-11 Tom Tromey <tromey@redhat.com>
1033 Ian Lance Taylor <iant@google.com>
1035 * lex.c (struct resword, reswords): Don't define.
1036 (D_EXT, D_ASM, D_OBJC, D_CXX0X): Don't define.
1037 (init_reswords): Clarify mask code. Use c_common_reswords rather
1040 2008-07-11 Dodji Seketeli <dseketel@redhat.com>
1043 * decl.c (grokdeclarator): Warn about initializing variables
1044 of storage class 'extern' only after the type of the declarator
1045 has been properly computed.
1047 2008-07-11 Dodji Seketeli <dseketel@redhat.com>
1050 * cp-tree.h (struct cp_decl_specifier_seq): Add a location field. It
1051 carries the location of the primary type.
1052 * parser.c (cp_parser_check_type_definition): Update documentation.
1053 (cp_parser_check_for_definition_in_return_type,
1054 cp_parser_check_for_invalid_template_id,
1055 cp_parser_set_decl_spec_type,
1056 cp_parser_check_for_definition_in_return_type,
1057 cp_parser_diagnose_invalid_type_name,
1058 cp_parser_new_expression, cp_parser_explicit_instantiation,
1059 cp_parser_type_specifier, cp_parser_simple_type_specifier,
1060 cp_parser_omp_for_loop, cp_parser_pragma): Use location in error
1063 2008-07-11 Dodji Seketeli <dseketel@redhat.com>
1067 * semantic.c (qualified_name_lookup_error, finish_id_expression):
1068 Add a location_t parameter so that
1069 error message can have a more accurate location.
1070 * cp-tree.h: Updated prototype
1071 * pt.c (tsubst_qualified_id): Use location in error messages.
1072 * parser.c (cp_parser_postfix_expression,
1073 cp_parser_objc_statement, cp_parser_trait_expr,
1074 cp_parser_token_is_class_key,
1075 cp_parser_uncommitted_to_tentative_parse_p,
1076 cp_parser_check_for_invalid_template_id, cp_parser_is_string_literal,
1077 cp_parser_error, cp_parser_name_lookup_error,
1078 cp_parser_simulate_error, cp_parser_check_decl_spec,
1079 cp_parser_check_decl_spec, cp_parser_non_integral_constant_expression,
1080 cp_parser_diagnose_invalid_type_name,
1081 cp_parser_parse_and_diagnose_invalid_type_name,
1082 cp_parser_require_pragma_eol, cp_parser_make_typename_type,
1083 cp_parser_string_literal, cp_parser_primary_expression,
1084 cp_parser_primary_expression, cp_parser_unqualified_id,
1085 cp_parser_nested_name_specifier_opt, cp_parser_postfix_expression,
1086 cp_parser_postfix_dot_deref_expression, cp_parser_new_expression,
1087 cp_parser_direct_new_declarator, cp_parser_builtin_offsetof,
1088 cp_parser_label_for_labeled_statement, cp_parser_statement_seq_opt,
1089 cp_parser_jump_statement, cp_parser_block_declaration,
1090 cp_parser_simple_declaration, cp_parser_decl_specifier_seq,
1091 cp_parser_function_specifier_opt, cp_parser_decltype,
1092 cp_parser_mem_initializer_list, cp_parser_mem_initializer,
1093 cp_parser_mem_initializer_id, cp_parser_template_parameter,
1094 cp_parser_type_parameter, cp_parser_template_id,
1095 cp_parser_template_name, cp_parser_template_argument): Likewise.
1097 2008-07-09 Paolo Carlini <paolo.carlini@oracle.com>
1100 * pt.c (tsubst_function_type): Remove warning for type qualifiers
1101 on function return type.
1103 2008-07-09 Paolo Carlini <paolo.carlini@oracle.com>
1106 * pt.c (tsubst_function_type): Don't warn for type qualifiers
1107 on function return type in case of system header.
1109 2008-07-09 Raksit Ashok <raksit@google.com>
1111 * parser.c (cp_parser_postfix_expression): New warning based on flag
1112 warn_disallowed_functions.
1114 2008-07-08 Simon Martin <simartin@users.sourceforge.net>
1117 * decl.c (grokdeclarator): Reset storage_class and staticp for friend
1118 functions declared with a storage class qualifier.
1120 2008-07-03 Richard Guenther <rguenther@suse.de>
1123 * typeck.c (cp_build_function_call): Move code to verify
1124 builtin function arguments ...
1125 * call.c (build_cxx_call): ... here.
1127 2008-07-02 Jason Merrill <jason@redhat.com>
1129 * Make-lang.in (cp/typeck2.o): Add $(REAL_H) dependency.
1131 Implement WG21 N2672, Initializer List proposed wording
1132 * cp-tree.h (enum cp_tree_index): Add CPTI_INIT_LIST_TYPE.
1133 (struct lang_type_class): Add has_list_ctor bitfield.
1134 (TYPE_HAS_LIST_CTOR): New macro.
1135 (BRACE_ENCLOSED_INITIALIZER_P): Expect init_list_type_node.
1136 (CONSTRUCTOR_IS_DIRECT_INIT): New macro.
1137 (LOOKUP_NO_NARROWING): New macro.
1138 (LOOKUP_NO_COPY_CTOR_CONVERSION): New macro.
1139 * parser.c (cp_parse_braced_list): Split out from...
1140 (cp_parser_initializer_clause): ...here.
1141 (cp_parser_postfix_expression): Build up CONSTRUCTOR for compound
1143 (cp_lexer_next_token_is_not_keyword): New fn.
1144 (cp_parser_parenthesized_expression_list): Handle { }.
1145 (cp_parser_new_expression, cp_parser_new_initializer): Likewise.
1146 (cp_parser_assignment_expression, cp_parser_condition): Likewise.
1147 (cp_parser_jump_statement, cp_parser_simple_declaration): Likewise.
1148 (cp_parser_mem_initializer, cp_parser_init_declarator): Likewise.
1149 (cp_parser_initializer, cp_parser_functional_cast): Likewise.
1150 (cp_parser_omp_for_loop, cp_parser_cache_group): Likewise.
1151 (cp_parser_save_member_function_body): Likewise.
1152 * call.c (conversion_kind): Add ck_list, ck_aggr.
1153 (struct conversion): Add check_narrowing bitfield, conversion list.
1154 (build_list_conv): New fn.
1155 (build_aggr_conv): New fn.
1156 (implicit_conversion): Call them.
1157 (standard_conversion): Set check_narrowing if appropriate.
1158 (add_function_candidate): Handle LOOKUP_NO_COPY_CTOR_CONVERSION.
1159 (build_user_type_conversion_1): When converting from an init list,
1160 we allow additional conversions except when calling a copy ctor.
1161 (convert_like_real): Calling an explicit ctor for an init list is
1162 ill-formed. Handle ck_list and ck_addr. Check narrowing.
1163 (build_new_method_call): If CONSTRUCTOR_IS_DIRECT_INIT is set and
1164 class doesn't have a list ctor, break the {} into a TREE_LIST.
1165 (compare_ics): ck_list is better than other UDCs.
1166 (set_up_extended_ref_temp): Split out from initialize_reference.
1167 (is_std_init_list): New fn.
1168 (is_list_ctor): New fn.
1169 * decl.c (cxx_init_decl_processing): Create init_list_type_node.
1170 (reshape_init_array_1): Pass it to build_constructor.
1171 (reshape_init_class): Ditto.
1172 (initialize_artificial_var): Pass the appropriate type.
1173 (build_aggr_init_full_exprs): Split out from...
1174 (check_initializer): ...here. Handle new semantics.
1175 (build_init_list_var_init): New subroutine of check_initializer.
1176 (grokdeclarator): Converting constructors can have more than one parm.
1177 (grok_special_member_properties): Set TYPE_HAS_LIST_CTOR.
1178 * init.c (expand_default_init): Only do digest_init for aggregates.
1179 * rtti.c (tinfo_base_init): Pass init_list_type_node to
1180 build_constructor_from_list.
1181 (generic_initializer, ptr_initializer): Ditto.
1182 (ptm_initializer, class_initializer): Ditto.
1183 (get_pseudo_ti_init): Ditto.
1184 * error.c (dump_type): Handle init_list_type_node.
1185 (maybe_warn_cpp0x): New fn.
1186 (maybe_varn_variadic_templates): Call it.
1187 * cvt.c (ocp_convert): Handle conversion from { }.
1188 * tree.c (build_array_of_n_type): New fn.
1189 * typeck2.c (store_init_value): Use init_list_type_node.
1190 (digest_init): Likewise.
1191 (check_narrowing): New fn.
1192 * semantics.c: (finish_compound_literal): Take CONSTRUCTOR instead
1193 of vector of constructor elts. Handle non-aggregate types. Make
1194 constant literals static.
1195 * pt.c: (tsubst_copy_and_build): Adjust.
1196 (unify): Handle { }.
1197 * name-lookup.c (arg_assoc_type): Handle init_list_type_node.
1199 2008-07-01 Daniel Jacobowitz <dan@codesourcery.com>
1201 * typeck.c (comp_ptr_ttypes_real): Use vector_targets_convertible_p.
1202 (comp_ptr_ttypes_const): Likewise.
1204 2008-07-01 Andrew Haley <aph@redhat.com>
1206 * decl.c (finish_constructor_body): Don't set the return value of
1207 the constructor if the constructor is that of a Java type.
1209 2008-06-30 Jakub Jelinek <jakub@redhat.com>
1212 * decl2.c (is_late_template_attribute): If the first attribute
1213 argument is IDENTIFIER_NODE, don't consider it when checking
1214 if arguments are value or type dependent.
1216 2008-06-29 Paolo Carlini <paolo.carlini@oracle.com>
1219 * pt.c (do_type_instantiation): In c++0x mode do not warn for
1222 2008-06-29 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1224 * Make-lang.in (cp-warn): Delete $(CXX_COMPAT_WARN).
1226 2008-06-28 Jakub Jelinek <jakub@redhat.com>
1229 * repo.c (repo_emit_p): Put const static data members initialized
1230 by const expr into *.rpo file, just return 2 if IDENTIFIER_REPO_CHOSEN
1233 2008-06-27 Paolo Carlini <paolo.carlini@oracle.com>
1236 * pt.c (do_decl_instantiation): In c++0x mode do not warn for
1239 2008-06-24 Jonathan Wakely <jwakely.gcc@gmail.com>
1242 * typeck.c (cp_build_function_call): Show example syntax in
1245 2008-06-21 Jonathan Wakely <jwakely.gcc@gmail.com>
1247 * typeck.c (composite_pointer_type_r, cxx_sizeof_expr,
1248 cxx_alignof_expr, check_template_keyword, cp_build_binary_op,
1249 pointer_diff, cp_build_unary_op, build_x_compound_expr_from_list,
1250 build_reinterpret_cast_1, cp_build_c_cast, check_return_expr): Change
1251 pedwarn to permerror.
1252 * init.c (perform_member_init, build_new_1, build_new): Likewise.
1253 * decl.c (warn_extern_redeclared_static, duplicate_decls,
1254 * identify_goto, check_previous_goto_1, check_goto, define_label,
1255 check_tag_decl, start_decl, check_class_member_definition_namespace,
1256 grokfndecl, grokdeclarator): Likewise.
1257 * except.c (check_handlers): Likewise.
1258 * typeck2.c (digest_init): Likewise.
1259 * pt.c (check_specialization_namespace,
1260 check_explicit_instantiation_namespace,
1261 maybe_process_partial_specialization, check_explicit_specialization,
1262 convert_template_argument, do_decl_instantiation,
1263 do_type_instantiation, instantiate_decl): Likewise.
1264 * semantics.c (finish_template_type_parm): Likewise.
1265 * name-lookup.c (pushdecl_maybe_friend,
1266 check_for_out_of_scope_variable): Likewise.
1267 * decl2.c (finish_static_data_member_decl, build_anon_union_vars,
1268 coerce_new_type): Likewise.
1269 * parser.c (cp_parser_nested_name_specifier_opt,
1270 cp_parser_mem_initializer, cp_parser_elaborated_type_specifier,
1271 cp_parser_class_head, cp_parser_check_class_key): Likewise.
1272 (cp_parser_parameter_declaration): Check flag_permissive instead of
1273 flag_pedantic_errors.
1274 * call.c (joust): Change pedwarn to warning.
1275 * friend.c (make_friend_class): Likewise.
1277 2008-06-16 Jan Hubicka <jh@suse.cz>
1279 * method.c: Include cgraph.h.
1280 (use_thunk): Use cgraph_add_new_function instead of calling backend
1283 2008-06-15 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
1285 * parser.c: Fix comment typo.
1287 2008-06-14 Simon Martin <simartin@users.sourceforge.net>
1290 * decl2.c (grokbitfield): Receive the list of attributes, pass it to
1291 grokdeclarator and apply it to the created declaration.
1292 * cp-tree.h (grokbitfield): Update prototype.
1293 * parser.c (cp_parser_member_declaration): Don't apply the attributes
1294 since they are now applied in grokbitfield. Adjusted the call to
1296 (cp_parser_objc_class_ivars): Likewise.
1298 2008-06-14 Simon Martin <simartin@users.sourceforge.net>
1301 * class.c (type_requires_array_cookie): Do not consider delete[]
1302 operators with an ellipsis as second argument.
1304 2008-06-09 Jakub Jelinek <jakub@redhat.com>
1307 * semantics.c (stmt_expr_value_expr): Don't crash on empty
1310 2008-06-08 Paolo Carlini <paolo.carlini@oracle.com>
1313 * pt.c (maybe_process_partial_specialization): Check the tree
1314 returned by push_template_decl for error_mark_node.
1315 * parser.c (cp_parser_class_head): Likewise, check the tree
1316 returned by the latter.
1318 2008-06-07 Paolo Carlini <paolo.carlini@oracle.com>
1321 * decl.c (grokdeclarator): In case of wrong return type return
1322 immediately error_mark_node.
1324 2008-06-06 Jakub Jelinek <jakub@redhat.com>
1326 * cp-tree.h (cxx_omp_finish_clause, cxx_omp_create_clause_info,
1327 dependent_omp_for_p, begin_omp_task, finish_omp_task,
1328 finish_omp_taskwait): New prototypes.
1329 (cxx_omp_clause_default_ctor): Add outer argument.
1330 (finish_omp_for): Add new clauses argument.
1331 * cp-gimplify.c (cxx_omp_finish_clause): New function.
1332 (cxx_omp_predetermined_sharing): Moved from semantics.c, rewritten.
1333 (cxx_omp_clause_default_ctor): Add outer argument.
1334 (cp_genericize_r): Walk OMP_CLAUSE_LASTPRIVATE_STMT.
1335 * cp-objcp-common.h (LANG_HOOKS_OMP_FINISH_CLAUSE): Define.
1336 * parser.c (cp_parser_omp_for_loop): Parse collapsed for loops.
1337 Add par_clauses argument. If decl is present in parallel's
1338 lastprivate clause, change that clause to shared and add
1339 a lastprivate clause for decl to OMP_FOR_CLAUSES.
1340 Fix wording of error messages. Adjust finish_omp_for caller.
1341 Add clauses argument. Parse loops with random access iterators.
1342 (cp_parser_omp_clause_collapse, cp_parser_omp_clause_untied): New
1344 (cp_parser_omp_for, cp_parser_omp_parallel): Adjust
1345 cp_parser_omp_for_loop callers.
1346 (cp_parser_omp_for_cond, cp_parser_omp_for_incr): New helper
1348 (cp_parser_omp_clause_name): Handle collapse and untied
1350 (cp_parser_omp_clause_schedule): Handle auto schedule.
1351 (cp_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_COLLAPSE
1352 and PRAGMA_OMP_CLAUSE_UNTIED.
1353 (OMP_FOR_CLAUSE_MASK): Add PRAGMA_OMP_CLAUSE_COLLAPSE.
1354 (OMP_TASK_CLAUSE_MASK): Define.
1355 (cp_parser_omp_task, cp_parser_omp_taskwait): New functions.
1356 (cp_parser_omp_construct): Handle PRAGMA_OMP_TASK.
1357 (cp_parser_pragma): Handle PRAGMA_OMP_TASK and
1358 PRAGMA_OMP_TASKWAIT.
1359 * pt.c (tsubst_omp_clauses): Handle OMP_CLAUSE_COLLAPSE and
1360 OMP_CLAUSE_UNTIED. Handle OMP_CLAUSE_LASTPRIVATE_STMT.
1361 (tsubst_omp_for_iterator): New function.
1362 (dependent_omp_for_p): New function.
1363 (tsubst_expr) <case OMP_FOR>: Use it. Handle collapsed OMP_FOR
1364 loops. Adjust finish_omp_for caller. Handle loops with random
1365 access iterators. Adjust for OMP_FOR_{INIT,COND,INCR} changes.
1366 (tsubst_expr): Handle OMP_TASK.
1367 * semantics.c (cxx_omp_create_clause_info): New function.
1368 (finish_omp_clauses): Call it. Handle OMP_CLAUSE_UNTIED and
1369 OMP_CLAUSE_COLLAPSE.
1370 (cxx_omp_predetermined_sharing): Removed.
1371 * semantics.c (finish_omp_for): Allow pointer iterators. Use
1372 handle_omp_for_class_iterator and dependent_omp_for_p. Handle
1373 collapsed for loops. Adjust c_finish_omp_for caller. Add new
1374 clauses argument. Fix check for type dependent cond or incr.
1375 Set OMP_FOR_CLAUSES to clauses. Use cp_convert instead of
1376 fold_convert to convert incr amount to difference_type. Only
1377 fold if not in template. If decl is mentioned in lastprivate
1378 clause, set OMP_CLAUSE_LASTPRIVATE_STMT. Handle loops with random
1379 access iterators. Adjust for OMP_FOR_{INIT,COND,INCR}
1381 (finish_omp_threadprivate): Allow static class members of the
1383 (handle_omp_for_class_iterator, begin_omp_task, finish_omp_task,
1384 finish_omp_taskwait): New functions.
1386 * parser.c (cp_parser_binary_expression): Add prec argument.
1387 (cp_parser_assignment_expression): Adjust caller.
1388 * cp-tree.h (outer_curly_brace_block): New prototype.
1389 * decl.c (outer_curly_brace_block): No longer static.
1391 2008-06-02 Paolo Carlini <paolo.carlini@oracle.com>
1394 * pt.c (push_template_decl_real): Consistently return error_mark_node
1397 2008-06-02 Tomas Bily <tbily@suse.cz>
1399 * typeck.c (is_bitfield_expr_with_lowered_type): Use CASE_CONVERT.
1400 (cp_build_unary_op): Likewise.
1401 (cp_build_indirect_ref): Use CONVERT_EXPR_P.
1402 (maybe_warn_about_returning_address_of_local): Likewise.
1404 2008-05-29 Paolo Carlini <paolo.carlini@oracle.com>
1407 * pt.c (tsubst_initializer_list): Consistently check the tree
1408 returned by tsubst_pack_expansion for error_mark_node.
1410 2008-05-27 Michael Matz <matz@suse.de>
1413 * call.c (build_new_op): Make warning conditional on
1416 2008-05-27 Alexandre Oliva <aoliva@redhat.com>
1419 * call.c (convert_like_real): Convert bitfield to desired type
1420 before creating temporary.
1422 2008-05-26 Daniel Franke <franke.daniel@gmail.com>
1424 * Makefile.in: Adjusted dependencies on c-incpath.o.
1426 2008-05-23 Jakub Jelinek <jakub@redhat.com>
1429 * cp-gimplify.c (cxx_omp_clause_apply_fn): Call
1430 fold_build_cleanup_point_expr on build_call_a results.
1433 * semantics.c (omp_clause_info_fndecl): New function.
1434 (finish_omp_clauses): Use it.
1436 2008-05-21 Jakub Jelinek <jakub@redhat.com>
1439 * cp-tree.h (check_array_initializer): New prototype.
1440 * decl.c (check_array_initializer): New function.
1441 (check_initializer): Call it.
1442 * semantics.c (finish_compound_literal): Call it for ARRAY_TYPEs.
1444 2008-05-21 Tom Tromey <tromey@redhat.com>
1446 * mangle.c (save_partially_mangled_name): Remove.
1447 (restore_partially_mangled_name): Likewise.
1448 (write_encoding): Update.
1449 (write_unqualified_name): Likewise.
1450 (start_mangling): Always use name_obstack. Remove 'ident_p'
1452 (get_identifier_nocopy): Remove.
1453 (finish_mangling_internal): Rename from finish_mangling.
1454 (finish_mangling): New function.
1455 (finish_mangling_get_identifier): Likewise.
1456 (partially_mangled_name, partially_mangled_name_len): Remove.
1457 (mangle_decl_string): Change return type. Update.
1458 (mangle_decl, mangle_type_string, mangle_special_for_type,
1459 mangle_ctor_vtbl_for_type, mangle_thunk, mangle_guard_variable,
1460 mangle_ref_init_variable): Update.
1462 2008-05-12 Paolo Carlini <paolo.carlini@oracle.com>
1465 * semantics.c (begin_class_definition): Extend checks on the first
1468 2008-05-12 Tomas Bily <tbily@suse.cz>
1470 * typeck2.c (digest_init): Use CONVERT_EXPR_P.
1471 * call.c (build_over_call): Likewise.
1472 * error.c (dump_expr): Use CASE_CONVERT.
1473 * class.c (fixed_type_or_null): Likewise.
1475 2008-05-11 Volker Reichelt <v.reichelt@netcologne.de>
1477 * parser.c (cp_parser_omp_clause_reduction): Add missing "expected"
1479 (cp_parser_omp_clause_schedule): Remove superfluous "expected"
1482 2008-05-07 Kenneth Zadeck <zadeck@naturalbridge.com>
1484 * decl.c (duplicate_decls): Merge in DECL_PURE_P, TREE_READONLY,
1485 DECL_LOOPING_CONST_OR_PURE_P attributes.
1486 * rtti.c (build_dynamic_cast_1): Rename DECL_IS_PURE to
1489 2008-05-02 Simon Baldwin <simonb@google.com>
1492 * typeck.c (build_array_ref): Remove warn_array_subscript_range.
1494 2008-05-01 Simon Baldwin <simonb@google.com>
1496 * typeck.c (build_array_ref): Call warn_array_subscript_range.
1498 2008-04-30 Jakub Jelinek <jakub@redhat.com>
1501 * pt.c (more_specialized_fn): Stop the loop even if there are no
1502 arguments before ellipsis.
1504 2008-04-29 Jakub Jelinek <jakub@redhat.com>
1507 * parser.c (cp_parser_lookup_name): Look through single function
1511 * typeck.c (cp_build_modify_expr) <case PREINCREMENT_EXPR>: Don't build
1512 COMPOUND_EXPR if the second argument would be error_mark_node.
1514 2008-04-28 Jason Merrill <jason@redhat.com>
1515 Liu Guanwei <liu_gw@163.com>
1518 * parser.c (cp_parser_parameter_declaration): Handle < ambiguity
1519 in default arguments.
1521 2008-04-25 Jan Hubicka <jh@suse.cz>
1523 * typeck.c (check_return_expr): Update.
1524 * decl.c (start_preparsed_function): Update.
1525 * method.c (use_thunk): Update.
1527 2008-04-24 Jakub Jelinek <jakub@redhat.com>
1530 * cp-tree.h (cp_reconstruct_complex_type): New prototype.
1531 * cp-objcp-common.h (LANG_HOOKS_RECONSTRUCT_COMPLEX_TYPE): Define.
1532 * decl2.c (is_late_template_attribute): Only make vector_size
1533 late tmpl attribute if argument is type or value dependent.
1534 (cp_reconstruct_complex_type): New function.
1536 2008-04-24 Richard Guenther <rguenther@suse.de>
1538 * typeck.c (cp_build_function_call): Call
1539 check_builtin_function_arguments.
1541 2008-04-23 Paolo Bonzini <bonzini@gnu.org>
1543 * typeck.c (get_member_function_from_ptrfunc): Don't set TREE_INVARIANT.
1544 (build_ptrmemfunc1): Don't set TREE_INVARIANT.
1545 * init.c (build_zero_init): Don't set TREE_INVARIANT.
1546 * class.c (build_base_path): Don't set TREE_INVARIANT.
1547 (build_vtbl_ref_1): Don't set TREE_INVARIANT.
1548 (build_vtbl_initializer): Don't set TREE_INVARIANT.
1549 * decl.c (build_enumerator): Don't set TREE_INVARIANT.
1550 * rtti.c (tinfo_base_init): Don't set TREE_INVARIANT.
1551 (generic_initializer): Don't set TREE_INVARIANT.
1552 (ptr_initializer): Don't set TREE_INVARIANT.
1553 (ptm_initializer): Don't set TREE_INVARIANT.
1554 (class_initializer): Don't set TREE_INVARIANT.
1555 * typeck2.c (process_init_constructor): Don't set TREE_INVARIANT.
1556 * pt.c (push_inline_template_parms_recursive): Don't set TREE_INVARIANT.
1557 (build_template_parm_index): Don't set TREE_INVARIANT.
1558 (reduce_template_parm_level): Don't set TREE_INVARIANT.
1559 (process_template_parm): Don't set TREE_INVARIANT.
1561 2008-04-22 Jason Merrill <jason@redhat.com>
1564 * semantics.c (finish_decltype_type): Check DECL_BIT_FIELD_TYPE
1565 to see if DECL_BIT_FIELD_TYPE should be used, not some other flag.
1566 * typeck.c (is_bitfield_expr_with_lowered_type): Likewise.
1568 2008-04-22 Jakub Jelinek <jakub@redhat.com>
1571 * semantics.c (finish_stmt_expr): Call pop_stmt_list even if the stmt
1572 expression is errorneous.
1574 2008-04-21 Jason Merrill <jason@redhat.com>
1577 * tree.c (cp_tree_equal): Handle FIXED_CST.
1580 * pt.c (template_template_parm_bindings_ok_p): Set
1581 processing_template_decl while in this function.
1583 2008-04-18 Kris Van Hees <kris.van.hees@oracle.com>
1585 * cvt.c (type_promotes_to): Support char16_t and char32_t.
1586 * decl.c (grokdeclarator): Disallow signed/unsigned/short/long on
1587 char16_t and char32_t.
1588 * lex.c (reswords): Add char16_t and char32_t (for c++0x).
1589 * mangle.c (write_builtin_type): Mangle char16_t/char32_t as vendor
1590 extended builtin type "u8char{16,32}_t".
1591 * parser.c (cp_lexer_next_token_is_decl_specifier_keyword): Support
1593 (cp_lexer_print_token): Support CPP_STRING{16,32}.
1594 (cp_parser_is_string_literal): Idem.
1595 (cp_parser_string_literal): Idem.
1596 (cp_parser_primary_expression): Support CPP_CHAR{16,32} and
1598 (cp_parser_simple_type_specifier): Support RID_CHAR{16,32}.
1599 * tree.c (char_type_p): Support char16_t and char32_t as char types.
1600 * typeck.c (string_conv_p): Support char16_t and char32_t.
1602 2008-04-17 Jason Merrill <jason@redhat.com>
1605 * call.c (build_user_type_conversion_1): Represent second step of
1606 copy-init with an rvalue conversion.
1607 (convert_like_real) [ck_user]: Don't implicitly add it here.
1609 2008-04-15 Jakub Jelinek <jakub@redhat.com>
1612 * decl.c (layout_var_decl): If extern or static var has variable
1613 size, set TREE_TYPE (decl) to error_mark_node.
1615 2008-04-16 Danny Smith <dannysmith@users.sourceforge.net>
1618 * optimize.c (maybe_clone_body): Copy DECL_DLLIMPORT_P flag
1621 2008-04-09 Jason Merrill <jason@redhat.com>
1624 * semantics.c (finish_compound_literal): Return a TARGET_EXPR,
1625 not a pushed variable.
1627 2008-04-09 Volker Reichelt <v.reichelt@netcologne.de>
1629 * call.c (build_op_delete_call): Fix quotation in warning message.
1630 * decl.c (grokdeclarator): Quote keyword in error message.
1631 * pt.c (check_for_bare_parameter_packs): Fix quotation in error
1634 * parser.c (cp_parser_check_type_definition): Print error string
1635 directly rather than using "%s".
1636 (cp_parser_postfix_expression): Fix quotation.
1637 (cp_parser_decltype): Likewise.
1638 (cp_parser_sizeof_operand): Fix quotation. Simplify.
1640 * parser.c (cp_parser_non_integral_constant_expression): Build error
1641 message with CONCAT rather than using "%s".
1642 (cp_parser_primary_expression): Fix quotation.
1643 (cp_parser_postfix_expression): Likewise.
1644 (cp_parser_postfix_dot_deref_expression): Likewise.
1645 (cp_parser_unary_expression): Likewise.
1646 (cp_parser_new_expression): Likewise.
1647 (cp_parser_delete_expression): Likewise.
1649 * parser.c (cp_parser_asm_specification_opt): Print CPP_CLOSE_PAREN
1650 as `)', not as `('. Fix quotation.
1651 (cp_parser_consume_semicolon_at_end_of_statement): Fix quotation.
1652 (cp_parser_primary_expression): Likewise.
1653 (cp_parser_nested_name_specifier_opt): Likewise.
1654 (cp_parser_postfix_expression): Likewise.
1655 (cp_parser_postfix_open_square_expression): Likewise.
1656 (cp_parser_parenthesized_expression_list): Likewise.
1657 (cp_parser_pseudo_destructor_name): Likewise.
1658 (cp_parser_new_expression): Likewise.
1659 (cp_parser_direct_new_declarator): Likewise.
1660 (cp_parser_delete_expression): Likewise.
1661 (cp_parser_cast_expression): Likewise.
1662 (cp_parser_question_colon_clause): Likewise.
1663 (cp_parser_builtin_offsetof): Likewise.
1664 (cp_parser_trait_expr): Likewise.
1665 (cp_parser_label_for_labeled_statement): Likewise.
1666 (cp_parser_compound_statement): Likewise.
1667 (cp_parser_selection_statement): Likewise.
1668 (cp_parser_condition): Likewise.
1669 (cp_parser_iteration_statement): Likewise.
1670 (cp_parser_already_scoped_statement): Likewise.
1671 (cp_parser_simple_declaration): Likewise.
1672 (cp_parser_linkage_specification): Likewise.
1673 (cp_parser_static_assert): Likewise.
1674 (cp_parser_decltype): Likewise.
1675 (cp_parser_conversion_function_id): Likewise.
1676 (cp_parser_operator_function_id): Likewise.
1677 (cp_parser_operator): Likewise.
1678 (cp_parser_type_parameter): Likewise.
1679 (cp_parser_template_id): Likewise.
1680 (cp_parser_explicit_instantiation): Likewise.
1681 (cp_parser_explicit_specialization): Likewise.
1682 (cp_parser_enum_specifier): Likewise.
1683 (cp_parser_namespace_definition): Likewise.
1684 (cp_parser_namespace_alias_definition): Likewise.
1685 (cp_parser_using_declaration): Likewise.
1686 (cp_parser_using_directive): Likewise.
1687 (cp_parser_asm_definition): Likewise.
1688 (cp_parser_direct_declarator): Likewise.
1689 (cp_parser_ptr_operator): Likewise.
1690 (cp_parser_parameter_declaration_clause): Likewise.
1691 (cp_parser_initializer_clause): Likewise.
1692 (cp_parser_class_specifier): Likewise.
1693 (cp_parser_member_specification_opt): Likewise.
1694 (cp_parser_member_declaration): Likewise.
1695 (cp_parser_pure_specifier): Likewise.
1696 (cp_parser_constant_initializer): Likewise.
1697 (cp_parser_base_clause): Likewise.
1698 (cp_parser_exception_specification_opt): Likewise.
1699 (cp_parser_try_block): Likewise.
1700 (cp_parser_function_try_block): Likewise.
1701 (cp_parser_handler): Likewise.
1702 (cp_parser_throw_expression): Likewise.
1703 (cp_parser_asm_operand_list): Likewise.
1704 (cp_parser_attributes_opt): Likewise.
1705 (cp_parser_label_declaration): Likewise.
1706 (cp_parser_constructor_declarator_p): Likewise.
1707 (cp_parser_template_declaration_after_export): Likewise.
1708 (cp_parser_single_declaration): Likewise.
1709 (cp_parser_objc_message_expression): Likewise.
1710 (cp_parser_objc_message_args): Likewise.
1711 (cp_parser_objc_encode_expression): Likewise.
1712 (cp_parser_objc_defs_expression): Likewise.
1713 (cp_parser_objc_protocol_expression): Likewise.
1714 (cp_parser_objc_selector_expression): Likewise.
1715 (cp_parser_objc_protocol_refs_opt): Likewise.
1716 (cp_parser_objc_typename): Likewise.
1717 (cp_parser_objc_method_keyword_params): Likewise.
1718 (cp_parser_objc_superclass_or_category): Likewise.
1719 (cp_parser_objc_try_catch_finally_statement): Likewise.
1720 (cp_parser_objc_synchronized_statement): Likewise.
1721 (cp_parser_objc_throw_statement): Likewise.
1722 (cp_parser_omp_var_list_no_open): Likewise.
1723 (cp_parser_omp_clause_default): Likewise.
1724 (cp_parser_omp_clause_if): Likewise.
1725 (cp_parser_omp_clause_num_threads): Likewise.
1726 (cp_parser_omp_clause_reduction): Likewise.
1727 (cp_parser_omp_clause_schedule): Likewise.
1728 (cp_parser_omp_critical): Likewise.
1729 (cp_parser_omp_for_loop): Likewise.
1730 (cp_parser_omp_sections_scope): Likewise.
1732 * parser.c (cp_parser_template_parameter_list): Simplify.
1734 2008-04-07 James E. Wilson <wilson@tuliptree.org>
1736 * pt.c (tsubst_copy, case SIZEOF_EXPR): Initialize len.
1738 2008-04-07 Jason Merrill <jason@redhat.com>
1741 * class.c (type_has_user_nondefault_constructor): A template
1742 counts as a nondefault constructor.
1744 2008-04-04 Paolo Bonzini <bonzini@gnu.org>
1746 * decl.c (cxx_push_function_context): Delete.
1747 (cxx_pop_function_context): Delete.
1748 (start_preparsed_function): Merge cxx_push_function_context (!f->decl
1750 * cp-objcp-common.h (LANG_HOOKS_FUNCTION_INIT,
1751 LANG_HOOKS_FUNCTION_FINAL): Delete.
1752 (LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P): Rename to
1753 LANG_HOOKS_MISSING_NORETURN_OK_P.
1754 * cp-tree.h (cxx_push_function_context, cxx_pop_function_context):
1756 * semantics.c (current_stmt_tree): Fix comment.
1758 2008-04-03 Jakub Jelinek <jakub@redhat.com>
1761 * semantics.c (finish_offsetof): Undo effect of convert_from_reference
1762 before calling fold_offsetof.
1764 2008-04-03 Tom Tromey <tromey@redhat.com>
1766 * Make-lang.in (c++_OBJS): New variable.
1768 2008-04-03 Paolo Bonzini <bonzini@gnu.org>
1770 * optimize.c (clone_body): New, from tree-inline.c.
1772 2008-04-03 Paolo Bonzini <bonzini@gnu.org>
1774 * method.c (synthesize_method): Use {push,pop}_function_context.
1775 * name-lookup.c (push_to_top_level): Likewise.
1776 * parser.c (cp_parser_late_parsing_for_member): Likewise.
1778 2008-03-30 Volker Reichelt <v.reichelt@netcologne.de>
1781 * parser.c (cp_parser_decl_specifier_seq): Add location to error
1784 2008-03-27 Tom Tromey <tromey@redhat.com>
1786 * Make-lang.in: Revert automatic dependency patch.
1788 2008-03-27 Douglas Gregor <doug.gregor@gmail.com>
1791 * typeck.c (build_x_compound_expr): Use cp_build_compound_expr.
1792 (build_compound_expr): New, for compatibility with C
1793 build_compound_expr.
1794 (cp_build_compound_expr): Renamed from build_compound_expr.
1795 (build_c_cast): New, for compatibility with C build_c_cast.
1796 (cp_build_c_cast): Renamed from build_c_cast.
1797 * init.c (build_vec_delete_1): Fix calls to build_compound_expr.
1798 * decl.c (cxx_maybe_build_cleanup): Ditto.
1799 * cp-tree.h (build_compound_expr): Add C-compatibile prototype.
1800 (cp_build_compound_expr): Renamed from build_compound_expr.
1801 (build_c_cast): Add C-compatible prototype.
1802 (cp_build_c_cast): Renamed from build_c_cast.
1803 * typeck2.c (build_functional_cast): Use cp_build_c_cast.
1804 * parser.c (cp_parser_cast_expression): Fix call to build_c_cast.
1806 2008-03-27 Douglas Gregor <doug.gregor@gmail.com>
1808 * pt.c (tsubst_copy) <case SIZEOF_EXPR>: Cope with
1809 tsubst_pack_expansion returning a pack expansion, or a TREE_VEC
1810 ending in a pack expansion, both of which can occur when
1811 substituting into a nested template.
1812 (tsubst_copy_and_build) <case SIZEOF_EXPR>: When we're
1813 instantiating the sizeof...(X) form, make tsubst_copy do the work.
1814 * parser.c (cp_parser_template_parameter): Deal with unnamed
1815 non-type template parameter packs identified by pack expansions in
1818 2008-03-26 Jakub Jelinek <jakub@redhat.com>
1821 * pt.c (apply_late_template_attributes): Don't call tsubst on
1822 first attribute argument if it is IDENTIFIER_NODE.
1825 * error.c (dump_expr): Pass {,UN}ORDERED_EXPR, UN{LT,LE,GT,GE,EQ}_EXPR
1826 and LTGT_EXPR to pp_expression.
1828 2008-03-26 Douglas Gregor <doug.gregor@gmail.com>
1830 * pt.c (coerce_template_template_parm): Moved the body of the loop
1831 of coerce_template_template_parms here, to make iteration over a
1832 template argument pack simpler.
1833 Also, allow matching of a template parameter pack in the template
1834 template parameter to a template parameter in the template
1836 (coerce_template_template_parms): Deal with variadic template
1837 template parameters. Use coerce_template_template_parm.
1838 (unify): Make sure we coerce the template template argument's
1839 template arguments to the template template parameter's template
1840 parameters, not the other way around.
1842 2008-03-25 Tom Tromey <tromey@redhat.com>
1844 * Make-lang.in: Remove .o targets.
1845 (cp/g++spec.o): Moved to cp/. Reduce to variable setting.
1847 (c++_OBJS): New variable.
1848 (CXX_TREE_H, CXX_PRETTY_PRINT_H): Remove.
1850 2008-03-25 Douglas Gregor <doug.gregor@gmail.com>
1852 * typeck.c (composite_pointer_type_r): Add SFINAE support.
1853 (composite_pointer_type): Ditto.
1854 (common_type): Fix call to composite_pointer_type.
1855 (cxx_sizeof_nowarn): New; used to be a macro.
1856 (cxx_sizeof_expr): Add SFINAE support.
1857 (cxx_alignof_expr): Ditto.
1858 (decay_conversion): Fix calls for SFINAE support.
1859 (rationalize_conditional_expr): Add SFINAE support.
1860 (build_class_member_access_expr): Ditto.
1861 (finish_class_member_access_expr): Ditto.
1862 (build_x_indirect_ref): Ditto.
1863 (build_indirect_ref): Original version renamed to
1864 cp_build_indirect_ref; new version provides a bridge from
1866 (cp_build_indirect_ref): Was build_indirect_ref; added SFINAE
1868 (get_member_function_from_ptrfunc): Fix calls for SFINAE support.
1869 (build_function_call): Original version renamed to
1870 cp_build_function_call; new version provides a bridge from
1872 (cp_build_function_call): Was build_function_call; added SFINAE
1874 (convert_arguments): Add SFINAE support.
1875 (build_x_binary_op): Ditto.
1876 (build_binary_op): Original version renamed to cp_build_binary_op;
1877 new version provides a bridge from c-common.
1878 (cp_build_binary_op): Was build_binary_op; added SFINAE support.
1879 (pointer_diff): Fix calls for SFINAE.
1880 (build_x_unary_op): Add SFINAE support.
1881 (condition_conversion): Fix calls for SFINAE.
1882 (build_unary_op): Original version renamed to cp_build_unary_op;
1883 new version provides a bridge from c-common.
1884 (cp_build_unary_op): Was build_unary_op; added SFINAE support.
1885 (unary_complex_lvalue): Fix calls for SFINAE.
1886 (build_x_conditional_expr): Add SFINAE support.
1887 (build_x_compound_expr_from_list): Fix calls for SFINAE.
1888 (build_x_compound_expr): Add SFINAE support.
1889 (convert_ptrmem): Fix calls for SFINAE.
1890 (build_static_cast_1): Add SFINAE support.
1891 (build_static_cast): Ditto.
1892 (build_reinterpret_cast_1): Ditto.
1893 (build_reinterpret_cast): Ditto.
1894 (build_const_cast_1): Ditto.
1895 (build_const_cast): Ditto.
1896 (build_c_cast): Ditto.
1897 (build_modify_expr): Original version renamed to
1898 cp_build_modify_expr; new version provides a bridge from c-common.
1899 (cp_build_modify_expr): Was build_modify_expr; added SFINAE
1901 (build_x_modify_expr): Add SFINAE support.
1902 (build_ptrmemfunc): Fix calls for SFINAE.
1903 (convert_for_assignment): Add SFINAE support.
1904 (convert_for_initialization): Ditto.
1905 (check_return_expr): Fix calls for SFINAE.
1906 (lvalue_or_else): Add SFINAE support.
1907 * init.c (perform_member_init): Fix calls for SFINAE.
1908 (emit_mem_initializers): Ditto.
1909 (expand_virtual_init): Ditto.
1910 (expand_cleanup_for_base): Ditto.
1911 (build_aggr_init): Add SFINAE support.
1912 (expand_default_init): Ditto.
1913 (expand_aggr_init_1): Fix calls for SFINAE.
1914 (build_offset_ref): Ditto.
1915 (build_new_1): Add SFINAE support.
1917 (build_vec_delete_1): Fix calls for SFINAE.
1918 (get_temp_regvar): Ditto.
1919 (build_vec_init): Add SFINAE support.
1920 (build_dtor_call): Fix calls for SFINAE.
1921 (build_delete): Ditto.
1922 (push_base_cleanups): Ditto.
1923 (build_vec_delete_1): Ditto.
1924 * class.c (build_base_path): Fix calls for SFINAE.
1925 (build_simple_base_path): Ditto.
1926 (convert_to_base_statically): Ditto.
1927 (build_vfn_ref): Ditto.
1928 (resolve_address_of_overloaded_function): Ditto.
1929 * decl.c (check_initializer): Fix calls for SFINAE.
1930 (register_dtor_fn): Ditto.
1931 (compute_array_index_type): Ditto.
1932 (finish_enum): Ditto.
1933 (start_preparsed_function): Ditto.
1934 (cxx_maybe_build_cleanup): Ditto.
1935 * call.c (convert_like): Add COMPLAIN argument.
1936 (convert_like_with_context): Ditto.
1937 (build_this): Fix calls for SFINAE.
1938 (build_user_type_conversion): Ditto.
1939 (resolve_args): Ditto.
1940 (build_new_function_call): Add SFINAE support.
1941 (build_operator_new_call): Fix calls for SFINAE.
1942 (build_object_call): Add SFINAE support.
1943 (build_conditional_expr): Ditto.
1944 (build_new_op): Ditto.
1945 (build_op_delete_call): Fix calls for SFINAE.
1946 (build_temp): Ditto.
1947 (convert_like_real): Add SFINAE support.
1948 (build_x_va_arg): Fix calls for SFINAE.
1949 (convert_default_arg): Ditto.
1950 (build_over_call): Add SFINAE support.
1951 (build_java_interface_fn_ref): Fix calls for SFINAE.
1952 (build_special_member_call): Add SFINAE support.
1953 (build_new_method_call): Ditto.
1954 (perform_implicit_conversion): Ditto.
1955 (perform_direct_initialization_if_possible): Ditto.
1956 (initialize_reference): Fix calls for SFINAE.
1957 * method.c (do_build_assign_ref): Fix calls for SFINAE.
1958 * rtti.c (build_headof): Fix calls for SFINAE.
1959 (get_tinfo_decl_dynamic): Ditto.
1960 (get_typeid): Ditto.
1961 (build_dynamic_cast_1): Add SFINAE support.
1962 (build_dynamic_cast): Ditto.
1963 (tinfo_base_init): Fix calls for SFINAE.
1964 * except.c (do_get_exception_ptr): Fix calls for SFINAE.
1965 (do_end_catch): Ditto.
1966 (initialize_handler_parm): Ditto.
1967 (expand_start_catch_block): Ditto.
1968 (do_allocate_exception): Ditto.
1969 (do_free_exception): Ditto.
1970 (build_throw): Ditto.
1971 * cvt.c (build_up_reference): Fix calls for SFINAE.
1972 (convert_to_reference): Ditto.
1973 (ocp_convert): Ditto.
1974 (convert_to_void): Add SFINAE support.
1975 * tree.c (build_dummy_object): Fix calls for SFINAE.
1976 (stabilize_expr): Ditto.
1977 * cp-tree.h (build_conditional_expr): Add tsubst_flags_t
1979 (build_new_method_call): Ditto.
1980 (build_special_member_call): Ditto.
1981 (build_new_op): Ditto.
1982 (perform_implicit_conversion): Ditto.
1983 (perform_direct_initialization_if_possible): Ditto.
1984 (convert_to_void): Ditto.
1985 (build_aggr_init): Ditto.
1987 (build_vec_init): Ditto.
1988 (build_dynamic_cast): Ditto.
1989 (finish_call_expr): Ditto
1990 (cxx_sizeof_or_alignof_expr): Add COMPLAIN parameter.
1991 (cxx_sizeof_nowarn): Remove macro; add function declaration.
1992 (build_class_member_access_expr): Add tsubst_flags_t parameter.
1993 (finish_class_member_access_expr): Ditto.
1994 (build_x_indirect_ref): Ditto.
1995 (cp_build_indirect_ref): New.
1996 (cp_build_function_call): Add tsubst_flags_t parameter.
1997 (build_x_unary_op): Ditto.
1998 (cp_build_unary_op): New.
1999 (build_x_conditional_expr): Add tsubst_flags_t parameter.
2000 (build_x_compound_expr): Ditto.
2001 (build_compound_expr): Ditto.
2002 (build_static_cast): Ditto.
2003 (build_reinterpret_cast): Ditto.
2004 (build_const_cast): Ditto.
2005 (build_c_cast): Ditto.
2006 (build_x_modify_expr): Ditto.
2007 (cp_build_modify_expr): New.
2008 (convert_for_initialization): Add tsubst_flags_t parameter.
2009 (cp_build_binary_op): Remove macro; add function declaration.
2010 (invalid_nonstatic_memfn_p): Add tsubst_flags_t parameter.
2011 (lvalue_or_else): Ditto.
2012 (build_functional_cast): Ditto.
2013 * typeck2.c (digest_init): Fix calls for SFINAE.
2014 (process_init_constructor_array): Ditto.
2015 (process_init_constructor_record): Ditto.
2016 (build_x_arrow): Ditto.
2017 (build_m_component_ref): Ditto.
2018 (build_functional_cast): Add SFINAE support.
2019 * pt.c (tsubst_copy_and_build): Add (more) SFINAE support.
2020 * semantics.c (simplify_loop_decl_cond): Fix calls for SFINAE.
2021 (finish_expr_stmt): Ditto.
2022 (finish_for_expr): Ditto.
2023 (finish_asm_stmt): Ditto.
2024 (finish_non_static_data_member): Ditto.
2025 (finish_qualified_id_expr): Ditto.
2026 (finish_call_expr): Add SFINAE support.
2027 (finish_increment_expr): Fix calls for SFINAE.
2028 (finish_unary_op_expr): Ditto.
2029 (simplify_aggr_init_expr): Ditto.
2030 (finish_omp_clauses): Ditto.
2031 (finish_omp_for): Ditto.
2032 (finish_omp_barrier): Ditto.
2033 (finish_omo_flush): Ditto.
2034 * decl2.c (grok_array_decl): Fix calls or SFINAE.
2035 (build_anon_union_vars): Ditto.
2036 (get_guard_cond): Ditto.
2038 (one_static_initialization_or_destruction): Ditto.
2039 (do_static_initialization_or_destruction): Ditto.
2040 (generate_ctor_or_dtor_function): Ditto.
2041 (build_offset_ref_call_from_tree): Ditto.
2042 * parser.c (cp_parser_postfix_expression): Fix calls for SFINAE.
2043 (cp_parser_postfix_dot_deref_expression): Ditto.
2044 (cp_parser_unary_expression): Ditto.
2045 (cp_parser_new_expression): Ditto.
2046 (cp_parser_cast_expression): Ditto.
2047 (cp_parser_binary_expression): Ditto.
2048 (cp_parser_question_colon_clause): Ditto.
2049 (cp_parser_assignment_expression): Ditto.
2050 (cp_parser_expression): Ditto.
2051 (cp_parser_builtin_offsetof): Ditto.
2052 (cp_parser_template_argument): Ditto.
2053 (cp_parser_functional_cast): Ditto.
2055 2008-03-24 Tom Tromey <tromey@redhat.com>
2057 * lex.c (handle_pragma_interface): Don't copy the filename.
2058 (handle_pragma_implementation): Copy filename using xstrdup.
2060 2008-03-21 Paolo Carlini <pcarlini@suse.de>
2062 * cp-tree.h (IS_AGGR_TYPE): Rename to MAYBE_CLASS_TYPE_P.
2063 (SET_IS_AGGR_TYPE): Rename to SET_CLASS_TYPE_P.
2064 (IS_AGGR_TYPE_CODE): Rename to RECORD_OR_UNION_CODE_P.
2065 (PROMOTES_TO_AGGR_TYPE): Remove.
2066 (CLASS_TYPE_P, TYPE_NON_AGGREGATE_CLASS): Adjust.
2067 * typeck.c (unary_complex_lvalue, build_modify_expr,
2068 convert_for_initialization): Adjust.
2069 * init.c (is_aggr_type): Remove.
2070 (is_class_type): Add.
2071 (build_offset_ref, build_new_1, build_vec_delete_1, build_vec_init,
2072 build_delete): Adjust.
2073 * lex.c (make_aggr_type): Remove.
2074 (make_class_type): Add.
2075 (cxx_make_type): Adjust.
2076 * class.c (finish_struct_1, fixed_type_or_null, is_empty_class):
2078 * decl.c (build_typename_type, make_typename_type,
2079 make_unbound_class_template, cxx_init_decl_processing,
2080 check_tag_decl, groktypename, start_decl_1, layout_var_decl,
2081 check_initializer, cp_finish_decl, build_ptrmemfunc_type, grokparms,
2082 grok_op_properties, xref_tag, check_function_type): Adjust.
2083 * call.c (check_dtor_name, standard_conversion, implicit_conversion,
2084 add_builtin_candidate, add_builtin_candidates,
2085 build_user_type_conversion_1, convert_like_real, build_cxx_call,
2086 is_subseq, compare_ics): Adjust.
2087 * method.c (use_thunk): Adjust.
2088 * rtti.c (build_dynamic_cast_1, create_pseudo_type_info,
2089 create_tinfo_types): Adjust.
2090 * cvt.c (cp_convert_to_pointer, convert_to_pointer_force,
2091 build_up_reference, convert_to_reference, convert_from_reference,
2092 ocp_convert, build_expr_type_conversion): Adjust.
2093 * tree.c (bind_template_template_parm, error_type): Adjust.
2094 * dump.c (cp_dump_tree): Adjust.
2095 * search.c (lookup_member): Adjust.
2096 * friend.c (make_friend_class, do_friend): Adjust.
2097 * typeck2.c (store_init_value, process_init_constructor_array,
2098 process_init_constructor_record, build_x_arrow, build_m_component_ref,
2099 build_functional_cast): Adjust.
2100 * pt.c (finish_member_template_decl, process_template_parm,
2101 lookup_template_class, tsubst_function_type, tsubst,
2102 tsubst_copy_and_build, get_template_base, bt_instantiate_type_proc):
2104 * semantics.c (begin_class_definition, finish_base_specifier,
2105 finish_typeof, cxx_omp_predetermined_sharing, finish_decltype_type):
2107 * name-lookup.c (constructor_name_p, push_overloaded_decl,
2108 do_class_using_decl, lookup_qualified_name,
2109 maybe_process_template_type_declaration): Adjust.
2110 * decl2.c (grok_array_decl, check_member_template,
2111 constrain_class_visibility): Adjust.
2112 * parser.c (cp_parser_class_name): Adjust.
2114 2008-03-18 Paolo Bonzini <bonzini@gnu.org>
2116 * cp-lang.c (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS): Delete.
2118 2008-03-17 Jason Merrill <jason@redhat.com>
2121 * call.c (reference_binding): Check LOOKUP_NO_TEMP_BIND when binding
2122 a temp directly to a reference as per DR391.
2124 2008-03-12 Richard Guenther <rguenther@suse.de>
2128 2008-02-04 Richard Guenther <rguenther@suse.de>
2131 * decl.c (record_builtin_java_type): Make jboolean a
2132 integer type again where its mode doesn't match that of bool.
2134 2008-01-25 Richard Guenther <rguenther@suse.de>
2137 * decl.c (record_builtin_java_type): Make __java_boolean
2139 * typeck.c (structural_comptypes): Move TYPE_FOR_JAVA check
2140 after TYPE_MAIN_VARIANT check.
2142 2008-03-10 Jakub Jelinek <jakub@redhat.com>
2145 * semantics.c (finish_omp_clauses): Look through NOP_EXPR even
2149 * semantics.c (finish_omp_clauses): Use %qD instead of %qE for
2150 DECL_P in not a variable and appears more than once error messages.
2152 2008-03-07 Paolo Bonzini <bonzini@gnu.org>
2156 2008-02-06 Douglas Gregor <doug.gregor@gmail.com>
2160 * typeck.c (structural_comptypes): Call cp_comptypes.
2161 (comptypes): New; called from the C/C++ common bits to perform
2163 (cp_comptypes): Renamed from comptypes, which is already used,
2164 with a different signature, by the C++ front end.
2165 (build_reinterpret_cast_1): Call cp_comptypes.
2166 (ptr_reasonably_similar): Ditto.
2167 * decl.c (decls_match): Ditto.
2168 * cvt.c (convert_to_reference): Ditto.
2169 * cp-tree.h (same_type_p): Ditto.
2170 (same_or_base_type_p): Ditto.
2171 (comptypes): Rename to cp_comptypes.
2172 * pt.c (canonical_type_parameter): Call cp_comptypes.
2174 2008-03-07 Paolo Bonzini <bonzini@gnu.org>
2176 * cp-objcp-common.c (cxx_types_compatible_p): Remove obsolete
2177 test for equivalence between pointer and references.
2179 2008-03-02 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
2182 * class.c (finish_struct_anon): Use permerror instead of pedwarn.
2183 (check_field_decls): Likewise.
2184 (note_name_declared_in_class): Likewise.
2185 * call.c (build_new_op): Likewise.
2186 (convert_like_real): Likewise.
2187 (build_over_call): Likewise.
2188 * lex.c (unqualified_fn_lookup_error): Likewise.
2189 * parser.c (cp_parser_template_id): Likewise.
2190 * cvt.c (warn_ref_binding): Likewise.
2191 (convert_to_reference): Likewise.
2192 (ocp_convert): Likewise.
2193 (convert_to_void): Use error instead of pedwarn.
2194 * error.c (cp_cpp_error): Use pedantic_warning_kind.
2195 * decl.c (compute_array_index_type): Use constant_expression_error.
2197 2008-03-01 Douglas Gregor <doug.gregor@gmail.com>
2199 * parser.c (cp_lexer_next_token_is_decl_specifier_keyword): Note
2200 that auto is either a storage class or a simple type specifier,
2201 depending on the dialect.
2202 (cp_parser_decl_specifier_seq): Complain about `auto' as a storage
2203 specifier in C++98 mode, error in C++0x mode (since we don't
2204 support auto as a type specifier, yet).
2205 (cp_parser_storage_class_specifier_opt): Don't treat `auto' as a
2206 storage specifier in C++0x mode.
2207 (cp_parser_simple_type_specifier): Parse `auto' as a
2208 simple-type-specifier, but error because we don't support it yet.
2210 2008-02-29 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
2212 * parser.c (cp_parser_nonclass_name): New.
2213 (cp_parser_pseudo_destructor_name): Use it instead of
2214 cp_parser_type_name.
2215 (cp_parser_type_name): Move code to cp_parser_nonclass_name.
2217 2008-02-29 Tom Tromey <tromey@redhat.com>
2219 * parser.c (struct cp_token) <input_file_stack_index>: Remove.
2220 (cp_lexer_get_preprocessor_token): Update.
2221 (cp_lexer_set_source_position_from_token): Don't call
2222 restore_input_file_stack.
2223 * lex.c (cxx_init): Don't use push_srcloc or pop_srcloc.
2225 2008-02-28 Richard Guenther <rguenther@suse.de>
2228 2008-02-26 Richard Guenther <rguenther@suse.de>
2230 * decl.c (duplicate_decls): Remove decl from global mapping
2231 before ggc_freeing it.
2233 2008-02-27 Jakub Jelinek <jakub@redhat.com>
2236 * rtti.c: Include c-pragma.h.
2237 (push_abi_namespace, pop_abi_namespace): New functions.
2238 (build_dynamic_cast_1, tinfo_base_init, get_pseudo_ti_index,
2239 create_tinfo_types, emit_support_tinfos): Use them.
2240 * Make-lang.in (cp/rtti.o): Depend on $(C_PRAGMA_H).
2242 2008-02-26 Jason Merrill <jason@redhat.com>
2245 * decl.c (grokdeclarator): Allow a typedef of an unnamed struct
2246 to name the struct for linkage purposes even if it has attributes.
2247 (start_decl): In that case, set ATTR_FLAG_TYPE_IN_PLACE.
2249 2008-02-26 Tom Tromey <tromey@redhat.com>
2251 * parser.c (eof_token): Remove old location code.
2252 (check_empty_body): Remove test of USE_MAPPED_LOCATION.
2253 * decl2.c (generate_ctor_or_dtor_function): Remove old location
2255 (cp_write_global_declarations): Likewise.
2256 * lex.c (cxx_init): Remove old location code.
2257 (handle_pragma_implementation): Remove test of
2258 USE_MAPPED_LOCATION.
2259 * pt.c (tsubst): Remove old location code.
2260 * error.c (cp_print_error_function): Remove test of
2261 USE_MAPPED_LOCATION.
2262 * decl.c (pop_label): Remove old location code.
2263 (finish_function): Likewise.
2265 2008-02-26 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
2268 * call.c (magic_varargs_p): Remove BUILT_IN_STDARG_START.
2270 2008-02-26 Richard Guenther <rguenther@suse.de>
2272 * decl.c (duplicate_decls): Remove decl from global mapping
2273 before ggc_freeing it.
2275 2008-02-26 Paolo Carlini <pcarlini@suse.de>
2278 * name-lookup.c (arg_assoc_type): Handle FIXED_POINT_TYPE.
2280 2008-02-26 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
2282 * typeck.c (build_class_member_access_expr): Add appropriate
2283 OPT_W* parameter to warning.
2284 (build_reinterpret_cast_1): Likewise.
2285 * name-lookup.c (push_overloaded_decl): Likewise.
2287 2008-02-25 Paolo Carlini <pcarlini@suse.de>
2290 * error.c (dump_expr): Handle CONJ_EXPR.
2292 2008-02-25 Paolo Carlini <pcarlini@suse.de>
2295 * error.c (dump_type): Handle FIXED_POINT_TYPE.
2296 (dump_expr): Handle FIXED_CST.
2298 2008-02-24 Jason Merrill <jason@redhat.com>
2300 * parser.c (cp_parser_declaration): Handle "inline namespace".
2301 (cp_parser_namespace_definition): Likewise.
2304 * name-lookup.c (arg_assoc_namespace): Look down into inline
2307 2008-02-23 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
2309 * typeck.c (check_for_casting_away_constness): Use 1 single
2310 argument, the type of cast, to decide what diagnostics generate.
2311 (build_static_cast_1): Remove unused code. Update call to
2312 check_for_casting_away_constness.
2313 (build_reinterpret_cast_1): Update call to
2314 check_for_casting_away_constness.
2315 (build_const_cast_1): Likewise.
2317 2008-02-24 Paolo Carlini <pcarlini@suse.de>
2319 * error.c (dump_expr): Don't deal directly with NEW_EXPR (and
2320 VEC_NEW_EXPR), forward to pp_expression.
2321 * cxx-pretty-print.c (pp_cxx_new_expression): Fix FIXME.
2323 2008-02-24 Danny Smith <dannysmith@users.sourceforge.net>
2326 * friend.c (do_friend): Call cplus_decl_attributes earlier.
2328 2008-02-22 Andrew Pinski <andrew_pinski@playstation.sony.com>
2331 * decl.c (duplicate_decls): Merge DECL_DISREGARD_INLINE_LIMITS for
2332 template decls' function decl.
2334 2008-02-22 Paolo Carlini <pcarlini@suse.de>
2338 2008-02-14 Paolo Carlini <pcarlini@suse.de>
2341 * pt.c (determine_specialization): In case of function templates,
2342 when the type of DECL does not match FN there is no match.
2344 2008-02-22 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
2347 * typeck.c (build_binary_op): Warn about floating point
2348 comparisons if FLOAT_TYPE_P, not only for REAL_TYPE.
2350 2008-02-19 Jason Merrill <jason@redhat.com>
2353 * pt.c (resolve_overloaded_unification): Set processing_template_decl
2354 while we look for possible bindings.
2356 2008-02-19 Jakub Jelinek <jakub@redhat.com>
2359 * cp-gimplify.c (cxx_omp_clause_apply_fn): Handle vararg copy ctors.
2363 * semantics.c (finish_omp_threadprivate): Do nothing for error_operand_p
2364 vars. Afterwards ensure v is VAR_DECL.
2367 * parser.c (cp_parser_omp_for_loop): If DECL has REFERENCE_TYPE, don't
2368 call cp_finish_decl.
2369 * semantics.c (finish_omp_for): Fail if DECL doesn't have integral type
2372 2008-02-15 Douglas Gregor <doug.gregor@gmail.com>
2377 * pt.c (finish_member_template_decl): If the type in a TYPE_DECL
2378 is error_mark_node, return an error early.
2379 (find_parameter_packs_r): Pass the pointer set along to recursive
2380 calls of cp_walk_subtrees; don't try to manage the pointer set
2382 (uses_parameter_packs): Pass the pointer set to cp_walk_tree.
2383 (make_pack_expansion): Ditto.
2384 (check_for_bare_parameter_packs): Ditto. Also, don't bother taking
2385 a second pass through the tree with find_parameter_packs_r; that
2386 second pass no longer does anything.
2387 (push_template_decl_real): If we have an erroneous declaration,
2388 set its type to error_mark_node before returning an error.
2390 2008-02-14 Douglas Gregor <doug.gregor@gmail.com>
2393 * pt.c (tsubst_initializer_list): Deal with the use of
2394 VOID_TYPE_NODE to indicate value-initialization of the bases.
2396 2008-02-14 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
2397 Jason Merrill <jason@redhat.com>
2401 * class.c (type_has_user_nondefault_constructor): New fn.
2402 * cp-tree.h: Declare it.
2403 * init.c (emit_mem_initializers): Use it for -W warning about
2404 missing base initializer.
2406 2008-02-14 Paolo Carlini <pcarlini@suse.de>
2409 * pt.c (determine_specialization): In case of function templates,
2410 when the type of DECL does not match FN there is no match.
2412 2008-02-13 Jakub Jelinek <jakub@redhat.com>
2413 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
2416 * parser.c (cp_parser_pseudo_destructor_name): If next tokens
2417 are not identifier :: ~, return before calling cp_parser_type_name.
2419 2008-02-13 Jason Merrill <jason@redhat.com>
2421 PR c++/34962, c++/34937, c++/34939
2422 * decl2.c (is_late_template_attribute): Always defer attributes
2423 vector_size and weak.
2426 * pt.c (value_dependent_expression_p): Look into DECL_INITIAL
2427 of enumerators, too.
2429 2008-02-12 Jason Merrill <jason@redhat.com>
2432 * call.c (convert_like_real): Pass LOOKUP_NO_CONVERSION to build_temp
2433 if we're doing conversions to call a user-defined conversion function.
2435 2008-02-12 Steven Bosscher <steven@gcc.gnu.org>
2438 * semantics.c (finish_qualified_id_expr): Avoid duplicate access
2441 2008-02-12 Jakub Jelinek <jakub@redhat.com>
2444 * init.c (build_new_1): Don't create placement_expr before
2445 constructing alloc_call. Verify that the pointer is passed by
2446 value to operator new.
2448 2008-02-11 Jason Merrill <jason@redhat.com>
2451 * pt.c (tsubst): Don't look up a template typedef in an explicit
2454 2008-02-11 Douglas Gregor <doug.gregor@gmail.com>
2457 * tree.c (cp_build_qualified_type_real): When building a
2458 cv-qualified array type, build it as a unique type with
2459 build_cplus_array_type_1 and then adopt the unqualified type's
2462 2008-02-11 Paolo Carlini <pcarlini@suse.de>
2465 * decl.c (groktypename): Check grokdeclarator return.
2467 2008-02-10 Jason Merrill <jason@redhat.com>
2470 * decl2.c (cp_write_global_declarations): Don't write out static
2471 data members with DECL_IN_AGGR_P set.
2473 2008-02-08 Jason Merrill <jason@redhat.com>
2476 * tree.c (build_target_expr_with_type): Handle void initializer.
2477 (bot_manip): Remap slot before recursing.
2479 2008-02-06 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2482 * Make-lang.in (cc1plus-dummy, cc1plus): Add $(GMPLIBS).
2484 2008-02-06 Alexandre Oliva <aoliva@redhat.com>
2487 * tree.c: Include tree-flow.h.
2488 (build_target_expr): Check type compatibility.
2489 * Make-lang.in (cp/tree.o): Depend on $(TREE_FLOW_H).
2490 * call.c (convert_like_real): Convert bitfield to expected type.
2492 2008-02-06 Douglas Gregor <doug.gregor@gmail.com>
2496 * typeck.c (structural_comptypes): Call cp_comptypes.
2497 (comptypes): New; called from the C/C++ common bits to perform
2499 (cp_comptypes): Renamed from comptypes, which is already used,
2500 with a different signature, by the C++ front end.
2501 (build_reinterpret_cast_1): Call cp_comptypes.
2502 (ptr_reasonably_similar): Ditto.
2503 * decl.c (decls_match): Ditto.
2504 * cvt.c (convert_to_reference): Ditto.
2505 * cp-tree.h (same_type_p): Ditto.
2506 (same_or_base_type_p): Ditto.
2507 (comptypes): Rename to cp_comptypes.
2508 * pt.c (canonical_type_parameter): Call cp_comptypes.
2510 2008-02-05 Jakub Jelinek <jakub@redhat.com>
2513 * pt.c (tsubst) <case INTEGER_TYPE>: Don't issue error if max is
2514 value dependent expression.
2516 2008-02-05 Douglas Gregor <doug.gregor@gmail.com>
2519 * decl2.c (save_template_attributes): When we're modifying the
2520 TYPE_MAIN_VARIANT to add new attributes, be sure to also modify
2521 all of the other variants to add those same attributes. Otherwise,
2522 the main variant will be inconsistent with those other variants.
2524 2008-02-04 Richard Guenther <rguenther@suse.de>
2527 * decl.c (record_builtin_java_type): Make jboolean a
2528 integer type again where its mode doesn't match that of bool.
2530 2008-02-02 Jason Merrill <jason@redhat.com>
2531 Mark Mitchell <mark@codesourcery.com>
2534 * init.c (build_value_init_1): New function.
2535 (build_value_init): New function.
2536 * typeck2.c (build_functional_cast): Call it.
2537 * cp-gimplify.c (cp_gimplify_init_expr): Handle its output.
2539 * cp-tree.h (TYPE_HAS_USER_CONSTRUCTOR): Rename from
2540 TYPE_HAS_CONSTRUCTOR.
2541 * class.c (finish_struct_bits, maybe_warn_about_overly_private_class,
2542 add_implicitly_declared_members): Adjust.
2543 (check_field_decls): Adjust. Remove warnings about reference/const
2544 in class without constructor.
2545 (check_bases_and_members): Adjust. Give those warnings here instead.
2546 * decl.c (fixup_anonymous_aggr): Adjust.
2547 (check_initializer): Adjust, clarify logic slightly.
2548 (grok_special_member_properties): Adjust, only set if user-provided.
2549 * rtti.c (create_tinfo_types): Don't set.
2550 * cvt.c (ocp_convert): Remove exception for vtable_entry_type et al.
2551 Use same_type_ignoring_top_level_qualifiers_p.
2552 * pt.c (check_explicit_specialization): Adjust.
2553 (instantiate_class_template): Adjust.
2555 2008-01-31 Douglas Gregor <doug.gregor@gmail.com>
2556 Jakub Jelinek <jakub@redhat.com>
2560 * typeck.c (structural_comptypes): Handle comparisons of
2561 VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, FIXED_POINT_TYPE, and
2563 * mangle.c (write_builtin_type): Map down to the canonical type,
2564 which will be one of the predefined type nodes.
2566 2008-01-29 Michael Meissner <michael.meissner@amd.com>
2569 * cp-tree.h (struct full_lang_decl): Make tree_code bitfield 16
2570 bits to allow for expansion of the number of middle end tree
2573 2008-01-29 Douglas Gregor <doug.gregor@gmail.com>
2584 * typeck.c (check_return_expr): Tweak call to
2585 check_for_bare_parameter_packs.
2586 * class.c (add_method): Be careful with error_mark_nodes.
2587 * cp-tree.h (check_for_bare_parameter_packs): Remove "*" from
2589 * pt.c (struct find_parameter_pack_data): Remove
2591 (find_parameter_packs_r): Don't use SET_PACKS_TO_ERROR.
2592 (uses_parameter_packs): Don't set SET_PACKS_TO_ERROR.
2593 (make_pack_expansion): Ditto.
2594 (check_for_bare_parameter_packs): Parameter is now a tree, not a
2596 (process_template_parm): Tweak call to
2597 check_for_bare_parameter_packs.
2598 (push_template_decl_real): Tweak calls to
2599 check_for_bare_parameter_packs. If bare parameter packs are found
2600 in the list of exceptions, clear out that list after giving an
2602 * semantics.c (finish_cond): Tweak call to
2603 check_for_bare_parameter_packs.
2604 (finish_expr_stmt): Ditto.
2605 (finish_for_expr): Ditto.
2606 (finish_switch_cond): Ditto.
2607 (finish_mem_initializers): Ditto.
2608 (finish_member_declaration): Ditto.
2609 (finish_static_assert): Check for bare parameter packs in the
2611 * decl2.c (cplus_decl_attributes): Check for bare parameter packs in the
2612 attributes of a declaration.
2613 * parser.c (cp_parser_using_declaration): Tweak call to
2614 check_for_bare_parameter_packs.
2615 (cp_parser_base_clause): Ditto.
2617 2008-01-28 Jason Merrill <jason@redhat.com>
2620 * class.c (build_base_path): Fix !want_pointer case.
2622 2008-01-27 Jason Merrill <jason@redhat.com>
2625 * class.c (build_base_path): Fix previous change.
2627 2008-01-26 Jakub Jelinek <jakub@redhat.com>
2630 * error.c (dump_expr): Handle TRUTH_AND_EXPR, TRUTH_OR_EXPR
2633 2008-01-26 Richard Guenther <rguenther@suse.de>
2636 * typeck.c (build_binary_op): Remove code to shorten compares.
2638 2008-01-25 Richard Guenther <rguenther@suse.de>
2641 * decl.c (record_builtin_java_type): Make __java_boolean
2643 * typeck.c (structural_comptypes): Move TYPE_FOR_JAVA check
2644 after TYPE_MAIN_VARIANT check.
2646 2008-01-25 Jason Merrill <jason@redhat.com>
2649 * class.c (build_base_path): Don't mess with virtual access if
2651 * call.c (standard_conversion): Don't check whether source type
2654 * decl2.c (is_late_template_attribute): Don't defer attribute
2655 visibility just because the type is dependent.
2657 2008-01-25 Jason Merrill <jason@redhat.com>
2658 Mark Mitchell <mark@codesourcery.com>
2661 * call.c (standard_conversion): Allow conversion from integer/real
2663 (compare_ics): Such a conversion is worse than a normal arithmetic
2666 2008-01-25 Richard Guenther <rguenther@suse.de>
2669 * cp-lang.c (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS): Define
2672 2008-01-24 Paolo Carlini <pcarlini@suse.de>
2675 * pt.c (push_template_decl_real): Return error_mark_node in case
2676 of template definition of non-template.
2678 2008-01-24 Jason Merrill <jason@redhat.com>
2681 * decl2.c (is_late_template_attribute): Defer any attribute with
2682 dependent args. Also defer type attributes if the type is dependent.
2684 2008-01-22 Jakub Jelinek <jakub@redhat.com>
2685 Alexandre Oliva <aoliva@redhat.com>
2688 * call.c (reference_binding): For bitfields use the declared bitfield
2690 (add_builtin_candidates): Likewise.
2691 * class.c (layout_class_type): For bitfields copy over the
2692 original type quals.
2694 2008-01-22 Jason Merrill <jason@redhat.com>
2697 * decl.c (groktypename): Also ignore attributes on dependent
2698 possibly-class types.
2701 * friend.c (do_friend): Check for prior declaration of a friend
2702 function of a local class.
2703 * name-lookup.c (lookup_name_innermost_nonclass_level):
2705 * name-lookup.h: Declare it.
2707 2008-01-22 Tom Tromey <tromey@redhat.com>
2710 * init.c (build_new_1): Only disallow Java aggregates.
2712 2008-01-22 Jakub Jelinek <jakub@redhat.com>
2715 * semantics.c (finish_omp_for): Don't call c_finish_omp_for
2716 if decl or init is error_mark_node.
2719 * error.c (dump_expr): Handle VECTOR_CST.
2721 2008-01-21 Jason Merrill <jason@redhat.com>
2724 * pt.c (tsubst_aggr_type): Make sure our context is complete.
2727 * pt.c (retrieve_local_specialization): Robustify.
2728 (tsubst_pack_expansion, tsubst_decl): Remove redundant checks.
2731 * pt.c (tsubst): Only call retrieve_local_specialization if the
2732 original typedef was in a function template.
2735 * decl.c (wrap_cleanups_r): Set TRY_CATCH_IS_CLEANUP.
2737 2008-01-21 Richard Guenther <rguenther@suse.de>
2740 * error.c (cp_print_error_function): Deal with recursive
2743 2008-01-20 Paolo Carlini <pcarlini@suse.de>
2746 * error.c (dump_expr): Deal with VIEW_CONVERT_EXPR.
2748 2008-01-20 Paolo Carlini <pcarlini@suse.de>
2752 * name-lookup.c (do_class_using_decl): Do not call constructor_name_p
2753 on non-IS_AGGR_TYPE scope.
2754 (constructor_name_p): Assert IS_AGGR_TYPE.
2756 2008-01-18 Ian Lance Taylor <iant@google.com>
2759 * decl.c (duplicate_decls): Copy DECL_IS_OPERATOR_NEW flag.
2760 (grok_op_properties): For NEW_EXPR and VEC_NEW_EXPR set
2761 DECL_IS_OPERATOR_NEW flag.
2763 2008-01-16 Richard Guenther <rguenther@suse.de>
2766 * typeck.c (is_bitfield_expr_with_lowered_type): Recurse
2767 for conversions to type variants.
2769 2008-01-15 Andreas Tobler <a.tobler@schweiz.org>
2771 * parser.c (cp_parser_template_parameter): Fix C90 issue with mixing
2772 declaration and code. Update copyright year.
2774 2008-01-15 Douglas Gregor <doug.gregor@gmail.com>
2777 * friend.c (do_friend): Don't query TYPE_BEING_DEFINED unless we
2778 know we have a class type.
2780 2008-01-15 Douglas Gregor <doug.gregor@gmail.com>
2783 * pt.c (coerce_template_parameter_pack): When substituting into
2784 the type of a non-type template parameter pack. use the
2785 deduced/substituted arguments.
2786 * parser.c (declarator_can_be_parameter_pack): A pointer-to-member
2787 can be a parameter pack with the ellipsis following it. When we
2788 have an erroneous declaration, allow it to be a parameter pack.
2789 (cp_parser_template_parameter): Complain about default
2790 arguments on non-type template parameter packs, and parse them
2791 using the new cp_parser_default_argument.
2792 (cp_parser_parameter_declaration): Complain about parameter packs
2793 with default arguments. Move parsing of default arguments into a
2794 new function, cp_parser_default_argument.
2795 (cp_parser_default_argument): New; extracted from
2796 cp_parser_parameter_declaration.
2798 2008-01-15 Douglas Gregor <doug.gregor@gmail.com>
2804 * typeck.c (check_return_expr): If there are bare parameter packs
2805 in the return value, set it to error_mark_node.
2806 * tree.c (cp_walk_subtrees): Walk USING_DECL nodes.
2807 * pt.c (find_parameter_packs_r): Look at the type of
2808 IDENTIFIER_NODEs (e.g., for user-defined conversions).
2809 (check_for_bare_parameter_packs): Flip the result: now returns
2810 TRUE when there were bare parameter packs, FALSE otherwise.
2811 (push_template_decl_real): Deal with flipped result of
2812 check_for_bare_parameter_packs.
2813 * semantics.c (finish_cond): If there are bare parameter packs in
2814 the conditional, set it to error_mark_node.
2815 (finish_expr_stmt): If there are bare parameter packs in the
2816 expression, set it to error_mark_node.
2817 (finish_for_expr): Ditto.
2818 (finish_switch_cond): If there are bare parameter packs in
2819 the conditional, set it to error_mark_node.
2820 (finish_mem_initializers): If there are bare parameter packs in
2821 the member initializer, set it to error_mark_node.
2822 (finish_member_declaration): Check the attributes of the
2823 declaration for bare parameter packs, and remove the attributes if
2824 any have bare parameter packs.
2825 * parser.c (cp_parser_using_declaration): Check the using
2826 declaration for bare parameter packs.
2827 (cp_parser_base_clause): If there are bare parameter packs in a
2828 base specifier, don't add it to the chain.
2830 2008-01-15 Douglas Gregor <doug.gregor@gmail.com>
2833 * error.c (dump_simple_decl): Display ellipsis for template
2834 non-type parameter packs.
2835 (dump_decl): Display ellipsis for template type parameter packs.
2836 (dump_template_decl): Display ellipsis for template template
2838 * pt.c (redeclare_class_template): When redeclaring a class
2839 template, check for collisions between template parameters and
2840 template parameter packs.
2842 2008-01-15 Douglas Gregor <doug.gregor@gmail.com>
2845 * pt.c (process_partial_specialization): Don't mark template
2846 parameters that occur in non-deduced contexts.
2847 (struct pair_fn_data): Add include_nondeduced_p.
2848 (for_each_template_parm_r): Only visit non-deduced contexts if
2849 include_nondeduced_p is set.
2850 (for_each_template_parm): Added parameter include_nondeduced_p,
2851 which states whether template parameters found in non-deduced
2852 contexts should be visited.
2853 (uses_template_parms): Visit all template parameters, even those
2854 in non-deduced contexts.
2856 2008-01-15 Douglas Gregor <doug.gregor@gmail.com>
2859 * pt.c (check_default_tmpl_args): Check for parameter packs that
2860 aren't at the end of a primary template.
2861 (push_template_decl_real): Remove check for parameter packs that
2862 aren't at the end of a primary template; that now happens in
2863 check_default_tmpl_args.
2864 * semantics.c (finish_template_template_parm): Use
2865 check_default_tmpl_args to check for errors in the template
2868 2008-01-12 Doug Kwan <dougkwan@google.com>
2870 * decl.c: (grokdeclarator): Use OPT_Wignored_qualifiers
2871 instead of OPT_Wreturn_type in warning due to ignored return type
2873 * pt.c: (tsubst_function_type): Use OPT_Wignored_qualifiers
2874 instead of OPT_Wreturn_type in warning due to ignored return type
2877 2008-01-08 Jakub Jelinek <jakub@redhat.com>
2880 * semantics.c (finish_omp_for): Don't call
2881 fold_build_cleanup_point_expr if processing_template_decl.
2883 2008-01-04 Paolo Carlini <pcarlini@suse.de>
2884 Jakub Jelinek <jakub@redhat.com>
2887 * error.c (dump_template_argument): Deal with TREE_LIST.
2889 2008-01-01 Douglas Gregor <doug.gregor@gmail.com>
2891 * parser.c (cp_parser_check_decl_spec): Don't warn about "long
2892 long" in C++0x mode; change the warning to note that "long long"
2893 is only unsupported in C++98 mode.
2895 2007-12-20 Jason Merrill <jason@redhat.com>
2898 * call.c (standard_conversion): Derived-to-base is considered a
2899 standard conversion.
2901 2007-12-19 Jakub Jelinek <jakub@redhat.com>
2904 * parser.c (cp_parser_omp_parallel): For non-combined parallel
2905 call cp_parser_statement rather than
2906 cp_parser_already_scoped_statement.
2908 2007-12-18 Jason Merrill <jason@redhat.com>
2911 * pt.c (tsubst_aggr_type): Do nothing if the type already doesn't
2913 (dependent_type_p_r): Handle the domain of an array.
2915 2007-12-18 Douglas Gregor <doug.gregor@gmail.com>
2916 Jakub Jelinek <jakub@redhat.com>
2921 * pt.c (template_template_parm_bindings_ok_p): New; verifies
2922 bindings of template template parameters after all template
2923 arguments have been deduced.
2924 (coerce_template_parms): Don't complain when COMPLAIN doesn't
2926 (fn_type_unification): Use template_template_parm_bindings_ok_p.
2927 (unify): Deal with variadic, bound template template parameters.
2928 (get_class_bindings): Use template_template_parm_bindings_ok_p.
2930 2007-12-18 Jakub Jelinek <jakub@redhat.com>
2933 * decl.c (grokdeclarator): Reject friend sfk_constructor
2936 2007-12-17 Jakub Jelinek <jakub@redhat.com>
2939 * parser.c (cp_parser_omp_all_clauses): Accept optional comma
2942 2007-12-15 Alexandre Oliva <aoliva@redhat.com>
2945 * cp-lang.c (cp_classify_record): New.
2946 (LANG_HOOKS_CLASSIFY_RECORD): Override.
2948 2007-12-11 Jakub Jelinek <jakub@redhat.com>
2951 * decl2.c (cp_write_global_declarations): Revert 2007-11-22 change.
2954 * rtti.c (build_dynamic_cast): Call convert_from_reference even for
2955 dynamic_cast in a template.
2957 2007-12-10 Simon Martin <simartin@users.sourceforge.net>
2960 * typeck.c (build_class_member_access_expr): Compute MEMBER_SCOPE from
2961 MEMBER's BASELINK_ACCESS_BINFO instead of its BASELINK_BINFO.
2963 2007-12-10 Jakub Jelinek <jakub@redhat.com>
2966 * error.c (dump_type_prefix, dump_type_suffix): Handle
2967 TYPE_PACK_EXPANSION.
2970 * error.c (dump_expr): Handle ABS_EXPR.
2972 2007-12-09 Jakub Jelinek <jakub@redhat.com>
2976 * repo.c (repo_emit_p): Return 2 for DECL_INTEGRAL_CONSTANT_VAR_P
2977 in class scope rather than DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P.
2978 Return 2 also if DECL_EXPLICIT_INSTANTIATION.
2979 * decl2.c (import_export_decl): Don't make VAR_DECLs import_p when
2980 flag_use_repository and repo_emit_p returned 2.
2982 2007-12-06 Jakub Jelinek <jakub@redhat.com>
2985 * tree.c (stabilize_call, stabilize_init): Do nothing if
2986 processing_template_decl.
2988 2007-12-05 Jakub Jelinek <jakub@redhat.com>
2991 * semantics.c (finish_decltype_type): For SCOPE_REF issue an
2992 error instead of assertion failure.
2993 * parser.c (cp_parser_decltype): If closing paren is not found,
2994 return error_mark_node.
2996 2007-12-04 Douglas Gregor <doug.gregor@gmail.com>
2999 * name-lookup.c (arg_assoc_template_arg): Recurse on argument
3001 (arg_assoc_type): We don't need to handle TYPE_ARGUMENT_PACK here,
3002 since arg_assoc_template_arg will deal with them (better).
3004 2007-12-04 Douglas Gregor <doug.gregor@gmail.com>
3007 * pt.c (tsubst_exception_specification): Handle substitutions into
3008 member templates, where tsubst_pack_expansion returns a
3009 TYPE_PACK_EXPANSION.
3011 2007-12-04 Douglas Gregor <doug.gregor@gmail.com>
3014 * pt.c (unify_pack_expansion): If we didn't deduce any actual
3015 bindings for the template parameter pack, don't try to keep the
3016 empty deduced arguments.
3017 (unify): If a parameter is a template-id whose template argument
3018 list contains a pack expansion that is not at the end, then we
3019 cannot unify against that template-id.
3021 2007-12-02 Paolo Carlini <pcarlini@suse.de>
3024 * pt.c (current_template_args): Use error_operand_p.
3026 2007-12-02 Paolo Carlini <pcarlini@suse.de>
3029 * error.c (dump_decl): Handle TREE_BINFO.
3031 2007-12-01 Ollie Wild <aaw@google.com>
3034 * typeck.c (build_binary_op): Add conversion of pointers to function
3035 members appearing as operands to the equality operators.
3037 2007-11-30 Jakub Jelinek <jakub@redhat.com>
3040 * error.c (dump_expr): Handle OBJ_TYPE_REF.
3042 2007-11-29 Jakub Jelinek <jakub@redhat.com>
3045 * tree.c (lvalue_p_1) <case COND_EXPR>: Handle x ?: y
3047 * typeck.c (is_bitfield_expr_with_lowered_type) <case COND_EXPR>:
3052 * parser.c (cp_parser_decltype): Don't call finish_id_expression
3054 * semantics.c (finish_decltype_type): Issue error on types, TYPE_DECLs
3057 2007-11-27 Jakub Jelinek <jakub@redhat.com>
3059 PR tree-optimization/34181
3060 * method.c (use_thunk): Don't inline the call in the thunk.
3063 * tree.c (decl_linkage): Static data members and static member
3064 functions in anonymous ns classes are lk_external.
3066 2007-11-26 Andreas Krebbel <krebbel1@de.ibm.com>
3069 * decl.c (start_preparsed_function): Pass
3070 processing_template_decl for the new allocate_struct_function
3073 2007-11-25 Richard Guenther <rguenther@suse.de>
3075 * decl.c (poplevel): Use BLOCK_CHAIN.
3077 2007-11-24 Ollie Wild <aaw@google.com>
3079 * typeck.c (delta_from_ptrmemfunc): New function.
3080 (get_member_function_from_ptrfunc): Call delta_from_ptrmemfunc.
3081 (build_binary_op): Call delta_from_ptrmemfunc.
3083 2007-11-23 Jakub Jelinek <jakub@redhat.com>
3087 * decl.c (cp_finish_decl): Disallow variable or field
3088 definitions if extern "Java" aggregates.
3089 (grokparms): Disallow parameters with extern "Java"
3091 (check_function_type): Disallow function return values
3092 with extern "Java" aggregates.
3093 * init.c (build_new_1): Disallow placement new with
3094 extern "Java" aggregates.
3096 2007-11-23 Mark Mitchell <mark@codesourcery.com>
3097 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
3100 * call.c (convert_like_real): Build a zero constant when __null is
3101 converted to an integer type.
3103 2007-11-22 Jakub Jelinek <jakub@redhat.com>
3106 * decl2.c (cp_write_global_declarations): Issue error about static
3107 data members in anonymous namespace which are declared and used,
3110 2007-11-20 Jakub Jelinek <jakub@redhat.com>
3113 * parser.c (cp_parser_class_head): Reject function template ids.
3116 * tree.c (build_cplus_array_type_1): Don't pass any VLA types
3117 when processing_template_decl to build_array_type.
3120 * pt.c (more_specialized_fn): Don't segfault if one or
3121 both argument list end with ellipsis.
3123 2007-11-18 Jakub Jelinek <jakub@redhat.com>
3126 * semantics.c (finish_call_expr): Set
3127 current_function_returns_abnormally if fn is noreturn FUNCTION_DECL
3128 or OVERLOAD with all noreturn functions.
3130 2007-11-16 Jakub Jelinek <jakub@redhat.com>
3133 * pt.c (apply_late_template_attributes): Do nothing if decl's type is
3136 2007-11-13 Jakub Jelinek <jakub@redhat.com>
3143 * pt.c (find_parameter_packs_r): If ppd->set_packs_to_error,
3144 set to error_mark_node the outermost POINTER_TYPE to the pack if
3145 it is seen in a POINTER_TYPE.
3146 (push_template_decl_real): If check_for_bare_parameter_packs
3147 fails for function return type, set the return type to
3148 integer_type_node. If check_for_bare_parameter_packs failed
3149 for non-function, return error_mark_node.
3152 * call.c (build_new_op): Call resolve_args before calling
3155 2007-11-11 Tom Tromey <tromey@redhat.com>
3158 * lex.c (handle_pragma_implementation): Use cpp_included_before.
3160 2007-11-12 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
3163 * pt.c (redeclare_class_template): Update error message. Use a
3164 note to show the previous declaration.
3165 (tsubst_friend_class): Use the location of the friend template as
3166 the input location before calling redeclare_class_template.
3168 2007-11-11 Jakub Jelinek <jakub@redhat.com>
3171 * semantics.c (finish_pseudo_destructor_expr): Handle
3172 object == error_mark_node.
3174 2007-11-10 Jakub Jelinek <jakub@redhat.com>
3177 * pt.c (tsubst_copy_and_build) <case COMPONENT_REF>: If object_type
3178 is not scalar type, let finish_class_member_access_expr handle
3179 diagnostics. Pass BIT_NOT_EXPR argument to
3180 finish_pseudo_destructor_expr. Handle SCOPE_REF properly.
3182 2007-11-09 Douglas Gregor <doug.gregor@gmail.com>
3185 * decl.c (cp_complete_array_type): If any of the initializer
3186 elements are pack expansions, don't compute the array size yet.
3188 2007-11-08 Andrew Pinski <pinskia@gmail.com>
3191 * tree.c (decl_linkage): Fields have no linkage.
3193 2007-11-08 Daniel Jacobowitz <dan@codesourcery.com>
3195 * class.c (build_ctor_vtbl_group): Lay out the new type and decl.
3197 2007-11-07 Douglas Gregor <doug.gregor@gmail.com>
3202 * semantics.c (finish_decltype_type): See through INDIRECT_REFs.
3203 Be careful with ERROR_MARK_NODEs.
3204 * parser.c (cp_parser_check_access_in_redeclaration): Handle NULL
3207 2007-11-07 Jakub Jelinek <jakub@redhat.com>
3210 * call.c (build_over_call): Don't check TREE_ADDRESSABLE
3213 2007-11-06 Douglas Gregor <doug.gregor@gmail.com>
3217 * tree.c (c_build_qualified_type): Define bridge to
3218 cp_build_qualified_type.
3220 2007-11-06 Douglas Gregor <doug.gregor@gmail.com>
3231 * typeck.c (check_return_expr): Pass address of retval to
3232 check_for_bare_parameter_packs.
3233 * class.c (build_base_field): Tolerate bases that have no layout
3235 (end_of_base): Ditto.
3236 * tree.c (canonical_type_variant): Be careful with
3238 * cp-tree.h (check_for_bare_parameter_packs): Now accepts a
3240 * pt.c (find_parameter_pack_data): Add set_packs_to_error field,
3241 which states whether parameter packs should be replaced with
3243 (find_parameter_packs_r): Pass addresses to cp_walk_tree wherever
3244 possible. If set_packs_to_error is set true, replace the parameter
3245 pack with ERROR_MARK_NODE. Manage our own pointer sets.
3246 (uses_parameter_packs): Don't set parameter packs to
3248 (check_for_bare_parameter_packs): Now takes a pointer to a tree,
3249 which may be modified (if it is a parameter pack). Instructs
3250 find_parameter_packs_r to replace parameter packs with
3251 ERROR_MARK_NODE (so that they won't cause errors later on).
3252 (process_template_parm): Pass pointer to
3253 check_for_bare_parameter_packs.
3254 (process_partial_specialization): Replace pack expansions before
3255 the end of the template argument list with ERROR_MARK_NODE.
3256 (push_template_decl_real): Pass pointer to
3257 check_for_bare_parameter_packs. Replace parameter packs not at the
3258 end of the template parameter list with ERROR_MARK_NODE.
3259 (convert_template_argument): Be more careful about using DECL_NAME
3260 on only declarations.
3261 (unify): Can't unify against ERROR_MARK_NODE.
3262 * semantics.c (finish_cond): Pass pointer to
3263 check_for_bare_parameter_packs.
3264 (finish_expr_stmt): Ditto.
3265 (finish_for_expr): Ditto.
3266 (finish_switch_cond): Pass pointer to
3267 check_for_bare_parameter_packs, and call it before we put the
3268 condition into the statement.
3269 (finish_mem_initializers): Pass pointer to
3270 check_for_bare_parameter_packs.
3271 (finish_member_declaration): Ditto.
3272 * parser.c (cp_parser_base_clause): Ditto.
3274 2007-11-06 Jakub Jelinek <jakub@redhat.com>
3277 * decl.c (cp_finish_decl): Call make_rtl_for_nonlocal_decl already
3278 with the final TREE_READONLY flag in place. processing_template_decl
3279 is known to be 0 in this part of function.
3282 * cp-tree.h: Update comment - TYPE_LANG_FLAG_0 is not
3283 OMP_ATOMIC_DEPENDENT_P in OMP_ATOMIC.
3284 * pt.c (tsubst_expr): Assert OMP_ATOMIC_DEPENDENT_P.
3285 * semantics.c (finish_omp_atomic): Revert most of the
3286 2007-02-05 changes, just keep the new representation of
3287 OMP_ATOMIC_DEPENDENT_P OMP_ATOMIC.
3289 2007-11-05 H.J. Lu <hongjiu.lu@intel.com>
3292 * decl2.c (constrain_visibility): Clear DECL_ONE_ONLY if marked
3295 2007-11-05 Douglas Gregor <doug.gregor@gmail.com>
3300 * typeck.c (merge_types): Don't lose rvalue references when
3302 * call.c (build_over_call): Don't elide move constructors just
3303 because the copy constructor is trivial (!).
3304 (compare_ics): If comparing cv-qualifiers fails, we can still order
3305 based on binding lvalues vs. rvalues.
3307 2007-11-05 Douglas Gregor <doug.gregor@gmail.com>
3310 * pt.c (unify_pack_expansion): bring handling of function call
3311 arguments into line with type_unification_real.
3313 2007-11-05 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
3315 * typeck.c (build_binary_op): Use pedwarn instead of error for
3318 2007-11-05 Jakub Jelinek <jakub@redhat.com>
3321 * parser.c (cp_parser_unary_expression): For &&label call
3322 cp_parser_non_integral_constant_expression and return error_mark_node
3323 if it returned true.
3326 * decl.c (grokdeclarator): Don't call build_memfn_type if type
3327 is neither FUNCTION_TYPE nor METHOD_TYPE.
3329 2007-11-02 Jakub Jelinek <jakub@redhat.com>
3332 * parser.c (cp_parser_nested_name_specifier_opt): Use
3333 TYPE_MAIN_VARIANT (new_scope) as scope if new_scope is an incomplete
3334 typedef of currently open class.
3336 2007-11-02 Paolo Carlini <pcarlini@suse.de>
3339 * error.c (dump_expr): Deal specially with statements.
3341 2007-11-01 Jason Merrill <jason@redhat.com>
3344 * pt.c (push_template_decl_real): Set DECL_CONTEXT on template
3346 (lookup_template_class): Use it to get the outer template args
3347 for instantiating one.
3350 * pt.c (reduce_template_parm_level): tsubst the parameters
3351 of a template template parm.
3353 2007-11-01 Douglas Gregor <doug.gregor@gmail.com>
3356 * pt.c (find_parameter_packs_r): Handle TYPENAME_TYPE.
3358 2007-11-01 Jakub Jelinek <jakub@redhat.com>
3361 * parser.c (cp_parser_postfix_dot_deref_expression): If
3362 POSTFIX_EXPRESSION is type dependent, try to parse it as pseudo dtor
3363 first and if that succeeds and type is SCALAR_TYPE_P, create
3367 * rtti.c (enum_tinfo_kind): Fix TK_TYPE_INFO_TYPE comment.
3368 (typeid_ok_p): Use the same alias set for abi::__type_info_pseudo
3369 as for std::type_info.
3371 2007-10-31 Paolo Carlini <pcarlini@suse.de>
3374 * cxx-pretty-print.c (pp_cxx_typeid_expression,
3375 pp_cxx_delete_expression): Change to static linkage.
3376 * cxx-pretty-print.h: Adjust declarations.
3377 * error.c (dump_expr, case EXPR_PACK_EXPANSION, TYPEID_EXPR,
3378 MEMBER_REF, DOTSTAR_EXPR, DELETE_EXPR, VEC_DELETE_EXPR,
3379 MODOP_EXPR): Forward to pp_expression.
3381 * cxx-pretty-print.c (pp_cxx_expression, case NON_DEPENDENT_EXPR):
3384 2007-10-31 Christian Bruel <christian.bruel@st.com>
3385 Mark Mitchell <mark@codesourcery.com>
3388 * typeck.c (check_return_expr): Don't set named_return_value_okay_p
3389 if retval is volatile.
3391 2007-10-30 Jakub Jelinek <jakub@redhat.com>
3394 * decl2.c (build_offset_ref_call_from_tree): Call
3395 build_non_dependent_expr on object prior to building ADDR_EXPR from it
3396 if FN is DOTSTAR_EXPR.
3398 2007-10-30 Douglas Gregor <doug.gregor@gmail.com>
3402 * pt.c (find_parameter_packs_r): Fix typo in comment.
3403 (convert_template_argument): Look at the pattern of a pack
3404 expansion to determine what kind of entity we're converting.
3405 (coerce_template_parameter_pack): When we have coerced a non-type
3406 template parameter pack, substitute into the type of that pack.
3407 (tsubst_pack_expansion): When our substitution of a parameter pack
3408 is a "trivial" substitution of itself, just substitute into the
3409 pack expansion rather than actually expanding.
3411 2007-10-29 Jakub Jelinek <jakub@redhat.com>
3414 * class.c (check_bitfield_decl): Don't set field's type to error_mark_node
3415 for non-integral type bitfields. Return true if bitfield is correct, false
3416 error has been diagnosed.
3417 (check_field_decls): If check_bitfield_decl returned false, call also
3420 2007-10-28 Paolo Carlini <pcarlini@suse.de>
3421 Mark Mitchell <mark@codesourcery.com>
3424 * pt.c (do_decl_instantiation): If the VAR_DECL is not a
3425 class member error out and return.
3427 2007-10-27 Jakub Jelinek <jakub@redhat.com>
3429 * error.c (reinit_cxx_pp): Initialize cxx_pp->enclosing_scope
3430 to current_function_decl rather than 0.
3433 * cxx-pretty-print.c (pp_cxx_pm_expression) <case MEMBER_REF>: Print
3435 * error.c (dump_expr): Handle MEMBER_REF and DOTSTAR_EXPR.
3437 2007-10-27 Jason Merrill <jason@redhat.com>
3440 * call.c (convert_default_arg): Detect recursion.
3442 2007-10-27 Jakub Jelinek <jakub@redhat.com>
3445 * cxx-pretty-print.h (pp_cxx_offsetof_expression): New prototype.
3446 * cxx-pretty-print.c (pp_cxx_primary_expression): Handle
3448 (pp_cxx_offsetof_expression_1, pp_cxx_offsetof_expression): New