Commit Graph

118686 Commits

Author SHA1 Message Date
Uros Bizjak
df36cec0dd fpu-387.h (set_fpu): Use __builtin_ia32_stmxcsr and __builtin_ia32_ldmxcsr intrinsics.
* config/fpu-387.h (set_fpu): Use __builtin_ia32_stmxcsr and
	__builtin_ia32_ldmxcsr intrinsics.

From-SVN: r190992
2012-09-05 21:49:21 +02:00
François Dumont
3157879227 re PR libstdc++/54296 (using the object in the map to erase element from the map crashes)
2012-09-05  François Dumont  <fdumont@gcc.gnu.org>

	PR libstdc++/54296
	* include/bits/hashtable.h (_M_erase(size_type, __node_base*,
	__node_type*)): New.
	(erase(const_iterator)): Use latter.
	(_M_erase(std::true_type, const key_type&)): New, likewise.
	(_M_erase(std::false_type, const key_type&)): New. Find all nodes
	matching the key before deallocating them so that the key doesn't
	get invalidated.
	(erase(const key_type&)): Use the new member functions.
	* testsuite/23_containers/unordered_map/erase/54296.cc: New.
	* testsuite/23_containers/unordered_multimap/erase/54296.cc: New.

From-SVN: r190991
2012-09-05 19:41:16 +00:00
Oleg Endo
b413068c9f hooks.c (hook_int_rtx_mode_as_bool_0): New function.
* hooks.c (hook_int_rtx_mode_as_bool_0): New function.
	* hooks.h (hook_int_rtx_mode_as_bool_0): Declare it.
	* output.h (default_address_cost): Add machine_mode and address space
	arguments.
	* target.def (address_cost): Likewise.
	* rtlanal.c (address_cost): Pass mode and address space to target hook.
	(default_address_cost): Add unnamed machine_mode and address space
	arguments.
	* doc/tm.texi: Regenerate.
	* config/alpha/alpha.c (TARGET_ADDRESS_COST): Use
	hook_int_rtx_mode_as_bool_0 instead of hook_int_rtx_bool_0.
	* config/arm/arm.c (arm_address_cost): Add machine_mode and address
	space arguments.
	* config/avr/avr.c (avr_address_cost): Likewise.
	* config/bfin/bfin.c (bfin_address_cost): Likewise.
	* config/cr16/cr16.c (cr16_address_cost): Likewise.
	* config/cris/cris.c (cris_address_cost): Likewise.
	* config/epiphany/epiphany.c (epiphany_address_cost): Likewise.
	* config/i386/i386.c (ix86_address_cost): Likewise.
	* config/ia64/ia64.c (TARGET_ADDRESS_COST): Use
	hook_int_rtx_mode_as_bool_0 instead of hook_int_rtx_bool_0.
	* config/iq2000/iq2000.c (iq2000_address_cost): Add machine_mode and
	address space arguments.  Pass them on in recursive invocation.
	* config/lm32/lm32.c (TARGET_ADDRESS_COST): Use
	hook_int_rtx_mode_as_bool_0 instead of hook_int_rtx_bool_0.
	* config/m32c/m32c.c (m32c_address_cost): Add machine_mode and address
	space arguments.
	* config/m32r/m32r.c (TARGET_ADDRESS_COST): Use
	hook_int_rtx_mode_as_bool_0 instead of hook_int_rtx_bool_0.
	* config/mcore/mcore.c (TARGET_ADDRESS_COST): Likewise.
	* config/mep/mep.c (mep_address_cost): Add machine_mode and address
	space arguments.
	* config/microblaze/microblaze.c (microblaze_address_cost): Likewise.
	* config/mips/mips.c (mips_address_cost): Likewise.
	* config/mmix/mmix.c (TARGET_ADDRESS_COST): Use
	hook_int_rtx_mode_as_bool_0 instead of hook_int_rtx_bool_0.
	* config/mn10300/mn10300.c (mn10300_address_cost): Add machine_mode and
	address space arguments.
	(mn10300_rtx_costs): Pass GET_MODE (x) and MEM_ADDR_SPACE (x) to
	mn10300_address_cost.
	* config/pa/pa.c (hppa_address_cost): Add machine_mode and address
	space arguments.
	* config/rs6000/rs6000.c (rs6000_debug_address_cost): Likewise.
	(TARGET_ADDRESS_COST): Use hook_int_rtx_mode_as_bool_0 instead of
	hook_int_rtx_bool_0.
	* config/rx/rx.c (rx_address_cost): Add machine_mode and address
	space arguments.
	* config/s390/s390.c (s390_address_cost): Likewise.
	* config/score/score-protos.h (score_address_cost): Likewise.
	* config/score/score.c (score_address_cost): Likewise.
	* config/sh/sh.c (sh_address_cost): Likewise.
	* config/sparc/sparc.c (TARGET_ADDRESS_COST): Use
	hook_int_rtx_mode_as_bool_0 instead of hook_int_rtx_bool_0.
	* config/spu/spu.c (TARGET_ADDRESS_COST): Likewise.
	* config/stormy16/stormy16.c (xstormy16_address_cost): Add machine_mode
	and address space arguments.
	* config/v850/v850.c (TARGET_ADDRESS_COST): Use
	hook_int_rtx_mode_as_bool_0 instead of hook_int_rtx_bool_0.
	* config/vax/vax.c (vax_address_cost): Add machine_mode and address
	space arguments.
	* config/xtensa/xtensa (TARGET_ADDRESS_COST): Use
	hook_int_rtx_mode_as_bool_0 instead of hook_int_rtx_bool_0.

