1. 15 Aug, 2012 4 commits
    • compiler: Adjust for GCC always being built with C++. · f5cc3cbb
      From-SVN: r190405
      Ian Lance Taylor committed
    • Add an xfail manifest for x86_64-unknown-linux-gnu to trunk. · 18da4303
      This patch adds an xfail manifest for trunk for x86_64 builds. I find
      this useful to determine whether my patch has introduced new failures.
      The failures in these manifest are always present in trunk and
      deciding what to ignore is not very straightforward.
      
      I will keep maintaining this manifest out of clean builds. They are
      not hard to maintain. Manifest files can be generated by going to the
      top of the build directory and typing:
      
      $ cd <top-of-bld-dir>
      $ <path-to-src>/contrib/testsuite-management --produce_manifest
      
      This will generate a .xfail file with the triple name of the target
      you just built.  Once this file exist you can run the validator again
      on the build directory with no arguments.  It should produce the
      output:
      
      $ cd <top-of-bld-dir>
      $ <path-to-src>/contrib/testsuite-management/validate_failures.py
      Source directory: <path-to-src>
      Build target:     x86_64-unknown-linux-gnu
      Manifest:         <path-to-src>/contrib/testsuite-management/x86_64-unknown-linux-gnu.xfail
      Getting actual results from build
              ./x86_64-unknown-linux-gnu/libstdc++-v3/testsuite/libstdc++.sum
              ./x86_64-unknown-linux-gnu/libffi/testsuite/libffi.sum
              ./x86_64-unknown-linux-gnu/libgomp/testsuite/libgomp.sum
              ./x86_64-unknown-linux-gnu/libgo/libgo.sum
              ./x86_64-unknown-linux-gnu/boehm-gc/testsuite/boehm-gc.sum
              ./x86_64-unknown-linux-gnu/libatomic/testsuite/libatomic.sum
              ./x86_64-unknown-linux-gnu/libmudflap/testsuite/libmudflap.sum
              ./x86_64-unknown-linux-gnu/libitm/testsuite/libitm.sum
              ./x86_64-unknown-linux-gnu/libjava/testsuite/libjava.sum
              ./gcc/testsuite/g++/g++.sum
              ./gcc/testsuite/gnat/gnat.sum
              ./gcc/testsuite/ada/acats/acats.sum
              ./gcc/testsuite/gcc/gcc.sum
              ./gcc/testsuite/gfortran/gfortran.sum
              ./gcc/testsuite/obj-c++/obj-c++.sum
              ./gcc/testsuite/go/go.sum
              ./gcc/testsuite/objc/objc.sum
      
      
      SUCCESS: No unexpected failures.
      
      
      If the output shows new failures, you investigate them. If they are
      not yours, you can add them to the xfail manifest (after reporting
      them) and then commit the modified .xfail file.
      
      Long term, I would like to have this script pull manifest files from
      postings made to gcc-testresults. This way, we won't have to maintain
      these .xfail files manually. In branches this is not a big problem,
      but in trunk it may be a tad annoying.
      
      From-SVN: r190404
      Diego Novillo committed
    • 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
    • Daily bump. · 4ce8f117
      From-SVN: r190401
      GCC Administrator committed
  2. 14 Aug, 2012 19 commits
    • i386.md (enabled): Add comment with explanation why fma4 instructions are… · d63c6b2c
      i386.md (enabled): Add comment with explanation why fma4 instructions are disabled for generic code.
      
      	* config/i386/i386.md (enabled): Add comment with explanation
      	why fma4 instructions are disabled for generic code.
      
      From-SVN: r190397
      Uros Bizjak committed
    • re PR target/52933 (SH Target: Use div0s for integer sign comparisons) · 669d4d70
      	PR target/52933
      	* config/sh/sh.md (cmp_div0s_0, cmp_div0s_1, *cmp_div0s_0,
      	*cmp_div0s_1, *cbranch_div0s, *movsicc_div0s): New insns.
      	* config/sh/sh.c (sh_rtx_costs): Handle div0s patterns.
      
      	PR target/52933
      	* gcc.target/sh/pr52933-1.c: New.
      	* gcc.target/sh/pr52933-2.c: New.
      
      From-SVN: r190396
      Oleg Endo committed
    • re PR target/50751 (SH Target: Displacement addressing does not work for QImode and HImode) · 24c18ad8
      	PR target/50751
      	* config/sh/constraints.md (Sra): New constraint.
      	* config/sh/predicates.md (simple_mem_operand,
      	displacement_mem_operand, zero_extend_movu_operand): New predicates.
      	(zero_extend_operand): Check zero_extend_movu_operand for SH2A.
      	* config/sh/sh.md (*zero_extendqisi2_disp_mem,
      	*zero_extendhisi2_disp_mem): Add new insns and two new related
      	peephole2 patterns.
      
      	PR target/50751
      	* gcc.target/sh/pr50751-8.c: New.
      
      From-SVN: r190395
      Oleg Endo committed
    • re PR fortran/47586 ([F03] allocatable components: deep copy missing) · bbeffd6b
      fortran/
      	PR fortran/47586
      	* trans-expr.c (expr_is_variable): Handle regular, procedure pointer,
      	and typebound functions returning a data pointer.
      
      testsuite/
      	PR fortran/47586
      	* gfortran.dg/typebound_proc_20.f90: Enable runtime test.
      	* gfortran.dg/typebound_proc_27.f03: New test.
      
      From-SVN: r190394
      Mikael Morin committed
    • decl.c (match_ppc_decl): Copy the procedure interface's symbol as procedure interface's result. · d7fee03d
      fortran/
      	* decl.c (match_ppc_decl): Copy the procedure interface's symbol
      	as procedure interface's result.
      
      From-SVN: r190393
      Mikael Morin committed
    • trans-expr.c (gfc_trans_scalar_assign): Rename argument, extend comment. · 2d4a4400
      fortran/
      	* trans-expr.c (gfc_trans_scalar_assign): Rename argument,
      	extend comment.
      
      From-SVN: r190392
      Mikael Morin committed
    • gfortran.h (gfc_get_proc_ptr_comp): New prototype. · 2a573572
      fortran/
      	* gfortran.h (gfc_get_proc_ptr_comp): New prototype.
      	(gfc_is_proc_ptr_comp): Update prototype.
      	* expr.c (gfc_get_proc_ptr_comp): New function based on the old
      	gfc_is_proc_ptr_comp.
      	(gfc_is_proc_ptr_comp): Call gfc_get_proc_ptr_comp.
      	(gfc_specification_expr, gfc_check_pointer_assign): Use
      	gfc_get_proc_ptr_comp.
      	* trans-array.c (gfc_walk_function_expr): Likewise.
      	* resolve.c (resolve_structure_cons, update_ppc_arglist,
      	resolve_ppc_call, resolve_expr_ppc): Likewise.
      	(resolve_function): Update call to gfc_is_proc_ptr_comp.
      	* dump-parse-tree.c (show_expr): Likewise.
      	* interface.c (compare_actual_formal): Likewise.
      	* match.c (gfc_match_pointer_assignment): Likewise.
      	* primary.c (gfc_match_varspec): Likewise.
      	* trans-io.c (gfc_trans_transfer): Likewise.
      	* trans-expr.c (gfc_conv_variable, conv_function_val,
      	conv_isocbinding_procedure, gfc_conv_procedure_call,
      	gfc_trans_pointer_assignment): Likewise.
      	(gfc_conv_procedure_call, gfc_trans_array_func_assign):
      	Use gfc_get_proc_ptr_comp.
      
      From-SVN: r190391
      Mikael Morin committed
    • graphite-scop-detection.c (create_sese_edges): Compute dominance info before… · cc360b36
      graphite-scop-detection.c (create_sese_edges): Compute dominance info before trying to fix loop structure.
      
      	* graphite-scop-detection.c (create_sese_edges): Compute dominance
      	info before trying to fix loop structure.
      	* cfgloopmanip.c (fix_loop_structure): Require fast DOM queries.
      	* tree-cfgcleanup.c (repair_loop_structures): Likewise.
      	* cfgloop.c (verify_loop_structure): Verify loop fathers.
      
      From-SVN: r190390
      Steven Bosscher committed
    • dominance.c (init_dom_info): Use gcc_checking_assert, not gcc_assert. · 2ba31c05
      	* dominance.c (init_dom_info): Use gcc_checking_assert, not gcc_assert.
      	(dom_convert_dir_to_idx, compute_dom_fast_query,
      	get_immediate_dominator, set_immediate_dominator, get_dominated_by,
      	redirect_immediate_dominators, nearest_common_dominator,
      	(dominated_by_p, bb_dom_dfs_in, bb_dom_dfs_out, recompute_dominator,
      	iterate_fix_dominators, add_to_dominance_info,
      	delete_from_dominance_info): Likewise.
      
      From-SVN: r190389
      Steven Bosscher committed
    • pubnames-2.C: Adjust. · 56b88c0f
      2012-08-13  Sterling Augustine  <saugustine@google.com>
      
      	* g++.dg/debug/dwarf2/pubnames-2.C: Adjust.
      
      From-SVN: r190388
      Sterling Augustine committed
    • cfgexpand.c (expand_used_vars): Use virtual_operand_p. · ea057359
      2012-08-14  Richard Guenther  <rguenther@suse.de>
      
      	* cfgexpand.c (expand_used_vars): Use virtual_operand_p.
      	* gimple-pretty-print.c (dump_phi_nodes): Likewise.
      	* gimple-streamer-out.c (output_bb): Likewise.
      	* graphite-sese-to-poly.c (scalar_close_phi_node_p): Likewise.
      	(rewrite_reductions_out_of_ssa): Likewise.
      	(rewrite_commutative_reductions_out_of_ss): Likewise.
      	* ipa-split.c (verify_non_ssa_vars): Likewise.
      	(consider_split): Likewise.
      	(visit_bb): Likewise.
      	(split_function): Likewise.
      	* lto-streamer-out.c (output_ssa_names): Likewise.
      	* sese.c (rename_uses): Likewise.
      	* tree-cfg.c (replace_uses_by): Likewise.
      	(gimple_merge_blocks): Likewise.
      	(gimple_cfg2dot): Likewise.
      	(verify_gimple_phi): Likewise.
      	(replace_ssa_name): Likewise.
      	(move_block_to_fn): Likewise.
      	* tree-eh.c (cleanup_empty_eh_merge_phis): Likewise.
      	* tree-if-conv.c (if_convertible_phi_p): Likewise.
      	(predicate_scalar_phi): Likewise.
      	* tree-inline.c (update_ssa_across_abnormal_edges): Likewise.
      	(copy_phis_for_bb): Likewise.
      	* tree-loop-distribution.c (generate_loops_for_partition): Likewise.
      	(destroy_loop): Likewise.
      	* tree-outof-ssa.c (eliminate_useless_phis): Likewise.
      	(insert_backedge_copies): Likewise.
      	* tree-parloops.c (transform_to_exit_first_loop): Likewise.
      	(gather_scalar_reductions): Likewise.
      	(try_create_reduction_list): Likewise.
      	* tree-scalar-evolution.c (analyze_scalar_evolution_for_all_loop_ph):
      	Likewise.
      	(scev_const_prop): Likewise.
      	* tree-ssa-ccp.c (debug_lattice_value): Likewise.
      	(get_default_value): Likewise.
      	(ccp_initialize): Likewise.
      	* tree-ssa-coalesce.c (create_outofssa_var_map): Likewise.
      	* tree-ssa-copy.c (may_propagate_copy): Likewise.
      	(init_copy_prop): Likewise.
      	* tree-ssa-dce.c (propagate_necessity): Likewise.
      	(remove_dead_phis): Likewise.
      	(forward_edge_to_pdom): Likewise.
      	(eliminate_unnecessary_stmts): Likewise.
      	* tree-ssa-live.c (partition_view_init): Likewise.
      	(remove_unused_locals): Likewise.
      	(register_ssa_partition_check): Likewise.
      	* tree-ssa-loop-im.c (movement_possibility): Likewise.
      	(move_computations_stmt): Likewise.
      	* tree-ssa-loop-ivopts.c (determine_biv_step): Likewise.
      	(record_invariant): Likewise.
      	(find_interesting_uses_outside): Likewise.
      	(determine_set_costs): Likewise.
      	* tree-ssa-loop-manip.c (add_exit_phis_var): Likewise.
      	(find_uses_to_rename_use): Likewise.
      	(check_loop_closed_ssa_use): Likewise.
      	(rewrite_phi_with_iv): Likewise.
      	(canonicalize_loop_ivs): Likewise.
      	* tree-ssa-math-opts.c (execute_cse_reciprocals): Likewise.
      	* tree-ssa-phiopt.c (hoist_adjacent_loads): Likewise.
      	* tree-ssa-pre.c (make_values_for_phi): Likewise.
      	(compute_avail): Likewise.
      	(eliminate): Likewise.
      	* tree-ssa-propagate.c (substitute_and_fold): Likewise.
      	* tree-ssa-reassoc.c (phi_rank): Likewise.
      	* tree-ssa-strlen.c (strlen_enter_block): Likewise.
      	* tree-ssa-structalias.c (compute_points_to_sets): Likewise.
      	(ipa_pta_execute): Likewise.
      	* tree-ssa-tail-merge.c (same_succ_hash): Likewise.
      	(release_last_vdef): Likewise.
      	(same_phi_alternatives_1): Likewise.
      	(bb_has_non_vop_phi): Likewise.
      	(vop_phi): Likewise.
      	* tree-ssa-threadedge.c (record_temporary_equivalences_from_phis):
      	Likewise.
      	* tree-ssa-uninit.c (warn_uninitialized_phi): Likewise.
      	(execute_late_warn_uninitialized): Likewise.
      	* tree-ssa.c (verify_ssa_name): Likewise.
      	(verify_phi_args): Likewise.
      	(verify_ssa): Likewise.
      	* tree-stdarg.c (execute_optimize_stdarg): Likewise.
      	* tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Likewise.
      	(slpeel_tree_peel_loop_to_edge): Likewise.
      	(vect_can_advance_ivs_p): Likewise.
      	(vect_update_ivs_after_vectorizer): Likewise.
      	* tree-vect-loop.c (vect_analyze_scalar_cycles_1): Likewise.
      	* tree-vrp.c (remove_range_assertions): Likewise.
      	* value-prof.c (gimple_divmod_values_to_profile): Likewise.
      
      From-SVN: r190385
      Richard Guenther committed
    • re PR middle-end/54146 (Very slow compile with attribute((flatten))) · 1c8f7377
      2012-08-14  Richard Guenther  <rguenther@suse.de>
      
      	PR tree-optimization/54146
      	* tree-ssa-pre.c (do_regular_insertion): Use a VEC
      	indexed by pred edge index for avail.
      	(do_partial_partial_insertion): Likewise.
      	(insert_into_preds_of_block): Adjust.
      
      From-SVN: r190382
      Richard Guenther committed
    • gimplify.c (create_tmp_from_val): Mark temporary with DECL_GIMPLE_REG_P here ... · 2ad728d2
      2012-08-14  Richard Guenther  <rguenther@suse.de>
      
      	* gimplify.c (create_tmp_from_val): Mark temporary with
      	DECL_GIMPLE_REG_P here ...
      	(internal_get_tmp_var): ... instead of here.  If we go into
      	SSA create an SSA name instead of a VAR_DECL.
      	(gimplify_modify_expr): Do not create SSA names here, assert
      	we already got them.
      	(force_gimple_operand_1): Create an SSA name if we go into SSA.
      	* sese.c (rename_uses): Simplify.
      
      From-SVN: r190381
      Richard Guenther committed
    • tree-into-ssa.c: Include diagnostic-core.h. · d8d707b4
      2012-08-14  Richard Guenther  <rguenther@suse.de>
      
      	* tree-into-ssa.c: Include diagnostic-core.h.
      	* Makefile.in (tree-into-ssa.o): Adjust.
      
      From-SVN: r190380
      Richard Guenther committed
    • re PR fortran/40881 ([F03] warn for obsolescent features) · f3e7b9d6
      2012-08-14  Tobias Burnus  <burnus@net-b.de>
      
              PR fortran/40881
              * error.c (gfc_notify_std): Reset cur_error_buffer->flag flag
              when the error/warning has been printed.
              * gfortran.h (gfc_sl_type): Add ST_LABEL_DO_TARGET.
              * match.c (gfc_match_do): Use ST_LABEL_DO_TARGET.
              * parse.c (check_statement_label): Use ST_LABEL_DO_TARGET.
              (parse_executable): Add obsolescence check for DATA.
              * resolve.c (resolve_branch): Handle ST_LABEL_DO_TARGET.
              * symbol.c (gfc_define_st_label, gfc_reference_st_label):
              Add obsolescence diagnostics.
              * trans-stmt.c (gfc_trans_label_assign): Handle
              * ST_LABEL_DO_TARGET.
      
      2012-08-14  Tobias Burnus  <burnus@net-b.de>
      
              PR fortran/40881
              * gfortran.dg/data_constraints_3.f90: New.
              * gfortran.dg/data_constraints_1.f90: Add dg-options ""
              to disable -pedantic compilation.
              * gfortran.dg/pr37243.f: Ditto.
              * gfortran.dg/g77/19990826-3.f: Ditto.
              * gfortran.dg/g77/20020307-1.f : Ditto.
              * gfortran.dg/g77/980310-3.f: Ditto.
      
      From-SVN: r190379
      Tobias Burnus committed
    • re PR fortran/54234 (-Wconversion or -Wconversion-extra should warn for CMPLX(dp,dp)) · 2e60cfaa
      2012-08-14  Tobias Burnus  <burnus@net-b.de>
      
              PR fortran/54234
              * check.c (gfc_check_cmplx): Add -Wconversion warning
              when converting higher-precision REAL to default-precision
              CMPLX without kind= parameter.
      
      2012-08-14  Tobias Burnus  <burnus@net-b.de>
      
              PR fortran/54234
              * gfortran.dg/warn_conversion_4.f90: New.
      
      From-SVN: r190378
      Tobias Burnus committed
    • tree-into-ssa.c (update_ssa): Verify we do not rename symbols that are already partly in SSA form. · 343c5d46
      2012-08-14  Richard Guenther  <rguenther@suse.de>
      
      	* tree-into-ssa.c (update_ssa): Verify we do not rename
      	symbols that are already partly in SSA form.
      
      From-SVN: r190377
      Richard Guenther committed
    • re PR middle-end/53411 (ICE in move_unallocated_pseudos) · dbabddf3
      	PR middle-end/53411
      	PR rtl-optimization/53495
      	* ira.c (ira): Move delete_trivially_dead_insns call before
      	find_moveable_pseudos call.
      
      	* gcc.c-torture/compile/pr53411.c: New test.
      	* gcc.c-torture/compile/pr53495.c: New test.
      
      From-SVN: r190376
      Jakub Jelinek committed
    • Daily bump. · 2ad74f71
      From-SVN: r190372
      GCC Administrator committed
  3. 13 Aug, 2012 16 commits
    • Fix patch merge error in previous commit. · 0fc4dd09
      From-SVN: r190360
      Steven Bosscher committed
    • tree-ssa-pre.c (do_regular_insertion): Add FIXME markers at points of… · c302207e
      tree-ssa-pre.c (do_regular_insertion): Add FIXME markers at points of potentially huge memset overhead.
      
      	* tree-ssa-pre.c (do_regular_insertion): Add FIXME markers at points
      	of potentially huge memset overhead.
      	(do_partial_partial_insertion): Likewise.
      	* cfgexpand.c (gimple_expand_cfg): Use XCNEWVEC instead of xcalloc.
      	* tree-vrp.c (find_assert_locations): Use XNEWVEC instead of XCNEWVEC
      	for arrays to be filled by pre_and_rev_post_order_compute.  Allocate
      	the right number of slots, not that number plus NUM_FIXED_BLOCKS.
      	* tree-ssa-reassoc.c (init_reassoc): Likewise.
      	* cfganal.c (dfs_enumerate_from): Use XNEWVEC instead of XCNEWVEC for
      	array used as stack.
      	* tree-ssa-sccvn.c (init_scc_vn): Use XNEWVEC instead of XCNEWVEC for
      	arrays to be filled by pre_and_rev_post_order_compute.
      	* cfgloopmanip.c (find_path): Use XNEWVEC instead of XCNEWVEC for
      	array to be filled by dfs_enumerate_from.
      	(remove_path): Likewise.
      	(duplicate_loop_to_header_edge): Use XNEWVEC instead of XCNEWVEC for
      	array of loops that is filled on the next lines.
      	* cfgloop.c (get_loop_body): Use XNEWVEC instead of XCNEWVEC for
      	array of basic blocks to be returned.
      	(get_loop_body_in_dom_order): Likewise.
      	(get_loop_body_in_bfs_order): Likewise.
      	* tree-ssa-loop-manip.c (loop_renamer_obstack): New static obstack
      	for all bitmaps used for rewriting into loop-closed SSA form.
      	(add_exit_phis_var): Allocate the def bitmap on it.  Clear the livein
      	bitmap at the end to release a lot of memory.
      	(add_exit_phis): Allocate the exits bitmap on the new obstack.
      	(get_loops_exits): Allocate the exits bitmap on the new obstack.
      	(find_uses_to_rename_use): Allocate a use_blocks bitmap if ver is
      	seen for the first time.
      	(find_uses_to_rename): Add "???" for why the whole function must
      	be re-scanned if changed_bbs is empty.
      	(rewrite_into_loop_closed_ssa): Allocate bitmaps on the new obstack.
      	Use XNEWVEC to allocate the use_blocks array.  Initialize the new
      	obstack, and free it at the end.  Remove loop over all SSA names.
      	(check_loop_closed_ssa_stmt): Look only at SSA_OP_USE operands.
      	* tree-cfg.c (move_sese_region_to_fn): Use XNEWVEC instead of
      	xcalloc to allocate edge_pred and edge_flag arrays.
      
      From-SVN: r190359
      Steven Bosscher committed
    • re PR libstdc++/54185 (condition_variable not properly destructed) · 2942db63
      2012-08-13  David Adler  <d.adler.s@gmail.com>
      
      	PR libstdc++/54185
      	* src/c++11/condition_variable.cc (condition_variable): Always
      	destroy native type in destructor.
      	* testsuite/30_threads/condition_variable/54185.cc: New.
      
      From-SVN: r190356
      David Adler committed
    • 2012-08-10 François Dumont <fdumont@gcc.gnu.org> · 181a5a13
      	    Ollie Wild  <aaw@google.com>
      
      	* include/bits/hashtable.h
      	(_Hashtable<>_M_insert_multi_node(hash_code, node_type*)): New.
      	(_Hashtable<>_M_insert(_Args&&, false_type)): Use latter.
      	(_Hashtable<>::_M_emplace(false_type, _Args&&...)): Likewise.
      	(_Hashtable<>::_M_insert_bucket): Replace by ...
      	(_Hashtable<>::_M_insert_unique_node(size_type, hash_code, node_type*)):
      	... this, new.
      	(_Hashtable<>::_M_insert(_Args&&, true_type)): Use latter.
      	(_Hashtable<>::_M_emplace(true_type, _Args&&...)): Likewise.
      	* include/bits/hashtable_policy.h (_Map_base<>::operator[]): Use
      	latter, emplace the value_type rather than insert.
      	* include/std/unordered_map: Include tuple.
      	* include/std/unordered_set: Likewise.
      	* testsuite/util/testsuite_counter_type.h: New.
      	* testsuite/23_containers/unordered_map/operators/2.cc: New.
      
      Co-Authored-By: Ollie Wild <aaw@google.com>
      
      From-SVN: r190355
      François Dumont committed
    • validate_failures.py (ExpirationDate): Tidy comment. · a327112f
      	* testsuite-management/validate_failures.py (ExpirationDate): Tidy
      	comment.
      
      From-SVN: r190354
      Diego Novillo committed
    • validate_failures.py (ParseSummary): Fix comment. · 6baa7225
      	* testsuite-management/validate_failures.py (ParseSummary): Fix
      	comment.
      
      From-SVN: r190352
      Diego Novillo committed
    • Implement support for expiring expected results in validate_failures.py. · c577382e
      I noticed recently that while the validator was accepting the
      'expire=YYYYMMDD' attribute, it was not actually doing anything with
      it.
      
      This patch fixes the oversight.
      
      2012-08-13  Diego Novillo  <dnovillo@google.com>
      
      	* testsuite-management/validate_failures.py: Import datetime.
      	(TestResult.ExpirationDate): New.
      	(TestResult.HasExpired): New.
      	(ParseSummary): Call it.  If it returns True, warn that the
      	expected failure has expired and do not add it to the set of
      	expected results.
      	(GetResults): Clarify documentation.
      
      From-SVN: r190351
      Diego Novillo committed
    • i386.h (FIXED_REGISTERS): Do not mark REX registers here. · 621bc046
      	* config/i386/i386.h (FIXED_REGISTERS): Do not mark REX registers here.
      	(CALL_USED_REGISTERS): Use bitmaps to mark call-used registers
      	for different ABIs.
      	(enum reg_class): Move CLOBBERED_REGS just before GENERAL_REGS.
      	(REG_CLASS_NAMES): Update.
      	(REG_CLASS_CONTENTS): Update.  Clear CLOBBERED_REGS members.
      	* config/i386/i386.c (ix86_conditional_register_usage): Disable
      	REX registers on 32bit targets.  Handle bitmaps from
      	CALL_USED_REGISTERS initializer.  Calculate CLOBBERED_REGS register
      	set from GENERAL_REGS also for 32bit targets.  Do not change call
      	used register set for TARGET_64BIT_MS_ABI separately.
      
      From-SVN: r190349
      Uros Bizjak committed
    • basic-block.h (struct basic_block): Remove loop_depth member, move flags and… · 391886c8
      basic-block.h (struct basic_block): Remove loop_depth member, move flags and index members next to each other.
      
      2012-08-13  Richard Guenther  <rguenther@suse.de>
      
      	* basic-block.h (struct basic_block): Remove loop_depth
      	member, move flags and index members next to each other.
      	* cfgloop.h (bb_loop_depth): New inline function.
      	* cfghooks.c (split_block): Do not set loop_depth.
      	(duplicate_block): Likewise.
      	* cfgloop.c (flow_loop_nodes_find): Likewise.
      	(flow_loops_find): Likewise.
      	(add_bb_to_loop): Likewise.
      	(remove_bb_from_loops): Likewise.
      	* cfgrtl.c (force_nonfallthru_and_redirect): Likewise.
      	* gimple-streamer-in.c (input_bb): Do not stream loop_depth.
      	* gimple-streamer-out.c (output_bb): Likewise.
      	* bt-load.c: Include cfgloop.h.
      	(migrate_btr_defs): Use bb_loop_depth.
      	* cfg.c (dump_bb_info): Likewise.
      	* final.c (compute_alignments): Likewise.
      	* ira.c (update_equiv_regs): Likewise.
      	* tree-ssa-copy.c (init_copy_prop): Likewise.
      	* tree-ssa-dom.c (loop_depth_of_name): Likewise.
      	* tree-ssa-forwprop.c: Include cfgloop.h.
      	(forward_propagate_addr_expr): Use bb_loop_depth.
      	* tree-ssa-pre.c (insert_into_preds_of_block): Likewise.
      	* tree-ssa-sink.c (select_best_block): Likewise.
      	* ipa-inline-analysis.c: Include cfgloop.h.
      	(estimate_function_body_sizes): Use bb_loop_depth.
      	* Makefile.in (tree-ssa-forwprop.o): Depend on $(CFGLOOP_H).
      	(ipa-inline-analysis.o): Likewise.
      	(bt-load.o): Likewise.
      
      	* gcc.dg/tree-prof/update-loopch.c: Adjust.
      
      From-SVN: r190346
      Richard Guenther committed
    • re PR driver/54210 (gcc unable to detect -mprfchw flag in bulldozer machines) · 9006f7f3
      	PR driver/54210
      	* config/i386/driver-i386.c (host_detect_local_cpu): Test bit_PRFCHW
      	bit of CPUID 0x80000001 %ecx instead of CPUID 7 %ecx.
      	* config/i386/cpuid.h (bits_PRFCHW): Move definition to CPUID
      	0x80000001 %ecx flags.
      
      Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
      
      From-SVN: r190345
      Ganesh Gopalasubramanian committed
    • tree-cfg.c (print_loop): Avoid ICEing for loops marked for removal and loops with multiple latches. · 755a1ca5
      2012-08-13  Richard Guenther  <rguenther@suse.de>
      
      	* tree-cfg.c (print_loop): Avoid ICEing for loops marked for
      	removal and loops with multiple latches.
      
      From-SVN: r190344
      Richard Guenther committed
    • re PR c/53968 (integer undefined behaviors in GCC) · eb87c7c4
      	PR c/53968
      	* tree.c (integer_pow2p): Avoid undefined signed overflows.
      	* simplify-rtx.c (neg_const_int): Likewise.
      	* expr.c (fixup_args_size_notes): Likewise.
      	* stor-layout.c (set_min_and_max_values_for_integral_type): Likewise.
      	* double-int.c (mul_double_wide_with_sign): Likewise.
      	(double_int_mask): Likewise.
      	* tree-ssa-loop-ivopts.c (get_address_cost): Likewise.
      
      From-SVN: r190342
      Jakub Jelinek committed
    • re PR libstdc++/54112 (including complex.h and complex fails in C++03) · 6a9573cc
      2012-08-13  Marc Glisse  <marc.glisse@inria.fr>
      
      	PR libstdc++/54112
      	* include/c_compatibility/complex.h: Undefine complex, always
      	include system's complex.h if present.
      	* testsuite/26_numerics/complex/c99.cc: New testcase.
      	* testsuite/17_intro/headers/c++1998/complex.cc: Likewise.
      	* doc/xml/manual/numerics.xml: Document it.
      
      From-SVN: r190340
      Marc Glisse committed
    • re PR tree-optimization/54200 (copyrename generates wrong debuginfo) · 61f7b9ae
      2012-08-13  Richard Guenther  <rguenther@suse.de>
      
      	PR tree-optimization/54200
      	* tree-ssa-copyrename.c (rename_ssa_copies): Do not add
      	PHI results to another partition if not all PHI arguments
      	have the same partition.
      
      	* gcc.dg/guality/pr54200.c: New testcase.
      	* gcc.dg/tree-ssa/slsr-8.c: Adjust.
      
      From-SVN: r190339
      Richard Guenther committed
    • tree-pass.h (write_summary, [...]): Remove set and vset arguments. · f27c1867
      
      	* tree-pass.h (write_summary, write_optimization_summary): Remove
      	set and vset arguments.
      	* ipa-cp.c (ipcp_write_summary): Remove set and vset arugments.
      	(write_node_summary_p): Likewise; use the encoder.
      	(ipa_reference_write_optimization_summary): Likewise.
      	* lto-cgraph.c (output_cgraph_opt_summary): Use encoder.
      	(lto_symtab_encoder_new): Initialize in_partition field.
      	(lto_symtab_encoder_delete): Destroy in_partition field.
      	(LCC_NOT_FOUND): Move to lto-streamer.h
      	(lto_symtab_encoder_deref): Likewise.
      	(lto_symtab_encoder_in_partition_p,
      	lto_set_symtab_encoder_in_partition): New functions.
      	(referenced_from_other_partition_p): Rewrite to use encoder.
      	(reachable_from_other_partition_p): Likewise.
      	(referenced_from_this_partition_p): Likewise.
      	(reachable_from_this_partition_p): Likewise.
      	(lto_output_node): Likewise.
      	(lto_output_varpool_node): Likewise.
      	(output_refs): Likewise.
      	(compute_ltrans_boundary): Initialize in_partition fileds of
      	the encoder.
      	(output_symtab): Likewise.
      	(input_refs): Match the changes in output_refs.
      	(output_cgraph_opt_summary_p): Remove set argument.
      	(output_node_opt_summary): Replace set by encoder.
      	(output_cgraph_opt_summary): Remove set argument; use
      	the encoder.
      	* ipa-pure-const.c (pure_const_write_summary): Remove set and vset
      	arguments; use the encoder.
      	* lto-streamer-out.c (lto_output): Remove set and vset argument; use
      	the encoder.
      	(produce_symtab): Likewise.
      	* ipa-inline.h (inline_write_summary): Remove set and vset arguments.
      	* ipa-inline-analysis.c (inline_write_summary): Likewise.
      	* ipa-prop.c (ipa_prop_write_jump_functions): Remove set argument;
      	use encoder.
      	* ipa-prop.h (ipa_prop_write_jump_functions): Likewise.
      	* passes.c (ipa_write_summaries_2): Remove set and vset arguments.
      	(ipa_write_summaries_1): Update.
      	(ipa_write_optimization_summaries_1): Likewise.
      	(ipa_write_optimization_summaries): Likewise.
      	* lto-streamer.h (lto_symtab_encoder_t): Add in_partition.
      	(lto_symtab_encoder_iterator): New type.
      	(lto_symtab_encoder_deref): Make inline.
      	(output_symtab, referenced_from_other_partition_p,
      	reachable_from_other_partition_p, referenced_from_this_partition_p,
      	reachable_from_this_partition_p): Update.
      	(lsei_end_p, lsei_next, lsei_node, lsei_cgraph_node, lsei_varpool_node): New
      	inline functions.
      	(LCC_NOT_FOUND): New macro.
      	(lto_symtab_encoder_deref, lsei_start, lsei_next_in_partition,
      	lsei_start_in_partition, lsei_next_function_in_partition,
      	lsei_start_function_in_partition, lsei_next_variable_in_partition,
      	lsei_start_variable_in_partition): New inline functions.
      
      	* lto-partition.c (set_referenced_from_other_partition_p,
      	set_reachable_from_other_partition_p, set_referenced_from_this_partition_p):
      	New functions.
      	(lto_promote_cross_file_statics): Use them.
      
      From-SVN: r190336
      Jan Hubicka committed
    • Daily bump. · 56142d02
      From-SVN: r190335
      GCC Administrator committed
  4. 12 Aug, 2012 1 commit
    • sh.md (prefetch): Simplify expander. · 69853ea9
      	* config/sh/sh.md (prefetch): Simplify expander.  Fix condition to
      	allow SH3.
      	(*prefetch_media): Move insn below expander.
      	(*prefetch): Fix condition to allow SH3.
      
      	* gcc.target/sh/prefetch.c: Add -m3* to inclusion list.
      
      From-SVN: r190332
      Oleg Endo committed