Commit Graph

134183 Commits

Author SHA1 Message Date
Marek Polacek
8537a4a9f5 re PR middle-end/63884 (ICE: SIGSEGV in is_sec_implicit_index_fn with -fcilkplus and __builtin_sadd_overflow())
PR middle-end/63884
c-family/
	* array-notation-common.c (is_sec_implicit_index_fn): Return false
	for NULL fndecl.
	(extract_array_notation_exprs): Return for NULL node.
testsuite/
	* c-c++-common/cilk-plus/AN/pr63884.c: New test.

From-SVN: r217612
2014-11-15 20:20:05 +00:00
Francois-Xavier Coudert
d66a0f56fe re PR target/60104 (load not folded into indirect branch on x86-64)
PR target/60104
	* gcc.target/i386/sibcall-1.c: Don't run on pic targets.

From-SVN: r217611
2014-11-15 19:46:14 +00:00
Vladimir Makarov
2772f5a14f lra.c (lra): Switch off rematerialization pass.
2014-11-15  Vladimir Makarov  <vmakarov@redhat.com>

	* lra.c (lra): Switch off rematerialization pass.

From-SVN: r217609
2014-11-15 16:59:08 +00:00
Marc Glisse
2069d6fcff xmmintrin.h (_mm_add_ps, [...]): Use vector extensions instead of builtins.
2014-11-15  Marc Glisse  <marc.glisse@inria.fr>

gcc/
	* config/i386/xmmintrin.h (_mm_add_ps, _mm_sub_ps, _mm_mul_ps,
	_mm_div_ps, _mm_store_ss, _mm_cvtss_f32): Use vector extensions
	instead of builtins.
	* config/i386/emmintrin.h (__v2du, __v4su, __v8hu, __v16qu): New
	typedefs.
	(_mm_sqrt_sd): Fix comment.
	(_mm_add_epi8, _mm_add_epi16, _mm_add_epi32, _mm_add_epi64,
	_mm_sub_epi8, _mm_sub_epi16, _mm_sub_epi32, _mm_sub_epi64,
	_mm_mullo_epi16, _mm_cmpeq_epi8, _mm_cmpeq_epi16, _mm_cmpeq_epi32,
	_mm_cmplt_epi8, _mm_cmplt_epi16, _mm_cmplt_epi32, _mm_cmpgt_epi8,
	_mm_cmpgt_epi16, _mm_cmpgt_epi32, _mm_and_si128, _mm_or_si128,
	_mm_xor_si128, _mm_store_sd, _mm_cvtsd_f64, _mm_storeh_pd,
	_mm_cvtsi128_si64, _mm_cvtsi128_si64x, _mm_add_pd, _mm_sub_pd,
	_mm_mul_pd, _mm_div_pd, _mm_storel_epi64, _mm_movepi64_pi64):
	Use vector extensions instead of builtins.
	* config/i386/smmintrin.h (_mm_cmpeq_epi64, _mm_cmpgt_epi64,
	_mm_mullo_epi32): Likewise.
	* config/i386/avxintrin.h (__v4du, __v8su, __v16hu, __v32qu):
	New typedefs.
	(_mm256_add_pd, _mm256_add_ps, _mm256_div_pd, _mm256_div_ps,
	_mm256_mul_pd, _mm256_mul_ps, _mm256_sub_pd, _mm256_sub_ps):
	Use vector extensions instead of builtins.
	* config/i386/avx2intrin.h (_mm256_cmpeq_epi8, _mm256_cmpeq_epi16,
	_mm256_cmpeq_epi32, _mm256_cmpeq_epi64, _mm256_cmpgt_epi8,
	_mm256_cmpgt_epi16, _mm256_cmpgt_epi32, _mm256_cmpgt_epi64,
	_mm256_and_si256, _mm256_or_si256, _mm256_xor_si256, _mm256_add_epi8,
	_mm256_add_epi16, _mm256_add_epi32, _mm256_add_epi64,
	_mm256_mullo_epi16, _mm256_mullo_epi32, _mm256_sub_epi8,
	_mm256_sub_epi16, _mm256_sub_epi32, _mm256_sub_epi64): Likewise.
	* config/i386/avx512fintrin.h (__v8du, __v16su, __v32hu, __v64qu):
	New typedefs.
	(_mm512_or_si512, _mm512_or_epi32, _mm512_or_epi64, _mm512_xor_si512,
	_mm512_xor_epi32, _mm512_xor_epi64, _mm512_and_si512,
	_mm512_and_epi32, _mm512_and_epi64, _mm512_mullo_epi32,
	_mm512_add_epi64, _mm512_sub_epi64, _mm512_add_epi32,
	_mm512_sub_epi32, _mm512_add_pd, _mm512_add_ps, _mm512_sub_pd,
	_mm512_sub_ps, _mm512_mul_pd, _mm512_mul_ps, _mm512_div_pd,
	_mm512_div_ps): Use vector extensions instead of builtins.
	* config/i386/avx512bwintrin.h (_mm512_mullo_epi16, _mm512_add_epi8,
	_mm512_sub_epi8, _mm512_sub_epi16, _mm512_add_epi16): Likewise.
	* config/i386/avx512dqintrin.h (_mm512_mullo_epi64): Likewise.
	* config/i386/avx512vldqintrin.h (_mm256_mullo_epi64, _mm_mullo_epi64):
	Likewise.

gcc/testsuite/
	* gcc.target/i386/intrinsics_opt-1.c: New testcase.
	* gcc.target/i386/intrinsics_opt-2.c: Likewise.
	* gcc.target/i386/intrinsics_opt-3.c: Likewise.
	* gcc.target/i386/intrinsics_opt-4.c: Likewise.

From-SVN: r217608
2014-11-15 16:56:27 +00:00
Jan Hubicka
ca9a04dab6 lto-streamer-out.c (hash_tree): Use cl_optimization_hash.
* lto-streamer-out.c (hash_tree): Use cl_optimization_hash.
	* lto-streamer.h (cl_optimization_stream_out, cl_optimization_stream_in): Declare.
	* optc-save-gen.awk: Generate cl_optimization LTO streaming and hashing routines.
	* opth-gen.awk: Add prototype of cl_optimization_hash.
	* tree-streamer-in.c (unpack_ts_optimization): Remove.
	(streamer_unpack_tree_bitfields): Use cl_optimization_stream_in.
	* tree-streamer-out.c (pack_ts_optimization): Remove.
	(streamer_pack_tree_bitfields): Use cl_optimization_stream_out.