From-SVN: r190990
2012-09-05 17:31:17 +00:00
Tobias Burnus
04529aba93 re PR fortran/54462 (Another "segmentation fault" after an error in COMMON statement after r190853)
2012-09-05  Tobias Burnus  <burnus@net-b.de>

        PR fortran/54462
        * symbol.c (gfc_undo_symbols): Avoid NULL pointer dereference.

From-SVN: r190989
2012-09-05 18:40:48 +02:00
Diego Novillo
7e7d75c136 re PR bootstrap/54484 (r190927 breaks bootstrap with clang compiler)
PR bootstrap/54484
	* vec.h (vec_t::lower_bound): Fix spelling of LESSTHAN
	argument.

From-SVN: r190988
2012-09-05 12:34:42 -04:00
Jakub Jelinek
854f927236 re PR middle-end/54486 (Spurious printf format warning mentions nonexistent type 'sizetype')
PR middle-end/54486
	* builtins.c (fold_builtin_strspn, fold_builtin_strcspn): Use
	build_int_cst with size_type_node instead of size_int.

	* c-c++-common/pr54486.c: New test.

From-SVN: r190986
2012-09-05 18:27:55 +02:00
Uros Bizjak
305b3c9bdc sse.md (<sse4_1>_blendv<ssemodesuffix><avxsizesuffix>): Use register_operand instead of reg_not_xmm0_operand{,_maybe_avx}.
* config/i386/sse.md (<sse4_1>_blendv<ssemodesuffix><avxsizesuffix>):
	Use register_operand instead of reg_not_xmm0_operand{,_maybe_avx}.
	Use nonimmediate_operand instead of
	nonimm_not_xmm0_operand{,_maybe_avx}.
	(<sse4_1_avx2>_pblendvb): Ditto.
	(sse4_2_pcmpestr): Ditto.
	(*sse4_2_pcmpestr_unaligned): Ditto.
	(sse4_2_pcmpistr): Ditto.
	(*sse4_2_pcmpistr_unaligned): Ditto.
	* config/i386/predicates.md (reg_not_xmm0_operand): Remove predicate.
	(nonimm_not_xmm0_operand): Ditto.
	(nonimm_not_xmm0_operand_maybe_avx): Ditto.
	(nonimm_not_xmm0_operand_maybe_avx): Ditto.
	* config/i386/i386.md (rdpmc): Do not force operand 1 into ecx.

From-SVN: r190985
2012-09-05 17:20:01 +02:00
Ulrich Drepper
efc622f843 random.cc (random_device::_M_init): Check whether cpuid instruction is available by using __get_cpuid_max.
* src/c++11/random.cc (random_device::_M_init): Check whether cpuid
	instruction is available by using __get_cpuid_max.

From-SVN: r190982
2012-09-05 13:54:57 +00:00
Eric Botcazou
4700dd70e1 bb-reorder.c: Clarify a few points in the head comment and fix long lines in other comments.
* bb-reorder.c: Clarify a few points in the head comment and fix
	long lines in other comments.
	(find_traces): Fix long line.
	(find_traces_1_round): Likewise.
	(better_edge_p): Likewise.
	(connect_traces): Likewise.
	(duplicate_computed_gotos): Likewise.
	(find_rarely_executed_basic_blocks_and_cr): Remove trailing spaces.
	(fix_up_fall_thru_edges): Fix formatting.

