1. 06 Sep, 2012 1 commit
  2. 05 Sep, 2012 3 commits
    • re PR c++/54191 ([C++11] SFINAE does not handle conversion to inaccessible base) · 22854930
      /cp
      2012-09-05  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/54191
      	* search.c (lookup_base): Add tsubst_flags_t parameter.
      	(adjust_result_of_qualified_name_lookup, check_final_overrider):
      	Adjust.
      	* name-lookup.c (do_class_using_decl): Adjust.
      	* typeck2.c (binfo_or_else, build_scoped_ref, build_m_component_ref):
      	Likewise.
      	* cvt.c (cp_convert_to_pointer, convert_to_pointer_force,
      	build_up_reference): Likewise.
      	* rtti.c (build_dynamic_cast_1): Likewise.
      	* tree.c (maybe_dummy_object): Likewise.
      	* call.c (build_conditional_expr_1, build_over_call): Likewise.
      	* cp-tree.h (UNIQUELY_DERIVED_FROM_P, PUBLICLY_UNIQUELY_DERIVED_P):
      	Remove.
      	(enum base_access_flags, ba_quiet): Remove.
      	(uniquely_derived_from_p, publicly_uniquely_derived_p): Declare.
      	* except.c (can_convert_eh): Adjust.
      	* decl.c (grokdeclarator): Likewise.
      	* typeck.c (comp_except_types, build_class_member_access_expr,
      	finish_class_member_access_expr, get_member_function_from_ptrfunc,
      	build_static_cast_1, get_delta_difference_1): Likewise.
      	* class.c (build_base_path, convert_to_base, build_vtbl_ref_1,
      	warn_about_ambiguous_bases): Likewise.
      	(uniquely_derived_from_p, publicly_uniquely_derived_p): Define.
      
      /testsuite
      2012-09-05  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/54191
      	* g++.dg/cpp0x/sfinae39.C: New.
      
      From-SVN: r190969
      Paolo Carlini committed
    • re PR c++/54441 (Infinite loop with brace initializer on zero-length array) · faddc0d7
      	PR c++/54441
      	* decl.c (reshape_init_class): Handle invalid initializer for
      	0-length array member.
      
      	* error.c (dump_type_suffix): Correct handling of 0-length arrays.
      
      From-SVN: r190962
      Jason Merrill committed
    • re PR c++/54420 (Segmentation fault in decl_mangling_context) · 5a706c32
      	PR c++/54420
      	* cp-tree.h (LAMBDANAME_P): Remove.
      	(LAMBDA_TYPE_P): Check CLASSTYPE_LAMBDA_EXPR instead.
      	* cp-lang.c (cxx_dwarf_name): Likewise.
      	* error.c (dump_aggr_type): Likewise.
      	* semantics.c (begin_lambda_type): Set CLASSTYPE_LAMBDA_EXPR sooner.
      
      From-SVN: r190961
      Jason Merrill committed
  3. 04 Sep, 2012 2 commits
  4. 31 Aug, 2012 8 commits
  5. 25 Aug, 2012 3 commits
    • re PR c++/51421 ([c++0x] ICE with invalid use of auto) · f27a59cf
      /cp
      2012-08-25  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/51421
      	* decl2.c (mark_used): Consistently return false after errors
      	about uses before deduction of auto.
      	* semantics.c (finish_id_expression): Check mark_used return
      	value and return error_mark_node in case of failure.
      
      /testsuite
      2012-08-25  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/51421
      	* g++.dg/cpp0x/auto34.C: New.
      
      From-SVN: r190665
      Paolo Carlini committed
    • PR c++/51213 (again) · cd057e3a
      	PR c++/51213 (again)
      	* pt.c (deduction_tsubst_fntype): Remove.
      	(fn_type_unification): Check deduction depth and call
      	instantiate_template here.  Handle default argument access checks.
      	(determine_specialization): Suppress access control.
      	(tsubst_decl): Check for excessive deduction depth.
      	(recheck_decl_substitution): Make sure access control is on.
      	(type_unification_real): Don't mess with access deferring here.
      	(get_bindings): Adjust for fn_type_unification return type.
      	* call.c (enum rejection_reason_code): Drop rr_template_instantiation.
      	(template_instantiation_rejection): Remove.
      	(struct rejection_reason): Change targs to num_targs.
      	(template_unification_rejection, print_z_candidate): Adjust.
      	(add_template_candidate_real): Adjust for fn_type_unification change.
      	* class.c (resolve_address_of_overloaded_function): Likewise.
      	* cp-tree.h: Adjust declaration.
      
      From-SVN: r190664
      Jason Merrill committed
    • pt.c (tsubst_default_argument): Indicate where the default argument is being instantiated for. · 03b8c9bf
      	* pt.c (tsubst_default_argument): Indicate where the default
      	argument is being instantiated for.
      	(tsubst_expr): Restore previous location.
      	(tsubst_copy_and_build): Set and restore location.
      	* call.c (build_new_method_call_1): Remember location of call.
      	* semantics.c (finish_call_expr): Here too.
      	* parser.c (cp_parser_omp_for_loop): Remember the location of the
      	increment expression.
      
      From-SVN: r190662
      Jason Merrill committed
  6. 24 Aug, 2012 2 commits
  7. 23 Aug, 2012 2 commits
  8. 21 Aug, 2012 1 commit
    • cp-tree.h (TREE_INDIRECT_USING): Use TREE_LANG_FLAG_0 accessor. · c1aaec5b
      2012-08-21  Richard Guenther  <rguenther@suse.de>
      
      	cp/
      	* cp-tree.h (TREE_INDIRECT_USING): Use TREE_LANG_FLAG_0 accessor.
      	(ATTR_IS_DEPENDENT): Likewise.
      	(ARGUMENT_PACK_INCOMPLETE_P): Use TREE_ADDRESSABLE instead of
      	TREE_LANG_FLAG_0 on TREE_VECs.
      
      	* tree.h (struct tree_base): Add union to make it possible to
      	re-use the upper 4 bytes for tree codes that do not need as
      	many flags as others.  Move visited and default_def_flag to
      	common bits section in exchange for saturating_flag and
      	unsigned_flag.  Add SSA name version and tree vec length
      	fields here.
      	(struct tree_vec): Remove length field here.
      	(struct tree_ssa_name): Remove version field here.
      
      From-SVN: r190558
      Richard Biener committed
  9. 20 Aug, 2012 4 commits
    • Fix PR C++/19351: integer overflow in operator new[] · 4a84253c
      2012-08-20  Florian Weimer  <fweimer@redhat.com>
      
      	PR c++/19351
      	* call.c (build_operator_new_call): Add size_check argument and
      	evaluate it.
      	* cp-tree.h (build_operator_new_call): Adjust declaration.
      	* init.c (build_new_1): Compute array size check and apply it.
      
      2012-08-10  Florian Weimer  <fweimer@redhat.com>
      
      	PR c++/19351
      	* g++.dg/init/new38.C: New test.
      	* g++.dg/init/new39.C: New test.
      
      From-SVN: r190546
      Florian Weimer committed
    • re PR c++/10416 ('unused variable' warning ignores ctor/dtor side-effects) · d952d7ad
      /cp
      2012-08-20  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/10416
      	* decl.c (poplevel): Check TYPE_HAS_NONTRIVIAL_DESTRUCTOR for
      	Wunused_variable too.
      
      /testsuite
      2012-08-20  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/10416
      	* g++.dg/warn/Wunused-var-17.C: New.
      
      From-SVN: r190538
      Paolo Carlini committed
    • Fix -ftime-report for C++ lookup. · e3b35057
      Found this while running -ftime-report on a largish C++ source file.
      We need to start TV_NAME_LOOKUP conditionally inside poplevel()
      because it may be called from another lookup routine that already has
      TV_NAME_LOOKUP going.
      
      Tested on x86_64.  Committed to trunk.
      
      2012-08-20  Diego Novillo  <dnovillo@google.com>
      
      	* decl.c (poplevel): Start TV_NAME_LOOKUP conditionally.
      
      From-SVN: r190535
      Diego Novillo committed
    • name-lookup.c (store_binding_p): New predicate, split out from ... · 71f15f31
      2012-08-20  Richard Guenther  <rguenther@suse.de>
      
      	* name-lookup.c (store_binding_p): New predicate, split out from ...
      	(store_binding): ... here.  Always store binding and require
      	target vector with enough space.
      	(store_bindings): Collect to store bindings and reserve space
      	for them, then store them.
      	(store_class_bindings): Likewise.
      
      From-SVN: r190529
      Richard Guenther committed
  10. 19 Aug, 2012 1 commit
  11. 17 Aug, 2012 1 commit
    • invoke.texi (-Wsizeof-pointer-memaccess): Document. · 1a4049e7
      	* doc/invoke.texi (-Wsizeof-pointer-memaccess): Document.
      c/
      	* c-tree.h (c_last_sizeof_arg): Declare.
      	* c-parser.c (struct c_tree_loc_pair): New type.
      	(c_parser_expr_list): Add sizeof_arg argument.  Fill it in if
      	non-NULL.
      	(c_parser_attributes, c_parser_objc_keywordexpr): Adjust callers.
      	(c_parser_postfix_expression_after_primary): Likewise.  Call
      	sizeof_pointer_memaccess_warning if needed.
      	(sizeof_ptr_memacc_comptypes): New function.
      	* c-typeck.c (c_last_sizeof_arg): New global variable.
      	(c_expr_sizeof_expr, c_expr_sizeof_type): Initialize it.
      cp/
      	* cp-tree.def (SIZEOF_EXPR): Move to c-common.def.
      c-family/
      	* c-common.c (sizeof_pointer_memaccess_warning): New function.
      	* c.opt (-Wsizeof-pointer-memaccess): Add new option.
      	* c-opts.c (c_common_handle_option): Enable it for -Wall.
      	* c-common.h (sizeof_pointer_memaccess_warning): Add prototype.
      	* c-common.def (SIZEOF_EXPR): Moved here from cp-tree.def.
      fortran/
      	* array.c (gfc_match_array_ref): Fix up memset arguments.
      testsuite/
      	* gcc.dg/torture/Wsizeof-pointer-memaccess1.c: New test.
      
      From-SVN: r190467
      Jakub Jelinek committed
  12. 15 Aug, 2012 1 commit
    • backport: As described in http://gcc.gnu.org/ml/gcc/2012-08/msg00015.html... · 0823efed
      Merge from cxx-conversion branch (http://gcc.gnu.org/wiki/cxx-conversion).
      
      As described in http://gcc.gnu.org/ml/gcc/2012-08/msg00015.html, this patch
      changes the default bootstrap process so that stage 1 always builds with a C++
      compiler.
      
      Other than the bootstrap change, the patch makes no functional changes to the
      compiler.  Everything should build as it does now in trunk.  The main
      changes in this patch are:
      
      1- Configuration changes.
      2- Re-write of VEC.
      3- Re-write of gengtype to support C++ templates and
         user-provided marking functions.
      4- New hash table class.
      5- Re-write double_int.
      6- Implement tree macros as inline functions so they can be
         called from gdb.
      
      As discussed before, several of these changes do not fully change
      the call sites to use the new APIs.
      
      The bootstrap changes have already been tested on a wide range of
      targets (http://gcc.gnu.org/wiki/CppBuildStatus).  Additionally,
      I have tested the merged trunk on: x86_64-unknown-linux-gnu,
      mips64el-unknown-linux-gnu, powerpc64-unknown-linux-gnu,
      i686-pc-linux-gnu, and ia64-unknown-linux-gnu.
      
      ChangeLog
      2012-08-14   Diego Novillo  <dnovillo@google.com>
      
      	Merge from cxx-conversion branch.
      
      	* Makefile.tpl (STAGE[+id+]_CXXFLAGS): Remove
      	POSTSTAGE1_CONFIGURE_FLAGS.
      	* Makefile.in: Regenerate.
      	* configure.ac (ENABLE_BUILD_WITH_CXX): Remove.  Update all users.
      	Force C++ when bootstrapping.
      	* configure: Regenerate.
      
      
      libcpp/ChangeLog
      2012-08-14   Diego Novillo  <dnovillo@google.com>
      
      	Merge from cxx-conversion branch.  Configury.
      
      	* Makefile.in: Remove all handlers of ENABLE_BUILD_WITH_CXX.
      	* configure.ac: Likewise.
      	* configure: Regenerate.
      
      2012-08-14   Lawrence Crowl  <crowl@google.com>
      
      	Merge from cxx-conversion branch.  New C++ hash table.
      
      	* include/symtab.h (typedef struct ht hash_table): Change the typedef
      	name to cpp_hash_table.  Update all users of the typedef.
      
      gcc/ChangeLog
      2012-08-14   Diego Novillo  <dnovillo@google.com>
      
      	Merge from cxx-conversion branch.  Configury.
      
      	* configure.ac (CXX_FOR_BUILD): Define and substitute.
      	(BUILD_CXXFLAGS): Define.
      	Remove all handlers of ENABLE_BUILD_WITH_CXX.
      	Force all build to be with C++.
      	* Makefile.in (BUILD_CXXFLAGS): Use it.
      	Remove all handlers of ENABLE_BUILD_WITH_CXX.
      	* configure: Regenerate.
      	* config.in: Regenerate.
      	* doc/install.texi: Remove documentation for --enable-build-with-cxx
      	and --enable-build-poststage1-with-cxx.
      
      2012-08-14   Diego Novillo  <dnovillo@google.com>
      
      	Merge from cxx-conversion branch.  Re-implement VEC in C++.
      
      	* vec.c (vec_heap_free): Convert into a template function.
      	(vec_gc_o_reserve_1): Make extern.
      	(vec_gc_p_reserve): Remove.
      	(vec_gc_p_reserve_exact): Remove.
      	(vec_gc_o_reserve): Remove.
      	(vec_gc_o_reserve_exact): Remove.
      	(vec_heap_o_reserve_1): Make extern.
      	(vec_heap_p_reserve): Remove.
      	(vec_heap_p_reserve_exact): Remove.
      	(vec_heap_o_reserve): Remove.
      	(vec_heap_o_reserve_exact): Remove.
      	(vec_stack_p_reserve): Remove.
      	(vec_stack_p_reserve_exact): Remove.
      	* vec.h (VEC_CHECK_INFO, VEC_CHECK_DECL, VEC_CHECK_PASS,
      	VEC_ASSERT, VEC_ASSERT_FAIL, vec_assert_fail): Move earlier
      	in the file.
      	(VEC): Define to vec_t<T>.
      	(vec_allocation_t): Define.
      	(struct vec_prefix): Move earlier in the file.
      	(vec_t<T>): New template.
      	(DEF_VEC_I, DEF_VECL_ALLOC_I, DEF_VEC_P, DEF_VEC_ALLOC_P,
      	DEF_VEC_O, DEF_VEC_ALLOC_P, DEF_VEC_O, DEF_VEC_ALLOC_O,
      	DEF_VEC_ALLOC_P_STACK, DEF_VEC_ALLOC_O_STACK,
      	DEF_VEC_ALLOC_I_STACK): Expand to 'struct vec_swallow_trailing_semi'.
      	(DEF_VEC_A): Provide template instantiations for
      	GC/PCH markers that do not traverse the vector.
      	(vec_stack_p_reserve): Remove.
      	(vec_stack_p_reserve_exact): Remove.
      	(vec_stack_p_reserve_exact_1): Remove.
      	(vec_stack_o_reserve): Remove.
      	(vec_stack_o_reserve_exact): Remove.
      	(vec_stack_free): Re-write as a template function.
      	(vec_reserve): New template function.
      	(vec_reserve_exact): New template function.
      	(vec_heap_free): New template function if GATHER_STATISTICS is
      	defined.  Otherwise, macro that expands to free().
      	(VEC_length_1): New template function.
      	(VEC_length): Call it.
      	(VEC_empty_1): New template function.
      	(VEC_empty): Call it.
      	(VEC_address_1): New template function.
      	(VEC_address): Call it.
      	(VEC_last_1): New template function.
      	(VEC_last): Call it.  Change return type to T&.
      	Change all users that used VEC_Os.
      	(VEC_index_1): New template function.
      	(VEC_index): Call it.  Return a T& instead of a T*.
      	Update all callers that were using VEC_O before.
      	(VEC_iterate_1): New template function.
      	(VEC_iterate): Call it.
      	(VEC_embedded_size_1): New template function.
      	(VEC_embedded_size): Call it.
      	(VEC_embedded_init_1): New template function.
      	(VEC_embedded_init): Call it.
      	(VEC_alloc_1): New template function.
      	(VEC_alloc): Call it.  If A is 'stack', call XALLOCAVAR to
      	do the allocation.
      	(VEC_free_1): New template function.
      	(VEC_free): Call it.
      	(VEC_copy_1): New template function.
      	(VEC_copy): Call it.
      	(VEC_space_1): New template function
      	(VEC_space): Call it.
      	(VEC_reserve_1): New template function.
      	(VEC_reserve): Call it.
      	(VEC_reserve_exact_1): New template function.
      	(VEC_reserve_exact): Call it.
      	(VEC_splice_1): New template function.
      	(VEC_splice): Call it.
      	(VEC_safe_splice_1): New template function.
      	(VEC_safe_splice): Call it.
      	(VEC_quick_push_1): New template function.  Create two overloads, one
      	accepting T, the other accepting T *.  Update all callers
      	where T and T * are ambiguous.
      	(VEC_quick_push): Call it.
      	(VEC_safe_push_1): New template function. Create two overloads, one
      	accepting T, the other accepting T *.  Update all callers
      	where T and T * are ambiguous.
      	(VEC_safe_push): Call it.
      	(VEC_pop_1): New template function.
      	(VEC_pop): Call it.
      	(VEC_truncate_1): New template function.
      	(VEC_truncate): Call it.
      	(VEC_safe_grow_1): New template function.
      	(VEC_safe_grow): Call it.
      	(VEC_safe_grow_cleared_1): New template function.
      	(VEC_safe_grow_cleared): Call it.
      	(VEC_replace_1): New template function.
      	(VEC_replace): Call it.  Always accept T instead of T*.
      	Update all callers that used VEC_Os.
      	(VEC_quick_insert_1): New template function.
      	(VEC_quick_insert): Call it.
      	(VEC_safe_insert_1): New template function.
      	(VEC_safe_insert): Call it.
      	(VEC_ordered_remove_1): New template function.
      	(VEC_ordered_remove): Call it.
      	(VEC_unordered_remove_1): New template function.
      	(VEC_unordered_remove): Call it.
      	(VEC_block_remove_1): New template function.
      	(VEC_block_remove): Call it.
      	(VEC_lower_bound_1): New template function.
      	(VEC_lower_bound): Call it.
      	(VEC_OP): Remove.
      	(DEF_VEC_FUNC_P): Remove.
      	(DEF_VEC_ALLOC_FUNC_P): Remove.
      	(DEF_VEC_NONALLOC_FUNCS_P): Remove.
      	(DEF_VEC_FUNC_O): Remove.
      	(DEF_VEC_ALLOC_FUNC_O): Remove.
      	(DEF_VEC_NONALLOC_FUNCS_O): Remove.
      	(DEF_VEC_ALLOC_FUNC_I): Remove.
      	(DEF_VEC_NONALLOC_FUNCS_I): Remove.
      	(DEF_VEC_ALLOC_FUNC_P_STACK): Remove.
      	(DEF_VEC_ALLOC_FUNC_O_STACK): Remove.
      	(DEF_VEC_ALLOC_FUNC_I_STACK): Remove.
      	(vec_reserve_exact): New template function.
      
      	* gengtype-lex.l (DEF_VEC_ALLOC_[IOP]/{EOID}): Remove.
      	* gengtype-parse.c (token_names): Remove DEF_VEC_ALLOC_[IOP].
      	(typedef_name): Emit vec_t<C1> instead of VEC_C1_C2.
      	(def_vec_alloc): Remove.  Update all callers.
      	* gengtype.c (filter_type_name): New.
      	(output_mangled_typename): Call it.
      	(write_func_for_structure): Likewise.
      	(write_types): Likewise.
      	(write_root): Likewise.
      	(write_typed_alloc_def): Likewise.
      	(note_def_vec): Emit vec_t<TYPE_NAME> instead of VEC_TYPE_NAME_base.
      	(note_def_vec_alloc): Remove.
      	* gengtype.h (note_def_vec_alloc): Remove.
      	(DEFVEC_ALLOC): Remove token code.
      
      	* df-scan.c (df_bb_verify): Remove call to df_free_collection_rec
      	inside the insn traversal loop.
      	* gimplify.c (gimplify_compound_lval): Rename STACK to EXPR_STACK.
      	* ipa-inline.c (inline_small_functions): Rename HEAP to EDGE_HEAP.
      	* reg-stack.c (stack): Rename to STACK_PTR.  Update all users.
      	* tree-vrp.c (stack): Rename to EQUIV_STACK.  Update all users.
      
      	* config/bfin/bfin.c (hwloop_optimize): Update some calls to
      	VEC_* for vectors of non-pointers.
      	* config/c6x/c6x.c (try_rename_operands): Likewise.
      	(reshuffle_units): Likewise.
      	* config/mips/mips.c (mips_multi_start): Likewise.
      	(mips_multi_add): Likewise.
      	(mips_multi_copy_insn): Likewise.
      	(mips_multi_set_operand): Likewise.
      	* hw-doloop.c (discover_loop): Likewise.
      	(discover_loops): Likewise.
      	(reorg_loops): Likewise.
      
      2012-08-14   Diego Novillo  <dnovillo@google.com>
      
      	Merge from cxx-conversion branch.  C++ support in gengtype.
      
      	* coretypes.h (gt_pointer_operator): Move from ...
      	* ggc.h: ... here.
      	* doc/gty.texi: Document support for C++ templates and
      	user-provided markers.
      	* gcc/gengtype-lex.l: Update copyright year.
      	Remove support for recognizing DEF_VEC_O, DEF_VEC_P and
      	DEFVEC_I.
      	* gengtype-parse.c: Update copyright year.
      	(token_names): Remove DEF_VEC_O, DEF_VEC_P and DEF_VEC_I.
      	(require_template_declaration): New.
      	(typedef_name): Call it.
      	(type): Replace IS_UNION with KIND. Replace all users.
      	(def_vec): Remove.  Update all users.
      	* gengtype-state.c (type_lineloc): Handle TYPE_USER_STRUCT.
      	(write_state_user_struct_type): New.
      	(write_state_type): Call it.
      	(read_state_user_struct_type): New.
      	(read_state_type): Call it.
      	* gengtype.c: Update copyright year.
      	(dump_pair): Move declaration to the top.
      	(dump_type): Likewise.
      	(dump_type_list): Likewise.
      	(dbgprint_count_type_at): Handle TYPE_USER_STRUCT.
      	(create_user_defined_type): New.
      	(resolve_typedef): Call it.
      	(new_structure): Replace argument ISUNION with KIND.
      	Change users to refer to KIND directly.
      	Update all callers.
      	(find_structure): Likewise.
      	(set_gc_used_type): Handle TYPE_USER_STRUCT.
      	(create_file): Update HDR to include new copyright year.
      	(struct walk_type_data): Add field IN_PTR_FIELD.
      	(output_mangled_typename): Handle TYPE_USER_STRUCT.
      	(walk_type): Set D->IN_PTR_FIELD when walking a TYPE_POINTER.
      	Clear it afterwards.
      	Handle TYPE_USER_STRUCT.
      	(write_types_process_field): Handle TYPE_USER_STRUCT.
      	(get_type_specifier): Move earlier in the file.
      	(write_type_decl): New.
      	(write_marker_function_name): New.
      	(write_user_func_for_structure_ptr): New.
      	(write_user_func_for_structure_body): New.
      	(write_user_marking_functions): New.
      	(write_func_for_structure): Call write_marker_function_name
      	and write_type_decl.
      	Do not call walk_type for TYPE_USER_STRUCT. Emit a call to the user
      	function directly.
      	Call write_user_marking_functions on TYPE_USER_STRUCTs.
      	(write_types_local_user_process_field): New.
      	(write_pch_user_walking_for_structure_body): New.
      	(write_pch_user_walking_functions): New.
      	(write_types_local_process_field): Handle TYPE_USER_STRUCT.
      	(write_local_func_for_structure): Do not call walk_type for
      	TYPE_USER_STRUCT. Instead, emit the call to gt_pch_nx directly.
      	Call write_pch_user_walking_functions for TYPE_USER_STRUCTs.
      	(write_root): Handle TYPE_USER_STRUCT.
      	(vec_prefix_type): Remove.  Update all users.
      	(note_def_vec): Remove.  Update all users.
      	(dump_typekind): Handle TYPE_USER_STRUCT.
      	(dump_type): Initialize SEEN_TYPES, if needed.
      	Handle TYPE_USER_STRUCT.
      	(dump_everything): Do not initialize SEEN_TYPES.
      	* gengtype.h: Update copyright year.
      	(enum typekind): Add TYPE_USER_STRUCT.
      	(union_or_struct_p): Rename from UNION_OR_STRUCT_P.
      	Convert into function.
      	Add an overload taking const_type_p.
      	Update all callers.
      	(new_structure): Change second field to type enum typekind.
      	Update all users.
      	(find_structure): Likewise.
      	(note_def_vec): Remove.
      	(DEFVEC_OP): Remove.
      	(DEFVEC_I): Remove.
      	* ggc-page.c (gt_ggc_mx): Add entry points for marking
      	'const char *&', 'unsigned char *&' and 'unsigned char&'.
      	* ggc-zone.c (gt_ggc_mx): Add entry points for marking
      	'const char *&' and 'unsigned char *&'.
      	* stringpool.c (gt_pch_nx): Add entry points for marking
      	'const char *&', 'unsigned char *&' and 'unsigned char&'.
      	Add an entry point for the overload taking arguments 'unsigned char
      	*', 'gt_pointer_operator' and 'void *'.
      	* vec.h (struct vec_prefix): Remove GTY marker.
      	(struct vec_t): Remove GTY((length)) attribute from field 'vec'.
      	(gt_ggc_mx (vec_t<T> *)): New template function.
      	(gt_pch_nx (vec_t<T> *)): New template function.
      	(gt_pch_nx (vec_t<T *> *, gt_pointer_operator, void *)): New template
      	function.
      	(gt_pch_nx (vec_t<T> *, gt_pointer_operator, void *)): New template
      	function.
      
      	* basic-block.h (struct edge_def): Mark GTY((user)).
      	Remove all GTY markers from fields.
      	(gt_ggc_mx): Declare.
      	(gt_pch_nx): Declare.
      	* tree-cfg.c (gt_ggc_mx): New.
      	(gt_pch_nx): New.
      
      	* gengtype-lex.l (USER_GTY): Add pattern for "user".
      	* gengtype-parse.c (option): Handle USER_GTY.
      	(opts_have): New.
      	(type): Call it.
      	If the keyword 'user' is used, do not walk the fields
      	of the structure.
      	* gengtype.h (USER_GTY): Add.
      	* doc/gty.texi: Update.
      
      2012-08-14   Lawrence Crowl  <crowl@google.com>
      
      	Merge cxx-conversion branch.  Implement C++ hash table.
      
      	* hash-table.h: New. Implementation borrowed from libiberty/hashtab.c.
      	* hash-table.c: Likewise.
      	* tree-ssa-tail-merge.c: Include hash-table.h instead of hashtab.h.
      	(static htab_t same_succ_htab): Change type to hash_table;
      	move specification of helper functions from create call to declaration.
      	Change users to invoke member functions.
      	(same_succ_print_traverse): Make extern ssa_.... Change callers.
      	Remove void* casting.
      	(same_succ_hash): Likewise.
      	(same_succ_equal): Likewise.
      	(same_succ_delete): Likewise.
      	* tree-ssa-threadupdate.c: Include hash-table.h.
      	(struct local_info): Rename to ssa_local_info_t to avoid overloading
      	the type name local_info with the variable name local_info.
      	(static htab_t redirection_data): Change type to hash_table.
      	Move specification of helper functions from create call to declaration.
      	Change users to invoke member functions.
      	(redirection_data_hash): Make extern ssa_.... Change callers.
      	Remove void* casting.
      	(redirection_data_eq): Likewise.
      	(fix_duplicate_block_edges): Likewise.
      	(create_duplicates): Likewise.
      	(fixup_template_block): Likewise.
      	(redirect_edges): Likewise.
      	(lookup_redirection_data): Change types associated with the hash table
      	from void* to their actual type. Remove unnecessary casts.
      	* tree-ssa-ccp.c: Include hash-table.h.
      	(typedef gimple_htab): New.  Uses hash_table.  Replace specific uses
      	of htab_t with gimple_htab.  Change users to invoke member functions.
      	Move specification of helper functions from create call to declaration.
      	* tree-ssa-coalesce.c: Include hash-table.h instead of hashtab.h.
      	(hash_ssa_name_by_var): Make extern. Remove void* casting.
      	(eq_ssa_name_by_var): Likewise.
      	(coalesce_ssa_name): Change type of local static htab_t ssa_name_hash
      	to hash_table. Change users to invoke member functions.
      	Move specification of helper functions from create call to declaration.
      	* coverage.c: Include hash-table.h instead of hashtab.h.
      	(static htab_t counts_hash): Change type to hash_table;
      	move specification of helper functions from create call to declaration.
      	Change users to invoke member functions.
      	(htab_counts_entry_hash): Make extern. Rename with coverage_... instead
      	of htab_... Remove void* casting.
      	(htab_counts_entry_eq): Likewise.
      	(htab_counts_entry_del): Likewise.
      	* tree-ssa-pre.c: Include hash-table.h instead of hashtab.h.
      	(static htab_t expression_to_id): Change type to hash_table.
      	Move specification of helper functions from create call to declaration.
      	Change users to invoke member functions.
      	(static htab_t phi_translate_table): Likewise.
      	(pre_expr_eq): Make extern ssa_.... Change callers.
      	Remove void* casting.
      	(pre_expr_hash): Likewise.
      	(expr_pred_trans_hash): Likewise.
      	(expr_pred_trans_eq): Likewise.
      	(alloc_expression_id): Change types associated with the hash table
      	from void* to their actual type. Remove unnecessary casts.
      	(lookup_expression_id): Likewise.
      	(phi_trans_lookup): Likewise.
      	(phi_trans_add): Likewise.
      	* stringpool.c: Rename uses of libcpp typedef hash_table to
      	cpp_hash_table.
      	* Makefile.in: Add hash-table.o to OBJS-libcommon-target.
      	Add $(HASH_TABLE_H). Add new dependences on $(HASH_TABLE_H).
      
      2012-08-14   Lawrence Crowl  <crowl@google.com>
      
      	Merge from cxx-conversion branch.  Re-write double_int in C++.
      
      	* hash-table.h
      	(typedef double_int): Change to struct (POD).
      	(double_int::make): New overloads for int to double-int conversion.
      	(double_int::mask): New.
      	(double_int::max_value): New.
      	(double_int::min_value): New.
      	(double_int::operator ++): New.
      	(double_int::operator --): New.
      	(double_int::operator *=): New.
      	(double_int::operator +=): New.
      	(double_int::operator -=): New.
      	(double_int::to_signed): New.
      	(double_int::to_unsigned): New.
      	(double_int::fits_unsigned): New.
      	(double_int::fits_signed): New.
      	(double_int::fits): New.
      	(double_int::trailing_zeros): New.
      	(double_int::popcount): New.
      	(double_int::multiple_of): New.
      	(double_int::set_bit): New.
      	(double_int::mul_with_sign): New.
      	(double_int::operator * (binary)): New.
      	(double_int::operator + (binary)): New.
      	(double_int::operator - (binary)): New.
      	(double_int::operator - (unary)): New.
      	(double_int::operator ~ (unary)): New.
      	(double_int::operator & (binary)): New.
      	(double_int::operator | (binary)): New.
      	(double_int::operator ^ (binary)): New.
      	(double_int::and_not): New.
      	(double_int::lshift): New.
      	(double_int::rshift): New.
      	(double_int::alshift): New.
      	(double_int::arshift): New.
      	(double_int::llshift): New.
      	(double_int::lrshift): New.
      	(double_int::lrotate): New.
      	(double_int::rrotate): New.
      	(double_int::div): New.
      	(double_int::sdiv): New.
      	(double_int::udiv): New.
      	(double_int::mod): New.
      	(double_int::smod): New.
      	(double_int::umod): New.
      	(double_int::divmod): New.
      	(double_int::sdivmod): New.
      	(double_int::udivmod): New.
      	(double_int::ext): New.
      	(double_int::zext): New.
      	(double_int::sext): New.
      	(double_int::is_zero): New.
      	(double_int::is_one): New.
      	(double_int::is_minus_one): New.
      	(double_int::is_negative): New.
      	(double_int::cmp): New.
      	(double_int::ucmp): New.
      	(double_int::scmp): New.
      	(double_int::ult): New.
      	(double_int::ugt): New.
      	(double_int::slt): New.
      	(double_int::sgt): New.
      	(double_int::max): New.
      	(double_int::smax): New.
      	(double_int::umax): New.
      	(double_int::min): New.
      	(double_int::smin): New.
      	(double_int::umin): New.
      	(double_int::operator ==): New.
      	(double_int::operator !=): New.
      	(shwi_to_double_int): Change implementation to use member function.
      	(double_int_minus_one): Likewise.
      	(double_int_zero): Likewise.
      	(double_int_one): Likewise.
      	(double_int_two): Likewise.
      	(double_int_ten): Likewise.
      	(uhwi_to_double_int): Likewise.
      	(double_int_to_shwi): Likewise.
      	(double_int_to_uhwi): Likewise.
      	(double_int_fits_in_uhwi_p): Likewise.
      	(double_int_fits_in_shwi_p): Likewise.
      	(double_int_fits_in_hwi_p): Likewise.
      	(double_int_mul): Likewise.
      	(double_int_mul_with_sign): Likewise.
      	(double_int_add): Likewise.
      	(double_int_sub): Likewise.
      	(double_int_neg): Likewise.
      	(double_int_div): Likewise.
      	(double_int_sdiv): Likewise.
      	(double_int_udiv): Likewise.
      	(double_int_mod): Likewise.
      	(double_int_smod): Likewise.
      	(double_int_umod): Likewise.
      	(double_int_divmod): Likewise.
      	(double_int_sdivmod): Likewise.
      	(double_int_udivmod): Likewise.
      	(double_int_multiple_of): Likewise.
      	(double_int_setbit): Likewise.
      	(double_int_ctz): Likewise.
      	(double_int_not): Likewise.
      	(double_int_ior): Likewise.
      	(double_int_and): Likewise.
      	(double_int_and_not): Likewise.
      	(double_int_xor): Likewise.
      	(double_int_lshift): Likewise.
      	(double_int_rshift): Likewise.
      	(double_int_lrotate): Likewise.
      	(double_int_rrotate): Likewise.
      	(double_int_cmp): Likewise.
      	(double_int_scmp): Likewise.
      	(double_int_ucmp): Likewise.
      	(double_int_max): Likewise.
      	(double_int_smax): Likewise.
      	(double_int_umax): Likewise.
      	(double_int_min): Likewise.
      	(double_int_smin): Likewise.
      	(double_int_umin): Likewise.
      	(double_int_ext): Likewise.
      	(double_int_sext): Likewise.
      	(double_int_zext): Likewise.
      	(double_int_mask): Likewise.
      	(double_int_max_value): Likewise.
      	(double_int_min_value): Likewise.
      	(double_int_zero_p): Likewise.
      	(double_int_one_p): Likewise.
      	(double_int_minus_one_p): Likewise.
      	(double_int_equal_p): Likewise.
      	(double_int_popcount): Likewise.
      	* hash-table.c
      	(double_int_mask): Reuse implementation for double_int::mask.
      	(double_int_max_value): Likewise.
      	(double_int_min_value): Likewise.
      	(double_int_ext): Likewise.
      	(double_int_zext): Likewise.
      	(double_int_sext): Likewise.
      	(double_int_mul_with_sign): Likewise.
      	(double_int_divmod): Likewise.
      	(double_int_sdivmod): Likewise.
      	(double_int_udivmod): Likewise.
      	(double_int_div): Likewise.
      	(double_int_sdiv): Likewise.
      	(double_int_udiv): Likewise.
      	(double_int_mod): Likewise.
      	(double_int_smod): Likewise.
      	(double_int_umod): Likewise.
      	(double_int_multiple_of): Likewise.
      	(double_int_lshift): Likewise.
      	(double_int_rshift): Likewise.
      	(double_int_lrotate): Likewise.
      	(double_int_rrotate): Likewise.
      	(double_int_cmp): Likewise.
      	(double_int_ucmp): Likewise.
      	(double_int_scmp): Likewise.
      	(double_int_max): Likewise.
      	(double_int_smax): Likewise.
      	(double_int_umax): Likewise.
      	(double_int_min): Likewise.
      	(double_int_smin): Likewise.
      	(double_int_umin): Likewise.
      	(double_int_min): Likewise.
      	(double_int_min): Likewise.
      	(double_int_min): Likewise.
      	(double_int_min): Likewise.
      	(double_int_min): Likewise.
      	(double_int_min): Likewise.
      	(double_int::alshift): New.
      	(double_int::arshift): New.
      	(double_int::llshift): New.
      	(double_int::lrshift): New.
      	(double_int::ult): New.
      	(double_int::ugt): New.
      	(double_int::slt): New.
      	(double_int::sgt): New.
      	(double_int_setbit): Reuse implementation for double_int::set_bit,
      	which avoids a name conflict with a macro.
      	(double_int_double_int_ctz): Reuse implementation for
      	double_int::trailing_zeros.
      	(double_int_fits_in_shwi_p): Reuse implementation for
      	double_int::fits_signed.
      	(double_int_fits_in_hwi_p): Reuse implementation for double_int::fits.
      	(double_int_mul): Reuse implementation for binary
      	double_int::operator *.
      	(double_int_add): Likewise.
      	(double_int_sub): Likewise.
      	(double_int_neg): Reuse implementation for unary
      	double_int::operator -.
      	(double_int_max_value): Likewise.
      	* fixed-value.c: Change to use member functions introduced above.
      
      2012-08-14   Lawrence Crowl  <crowl@google.com>
      
      	Merge cxx-conversion branch.  Support tree macro calling
      	from gdb.
      
      	* tree.h (tree_check): New.
      	(TREE_CHECK): Use inline function above instead of __extension__.
      	(tree_not_check): New.
      	(TREE_NOT_CHECK): Use inline function above instead of __extension__.
      	(tree_check2): New.
      	(TREE_CHECK2): Use inline function above instead of __extension__.
      	(tree_not_check2): New.
      	(TREE_NOT_CHECK2): Use inline function above instead of __extension__.
      	(tree_check3): New.
      	(TREE_CHECK3): Use inline function above instead of __extension__.
      	(tree_not_check3): New.
      	(TREE_NOT_CHECK3): Use inline function above instead of __extension__.
      	(tree_check4): New.
      	(TREE_CHECK4): Use inline function above instead of __extension__.
      	(tree_not_check4): New.
      	(TREE_NOT_CHECK4): Use inline function above instead of __extension__.
      	(tree_check5): New.
      	(TREE_CHECK5): Use inline function above instead of __extension__.
      	(tree_not_check5): New.
      	(TREE_NOT_CHECK5): Use inline function above instead of __extension__.
      	(contains_struct_check): New.
      	(CONTAINS_STRUCT_CHECK): Use inline function above instead of
      	__extension__.
      	(tree_class_check): New.
      	(TREE_CLASS_CHECK): Use inline function above instead of __extension__.
      	(tree_range_check): New.
      	(TREE_RANGE_CHECK): Use inline function above instead of __extension__.
      	(omp_clause_subcode_check): New.
      	(OMP_CLAUSE_SUBCODE_CHECK): Use inline function above instead of
      	__extension__.
      	(omp_clause_range_check): New.
      	(OMP_CLAUSE_RANGE_CHECK): Use inline function above instead of
      	__extension__.
      	(expr_check): New.
      	(EXPR_CHECK): Use inline function above instead of __extension__.
      	(non_type_check): New.
      	(NON_TYPE_CHECK): Use inline function above instead of __extension__.
      	(tree_vec_elt_check): New.
      	(TREE_VEC_ELT_CHECK): Use inline function above instead of
      	__extension__.
      	(omp_clause_elt_check): New.
      	(OMP_CLAUSE_ELT_CHECK): Use inline function above instead of
      	__extension__.
      	(tree_operand_check): New.
      	(TREE_OPERAND_CHECK): Use inline function above instead of
      	__extension__.
      	(tree_operand_check_code): New.
      	(TREE_OPERAND_CHECK_CODE): Use inline function above instead of
      	__extension__.
      	(TREE_CHAIN): Simplify implementation.
      	(TREE_TYPE): Simplify implementation.
      	(tree_operand_length): Move for compilation dependences.
      	* gdbinit.in: (macro define __FILE__): New.
      	(macro define __LINE__): New.
      	(skip "tree.h"): New.
      
      gcc/cp/ChangeLog
      2012-08-14   Diego Novillo  <dnovillo@google.com>
      
      	Merge from cxx-conversion branch.  Re-write VEC in C++.
      
      	* call.c (add_function_candidate): Remove const qualifier
      	from call to VEC_index.
      
      2012-08-14   Diego Novillo  <dnovillo@google.com>
      
      	Merge from cxx-conversion branch.  Configury.
      
      	* go-c.h: Remove all handlers of ENABLE_BUILD_WITH_CXX.
      	* go-gcc.cc: Likewise.
      	* go-system.h: Likewise.
      
      From-SVN: r190402
      Diego Novillo committed
  13. 10 Aug, 2012 1 commit
    • tree.h (SSA_NAME_VAR): Return NULL_TREE if an IDENTIFIER_NODE is recorded as var. · 70b5e7dc
      2012-08-10  Richard Guenther  <rguenther@suse.de>
      
      	* tree.h (SSA_NAME_VAR): Return NULL_TREE if an IDENTIFIER_NODE
      	is recorded as var.
      	(SSA_NAME_IDENTIFIER): Return the IDENTIFIER_NODE of the SSA_NAME
      	or its SSA_NAME_VAR.
      	(SET_SSA_NAME_VAR_OR_IDENTIFIER): New setter.
      	* tree-ssanames.c (make_ssa_name_fn): Handle creating anonymous
      	SSA names by passing a type instead of a variable decl.
      	(release_ssa_name): Use SET_SSA_NAME_VAR_OR_IDENTIFIER.
      	(copy_ssa_name_fn): Handle anonymous SSA names.
      	(replace_ssa_name_symbol): Use SET_SSA_NAME_VAR_OR_IDENTIFIER.
      	* tree-flow-inline.h (make_temp_ssa_name): New inline function.
      	* tree-pretty-print.c (dump_generic_node): Use SSA_NAME_IDENTIFIER,
      	dump SSA names without a name as <anon>.
      	* cfgexpand.c (expand_used_vars): Assing anonymous SSA names we are
      	going to expand a decl.
      	(gimple_expand_cfg): Assign all SSA names of a partition the
      	decl we created for its leader.
      	* tree-ssa.c (target_for_debug_bind): Handle SSA_NAMEs.
      	(verify_ssa_name): Handle anonymous SSA names.
      	(verify_def): Likewise.
      	* tree-predcom.c (eliminate_temp_copies): Likewise.
      	* tree-ssa-copyrename.c (copy_rename_partition_coalesce): Likewise.
      	* tree-ssa-live.c (var_map_base_init): Compute conflicts for
      	anonymous SSA names with the same type.
      	(mark_all_vars_used_1): Handle anonymous SSA names.
      	(verify_live_on_entry): Likewise.
      	* tree-ssa-coalesce.c (abnormal_corrupt): Remove.
      	(create_outofssa_var_map): Adjust with respect to conflicts we
      	compute for anonymous SSA names.  Do not restrict abnormal
      	coalescing.
      	(coalesce_partitions): Do not restrict abnormal coalescing.
      	Assert we only ever coalesce variables we computed conflicts for.
      	* tree-ssa-ter.c (process_replaceable): Do not restrict TER
      	of anonymous names.
      	* expr.c (expand_expr_real_1): Handle anonymous SSA names
      	expanded from IVOPTs by creating a raw REG here.
      	* tree-cfg.c (replace_ssa_name): Handle anonymous SSA names.
      	(dump_function_to_file): Dump anonymous SSA names alongside
      	with their types in the variable list.
      	(verify_gimple_return): Guard use of SSA_NAME_VAR.
      	* tree-into-ssa.c (mark_for_renaming): Handle a NULL symbol.
      	(rewrite_into_ssa): Make SSA names anonymous.
      	* tree-ssa-structalias.c (alias_get_name): Rewrite.
      	* tree-ssa-uninit.c (ssa_undefined_value_p): Handle anonymous
      	SSA names.
      	(warn_uninitialized_phi): Likewise.
      	* tree-ssa-loop-ivopts.c (prepare_decl_rtl): Defer expanding
      	anonymous SSA names to the expander.
      	(determine_iv_cost): Anonymous SSA names are artificial.
      	* tree-ssa-loop-manip.c (tree_transform_and_unroll_loop):
      	Handle anonymous SSA names.
      	* lto-streamer-out.c (output_ssa_names): Stream SSA_NAME_VAR
      	or if NULL, the type of the SSA name.
      	* tree-inline.c (remap_ssa_name): Handle anonymous SSA names,
      	remap names as anonymous where appropriate.
      	(insert_init_stmt): Pass SSA names down to insert_init_debug_bind.
      	* tree-ssa-uncprop.c (uncprop_into_successor_phis): Adjust
      	according to what we create conflicts for in out-of-SSA
      	coalescing.
      	* tree-parloops.c (separate_decls_in_region_name): Handle
      	anonymous SSA names.
      	(add_field_for_name): Likewise.
      	* tree.c (get_name): Handle SSA names.
      	* tree-ssa-loop-im.c (gen_lsm_tmp_name): Defer to get_name for
      	SSA_NAMEs.
      	* tree-vect-loop-manip.c (adjust_debug_stmts): Use
      	virtual_operand_p.
      	* tree-sra.c (create_access_replacement): Give up generating
      	a DECL_DEBUG_EXPR for SSA names in the memory reference.
      	(replace_removed_params_ssa_names): Guard use of SSA_NAME_VAR.
      	* tree-complex.c (get_component_ssa_name): Handle anonymous
      	SSA names.
      	(set_component_ssa_name): Likewise.
      	* tree-ssa-sccvn.c (visit_reference_op_load): Likewise.
      	* tree-object-size.c (collect_object_sizes_for): Handle
      	uninitialized SSA names properly.
      	* ipa-inline-analysis.c (eliminated_by_inlining_prob): Guard use of
      	SSA_NAME_VAR.
      	* ipa-split.c (test_nonssa_use): Likewise.
      	(consider_split): Likewise.
      	(mark_nonssa_use): Likewise.
      
      	c-family/
      	* c-pretty-print.c (pp_c_expression): Handle anonymous SSA names.
      
      	cp/
      	* error.c (dump_expr): Likewise.
      
      	* g++.dg/plugin/selfassign.c: Adjust.
      	* gcc.dg/plugin/selfassign.c: Likewise.
      	* gcc.dg/strlenopt-11.c: Likewise.
      	* gcc.dg/strlenopt-13.c: Likewise.
      	* gcc.dg/no-strict-overflow-4.c: Likewise.
      	* gcc.dg/strict-overflow-4.c: Likewise.
      	* gcc.dg/tree-ssa/alias-11.c: Likewise.
      	* gcc.dg/tree-ssa/alias-6.c: Likewise.
      	* gcc.dg/tree-ssa/asm-3.c: Likewise.
      	* gcc.dg/tree-ssa/pr18908.c: Likewise.
      	* gcc.dg/tree-ssa/pr19431.c: Likewise.
      	* gcc.dg/tree-ssa/ssa-pre-21.c: Likewise.
      	* gcc.dg/tree-ssa/phi-opt-10.c: Likewise.
      	* gcc.dg/tree-ssa/phi-opt-7.c: Likewise.
      	* gcc.dg/tree-ssa/slsr-27.c: Likewise.
      	* gcc.dg/tree-ssa/slsr-28.c: Likewise.
      	* gcc.dg/tree-ssa/slsr-29.c: Likewise.
      	* gcc.dg/pr46309.c: Likewise.
      	* gcc.dg/tree-ssa/loop-5.c: Likewise.
      
      From-SVN: r190284
      Richard Guenther committed
  14. 07 Aug, 2012 1 commit
    • cfg.c (debug_bb): Do not set TDF_BLOCKS. · f8923f7e
      gcc/
      	* cfg.c (debug_bb): Do not set TDF_BLOCKS.
      	* cfghooks.c (dump_bb): Honor ~TDF_BLOCKS.
      	* pretty-print.c (pp_base_flush): Do not add a newline, and do not
      	clear pp_needs_newline.
      	* pretty-print.h (pp_newline_and_flush): New macro with the behavior
      	of pp_base_flush before the above change.
      	* langhooks.c (lhd_print_error_function): Use pp_newline_and_flush
      	instead of pp_flush.
      	* diagnostic.c (diagnostic_finish): Likewise.
      	(diagnostic_report_diagnostic): Likewise.
      	(verbatim): Likewise.
      	(error_recursion): Likewise.
      	* tree-pretty-print.c (print_generic_stmt): Likewise.
      	(print_generic_stmt_indented): LIkewise.
      	* gimple-pretty-print.c (print_gimple_stmt): Likewise.
      	(print_gimple_seq): Likewise.
      	(gimple_dump_bb_buff): Likewise.
      
      c-family/
      	* c-pretty-print.c (pp_c_function_definition): Use pp_newline_and_flush
      	instead of separate pp_newline and pp_flush.
      	(print_c_tree): Likewise.
      
      cp/
      	* error.c (print_instantiation_context): Pretty-print a newline before
      	diagnostic_flush_buffer.
      	* cxx-pretty-print.c (pp_cxx_function_definition): Use
      	pp_newline_and_flush instead of separate pp_newline and pp_flush.
      
      testsuite/
      	* gcc.dg/tree-prof/update-loopch.c: Ask for dump with blocks info.
      	* gcc.dg/tree-ssa/attr-hotcold-2.c: Likewise.
      	* gcc.dg/tree-ssa/pr18133-1.c: Likewise.
      
      From-SVN: r190215
      Steven Bosscher committed
  15. 06 Aug, 2012 2 commits
    • Avoid crashing on erroneous static_assert usage · 61b6d4cd
      When working on something else, I noticed that failing to provide the
      second argument to the static_assert operator would lead to an ICE.
      
      Fixed thus, and tested against trunk on x86_64-unknown-linux-gnu.
      
      gcc/cp/
      
      	* semantics.c (finish_static_assert): Don't crash on erroneous
      	message or condition.
      
      gcc/testsuite/
      
      	* g++.dg/cpp0x/static_assert8.C: New test.
      
      From-SVN: r190182
      Dodji Seketeli committed
    • re PR c++/54165 (Cast to "void" should not implicitly call conversion functions) · ca73dc29
      /cp
      2012-08-06  Marc Glisse  <marc.glisse@inria.fr>
      	    Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/54165
      	* typeck.c (build_static_cast_1): Move the conversion to void case
      	before the perform_direct_initialization_if_possible call.
      
      /testsuite
      2012-08-06  Marc Glisse  <marc.glisse@inria.fr>
      	    Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/54165
      	* g++.dg/conversion/void2.C: New.
      
      Co-Authored-By: Paolo Carlini <paolo.carlini@oracle.com>
      
      From-SVN: r190175
      Marc Glisse committed
  16. 03 Aug, 2012 1 commit
  17. 02 Aug, 2012 1 commit
    • PR c++/51213 (again) · 742b0bcd
      /cp
      2012-08-02  Jason Merrill  <jason@redhat.com>
      	    Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/51213 (again)
      	* pt.c (type_unification_real): Call push_deferring_access_checks /
      	pop_deferring_access_checks around the substitution of default
      	template args.
      	(instantiate_template_1): When the specialization returned by
      	retrieve_specialization has FNDECL_HAS_ACCESS_ERRORS set and we
      	are in a SFINAE context, simply return error_mark_node.
      	* cp-tree.h (FNDECL_RECHECK_ACCESS_P): Rename FNDECL_HAS_ACCESS_ERRORS.
      
      /testsuite
      2012-08-02  Jason Merrill  <jason@redhat.com>
      	    Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/51213 (again)
      	* g++.dg/cpp0x/sfinae37.C: Extend.
      
      Co-Authored-By: Paolo Carlini <paolo.carlini@oracle.com>
      
      From-SVN: r190093
      Jason Merrill committed
  18. 31 Jul, 2012 2 commits
  19. 25 Jul, 2012 3 commits
    • re PR target/53633 (__attribute__((naked)) should disable -Wreturn-type) · d45eae79
      2012-07-25  Sandra Loosemore  <sandra@codesourcery.com>
      	    Paul Brook  <paul@codesourcery.com>
      
      	PR target/53633
      
      	gcc/
      	* target.def (warn_func_return): New hook.
      	* doc/tm.texi.in (TARGET_WARN_FUNC_RETURN): New hook.
      	* doc/tm.texi: Regenerate.
      	* doc/sourcebuild.texi (Effective-Target Keywords): Document
      	naked_functions.
      	* ipa-pure-const.c (warn_function_noreturn): Check
      	targetm.warn_func_return.
      	* tree-cfg.c (execute_warn_function_return): Likewise.
      	* config/spu/spu.c (spu_warn_func_return): New.
      	(TARGET_WARN_FUNC_RETURN): Define.
      	* config/rx/rx.c (rx_warn_func_return): New.
      	(TARGET_WARN_FUNC_RETURN): Define.
      	* config/avr/avr.c (avr_warn_func_return): New.
      	(TARGET_WARN_FUNC_RETURN): Define.
      	* config/arm/arm.c (arm_warn_func_return): New.
      	(TARGET_WARN_FUNC_RETURN): Define.
      	* config/mcore/mcore.c (mcore_warn_func_return): New.
      	(TARGET_WARN_FUNC_RETURN): Define.
      	(saved_warn_return_type, saved_warn_return_type_count): Remove.
      	(mcore_reorg, mcore_handle_naked_attribute): Remove warn_return hack.
      
      	gcc/cp/
      	* decl.c (finish_function): Check targetm.warn_func_return.
      
      	gcc/testsuite/
      	* lib/target-suports.exp (check_effective_target_naked_functions):
      	New.
      	* c-c++-common/pr53633.c: New test.
      
      Co-Authored-By: Paul Brook <paul@codesourcery.com>
      
      From-SVN: r189860
      Sandra Loosemore committed
    • re PR c++/54086 (GCC should allow constexpr and const together) · 452ed9e7
      	PR c++/54086
      	* decl.c (grokdeclarator): Allow const and constexpr together.
      
      From-SVN: r189852
      Jason Merrill committed
    • re PR c++/54020 ([c++0x] incorrectly accepted constexpr functions) · 9155a6dd
      	PR c++/54020
      	* semantics.c (potential_constant_expression_1) [COND_EXPR]: Call
      	maybe_constant_value.
      
      From-SVN: r189851
      Jason Merrill committed