From-SVN: r217607
2014-11-15 16:53:51 +00:00
Francois-Xavier Coudert
64ec531860 * gcc.dg/tree-ssa/pr61144.c: Add dg-require-alias.
From-SVN: r217606
2014-11-15 16:36:58 +00:00
Francois-Xavier Coudert
ec94f2242f pubtypes-3.c: Include <string.h>.
* gcc.dg/pubtypes-3.c: Include <string.h>.
	* gcc.dg/pubtypes-4.c: Likewise.

From-SVN: r217605
2014-11-15 16:06:55 +00:00
Mircea Namolaru
20d3465bd0 New unroll and jam option in Graphite.
From-SVN: r217604
2014-11-15 15:37:49 +00:00
Francois-Xavier Coudert
cf4600ed36 * gcc.dg/darwin-cfstring-format-1.c: Adjust dg-error.
From-SVN: r217603
2014-11-15 15:27:18 +00:00
Eric Botcazou
8a9b4fa113 tree-cfg.c (replace_loop_annotate_in_block): New function extracted from...
* tree-cfg.c (replace_loop_annotate_in_block): New function extracted
	from...
	(replace_loop_annotate): ...here.  Call it on the header and on the
	latch block, if any.  Restore proper behavior of final cleanup.

From-SVN: r217602
2014-11-15 12:34:20 +00:00
Eric Botcazou
d03f2c17a2 tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Add log message for max-completely-peeled-insns limit.
* tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Add log message
	for max-completely-peeled-insns limit.

From-SVN: r217601
2014-11-15 12:06:23 +00:00
Tobias Burnus
ddc05d1165 error.c (gfc_fatal_error_1): Renamed from gfc_fatal_error.
2014-11-15  Tobias Burnus  <burnus@net-b.de>

gcc/fortran/
        * error.c (gfc_fatal_error_1): Renamed from gfc_fatal_error.
        (gfc_fatal_error): Add; uses common diagnostics.
        * array.c (gfc_match_array_ref, gfc_match_array_spec): Use
        %< %>.
        * check.c (check_co_collective, gfc_check_lcobound,
        gfc_check_image_index, gfc_check_num_images,
        gfc_check_this_image, gfc_check_ucobound): Ditto.
        * cpp.c (gfc_cpp_post_options): Ditto.
        (gfc_cpp_init_0, gfc_cpp_done): Change %s to %qs.
        * gfc-diagnostic.def (DK_FATAL): Capitalize first letter.
        * gfortran.h (gfc_fatal_error_1): Add.
        * match.c (gfc_match_name, gfc_match_critical,
        lock_unlock_statement, sync_statement): Add %< %>.
        * module.c (bad_module, gfc_dump_module, gfc_use_module): Change
        %s to %qs.
        * options.c (gfc_handle_module_path_options,
        * gfc_handle_fpe_option,
        gfc_handle_coarray_option, gfc_handle_runtime_check_option,
        gfc_handle_option): Add %< %>.
        * simplify.c (gfc_simplify_num_images): Ditto.
        * trans-stmt.c (gfc_trans_sync): Use gfc_fatal_error_1.
        * trans-array.c (gfc_conv_array_initializer): Ditto.
        * trans-types.c (gfc_init_kinds): Use gfc_fatal_error instead
        of fatal_error; add %< %> quotations.

gcc/testsuite/
        * gfortran.dg/binding_label_tests_4.f03: Add dg-excess-errors.
        * gfortran.dg/coarray_9.f90: Ditto.
        * gfortran.dg/empty_label.f: Ditto.
        * gfortran.dg/empty_label.f90: Ditto.

From-SVN: r217600
2014-11-15 12:06:07 +01:00
GCC Administrator
87d4b38387 Daily bump.
From-SVN: r217599
2014-11-15 00:16:30 +00:00
Jan Hubicka
8f581638b0 ipa-prop.h (ipa_known_type_data): Remove.
* ipa-prop.h (ipa_known_type_data): Remove.
	(ipa_binfo_from_known_type_jfunc): Remove.

From-SVN: r217596
2014-11-14 23:25:20 +00:00
Andrew Pinski
2d41ed5820 [AARCH64] Add scheduler for ThunderX
This adds the schedule model for ThunderX. There are a few TODOs in that
not all of the SIMD is model currently.  Also the idea of a simple
shift/extend is not modeled and all cases where there is a shift/extend
is considered as non simple and take up two cycles rather than correct
value of one cycle.  Also the 32bit divide and the 64bit divide
have different cycle counts but there is no way to model that currently.
Also multiply high takes one cycle more than the normal multiply but
there is no way to model that currently either.

Build and tested for aarch64-elf with no regressions.

ChangeLog:
* config/aarch64/aarch64-cores.def (thunderx): Change the scheduler
over to thunderx.
* config/aarch64/aarch64.md: Include thunderx.md.
(generic_sched): Set to no for thunderx.
* config/aarch64/thunderx.md: New file.