From-SVN: r190979
2012-09-05 13:37:12 +00:00
Richard Guenther
18eb76ebfa re PR tree-optimization/46590 (long compile time with -O2 and many loops)
2012-09-05  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/46590
	* tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Do not
	update SSA form here.
	(canonicalize_induction_variables): Assert we do not need to
	update SSA form.
	(tree_unroll_loops_completely): Update SSA form here.
	* tree-ssa-loop-manip.c (gimple_duplicate_loop_to_header_edge):
	Do not verify loop-closed SSA form if SSA form is not up-to-date.

From-SVN: r190978
2012-09-05 13:29:13 +00:00
Dominique d'Humieres
e124e65f35 re PR fortran/54474 (gfortran.dg/coarray_poly_3.f90)
2012-09-05  Dominique Dhumieres  <dominiq@lps.ens.fr>

	PR fortran/54474
	* gfortran.dg/coarray_poly_3.f90: Adjust error messages.

From-SVN: r190977
2012-09-05 13:26:58 +00:00
Ulrich Drepper
ff99de9860 * include/ext/random.tcc (__gnu_cxx:normal_mv_distribution<>)
(operator()): Use __generate() function of _M_nd.

From-SVN: r190975
2012-09-05 12:41:17 +00:00
Paolo Carlini
22854930b9 re PR c++/54191 ([C++11] SFINAE does not handle conversion to inaccessible base)
/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
2012-09-05 10:14:37 +00:00
Georg-Johann Lay
b588ae3074 re PR target/54461 ([avr] add configure option for better AVR-Libc integration)
PR target/54461
	* configure.ac (noconfigdirs,target=avr-*-*): Add target-newlib,
	target-libgloss if not configured --with-avrlibc=no.
	* configure: Regenerate.

libgcc/
	PR target/54461
	* config.host (tmake_file,host=avr-*-*): Add avr/t-avrlibc if
	not configured --with-avrlibc=no.
	* config/avr/t-avrlibc: New file.
	* Makefile.in (FPBIT_FUNCS): filter-out LIB2FUNCS_EXCLUDE.
	(DPBIT_FUNCS): Ditto.
	(TPBIT_FUNCS): Ditto.

gcc/
	PR target/54461
	* config.gcc (tm_file,target=avr-*-*): Add avr/avrlibc.h if
	not configured --with-avrlibc=no.
	(tm_defines,target=avr-*-*): Add WITH_AVRLIBC if not configured
	--with-avrlibc=no.
	* config/avr/avrlibc.h: New file.
	* config/avr/avr-c.c: Build-in define __WITH_AVRLIBC__ if
	not configured --with-avrlibc=no.
	* doc/invoke.texi (AVR Built-in Macros): Document __WITH_AVRLIBC__

From-SVN: r190967
2012-09-05 08:47:50 +00:00
Bin Cheng
4efbb06f67 Add missed ChangeLog entry for r190919.
From-SVN: r190965
2012-09-05 07:44:25 +00:00
Jason Merrill
faddc0d7c2 re PR c++/54441 (Infinite loop with brace initializer on zero-length array)
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
2012-09-05 00:17:12 -04:00
Jason Merrill
5a706c322d re PR c++/54420 (Segmentation fault in decl_mangling_context)
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
2012-09-05 00:16:58 -04:00
Ulrich Drepper
bf30f22962 random: Add __gnu_cxx:normal_mv_distribution<> class.
* include/ext/random: Add __gnu_cxx:normal_mv_distribution<> class.
	* include/ext/random.tccAdd out-of-line functions for
	__gnu_cxx::normal_mv_distribution<>.
	* testsuite/26_numerics/random/normal_mv_distribution/
	operators/equal.cc: New file.
	* testsuite/26_numerics/random/normal_mv_distribution/
	operators/serialize.cc: New file.
	* testsuite/26_numerics/random/normal_mv_distribution/
	operators/inequal.cc: New file.
	* testsuite/26_numerics/random/normal_mv_distribution/
	cons/default.cc: New file.
	* testsuite/26_numerics/random/normal_mv_distribution/
	cons/parms.cc: New file.
	* testsuite/26_numerics/random/normal_mv_distribution/
	requirements/explicit_instantiation/1.cc: New file.
	* testsuite/26_numerics/random/normal_mv_distribution/
	requirements/typedefs.cc: New file.

From-SVN: r190960
2012-09-05 04:06:24 +00:00
GCC Administrator
29ac1b66e0 Daily bump.
From-SVN: r190957
2012-09-05 00:18:19 +00:00
Ulrich Drepper
d4d348a9fe random: Add __gnu_cxx::beta_distribution<> class.
* libstdc++-v3/include/ext/random: Add __gnu_cxx::beta_distribution<>
	class.
	* libstdc++-v3/include/ext/random.tcc: Add out-of-line functions for
	__gnu_cxx::beta_distribution<>.
	* libstdc++-v3/testsuite/26_numerics/random/beta_distribution/
	operators/equal.cc: New file.
	* libstdc++-v3/testsuite/26_numerics/random/beta_distribution/
	operators/serialize.cc: New file.
	* libstdc++-v3/testsuite/26_numerics/random/beta_distribution/
	operators/inequal.cc: New file.
	* libstdc++-v3/testsuite/26_numerics/random/beta_distribution/
	cons/parms.cc: New file.
	* libstdc++-v3/testsuite/26_numerics/random/beta_distribution/
	cons/default.cc: New file.
	* libstdc++-v3/testsuite/26_numerics/random/beta_distribution/
	requirements/typedefs.cc: New file.
	* libstdc++-v3/testsuite/26_numerics/random/beta_distribution/
	requirements/explicit_instantiation/1.cc: New file.

From-SVN: r190954
2012-09-04 22:57:09 +00:00
Teresa Johnson
abd16fb112 Adding change log entries for r190952:
Enhances the gcov program summary by adding a histogram of arc counter
entries. This is used to compute working set information in the compiler
for use by optimizations that need information on hot vs cold counter
values or the rough working set size in terms of the number of counters.
Each working set data point is the minimum counter value and number of
counters required to reach a given percentage of the cumulative counter
sum across the profiled execution (sum_all in the program summary).

2012-09-04  Teresa Johnson  <tejohnson@google.com>

	* libgcc/libgcov.c (struct gcov_summary_buffer): New structure.
	(gcov_histogram_insert): New function.
	(gcov_compute_histogram): Ditto.
	(gcov_exit): Invoke gcov_compute_histogram, and perform merging of
	histograms during summary merging.
	* gcc/gcov-io.c (gcov_write_summary): Write out non-zero histogram
	entries to function summary along with an occupancy bit vector.
	(gcov_read_summary): Read in the histogram entries.
	(gcov_histo_index): New function.
	(void gcov_histogram_merge): Ditto.
	* gcc/gcov-io.h (gcov_type_unsigned): New type.
	(struct gcov_bucket_type): Ditto.
	(struct gcov_ctr_summary): Include histogram.
	(GCOV_TAG_SUMMARY_LENGTH): Update to include histogram entries.
	(GCOV_HISTOGRAM_SIZE): New macro.
	(GCOV_HISTOGRAM_BITVECTOR_SIZE): Ditto.
	* gcc/profile.c (NUM_GCOV_WORKING_SETS): Ditto.
	(gcov_working_sets): New global variable.
	(compute_working_sets): New function.
	(find_working_set): Ditto.
	(get_exec_counts): Invoke compute_working_sets.
	* gcc/coverage.c (read_counts_file): Merge histograms, and
	fix bug with accessing summary info for non-summable counters.
	* gcc/basic-block.h (gcov_type_unsigned): New type.
	(struct gcov_working_set_info): Ditto.
	(find_working_set): Declare.
	* gcc/gcov-dump.c (tag_summary): Dump out histogram.

From-SVN: r190953
2012-09-04 21:20:30 +00:00
Teresa Johnson
9f71de8404 Enhances the gcov program summary by adding a histogram of arc counter entries.
Enhances the gcov program summary by adding a histogram of arc counter
entries. This is used to compute working set information in the compiler
for use by optimizations that need information on hot vs cold counter
values or the rough working set size in terms of the number of counters.
Each working set data point is the minimum counter value and number of
counters required to reach a given percentage of the cumulative counter
sum across the profiled execution (sum_all in the program summary).

2012-09-04  Teresa Johnson  <tejohnson@google.com>

	* libgcc/libgcov.c (struct gcov_summary_buffer): New structure.
	(gcov_histogram_insert): New function.
	(gcov_compute_histogram): Ditto.
	(gcov_exit): Invoke gcov_compute_histogram, and perform merging of
	histograms during summary merging.
	* gcc/gcov-io.c (gcov_write_summary): Write out non-zero histogram
	entries to function summary along with an occupancy bit vector.
	(gcov_read_summary): Read in the histogram entries.
	(gcov_histo_index): New function.
	(void gcov_histogram_merge): Ditto.
	* gcc/gcov-io.h (gcov_type_unsigned): New type.
	(struct gcov_bucket_type): Ditto.
	(struct gcov_ctr_summary): Include histogram.
	(GCOV_TAG_SUMMARY_LENGTH): Update to include histogram entries.
	(GCOV_HISTOGRAM_SIZE): New macro.
	(GCOV_HISTOGRAM_BITVECTOR_SIZE): Ditto.
	* gcc/profile.c (NUM_GCOV_WORKING_SETS): Ditto.
	(gcov_working_sets): New global variable.
	(compute_working_sets): New function.
	(find_working_set): Ditto.
	(get_exec_counts): Invoke compute_working_sets.
	* gcc/coverage.c (read_counts_file): Merge histograms, and
	fix bug with accessing summary info for non-summable counters.
	* gcc/basic-block.h (gcov_type_unsigned): New type.
	(struct gcov_working_set_info): Ditto.
	(find_working_set): Declare.
	* gcc/gcov-dump.c (tag_summary): Dump out histogram.