From-SVN: r217593
2014-11-14 13:21:25 -08:00
Michael Meissner
0c307d8f7e predicates.md (easy_fp_constant): Delete redunant tests for 0.0.
[gcc]
2014-11-14  Michael Meissner  <meissner@linux.vnet.ibm.com>

	* config/rs6000/predicates.md (easy_fp_constant): Delete redunant
	tests for 0.0.

	* config/rs6000/vector.md (VEC_R): Move secondary reload support
	insns to rs6000.md from vector.md.
	(reload_<VEC_R:mode>_<P:mptrsize>_store): Likewise.
	(reload_<VEC_R:mode>_<P:mptrsize>_load): Likewise.
	(vec_reload_and_plus_<mptrsize>): Likewise.

	* config/rs6000/rs6000.md (Fa): New mode attribute to give
	constraint for the Altivec registers for a type.
	(RELOAD): New mode iterator for all of the types that have
	secondary reload address support to load up a base register.
	(extendsfdf2_fpr): Use correct constraint.
	(copysign<mode>3_fcpsgn): For SFmode, use correct xscpsgndp
	instruction.
	(floatsi<mode>2_lfiwax): Add support for -mupper-regs-{sf,df}.
	Generate the non-VSX instruction if all registers were FPRs.  Do
	not use the patterns in vsx.md for scalar operations.
	(floatsi<mode>2_lfiwax_mem): Likewise.
	(floatunssi<mode>2_lfiwzx): Likewise.
	(floatunssi<mode>2_lfiwzx_mem): Likewise.
	(fix_trunc<mode>di2_fctidz): Likewise.
	(fixuns_trunc<mode>di2_fctiduz): Likewise.
	(fctiwz_<mode>): Likewise.
	(fctiwuz_<mode>): Likewise.
	(friz): Likewise.
	(floatdidf2_fpr): Likewise.
	(floatdidf2_mem): Likewise.
	(floatunsdidf2): Likewise.
	(floatunsdidf2_fcfidu): Likewise.
	(floatunsdidf2_mem): Likewise.
	(floatdisf2_fcfids): Likewise.
	(floatdisf2_mem): Likewise.
	(floatdisf2_internal1): Add explicit test for not FCFIDS to make
	it more obvious that the code is for pre-ISA 2.06 machines.
	(floatdisf2_internal2): Likewise.
	(floatunsdisf2_fcfidus): Add support for -mupper-regs-{sf,df}.
	Generate the non-VSX instruction if all registers were FPRs.  Do
	not use the patterns in vsx.md for scalar operations.
	(floatunsdisf2_mem): Likewise.
	(reload_<RELOAD:mode>_<P:mptrsize>_store): Move the reload
	handlers here from vector.md, and expand the types we generate
	reload handlers for.
	(reload_<RELOAD:mode>_<P:mptrsize>_load): Likewise.
	(vec_reload_and_plus_<mptrsize>): Likewise.

	* config/rs6000/vsx.md (vsx_float<VSi><mode>2): Only provide the
	vector forms of the instructions.  Move VSX scalar forms to
	rs6000.md, and add support for -mupper-regs-sf.
	(vsx_floatuns<VSi><mode>2): Likewise.
	(vsx_fix_trunc<mode><VSi>2): Likewise.
	(vsx_fixuns_trunc<mode><VSi>2): Likewise.
	(vsx_float_fix_<mode>2): Delete DF version, rename to
	vsx_float_fix_v2df2.
	(vsx_float_fix_v2df2): Likewise.

[gcc/testsuite]
2014-11-14  Michael Meissner  <meissner@linux.vnet.ibm.com>

	* gcc.target/powerpc/ppc-fpconv-1.c: Adjust for -mupper-regs-df
	changes.
	* gcc.target/powerpc/ppc-fpconv-2.c: Likewise.
	* gcc.target/powerpc/ppc-fpconv-3.c: Likewise.
	* gcc.target/powerpc/ppc-fpconv-4.c: Likewise.
	* gcc.target/powerpc/ppc-fpconv-5.c: Likewise.
	* gcc.target/powerpc/ppc-fpconv-6.c: Likewise.
	* gcc.target/powerpc/ppc-fpconv-7.c: Likewise.
	* gcc.target/powerpc/ppc-fpconv-8.c: Likewise.
	* gcc.target/powerpc/ppc-fpconv-9.c: Likewise.
	* gcc.target/powerpc/ppc-fpconv-10.c: Likewise.
	* gcc.target/powerpc/ppc-round.c: Likewise.

From-SVN: r217590
2014-11-14 20:45:21 +00:00
Martin Jambor
3b97a5c7c6 ipa-prop.h (jump_func_type): Removed value IPA_JF_KNOWN_TYPE.
2014-11-14  Martin Jambor  <mjambor@suse.cz>

	* ipa-prop.h (jump_func_type): Removed value IPA_JF_KNOWN_TYPE.
	(ipa_pass_through_data): Removed field type_preserved.
	(ipa_ancestor_jf_data): removed fields type and type_preserved.
	(ipa_jump_func): Removed field known_type.
	(ipa_get_jf_known_type_offset): Removed.
	(ipa_get_jf_known_type_base_type): Likewise.
	(ipa_get_jf_known_type_component_type): Likewise.
	(ipa_get_jf_ancestor_type): Likewise.
	* ipa-cp.c (print_ipcp_constant_value): Removed BINFO handling.
	(ipa_get_jf_pass_through_result): Likewise.
	(ipa_get_jf_ancestor_result): Always build ptr_node_type accesses.
	(values_equal_for_ipcp_p): Removed BINFO handling.
	(ipa_get_indirect_edge_target_1): Updated comment.
	* ipa-prop.c (ipa_print_node_jump_functions_for_edge): Removed handling
	of IPA_JF_KNOWN_TYPE jump functions.  Do not print removed fields.
	(ipa_set_jf_known_type): Removed.
	(ipa_set_jf_simple_pass_through): Do not set removed fields.  Update
	all callers.
	(ipa_set_jf_arith_pass_through): Likewise.
	(ipa_set_ancestor_jf): Likewise.
	(ipa_binfo_from_known_type_jfunc): Removed.
	(prop_type_change_info): Removed fields known_current_type and
	multiple_types_encountered.
	(extr_type_from_vtbl_ptr_store): Removed.
	(check_stmt_for_type_change): Do not attempt to identify changed type.
	(detect_type_change_from_memory_writes): Do not set the removed fields,
	always set jfunc to unknown.
	(compute_complex_assign_jump_func): Do not detect dynamic type change.
	(compute_complex_ancestor_jump_func): Likewise.
	(compute_known_type_jump_func): Removed.
	(ipa_compute_jump_functions_for_edge): Do not detect dynamic type
	change.  Do not comute known type jump functions.
	(combine_known_type_and_ancestor_jfs): Removed.
	(update_jump_functions_after_inlining): Removed handling of
	IPA_JF_KNOWN_TYPE jump functions.  Do not set removed fields.
	(ipa_write_jump_function): Do not stream removed fields or known type
	jump functions.
	(ipa_read_jump_function): Likewise.

From-SVN: r217589
2014-11-14 21:07:39 +01:00
Vladimir Makarov
4ab74a0147 lra-int.h (lra_create_live_ranges): Add parameter.
2014-11-14  Vladimir Makarov  <vmakarov@redhat.com>

	* lra-int.h (lra_create_live_ranges): Add parameter.
	* lra-lives.c (temp_bitmap): Move higher.
	(initiate_live_solver): Move temp_bitmap initialization into
	lra_live_ranges_init.
	(finish_live_solver): Move temp_bitmap clearing into
	live_ranges_finish.
	(process_bb_lives): Add parameter.  Use it to control live info
	update and dead insn elimination.  Pass it to mark_regno_live and
	mark_regno_dead.
	(lra_create_live_ranges): Add parameter.  Pass it to
	process_bb_lives.
	(lra_live_ranges_init, lra_live_ranges_finish): See changes in
	initiate_live_solver and finish_live_solver.
	* lra-remat.c (do_remat): Process insn non-operand hard regs too.
	Use temp_bitmap to update avail_cands.
	* lra.c (lra): Pass new parameter to lra_create_live_ranges.  Move
	check with lra_need_for_spill_p after live range pass.  Switch on
	rematerialization pass.

From-SVN: r217588
2014-11-14 20:06:11 +00:00
Martin Jambor
44210a9672 ipa-prop.h (ipa_get_jf_pass_through_type_preserved): use agg_preserved flag instead.
2014-11-14  Martin Jambor  <mjambor@suse.cz>

	* ipa-prop.h (ipa_get_jf_pass_through_type_preserved): use
	agg_preserved flag instead.
	(ipa_get_jf_ancestor_type_preserved): Likewise.
	(ipa_node_params): Rename known_vals to known_csts, update all users.
	New field known_contexts.
	(ipa_get_indirect_edge_target): Update prototype.
	(ipcp_poly_ctx_values_pool): Declare.
	(ipa_context_from_jfunc): Likewise.
	* ipa-inline.h (estimate_ipcp_clone_size_and_time): Updated prototype.
	* cgraph.h (ipa_polymorphic_call_context): New method equal_to.  New
	parameter newline of method dump.
	* ipa-cp.c (ctxlat): New field.
	(ipcp_values_pool): Renamed to ipcp_cst_values_pool, updated all users.
	(ipcp_poly_ctx_values_pool):New variable.
	(ipa_get_poly_ctx_lat): New function.
	(print_ipcp_constant_value): New overloaded function for contexts.
	(print_all_lattices): Also print contexts.
	(ipa_topo_info): New field contexts;
	(set_all_contains_variable): Also set the flag in the context lattice.
	(initialize_node_lattices): Likewise for flag bottom.
	(ipa_get_jf_ancestor_result): Removed BINFO handling.
	(ipa_value_from_jfunc): Likewise.
	(ipa_context_from_jfunc): New function.
	(values_equal_for_ipcp_p): New overloaded function for contexts.
	(allocate_and_init_ipcp_value): Construct the value.
	(allocate_and_init_ipcp_value): New overloaded function for contexts.
	(propagate_scalar_accross_jump_function): Removed handling of
	KNOWN_TYPE jump functions.
	(propagate_context_accross_jump_function): New function.
	(propagate_constants_accross_call): Also propagate contexts.
	(ipa_get_indirect_edge_target_1): Work on contexts rather than BINFOs.
	(ipa_get_indirect_edge_target): Likewise.
	(devirtualization_time_bonus): Likewise.
	(gather_context_independent_values): Create and populate known_contexts
	vector rather than known_binfos.
	(perform_estimation_of_a_value): Work on contexts rather than BINFOs.
	(estimate_local_effects): Likewise.
	(add_all_node_vals_to_toposort): Also add contexts to teir topological
	sort.
	(ipcp_propagate_stage): Also propagate effects of contexts.
	(ipcp_discover_new_direct_edges): Receive and pass known_contexts to
	ipa_get_indirect_edge_target_1.
	(cgraph_edge_brings_value_p): New overloaded function for contexts.
	(create_specialized_node): Work on contexts rather than BINFOs.
	(find_more_contexts_for_caller_subset): New function.
	(known_contexts_useful_p): New function.
	(copy_useful_known_contexts): Likewise.
	(modify_known_vectors_with_val): Likewise.
	(ipcp_val_in_agg_replacements_p): Renamed to
	ipcp_val_agg_replacement_ok_p, return true for all offset indicating
	non-aggregate.
	(ipcp_val_agg_replacement_ok_p): New overloaded function for contexts.
	(decide_about_value): Work on contexts rather than BINFOs.
	(decide_whether_version_node): Likewise.
	(ipcp_driver): Initialize the new alloc pool.
	* ipa-prop.c (ipa_print_node_jump_functions_for_edge): Prettify
	printing of edge contexts.
	(ipa_set_ancestor_jf): Replace assert with conditional setting of
	type_preserved to false.
	(update_jump_functions_after_inlining): Use access function instead of
	reading agg_preserved directly.  Store combined context in the ancestor
	case.
	(try_make_edge_direct_virtual_call): Work on contexts rather than
	BINFOs.
	(update_indirect_edges_after_inlining): Get context from
	ipa_context_from_jfunc.
	(ipa_free_node_params_substructures): Free also known_contexts.
	(ipa_free_all_structures_after_ipa_cp): Free the new alloc pool.
	(ipa_free_all_structures_after_iinln): Likewise.
	* ipa-inline-analysis.c (evaluate_properties_for_edge): Work on
	contexts rather than BINFOs.
	(estimate_edge_devirt_benefit): Likewise.
	(estimate_edge_size_and_time): Likewise.
	(estimate_calls_size_and_time): Likewise.
	(estimate_node_size_and_time): Likewise.
	(estimate_ipcp_clone_size_and_time): Likewise.
	(do_estimate_edge_time): Likewise.
	(do_estimate_edge_size): Likewise.
	(do_estimate_edge_hints): Likewise.
	* ipa-polymorphic-call.c (ipa_polymorphic_call_context::dump): New
	parameter newline, ouput newline only when it is set.
	(ipa_polymorphic_call_context::equal_to): New method.