From-SVN: r190952
2012-09-04 21:16:18 +00:00
Diego Novillo
bde6de5d4b Fix bootstrap failure with clang++.
This patch fixes a bootstrap failure when using clang as the host
compiler.  Default arguments for class template member functions
should be added in the declaration, not the definition.

From Jason:

> 8.3.6 says "Default arguments for a member function of a class template shall
> be specified on the initial declaration of the member function within the
> class template."

	PR bootstrap/54484
	* vec.h (vec_t::embedded_init): Move default argument value
	to function declaration.

From-SVN: r190951
2012-09-04 17:07:48 -04:00
Jason Merrill
afba316b46 re PR c++/54198 ("error: invalid use of incomplete type" when building Chromium)
PR c++/54198
	* decl.c (check_default_argument): Set cp_unevaluated_operand
	around call to perform_implicit_conversion_flags.

From-SVN: r190949
2012-09-04 15:35:02 -04:00
Eric Botcazou
427b8bb8d7 bb-reorder.c (gate_handle_reorder_blocks): Move around.
* bb-reorder.c (gate_handle_reorder_blocks): Move around.
	(rest_of_handle_reorder_blocks): Likewise.
	(pass_reorder_blocks): Likewise.
	(gate_handle_partition_blocks): Likewise.

From-SVN: r190948
2012-09-04 19:11:37 +00:00
Eric Botcazou
88a8ba9581 re PR rtl-optimization/54456 (ICE: in init_seqno, at sel-sched.c:6797 with -fschedule-insns -fselective-scheduling)
PR rtl-optimization/54456
	* sched-rgn.c (gate_handle_sched): Return 1 only if optimize > 0.

From-SVN: r190947
2012-09-04 19:05:38 +00:00
Jason Merrill
92383a2a11 re PR c++/54437 (Revision 190664 causes Firefox build failure)
PR c++/54437
	PR c++/51213
	* pt.c (fn_type_unification): Call coerce_template_parms before
	entering substitution context.

From-SVN: r190946
2012-09-04 14:49:51 -04:00
Jason Merrill
178f875aa0 * configure.ac: Fix --enable-languages=all.
From-SVN: r190945
2012-09-04 14:49:41 -04:00
Diego Novillo
326280d422 This patch works around a parsing problem with g++ 4.3.
This patch works around a parsing problem with g++ 4.3.  The parser is
failing to lookup calls to the template function reserve when called
from other member functions:

vec_t<T>::reserve<A> (...)

The parser thinks that the '<' in reserve<A> is a less-than operation.
This problem does not happen after 4.3.

This code is going to change significantly, so this won't be needed
soon.

Tested on x86_64 with g++ 4.3 and g++ 4.6.

	PR bootstrap/54478
	* vec.h (vec_t::alloc): Remove explicit type specification
	in call to reserve.
	(vec_t::copy): Likewise.
	(vec_t::reserve): Likewise.
	(vec_t::reserve_exact): Likewise.
	(vec_t::safe_splice): Likewise.
	(vec_t::safe_push): Likewise.
	(vec_t::safe_grow): Likewise.
	(vec_t::safe_grow_cleared): Likewise.
	(vec_t::safe_insert): Likewise.

From-SVN: r190943
2012-09-04 14:33:29 -04:00
Richard Henderson
96672a3e82 * alias.c (read_dependence): Return true for ALIAS_SET_MEMORY_BARRIER.
From-SVN: r190941
2012-09-04 11:16:24 -07:00
Steven Bosscher
1a044f416a re PR bootstrap/54453 (r190783 breaks bootstrap on powerpc64-unknown-linux-gnu)
PR bootstrap/54453
	* include/Makefile.am: Fix regex.
	* include/Makefile.in: Regenerate.