testsuite/
	* g++.dg/ipa/devirt-11.C: Dont't run ipa-cp, remove times constraint
	from the dump scan.
	* g++.dg/ipa/devirt-21.C: Xfail.
	* g++.dg/ipa/devirt-24.C: Likewise.
	* g++.dg/ipa/devirt-10.C: Removed times constraint from the dump scan.
	* g++.dg/ipa/devirt-41.C: Updated the dump scan.
	* g++.dg/ipa/devirt-44.C: Likewise.
	* g++.dg/ipa/devirt-43.C: Xfail.

From-SVN: r217587
2014-11-14 21:03:19 +01:00
Martin Jambor
c0cb505599 ipa-cp.c (ipcp_value_source): Converted to a template class.
2014-11-14  Martin Jambor  <mjambor@suse.cz>

	* ipa-cp.c (ipcp_value_source): Converted to a template class.  All
	users converted to the same specialization as the using class/function
	or specialization on tree.
	(ipcp_value): Likewise.
	(ipcp_lattice): Likewise.
	(ipcp_agg_lattice): Now derived from tree specialization of
	ipcp_lattice.
	(values_topo): Moved to new class value_topo_info.
	(ipa_lat_is_single_const): Turned into ipcp_lattice::is_single_const.
	Updated all callers.
	(print_lattice): Turned into ipcp_lattice::print.  Updated all
	callers.
	(value_topo_info): New class template.
	(ipa_topo_info): New field constants.  New constructor.
	(build_toporder_info): Do not clear stack_top, only checkign assert
	it.
	(set_lattice_to_bottom): Turned into ipcp_lattice::set_to_bottom.
	Updated all callers.
	(set_lattice_contains_variable): Turned into
	ipcp_lattice::set_contains_variable.  Updated all callers.
	(add_value_source): Turned into ipcp_value::add_source.  Updated all
	callers.
	(allocate_and_init_ipcp_value): New function.
	(add_value_to_lattice): Turned into ipcp_lattice::add_value.  Last
	parameter got default a value.  Updated all callers.
	(add_scalar_value_to_lattice): Removed, users converted to using
	ipcp_lattice::add_value with default value of the last parameter.
	(add_val_to_toposort): Turned to value_topo_info::add_val.  Updated
	all callers.
	(propagate_effects): Made method of value_topo_info.
	(cgraph_edge_brings_value_p): Now a template function.
	(get_info_about_necessary_edges): Likewise.
	(gather_edges_for_value): Likewise.
	(perhaps_add_new_callers): Likewise.
	(decide_about_value): Likewise.
	* ipa-prop.h (ipcp_lattice): Remove fowrward declaration.

From-SVN: r217586
2014-11-14 20:58:18 +01:00
Jakub Jelinek
b907149be5 * doc/install.texi (--with-diagnostics-color=): Document.
From-SVN: r217585
2014-11-14 20:41:33 +01:00
Jakub Jelinek
a601baa0f7 tree-ssa.dce.c (eliminate_unnecessary_stmts): Eliminate IFN_GOMP_SIMD_LANE without lhs as useless.
* tree-ssa.dce.c (eliminate_unnecessary_stmts): Eliminate
	IFN_GOMP_SIMD_LANE without lhs as useless.

From-SVN: r217584
2014-11-14 20:41:00 +01:00
Ian Lance Taylor
4c46b5f0c2 runtime: set library name based on compiler name
Different compilers may have different release cadences or ABI
incompatibilities, so it does not make sense to use the same library
name for runtime libraries intended for different compilers.

This CL causes a libgo built by llgo to receive the name libgo-llgo.
Likewise, libgobegin is named libgobegin-llgo.

From-SVN: r217583
2014-11-14 18:02:50 +00:00
Jakub Jelinek
8413ca874e ipa-pure-const.c (struct funct_state_d): Add can_free field.
* ipa-pure-const.c (struct funct_state_d): Add can_free field.
	(varying_state): Add true for can_free.
	(check_call): For builtin or internal !nonfreeing_call_p set
	local->can_free.
	(check_stmt): For asm volatile and asm with "memory" set
	local->can_free.
	(analyze_function): Clear local->can_free initially, continue
	calling check_stmt until all flags are computed, dump can_free
	flag.
	(pure_const_write_summary): Write can_free flag.
	(pure_const_read_summary): Read it back.
	(propagate_pure_const): Propagate also can_free flag, set
	w->nonfreeing_fn if it is false after propagation.
	* cgraph.h (cgraph_node): Add nonfreeing_fn member.
	* gimple.c: Include ipa-ref.h, lto-streamer.h and cgraph.h.
	(nonfreeing_call_p): Return cgraph nonfreeing_fn flag if set.
	Also return true for IFN_ABNORMAL_DISPATCHER.
	* cgraph.c (cgraph_node::dump): Dump nonfreeing_fn flag.
	* lto-cgraph.c (lto_output_node): Write nonfreeing_fn flag.
	(input_overwrite_node): Read it back.

From-SVN: r217582
2014-11-14 18:46:50 +01:00
Jakub Jelinek
ab9a433037 sanopt.c: Include tree-ssa-operands.h.
* sanopt.c: Include tree-ssa-operands.h.
	(struct sanopt_info): Add has_freeing_call_p,
	has_freeing_call_computed_p, imm_dom_path_with_freeing_call_p,
	imm_dom_path_with_freeing_call_computed_p, freeing_call_events,
	being_visited_p fields.
	(struct sanopt_ctx): Add asan_check_map field.
	(imm_dom_path_with_freeing_call, maybe_optimize_ubsan_null_ifn,
	maybe_optimize_asan_check_ifn): New functions.
	(sanopt_optimize_walker): Use them, optimize even ASAN_CHECK
	internal calls.
	(pass_sanopt::execute): Call sanopt_optimize even for
	-fsanitize=address.
	* gimple.c (nonfreeing_call_p): Return true for non-ECF_LEAF
	internal calls.

Co-Authored-By: Marek Polacek <polacek@redhat.com>

From-SVN: r217581
2014-11-14 18:28:11 +01:00
Alan Lawrence
18d11814af [Vectorizer] Tidy up vect_create_epilog / use_scalar_result
* tree-vect-loop.c (vect_create_epilog_for_reduction): Move code for
	'if (extract_scalar_result)' to the only place that it is true.

From-SVN: r217580
2014-11-14 17:20:40 +00:00
Jakub Jelinek
b1bf6c522f e.54.2.c (main): Use N / 8 instead of 32 as block_size.
* libgomp.c/examples-4/e.54.2.c (main): Use N / 8 instead
	of 32 as block_size.
	* libgomp.fortran/examples-4/e.54.2.f90 (e_54_1): Use n / 8
	instead of 32 as block_size.

From-SVN: r217579
2014-11-14 18:19:55 +01:00
Shinichiro Hamaji
d8607f259c * dwarf2.def (DW_AT_APPLE_optimized, DW_AT_APPLE_flags)
(DW_AT_APPLE_isa, DW_AT_APPLE_block)
	(DW_AT_APPLE_major_runtime_vers, DW_AT_APPLE_runtime_class)
	(DW_AT_APPLE_omit_frame_ptr, DW_AT_APPLE_property_name)
	(DW_AT_APPLE_property_getter, DW_AT_APPLE_property_setter)
	(DW_AT_APPLE_property_attribute, DW_AT_APPLE_objc_complete_type)
	(DW_AT_APPLE_property): New macros.

From-SVN: r217578
2014-11-14 18:18:34 +01:00
Paolo Carlini
234bef96a1 semantics.c (end_maybe_infinite_loop): Use fold_non_dependent_expr.
2014-11-14  Paolo Carlini  <paolo.carlini@oracle.com>

	* semantics.c (end_maybe_infinite_loop): Use fold_non_dependent_expr.
	* parser.c (cp_parser_omp_clause_collapse): Likewise.
	(cp_parser_enumerator_definition): Don't call
	instantiate_non_dependent_expr...
	* decl.c (build_enumerator): ... call fold_non_dependent_expr here.
	* typeck2.c (massage_init_elt): Use fold_non_dependent_expr.
	* constexpr.c (maybe_constant_value): Allow VIEW_CONVERT_EXPR in
	the final gcc_assert.

	* constexpr.c (fold_non_dependent_expr): Add.
	* cp-tree.h (fold_non_dependent_expr): Declare it.
	* call.c (null_ptr_cst_p): Use it.
	* pt.c (tsubst_copy_and_build, build_non_dependent_expr): Likewise.
	* semantics.c (begin_maybe_infinite_loop): Likewise.
	* typeck.c (cp_build_binary_op): Likewise.
	* typeck2.c (check_narrowing): Likewise.

	* pt.c (fold_non_dependent_expr): Rename to
	instantiate_non_dependent_expr.
	(fold_non_dependent_expr_sfinae): Rename to
	instantiate_non_dependent_expr_sfinae.
	(convert_nontype_argument, build_non_dependent_expr): Adjust.
	* decl.c (compute_array_index_type): Likewise.
	* parser.c (cp_parser_parenthesized_expression_list,
	cp_parser_enumerator_definition, cp_parser_omp_clause_collapse):
	Likewise.
	* semantics.c (end_maybe_infinite_loop, finish_static_assert):
	Likewise.
	* typeck.c (cxx_alignas_expr): Likewise.
	* typeck2.c (store_init_value, massage_init_elt): Likewise.
	* call.c: Adjust comments.
	* class.c: Likewise.
	* constexpr.c: Likewise.
	* decl2.c: Likewise.
	* tree.c: Likewise.

From-SVN: r217577
2014-11-14 16:59:52 +00:00
Joel Sherrill
2c59c2d1a2 mt_allocator.cc: Fix assumption that sizeof(void *) is equal to sizeof(size_t).
2014-11-14  Joel Sherrill <joel.sherrill@oarcorp.com>

	* src/c++98/mt_allocator.cc: Fix assumption that sizeof(void *) is
	equal to sizeof(size_t). The m32c breaks this assumption.

From-SVN: r217576
2014-11-14 16:57:20 +00:00
H.J. Lu
ba86734cb3 Don't enable IFUNC by default for Android and uclibc
* config.gcc (default_gnu_indirect_function): Set to yes
	for i[34567]86-*-linux* and x86_64-*-linux* if not targeting
	Android nor uclibc.

From-SVN: r217575
2014-11-14 08:43:23 -08:00
Felix Yang
732954175f aarch64-simd.md (*aarch64_simd_ld1r<mode>): Use VALL mode iterator instead of VALLDI.
* config/aarch64/aarch64-simd.md (*aarch64_simd_ld1r<mode>): Use
        VALL mode iterator instead of VALLDI.

Co-Authored-By: Jiji Jiang <jiangjiji@huawei.com>

From-SVN: r217573
2014-11-14 15:51:22 +00:00
Jan Hubicka
325fe981b5 optc-save-gen.awk: Output cl_target_option_eq...
* optc-save-gen.awk: Output cl_target_option_eq,
	cl_target_option_hash, cl_target_option_stream_out,
	cl_target_option_stream_in functions.
	* opth-gen.awk: Output prototypes for
	cl_target_option_eq and cl_target_option_hash.
	* lto-streamer.h (cl_target_option_stream_out,
	cl_target_option_stream_in): Declare.
	* tree.c (cl_option_hash_hash): Use cl_target_option_hash.
	(cl_option_hash_eq): Use cl_target_option_eq.
	* tree-streamer-in.c (unpack_value_fields): Stream in
	TREE_TARGET_OPTION.
	* lto-streamer-out.c (DFS::DFS_write_tree_body): Follow
	DECL_FUNCTION_SPECIFIC_TARGET.
	(hash_tree): Hash TREE_TARGET_OPTION; visit
	DECL_FUNCTION_SPECIFIC_TARGET.
	* tree-streamer-out.c (streamer_pack_tree_bitfields): Skip
	TS_TARGET_OPTION.
	(streamer_write_tree_body): Output TS_TARGET_OPTION.

	* lto.c (compare_tree_sccs_1): Compare cl_target_option_eq.