From-SVN: r190939
2012-09-04 15:28:39 +00:00
Richard Guenther
4d4b1b30cd tree-ssa-pre.c (value_expressions): Make it a vector of bitmaps containing expression IDs.
2012-09-04  Richard Guenther  <rguenther@suse.de>

	* tree-ssa-pre.c (value_expressions): Make it a vector of
	bitmaps containing expression IDs.
	(add_to_value): Adjust.
	(sorted_array_from_bitmap_set): Likewise.
	(bitmap_set_replace_value): Likewise.
	(print_value_expressions): Likewise.
	(get_constant_for_value_id): Likewise.
	(get_representative_for): Likewise.
	(phi_translate_1): Likewise.
	(bitmap_find_leader): Likewise.
	(find_or_generate_expression): Likewise.
	(do_regular_insertion): Likewise.
	(init_pre): Likewise.
	(fini_pre): Likewise.

From-SVN: r190938
2012-09-04 15:25:38 +00:00
Diego Novillo
dce6e8ada7 re PR bootstrap/54479 (Bootstrap with release-checking broken)
PR bootstrap/54479
	* vec.h (vec_t::copy): Add cast in call to reserve_exact.

From-SVN: r190937
2012-09-04 11:16:51 -04:00
Eric Botcazou
0e9f719a98 * make_sunver.pl: Add missing newline at the end of extern "C++" block.
From-SVN: r190932
2012-09-04 13:56:06 +00:00
Richard Guenther
3c1d57d074 tree-ssa-pre.c (add_to_exp_gen): Adjust.
2012-09-04  Richard Guenther  <rguenther@suse.de>

	* tree-ssa-pre.c (add_to_exp_gen): Adjust.
	(make_values_for_phi): Do not add to PHI_GEN for FRE.
	(compute_avail): Stop processing after adding all defs to
	AVAIL_OUT for FRE.
	(init_pre): Do not allocate not needed bitmap sets for FRE.

From-SVN: r190930
2012-09-04 13:26:25 +00:00
Diego Novillo
e8f6d0461b * testsuite-management/x86_64-unknown-linux-gnu.xfail: Update.
From-SVN: r190929
2012-09-04 09:23:10 -04:00
Christophe Lyon
7c2f37ebfe MAINTAINERS (Write After Approval): Add myself.
2012-09-04  Christophe Lyon  <christophe.lyon@st.com>

	* MAINTAINERS (Write After Approval): Add myself.

From-SVN: r190928
2012-09-04 15:22:55 +02:00
Diego Novillo
bd0c3bfdd7 Make all VEC_* functions, member functions of vec_t.
This patch is the first step towards making the API for VEC use
member functions.

There are no user code modifications in this patch.  Everything
is still using the VEC_* macros, but this time they expand into
member function calls.

Because of the way VECs are used, this required some trickery.
The API allows VECs to be NULL.  This means that services like
VEC_length(V) will return 0 when V is a NULL pointer.  This is,
of course, not possible to do if we call V->length().

For functions that either need to allocate/re-allocate the
vector, or they need to handle NULL vectors, I implemented them
as static member functions or free functions.

Another wart that I did not address in this patch is the fact
that vectors of pointers and vectors of objects have slightly
different semantics when handling elements in the vector.  In
vector of pointers, we pass them around by value, but in vectors
of objects, they are passed around via pointers.  That's why we
need TYPE * and TYPE ** overloads for some functions (e.g.,
vec_t::iterate).

I will fix these two warts in a subsequent patch.  The idea is to
make vec_t a single-word structure, which acts as a handler for
the structure containing the actual vector.  Something like this:

template<typename T>
struct vec_t
{
  struct vec_internal<T> *vec_;
};

This has the advantage that we can now declare the actual vector
instances as regular variables, instead of pointers.  They will
use the same amount of memory when embedded in other structures,
and we will be able to allocate and reallocate the actual data
without having to mutate the vector instance.

All the functions that are now static members in vec_t, will
become instance members in the new vec_t.  This will mean that
all the callers will need to be changed, of course.

Tested on x86_64 and ppc64 with all languages plus ada, go and obj-c++.

	Rewrite VEC_* functions as member functions of vec_t.

	* vec.h: Update documentation.
	(ALONE_VEC_CHECK_INFO): Define.
	(ALONE_VEC_CHECK_DECL): Define.
	(ALONE_VEC_CHECK_PASS): Define.
	(struct vec_prefix): Rename field NUM to NUM_.
	Rename field ALLOC to ALLOC_.
	Update all users.
	(struct vec_t): Rename field PREFIX to PREFIX_.
	Rename field VEC to VEC_.
	Update all users.
	(vec_t::length): Rename from VEC_length_1.  Update all users.
	(vec_t::empty): Rename from VEC_empty_1.  Update all users.
	(vec_t::address): Rename from VEC_address_1.  Update all users.
	(vec_address): New.
	(vec_t::last): Rename from VEC_last_1.  Update all users.
	(vec_t::operator[]): Rename from VEC_index_1.  Update all users.
	(vec_t::iterate): Rename from VEC_iterate_1.  Update all users.
	(vec_t::embedded_size): Rename from VEC_embedded_size_1.
	Update all users.
	(vec_t::embedded_init): Rename from VEC_embedded_init_1.
	Update all users.
	(vec_t::alloc): Rename from VEC_alloc_1.  Update all users.
	(vec_t::free): Rename from VEC_free_1.  Update all users.
	(vec_t::copy): Rename from VEC_copy_1.  Update all users.
	(vec_t::space): Rename from VEC_space_1.  Update all users.
	(vec_t::reserve): Rename from VEC_reserve_1.  Update all users.
	(vec_t::reserve_exact): Rename from VEC_reserve_exact_1.
	Update all users.
	(vec_t::splice): Rename from VEC_splice_1.  Update all users.
	(vec_t::safe_splice): Rename from VEC_safe_splice_1.  Update all users.
	(vec_t::quick_push): Rename from VEC_quick_push_1.  Update all users.
	(vec_t::safe_push): Rename from VEC_safe_push_1.  Update all users.
	(vec_t::pop): Rename from VEC_pop_1.  Update all users.
	(vec_t::truncate): Rename from VEC_truncate_1.  Update all users.
	(vec_t::safe_grow): Rename from VEC_safe_grow_1.  Update all users.
	(vec_t::safe_grow_cleared): Rename from VEC_safe_grow_cleared_1.
	Update all users.
	(vec_t::replace): Rename from VEC_replace_1.  Update all users.
	(vec_t::quick_insert): Rename from VEC_quick_insert_1.
	Update all users.
	(vec_t::safe_insert): Rename from VEC_safe_insert_1.  Update all users.
	(vec_t::ordered_remove): Rename from VEC_ordered_remove_1.
	Update all users.
	(vec_t::unordered_remove): Rename from VEC_unordered_remove_1.
	Update all users.
	(vec_t::block_remove): Rename from VEC_block_remove_1. Update all users.
	(vec_t::lower_bound): Rename from VEC_lower_bound_1. Update all users.

From-SVN: r190927
2012-09-04 09:22:54 -04:00
Steven Bosscher
fd8d363e25 gimple.h (gimple_build_switch): Remove.
* gimple.h (gimple_build_switch): Remove.
	(gimple_build_switch_vec): Promote to the new gimple_build_switch.
	(gimple_switch_default_label): Assert the default case label is
	really a default case label.
	(gimple_switch_set_default_label): Likewise.
	* gimple.c (gimple_build_switch_nlabels): Make sure a default label
	is passed in, and simplify accordingly.
	(gimple_build_switch): Removed.
	(gimple_build_switch_vec): Rename to gimple_build_switch.
	* gimplify.c (gimplify_switch_expr): Update gimple_build_switch use.
	* gimple-pretty-print.c (dump_gimple_switch): Do not accept a NULL
	case label.
	* stmt.c (expand_case): Simplify using the fact that every GIMPLE
	switch must have a default case.
	* tree-cfg.c (group_case_labels_stmt): Likewise.
	(verify_gimple_switch): Use gimple_switch_label in verifier to get
	the label at index 0, and verify that it is a valid default case.
	* except.c (sjlj_emit_dispatch_table): Rewrite construction of the
	switch for dispatching.
	* tree-eh.c (lower_try_finally_switch): Update gimple_build_switch use.
	(lower_eh_dispatch): Likewise.
	* tree-vrp.c (execute_vrp): Use gimple_switch_label to get the case
	label at index 0 before turning it into a default case label.
	* omp-low.c (expand_omp_sections): Update gimple_build_switch use.
	* tree-switch-conversion.c (emit_case_bit_tests): Get the default case
	label using gimple_switch_default_label.
	(collect_switch_conv_info): Likewise.
	(process_switch): Likewise.
	* doc/gimple.texi: Update documentation of gimple_build_switch.

From-SVN: r190925
2012-09-04 13:03:02 +00:00
Georg-Johann Lay
b8db7f86fd re PR target/54476 ([avr] __builtin_avr_delay_cycles (-1ul) causes memory usage to explode on x86_64 host)
PR target/54476
	* config/avr/avr.c (avr_expand_delay_cycles): Mask operand with
	SImode.