From-SVN: r217572
2014-11-14 15:48:47 +00:00
Jan Hubicka
54e774c010 optc-save-gen.awk: Output cl_target_option_eq...
* optc-save-gen.awk: Output cl_target_option_eq,
	cl_target_option_hash, cl_target_option_stream_out,
	cl_target_option_stream_in functions.
	* opth-gen.awk: Output prototypes for
	cl_target_option_eq and cl_target_option_hash.
	* lto-streamer.h (cl_target_option_stream_out,
	cl_target_option_stream_in): Declare.
	* tree.c (cl_option_hash_hash): Use cl_target_option_hash.
	(cl_option_hash_eq): Use cl_target_option_eq.
	* tree-streamer-in.c (unpack_value_fields): Stream in
	TREE_TARGET_OPTION.
	* lto-streamer-out.c (DFS::DFS_write_tree_body): Follow
	DECL_FUNCTION_SPECIFIC_TARGET.
	(hash_tree): Hash TREE_TARGET_OPTION; visit
	DECL_FUNCTION_SPECIFIC_TARGET.
	* tree-streamer-out.c (streamer_pack_tree_bitfields): Skip
	TS_TARGET_OPTION.
	(streamer_write_tree_body): Output TS_TARGET_OPTION.

	* lto.c (compare_tree_sccs_1): Compare cl_target_option_eq.

From-SVN: r217571
2014-11-14 15:47:53 +00:00
Uros Bizjak
7f201a67fb Makefile.am (AM_CXXFLAGS): Use -std=gnu++11.
* sanitizer_common/Makefile.am (AM_CXXFLAGS): Use -std=gnu++11.
	* asan/Makefile.am (AM_CXXFLAGS): Ditto.
	* lsan/Makefile.am (AM_CXXFLAGS): Ditto.
	* interception/Makefile.am (AM_CXXFLAGS): Ditto.
	* tsan/Makefile.am (AM_CXXFLAGS): Ditto.
	* libbacktrace/Makefile.am (AM_CXXFLAGS): Ditto.
	* ubsan/Makefile.am (AM_CXXFLAGS): Ditto.
	* sanitizer_common/Makefile.in: Regenerate.
	* asan/Makefile.in: Ditto.
	* lsan/Makefile.in: Ditto.
	* interception/Makefile.in: Ditto.
	* tsan/Makefile.in: Ditto.
	* libbacktrace/Makefile.in: Ditto.
	* ubsan/Makefile.in: Ditto.

From-SVN: r217562
2014-11-14 15:23:51 +01:00
Richard Biener
d2a858011c gimple-fold.h (gimple_fold_stmt_to_constant_1): Add 2nd valueization hook defaulted to no_follow_ssa_edges.
2014-11-14  Richard Biener  <rguenther@suse.de>

	* gimple-fold.h (gimple_fold_stmt_to_constant_1): Add 2nd
	valueization hook defaulted to no_follow_ssa_edges.
	* gimple-fold.c (gimple_fold_stmt_to_constant_1): Pass
	2nd valueization hook to gimple_simplify.
	* tree-ssa-ccp.c (valueize_op_1): New function to be
	used for gimple_simplify called via gimple_fold_stmt_to_constant_1.
	(ccp_fold): Adjust.
	* tree-vrp.c (vrp_valueize_1): New function to be
	used for gimple_simplify called via gimple_fold_stmt_to_constant_1.
	(vrp_visit_assignment_or_call): Adjust.

From-SVN: r217560
2014-11-14 13:32:56 +00:00
Jonathan Wakely
a5dde6ddac Define C++11 version of std::ios_base::failure.
* config/abi/pre/gnu.ver: Add new exports.
	* include/bits/ios_base.h (ios_base::failure): New definition using
	abi_tag.
	(io_errc, make_error_code, make_error_category, iostream_category):
	Define.
	* include/std/system_error (system_error): Add char* constructors.
	* src/c++11/Makefile.am: Add new file.
	* src/c++11/Makefile.in: Regenerate.
	* src/c++11/cxx11-ios_failure.cc: New file.
	* src/c++98/ios_failure.cc: Compile old definition without abi_tag.
	* testsuite/27_io/ios_base/failure/cxx11.cc: New.
	* testsuite/27_io/ios_base/failure/what-1.cc: Allow string returned by
	ios_base::failure::what() to contain additional data.
	* testsuite/27_io/ios_base/failure/what-2.cc: Likewise..
	* testsuite/27_io/ios_base/failure/what-3.cc: Likewise..
	* testsuite/27_io/ios_base/failure/what-big.cc: Likewise..

From-SVN: r217559
2014-11-14 12:17:57 +00:00
Tom de Vries
78d7f09fff Fix patch mangling with --inline option
2014-11-14  Tom de Vries  <tom@codesourcery.com>

	* mklog: Move reading of .diff file up and add comment.  Copy diff_lines
	to orig_diff_lines.  Use orig_diff_lines when appending patch.

From-SVN: r217558
2014-11-14 12:09:45 +00:00
Jonathan Wakely
cbe4c88c5e mangle.c (find_substitution): Look for abi_tag on class templates.
gcc/cp:
	* mangle.c (find_substitution): Look for abi_tag on class templates.

gcc/testsuite:
	* g++.dg/abi/abi-tag11.C: New.

From-SVN: r217557
2014-11-14 12:02:09 +00:00
Marek Polacek
c7274165bd fold-const.c (fold_negate_expr): Don't fold INTEGER_CST if that overflows when SANITIZE_SI_OVERFLOW is on.
* fold-const.c (fold_negate_expr): Don't fold INTEGER_CST if
	that overflows when SANITIZE_SI_OVERFLOW is on.  Guard -(-A)
	folding with TYPE_OVERFLOW_SANITIZED.

	* c-c++-common/ubsan/overflow-negate-3.c: New test.