From-SVN: r190920
2012-09-04 09:37:08 +00:00
Bin Cheng
12b48dc897 re PR target/45070 (Miscompiled c++ class with packed attribute on ARM with -Os optimizations (Qt 4.6.2))
PR target/45070
	* config/arm/arm.c (thumb1_extra_regs_pushed): Handle return value of size
	less than 4 bytes by using macro ARM_NUM_INTS.
	(thumb1_unexpanded_epilogue): Use macro ARM_NUM_INTS.

From-SVN: r190919
2012-09-04 09:36:44 +00:00
Richard Guenther
a8886f7d18 re PR tree-optimization/54458 (ICE get_loop_body, at cfgloop.c:830)
2012-09-04  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/54458
	* tree-ssa-threadupdate.c (thread_through_loop_header): If we
	turn the loop into one with multiple latches mark it so.

	* gcc.dg/torture/pr54458.c: New testcase.

From-SVN: r190918
2012-09-04 09:28:58 +00:00
Senthil Kumar Selvaraj
cee8f252d7 re PR target/54220 ([avr] Potential stack corruption in naked functions at -O0)
PR target/54220
	* config/avr/avr.c (TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS): New
	define to...
	(avr_allocate_stack_slots_for_args): ...this new static function.

From-SVN: r190914
2012-09-04 09:08:50 +00:00
Christophe Lyon
3474210e8c arm.c (arm_expand_builtin): Replace gen_rtx_CONST_INT by GEN_INT.
2012-09-04  Christophe Lyon  <christophe.lyon@linaro.org>

	* config/arm/arm.c (arm_expand_builtin): Replace gen_rtx_CONST_INT
	by GEN_INT.
	(arm_emit_coreregs_64bit_shift): Likewise.

From-SVN: r190912
2012-09-04 10:35:19 +02:00
Christophe Lyon
434641a57b arm.c (arm_evpc_neon_vext): New function.
2012-09-04  Christophe Lyon  <christophe.lyon@linaro.org>

	gcc/
	* config/arm/arm.c (arm_evpc_neon_vext): New
	function.
	(arm_expand_vec_perm_const_1): Add call to
	arm_evpc_neon_vext.

	gcc/testsuite/
	* gcc.target/arm/neon-vext.c: New test.
	* gcc.target/arm/neon-vext-execute.c: Ditto.

From-SVN: r190911
2012-09-04 10:32:39 +02:00
Janus Weil
ee3bea0b28 re PR fortran/54435 (ICE with SELECT TYPE on a non-CLASS object)
2012-09-04  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/54435
	PR fortran/54443
	* match.c (gfc_match_select_type): Make sure to only access CLASS_DATA
	for BT_CLASS.

2012-09-04  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/54243
	PR fortran/54244
	* gfortran.dg/select_type_29.f03: New.

From-SVN: r190910
2012-09-04 10:03:09 +02:00
Oleg Endo
ff596ca15c re PR target/51244 ([SH] Inefficient conditional branch and code around T bit)
PR target/51244
	* config/sh/sh.c (prepare_cbranch_operands): Pull out comparison
	canonicalization code into...
	* (sh_canonicalize_comparison): This new function.
	* config/sh/sh-protos.h: Declare it.
	* config/sh/sh.h: Use it in new macro CANONICALIZE_COMPARISON.
	* config/sh/sh.md (cbranchsi4): Remove TARGET_CBRANCHDI4 check and
	always invoke expand_cbranchsi4.

From-SVN: r190909
2012-09-04 08:03:01 +00:00
GCC Administrator
8945d42254 Daily bump.
From-SVN: r190908
2012-09-04 00:18:16 +00:00
Andi Kleen
8b4f7b4746 Fix bootstrap-lto
gcc/

2012-09-03  Andi Kleen <ak@linux.intel.com>

	* tree-ssa-sccvn.c (vn_reference_fold_indirect): Initialize
	addr_offset always.

From-SVN: r190905
2012-09-03 22:00:13 +00:00
Andrew Pinski
f35613b29c re PR tree-optimization/53395 (The LAPACK functions i(d|s)amax are more than two times slower after revision 187183)
2012-09-03  Andrew Pinski  <apinski@cavium.com>

	PR tree-opt/53395
	* tree-if-conv.c (constant_or_ssa_name): New function.
	(fold_build_cond_expr): New function.
	(predicate_scalar_phi): Use fold_build_cond_expr instead of build3.
	(predicate_mem_writes): Likewise.

From-SVN: r190904
2012-09-03 13:31:52 -07:00