From-SVN: r217556
2014-11-14 11:57:05 +00:00
Marek Polacek
4088b790cc re PR sanitizer/63839 (ICE: tree check: expected ssa_name, have var_decl in simplify_builtin_call, at tree-ssa-forwprop.c:1441 with -fsanitize=unreachable)
PR sanitizer/63839
	* asan.c (ATTR_CONST_NORETURN_NOTHROW_LEAF_LIST,
	ATTR_COLD_CONST_NORETURN_NOTHROW_LEAF_LIST): Define.
	* builtin-attrs.def (ATTR_COLD_CONST_NORETURN_NOTHROW_LEAF_LIST):
	Define.
	* builtins.c (fold_builtin_0): Don't include ubsan.h.  Don't
	instrument BUILT_IN_UNREACHABLE here.
	* sanitizer.def (BUILT_IN_UBSAN_HANDLE_BUILTIN_UNREACHABLE): Make
	const.
	* sanopt.c (pass_sanopt::execute): Instrument BUILT_IN_UNREACHABLE.
	* tree-ssa-ccp.c (optimize_unreachable): Bail out if
	SANITIZE_UNREACHABLE.
	* ubsan.c (ubsan_instrument_unreachable): Rewrite for GIMPLE.
	* ubsan.h (ubsan_instrument_unreachable): Adjust declaration.
testsuite/
	* c-c++-common/ubsan/pr63839.c: New test.
	* c-c++-common/ubsan/unreachable-2.c: New test.

From-SVN: r217553
2014-11-14 11:22:12 +00:00
Alan Lawrence
ba067536a7 [RS6000] Remove vec_shl and (hopefully) fix vec_shr
* config/rs6000/vector.md (vec_shl_<mode>): Remove.
	(vec_shr_<mode>): Reverse shift if BYTES_BIG_ENDIAN.

From-SVN: r217552
2014-11-14 11:18:21 +00:00
Alan Lawrence
ebaea9baf5 Fix ChangeLog date
From-SVN: r217551
2014-11-14 10:53:24 +00:00
Alan Lawrence
729ff76e2b [Vectorizer]Make reductions-via-shifts and vec_shr_optab endianness-neutral
* optabs.c (shift_amt_for_vec_perm_mask): Remove code conditional on
        BYTES_BIG_ENDIAN.
        * tree-vect-loop.c (calc_vec_perm_mask_for_shift,
        vect_create_epilog_for_reduction): Likewise.
        * doc/md.texi (vec_shr_m): Clarify direction of shifting.

From-SVN: r217550
2014-11-14 10:48:34 +00:00
Ramana Radhakrishnan
8261494856 re PR target/63724 ([AArch64] Inefficient immediate expansion and hoisting.)
Fix PR target/63724

2014-11-14  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>

	PR target/63724
        * config/aarch64/aarch64.c (aarch64_expand_mov_immediate): Split out
        numerical immediate handling to...
        (aarch64_internal_mov_immediate): ...this. New.
        (aarch64_rtx_costs): Use aarch64_internal_mov_immediate.
        (aarch64_mov_operand_p): Relax predicate.
        * config/aarch64/aarch64.md (mov<mode>:GPI): Do not expand CONST_INTs.
        (*movsi_aarch64): Turn into define_insn_and_split and new alternative
        for 'n'.
        (*movdi_aarch64): Likewise.

From-SVN: r217546
2014-11-14 09:44:17 +00:00
Richard Biener
a7f24614b3 match.pd: Implement more binary patterns exercised by fold_stmt.
2014-11-14  Richard Biener  <rguenther@suse.de>

	* match.pd: Implement more binary patterns exercised by
	fold_stmt.
	* fold-const.c (sing_bit_p): Export.
	(exact_inverse): Likewise.
	(fold_binary_loc): Remove patterns here.
	(tree_unary_nonnegative_warnv_p): Use CASE_CONVERT.
	* fold-const.h (sing_bit_p): Declare.
	(exact_inverse): Likewise.

	* gcc.c-torture/execute/shiftopt-1.c: XFAIL invalid parts.

From-SVN: r217545
2014-11-14 09:30:08 +00:00
Marek Polacek
5b98e88f0c * tree.c (build_common_builtin_nodes): Remove doubled ECF_LEAF.
From-SVN: r217543
2014-11-14 08:55:11 +00:00
Richard Biener
1023001708 genmatch.c (add_operator): Allow CONSTRUCTOR.
2014-11-14  Richard Biener  <rguenther@suse.de>

	* genmatch.c (add_operator): Allow CONSTRUCTOR.
	(dt_node::gen_kids): Handle CONSTRUCTOR not as GENERIC.
	(parser::parse_op): Allow to iterate over predicates.

From-SVN: r217541
2014-11-14 08:37:41 +00:00
Jakub Jelinek
899c78aee8 configure.ac (--with-diagnostics-color): New configure option, default to --with-diagnostics-color=auto.
* configure.ac (--with-diagnostics-color): New configure
	option, default to --with-diagnostics-color=auto.
	* toplev.c (process_options): Use DIAGNOSTICS_COLOR_DEFAULT
	to determine -fdiagnostics-color= option default.
	* doc/invoke.texi (-fdiagnostics-color=): Document new
	default.
	* configure: Regenerated.
	* config.in: Regenerated.

From-SVN: r217540
2014-11-14 08:30:27 +01:00
Teresa Johnson
5004bd0026 re PR tree-optimization/63841 (Incorrect strlen optimization after complete unroll)
2014-11-13  Teresa Johnson  <tejohnson@google.com>

gcc:
	PR tree-optimization/63841
	* tree-ssa-strlen.c (strlen_optimize_stmt): Ignore clobbers.

2014-11-13  Teresa Johnson  <tejohnson@google.com>

gcc/testsuite:
	PR tree-optimization/63841
	* g++.dg/tree-ssa/pr63841.C: Remove prints, use abort.

From-SVN: r217537
2014-11-14 06:35:35 +00:00