Commit Graph

155198 Commits

Author SHA1 Message Date
Trevor Saunders 4bd2de4b45 use c++ for make_int_cst_stat
gcc/ChangeLog:

2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

	* tree.c (make_int_cst_stat): Remove _stat from name.
	* tree.h (make_int_cst_stat): Adjust prototype.
	(make_int_cst): Remove macro.

From-SVN: r250697
2017-07-29 01:38:12 +00:00
Trevor Saunders 86cbccd7d5 use cxx instead of make_tree_binfo_stat
gcc/ChangeLog:

2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

	* tree.c (make_tre_binfo_stat): Remove _stat from name.
	* tree.h (make_tree_binfo_stat): Adjust prototype.
	(make_tree_binfo): Remove.

From-SVN: r250696
2017-07-29 01:38:06 +00:00
Trevor Saunders 39d970d7d2 use c++ instead of _stat for copy_node_stat
gcc/cp/ChangeLog:

2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

	* lex.c (copy_decl): Adjust.
	(copy_type): Likewise.

gcc/ChangeLog:

2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

	* tree.c (copy_node_stat): Rename to copy_node.
	(build_distinct_type_copy): Adjust.
	* tree.h (copy_node_stat): Adjust prototype.
	(copy_node): Remove macro.

From-SVN: r250695
2017-07-29 01:38:00 +00:00
Trevor Saunders f719e2f1d7 use c++ instead of make_node_stat
gcc/ChangeLog:

2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

	* tree.c (make_node_stat): rename to make_node.
	(build_tree_list_stat): Adjust.
	(build0_stat): Likewise.
	(build2_stat): Likewise.
	(build3_stat): Likewise.
	(build4_stat): Likewise.
	(build5_stat): Likewise.
	(build_decl_stat): Likewise.
	* tree.h (make_node_stat): Adjust prototype.
	(make_node): remove macro.

From-SVN: r250694
2017-07-29 01:37:54 +00:00
GCC Administrator 57a93c6a66 Daily bump.
From-SVN: r250693
2017-07-29 00:16:41 +00:00
Peter Bergner 782a7850ed ppc-auxv.h (PPC_FEATURE2_DARN): New define.
gcc/
	* config/rs6000/ppc-auxv.h (PPC_FEATURE2_DARN): New define.
	(PPC_FEATURE2_SCV): Likewise.
	* config/rs6000/rs6000.c (cpu_supports_info): Use them.

gcc/testsuite/
	* gcc.target/powerpc/cpu-builtin-1.c (darn, scv): Add tests.

From-SVN: r250687
2017-07-28 15:10:45 -05:00
Ian Lance Taylor 02c7e7eb5e compiler: add backend type conversion
Tweak Interface_field_reference_expression::do_get_backend to apply an
    additional backend type conversion to the returned result.  This is
    needed due to the fact that the top level type of the expression is a
    function descriptor, however the value being manufactured is a pointer
    to <thunk-descriptor, value> struct.
    
    Reviewed-on: https://go-review.googlesource.com/51712

From-SVN: r250686
2017-07-28 19:58:01 +00:00
Tony Reix 5a427c633b configure.ac (target-libffi): Don't disable for AIX.
2017-07-28  Tony Reix  <tony.reix@atos.net>

        * configure.ac (target-libffi): Don't disable for AIX.
        (go): Don't add to unsupported_languages on AIX.
        (target-libgo): Don't disable for AIX.
        * configure: Regenerate.

From-SVN: r250685
2017-07-28 14:56:28 -04:00
Tony Reix afce7debdc * xcoff.c: Don't leak a file descriptor if an archive is malformed.
From-SVN: r250684
2017-07-28 18:52:13 +00:00
Ian Lance Taylor 9761988fc7 compiler: track placeholder pointer types for conversion
We recently started walking through the hash table of pointer types to
    finalize them.  Unfortunately it is possible to create a new pointer
    type while finalizing an existing one (test case: test/fixedbugs/issue5291)
    and that breaks the iteration.  So, instead, keep a list of
    placeholder pointer types, and iterate through them while permitting
    the list to be extended as we go.
    
    Reviewed-on: https://go-review.googlesource.com/51771

From-SVN: r250683
2017-07-28 18:03:29 +00:00
Ian Lance Taylor 97a0928c52 compiler: use a single temporary for calls with multiple results
For calls that return multiple results we used to create a temporary
    of struct type to hold the results, and also create a separate
    temporary for each result.  Then the call expression would copy each
    result out of the struct to the temporary, and Call_result_expression
    would refer to the desired temporary.
    
    Simplify this to just use a single temporary of struct type, and
    change Call_result_expression to fetch a field of the struct.
    
    This may reduce some incorrect tree sharing in the backend code.
    
    Reviewed-on: https://go-review.googlesource.com/51770

From-SVN: r250682
2017-07-28 17:42:05 +00:00
Tamar Christina 9de009354e 2017-07-28 Tamar Christina <tamar.christina@arm.com>
* config/aarch64/aarch64.c
	(aarch64_internal_mov_immediate): Add new special pattern.
	* config/aarch64/aarch64.md (*movdi_aarch64):
	Add reg/32bit const mov case.

gcc/testsuite/
2017-07-28  Tamar Christina  <tamar.christina@arm.com>

	* gcc.target/aarch64/int_mov_immediate_1.c: New.

From-SVN: r250680
2017-07-28 16:47:08 +00:00
Bin Cheng 8de33df278 pr80815-3.c: Require vect_perm.
gcc/testsuite
	* gcc.dg/vect/pr80815-3.c: Require vect_perm.

From-SVN: r250676
2017-07-28 16:30:44 +00:00
Rainer Orth cf311b0355 Fix pid_t printing
* fileline.c (fileline_initialize): Print pid_t as long.

From-SVN: r250675
2017-07-28 16:26:39 +00:00
Tamar Christina 8acb8421b9 dbl_mov_immediate_1.c: New.
2017-07-28  Tamar Christina  <tamar.christina@arm.com>
	    Bilyan Borisov  <bilyan.borisov@arm.com>

	* gcc.target/aarch64/dbl_mov_immediate_1.c: New.
	* gcc.target/aarch64/flt_mov_immediate_1.c: New.
	* gcc.target/aarch64/f16_mov_immediate_1.c: New.
	* gcc.target/aarch64/f16_mov_immediate_2.c: New.
	* gcc.target/aarch64/pr63304_1.c: Changed to double.


Co-Authored-By: Bilyan Borisov <bilyan.borisov@arm.com>

From-SVN: r250674
2017-07-28 15:14:25 +00:00
Tamar Christina 90e6443f3a aarch64.md (mov<mode>): Generalize.
2017-07-28  Tamar Christina  <tamar.christina@arm.com>
            Richard Sandiford <richard.sandiford@linaro.org>

        * config/aarch64/aarch64.md (mov<mode>): Generalize.
        (*movhf_aarch64, *movsf_aarch64, *movdf_aarch64):
        Add integer and movi cases.
        (movi-split-hf-df-sf split, fp16): New.
        (enabled): Added TARGET_FP_F16INST.
        * config/aarch64/iterators.md (GPF_HF): New.
        * config/aarch64/predicates.md (aarch64_reg_or_fp_float): New.


Co-Authored-By: Richard Sandiford <richard.sandiford@linaro.org>

From-SVN: r250673
2017-07-28 15:12:32 +00:00
Tamar Christina a217096563 2017-07-28 Tamar Christina <tamar.christina@arm.com>
* config/aarch64/aarch64.c
	(aarch64_simd_container_mode): Add prototype.
	(aarch64_expand_mov_immediate): Add HI support.
	(aarch64_reinterpret_float_as_int, aarch64_float_const_rtx_p: New.
	(aarch64_can_const_movi_rtx_p): New.
	(aarch64_preferred_reload_class):
	Remove restrictions of using FP registers for certain SIMD operations.
	(aarch64_rtx_costs): Added new cost for CONST_DOUBLE moves.
	(aarch64_valid_floating_const): Add integer move validation.
	(aarch64_simd_imm_scalar_p): Remove.
	(aarch64_output_scalar_simd_mov_immediate): Generalize function.
	(aarch64_legitimate_constant_p): Expand list of supported cases.
	* config/aarch64/aarch64-protos.h
	(aarch64_float_const_rtx_p, aarch64_can_const_movi_rtx_p): New.
	(aarch64_reinterpret_float_as_int): New.
	(aarch64_simd_imm_scalar_p): Remove.
	* config/aarch64/constraints.md (Uvi): New.
	(Dd): Split into Ds and new Dd.
	* config/aarch64/aarch64.md (*movsi_aarch64):
	Add SIMD mov case.
	(*movdi_aarch64): Add SIMD mov case.

From-SVN: r250672
2017-07-28 15:11:25 +00:00
Bin Cheng 39ff50cef1 tree-predcom.c: (struct chain): Handle store-store chain in which stores for elimination only...
* tree-predcom.c: (struct chain): Handle store-store chain in which
	stores for elimination only store loop invariant values.
	(execute_pred_commoning_chain): Ditto.
	(prepare_initializers_chain_store_elim): Ditto.
	(prepare_finalizers): Ditto.
	(is_inv_store_elimination_chain): New function.
	(initialize_root_vars_store_elim_1): New function.

From-SVN: r250670
2017-07-28 15:03:09 +00:00
Bin Cheng d9c259efd7 tree-predcom.c: Revise general description of the pass.
* tree-predcom.c: Revise general description of the pass.
	(enum chain_type): New enum type for store elimination.
	(struct chain): New field supporting store elimination.
	(struct component): Ditto.
	(dump_chain): Dump store-stores chain.
	(release_chain): Release resources.
	(split_data_refs_to_components): Compute and create component
	contains only stores for elimination.
	(get_chain_last_ref_at): New function.
	(make_invariant_chain): Initialization.
	(make_rooted_chain): Specify chain type in parameter and record it.
	(add_looparound_copies): Skip for store-stores chain.
	(determine_roots_comp): Compute type of chain and pass it to
	make_rooted_chain.
	(initialize_root_vars_store_elim_2): New function.
	(finalize_eliminated_stores): New function.
	(remove_stmt): Handle store for elimination.
	(execute_pred_commoning_chain): Execute predictive commoning on
	store-store chains.
	(determine_unroll_factor): Skip unroll for store-stores chain.
	(prepare_initializers_chain_store_elim): New function.
	(prepare_initializers_chain): Hanlde store-store chain.
	(prepare_finalizers_chain, prepare_finalizers): New function.
	(tree_predictive_commoning_loop): Return integer value indicating
	if loop is unrolled or lcssa form is corrupted.
	(tree_predictive_commoning): Rewrite for lcssa form if necessary.

	gcc/testsuite
	* gcc.dg/tree-ssa/predcom-dse-1.c: New test.
	* gcc.dg/tree-ssa/predcom-dse-2.c: New test.
	* gcc.dg/tree-ssa/predcom-dse-3.c: New test.
	* gcc.dg/tree-ssa/predcom-dse-4.c: New test.
	* gcc.dg/tree-ssa/predcom-dse-5.c: New test.
	* gcc.dg/tree-ssa/predcom-dse-6.c: New test.
	* gcc.dg/tree-ssa/predcom-dse-7.c: New test.
	* gcc.dg/tree-ssa/predcom-dse-8.c: New test.
	* gcc.dg/tree-ssa/predcom-dse-9.c: New test.
	* gcc.dg/tree-ssa/predcom-dse-10.c: New test.
	* gcc.dg/tree-ssa/predcom-dse-11.c: New test.

From-SVN: r250669
2017-07-28 15:01:28 +00:00
Bin Cheng 10dfaf9a3b tree-predcom.c (initialize_root): Delete.
* tree-predcom.c (initialize_root): Delete.
	(execute_pred_commoning_chain): Initialize root vars and replace
	reference of non-combined chain directly, rather than call above
	function.

From-SVN: r250668
2017-07-28 14:58:11 +00:00
Bin Cheng 3c62a7fb6e tree-predcom.c (ref_at_iteration): Add parameter NITERS.
* tree-predcom.c (ref_at_iteration): Add parameter NITERS.  Compute
	memory reference to DR at (NITERS + ITERS)-th iteration of loop.

From-SVN: r250667
2017-07-28 14:57:05 +00:00
Bin Cheng aa4de160cc tree-predcom.c (struct chain): New field init_seq.
* tree-predcom.c (struct chain): New field init_seq.
	(release_chain): Release init_seq.
	(prepare_initializers_chain): Record intialization stmts in above
	field.
	(insert_init_seqs): New function.
	(tree_predictive_commoning_loop): Call insert_init_seqs.

From-SVN: r250666
2017-07-28 14:55:49 +00:00
Bin Cheng 67bb451dfb * tree-predcom.c (determine_roots_comp): Skip trivial components.
From-SVN: r250665
2017-07-28 14:54:20 +00:00
Richard Biener 6c35e5b022 match.pd: Remove superfluous :c.
2017-07-28  Richard Biener  <rguenther@suse.de>

	* match.pd: Remove superfluous :c.
	* genmatch.c (simplify::id): Add member.
	(lower_commutative, lower_opt_convert, lower_cond, lower_for):
	Copy id.
	(current_id): New global.
	(dt_node::parent): Move from ...
	(dt_operand::parent): ... here.  Add for_id member.
	(is_a_helper <dt_operand *>::test): DT_TRUE is also a dt_operand.
	(decision_tree::find_node): Relax order requirement when
	merging DT_TRUE nodes to ones inbetween the current simplify
	and the one we try to merge with.  Add diagnostic whenever
	we need to enforce pattern order by not merging.
	(decision_tree::insert): Set current_id.
	(decision_tree::print_node): Dump parent node and for_id.
	(parser::last_id): Add member.
	(parser::push_simplify): Assign unique id.
	(parser::parser): Initialize last_id.

From-SVN: r250664
2017-07-28 13:38:01 +00:00
Martin Liska 6d7649f8b7 Set DECL_VALUE_EXPR after a debug stmt is generated (PR sanitizer/81340).
2017-07-28  Martin Liska  <mliska@suse.cz>

	PR sanitizer/81340
	* sanopt.c (sanitize_rewrite_addressable_params): Set VALUE_EXPR after
	gimple_build_debug_bind.
2017-07-28  Martin Liska  <mliska@suse.cz>

	PR sanitizer/81340
	* g++.dg/asan/pr81340.C: New test.

From-SVN: r250660
2017-07-28 11:56:47 +00:00
Richard Biener 92e29a5e86 re PR middle-end/81502 (In some cases the data is moved to memory unnecessarily [partial regression])
2017-07-28  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/81502
	* match.pd: Add pattern combining BIT_INSERT_EXPR with
	BIT_FIELD_REF.
	* tree-cfg.c (verify_expr): Verify types of BIT_FIELD_REF
	size/pos operands.
	(verify_gimple_assign_ternary): Likewise for BIT_INSERT_EXPR pos.
	* gimple-fold.c (maybe_canonicalize_mem_ref_addr): Use bitsizetype
	for BIT_FIELD_REF args.
	* fold-const.c (make_bit_field_ref): Likewise.
	* tree-vect-stmts.c (vectorizable_simd_clone_call): Likewise.

	* gcc.target/i386/pr81502.c: New testcase.

From-SVN: r250659
2017-07-28 11:27:45 +00:00
Jakub Jelinek c9b39a4955 re PR sanitizer/80998 (Implement -fsanitize=pointer-overflow)
PR sanitizer/80998
	* sanopt.c (pass_sanopt::execute): Handle IFN_UBSAN_PTR.
	* tree-ssa-alias.c (call_may_clobber_ref_p_1): Likewise.
	* flag-types.h (enum sanitize_code): Add SANITIZER_POINTER_OVERFLOW.
	Or it into SANITIZER_UNDEFINED.
	* ubsan.c: Include gimple-fold.h and varasm.h.
	(ubsan_expand_ptr_ifn): New function.
	(instrument_pointer_overflow): New function.
	(maybe_instrument_pointer_overflow): New function.
	(instrument_object_size): Formatting fix.
	(pass_ubsan::execute): Call instrument_pointer_overflow
	and maybe_instrument_pointer_overflow.
	* internal-fn.c (expand_UBSAN_PTR): New function.
	* ubsan.h (ubsan_expand_ptr_ifn): Declare.
	* sanitizer.def (__ubsan_handle_pointer_overflow,
	__ubsan_handle_pointer_overflow_abort): New builtins.
	* tree-ssa-tail-merge.c (merge_stmts_p): Handle IFN_UBSAN_PTR.
	* internal-fn.def (UBSAN_PTR): New internal function.
	* opts.c (sanitizer_opts): Add pointer-overflow.
	* lto-streamer-in.c (input_function): Handle IFN_UBSAN_PTR.
	* fold-const.c (build_range_check): Compute pointer range check in
	integral type if pointer arithmetics would be needed.  Formatting
	fixes.
gcc/testsuite/
	* c-c++-common/ubsan/ptr-overflow-1.c: New test.
	* c-c++-common/ubsan/ptr-overflow-2.c: New test.
libsanitizer/
	* ubsan/ubsan_handlers.cc: Cherry-pick upstream r304461.
	* ubsan/ubsan_checks.inc: Likewise.
	* ubsan/ubsan_handlers.h: Likewise.

From-SVN: r250656
2017-07-28 12:37:51 +02:00
Martin Liska 70affe6aff Do not handle VLA in sanitization (PR sanitizer/81460).
2017-07-28  Martin Liska  <mliska@suse.cz>

	PR sanitizer/81460
	* sanopt.c (sanitize_rewrite_addressable_params): Do not rewrite
	parameters that are of a variable-length.
2017-07-28  Martin Liska  <mliska@suse.cz>

	PR sanitizer/81460
	* gcc.dg/asan/pr81460.c: New test.

From-SVN: r250655
2017-07-28 10:36:36 +00:00
Sebastian Huber 16bab95a79 [PowerPC/RTEMS] Add 64-bit support using ELFv2 ABI
Add 64-bit support for RTEMS using the ELFv2 ABI with 64-bit long
double.

gcc/
	* config.gcc (powerpc-*-rtems*): Remove rs6000/eabi.h.  Add
	rs6000/biarch64.h.
	* config/rs6000/rtems.h (ASM_DECLARE_FUNCTION_SIZE): New macro.
	(ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Likewise.
	(CRT_CALL_STATIC_FUNCTION): Likewise.
	(ASM_DEFAULT_SPEC): New define.
	(ASM_SPEC32): Likewise.
	(ASM_SPEC64): Likewise.
	(ASM_SPEC_COMMON): Likewise.
	(ASM_SPEC): Likewise.
	(INVALID_64BIT): Likewise.
	(LINK_OS_DEFAULT_SPEC): Likewise.
	(LINK_OS_SPEC32): Likewise.
	(LINK_OS_SPEC64): Likewise.
	(POWERPC_LINUX): Likewise.
	(PTRDIFF_TYPE): Likewise.
	(RESTORE_FP_PREFIX): Likewise.
	(RESTORE_FP_SUFFIX): Likewise.
	(SAVE_FP_PREFIX): Likewise.
	(SAVE_FP_SUFFIX): Likewise.
	(SIZE_TYPE): Likewise.
	(SUBSUBTARGET_OVERRIDE_OPTIONS): Likewise.
	(TARGET_64BIT): Likewise.
	(TARGET_64BIT): Likewise.
	(TARGET_AIX): Likewise.
	(WCHAR_TYPE_SIZE): Likewise.
	(WCHAR_TYPE): Undefine.
	(TARGET_OS_CPP_BUILTINS): Add 64-bit PowerPC defines.
	(CPP_OS_DEFAULT_SPEC): Use previous CPP_OS_RTEMS_SPEC.
	(CPP_OS_RTEMS_SPEC): Delete.
	(SUBSUBTARGET_EXTRA_SPECS): Remove cpp_os_rtems.  Add
	asm_spec_common, asm_spec32, asm_spec64, link_os_spec32, and
	link_os_spec64.
	* config/rs6000/t-rtems: Add mcpu=e6500/m64 multilibs.

libgcc/
	* config/rs6000/ibm-ldouble.c: Disable if defined __rtems__.

From-SVN: r250652
2017-07-28 07:17:10 +00:00
Jakub Jelinek d0ee55a1f7 re PR tree-optimization/81578 (ICE in omp_reduction_init_op)
PR tree-optimization/81578
	* tree-parloops.c (build_new_reduction): Bail out if
	reduction_code isn't one of the standard OpenMP reductions.
	Move the details printing after that decision.

	* gcc.dg/pr81578.c: New test.

From-SVN: r250651
2017-07-28 09:11:51 +02:00
Richard Biener 1ce75e4156 re PR tree-optimization/81573 (wrong code at -O3 on x86_64-linux-gnu)
2017-07-28  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/81573
	* gcc.dg/torture/pr81573.c: Explicitely use signed char.

From-SVN: r250650
2017-07-28 07:08:38 +00:00
Tony Reix 4ce21457db go-backend.c (go_write_export_data): Use EXCLUDE section for AIX.
* go-backend.c (go_write_export_data): Use EXCLUDE section for
	AIX.

From-SVN: r250648
2017-07-28 00:16:36 +00:00
GCC Administrator 91258d934f Daily bump.
From-SVN: r250647
2017-07-28 00:16:34 +00:00
Peter Bergner 3cb8ee5cd6 predicates.md (volatile_mem_operand): Remove code related to reload_in_progress.
* config/rs6000/predicates.md (volatile_mem_operand): Remove code
	related to reload_in_progress.
	(splat_input_operand): Likewise.
	* config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_rtx):
	Delete prototype.
	* config/rs6000/rs6000.c (machine_function): Remove sdmode_stack_slot
	field.
	(TARGET_EXPAND_TO_RTL_HOOK): Delete.
	(TARGET_INSTANTIATE_DECLS): Likewise.
	(legitimate_indexed_address_p): Delete reload_in_progress code.
	(rs6000_debug_legitimate_address_p): Likewise.
	(rs6000_eliminate_indexed_memrefs): Likewise.
	(rs6000_emit_le_vsx_store): Likewise.
	(rs6000_emit_move_si_sf_subreg): Likewise.
	(rs6000_emit_move): Likewise.
	(register_to_reg_type): Likewise.
	(rs6000_pre_atomic_barrier): Likewise.
	(rs6000_machopic_legitimize_pic_address): Likewise.
	(rs6000_allocate_stack_temp): Likewise.
	(rs6000_address_for_fpconvert): Likewise.
	(rs6000_address_for_altivec): Likewise.
	(rs6000_secondary_memory_needed_rtx): Delete function.
	(rs6000_check_sdmode): Likewise.
	(rs6000_alloc_sdmode_stack_slot): Likewise.
	(rs6000_instantiate_decls): Likewise.
	* config/rs6000/rs6000.h (SECONDARY_MEMORY_NEEDED_RTX): Delete.
	* config/rs6000/rs6000.md (splitter for *movsi_got_internal):
	Delete reload_in_progress.
	(*vec_reload_and_plus_<mptrsize>): Likewise.
	* config/rs6000/vsx.md (vsx_mul_v2di): Likewise.
	(vsx_div_v2di): Likewise.
	(vsx_udiv_v2di): Likewise.

From-SVN: r250638
2017-07-27 15:04:53 -05:00
Peter Bergner 7a5cbf29be rs6000.opt (mlra): Replace with stub.
gcc/

	* config/rs6000/rs6000.opt (mlra): Replace with stub.
	* config/rs6000/rs6000-cpus.def (POWERPC_MASKS): Delete OPTION_MASK_LRA.
	* config/rs6000/rs6000.c (TARGET_LRA_P): Delete.
	(rs6000_debug_reg_global): Delete print of LRA status.
	(rs6000_option_override_internal): Delete dead LRA related code.
	(rs6000_lra_p): Delete function.
	* doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mlra.

gcc/testsuite/

	* g++.dg/pr69667.C: Remove option -mlra.
	* gcc.target/powerpc/dform-1.c: Likewise.
	* gcc.target/powerpc/dform-2.c: Likewise.
	* gcc.target/powerpc/dform-3.c: Likewise.
	* gcc.target/powerpc/p8vector-int128-1.c: Likewise.
	* gcc.target/powerpc/p9-vparity.c: Likewise.
	* gcc.target/powerpc/pr63491.c: Likewise.
	* gcc.target/powerpc/pr67808.c: Likewise.
	* gcc.target/powerpc/pr68805.c: Likewise.
	* gcc.target/powerpc/pr69461.c: Likewise.
	* gcc.target/powerpc/pr71680.c: Likewise.
	* gcc.target/powerpc/pr77289.c: Likewise.
	* gcc.target/powerpc/pr78458.c: Likewise.
	* gcc.target/powerpc/pr78543.c: Likewise.
	* g++.dg/pr71294.C: Remove option -mno-lra.
	* gcc.target/powerpc/pr71656-1.c: Likewise.
	* gcc.target/powerpc/pr71656-2.c: Likewise.
	* gcc.target/powerpc/pr71698.c: Likewise.

From-SVN: r250637
2017-07-27 15:03:35 -05:00
Jakub Jelinek a40ff0ae8b re PR c/45784 (gcc OpenMP - error: invalid controlling predicate)
PR c/45784
	* c-omp.c (c_finish_omp_for): If the condition is wrapped in
	rhs of COMPOUND_EXPR(s), skip them and readd their lhs into
	new COMPOUND_EXPRs around the rhs of the comparison.

	* testsuite/libgomp.c/pr45784.c: New test.
	* testsuite/libgomp.c++/pr45784.C: New test.

From-SVN: r250635
2017-07-27 21:13:42 +02:00
Sebastian Huber 1f9e09b554 Add RTEMS support
gcc/ChangeLog

2017-07-27  Sebastian Huber  <sebastian.huber@embedded-brains.de>

	* config.gcc (riscv*-*-elf*): Add (riscv*-*-rtems*).
	* config/riscv/rtems.h: New file.

From-SVN: r250632
2017-07-27 16:41:27 +00:00
Kyrylo Tkachov 2c2789d582 [PATCH][AArch64] Fix missing optimization for CMP+AND
During combine GCC tries to merge CMP (with zero) and AND into a TST. However,
in cases where an ANDS operand is not compatible, this was being missed. Adding
a define_split where this operand was moved to a register seems to help out. 

Committed on behalf of Sudi Das

---
gcc/

2017-07-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
	    Sudakshina Das  <sudi.das@arm.com>

	* config/aarch64/aarch64.md
	(define_split for and<mode>3nr_compare): Move
	non aarch64_logical_operand to a register.
	(define_split for and_<SHIFT:optab><mode>3nr_compare0): Move non
	register immediate operand to a register.
	* config/aarch64/predicates.md (aarch64_mov_imm_operand): New.

gcc/testsuite
    
2017-07-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
	    Sudakshina Das  <sudi.das@arm.com>

	* gcc.target/aarch64/tst_imm_split_1.c: New Test.


Co-Authored-By: Sudakshina Das <sudi.das@arm.com>

From-SVN: r250631
2017-07-27 16:29:31 +00:00
Marek Polacek 06bd22f609 re PR c/81417 (-Wsign-compare should print types being compared)
PR c/81417
	* c-warn.c (warn_for_sign_compare): Tweak the warning message.  Print
	the types.

	* c-c++-common/Wsign-compare-1.c: New test.
	* g++.dg/warn/Wsign-compare-2.C: Update dg-warning.
	* g++.dg/warn/Wsign-compare-4.C: Likewise.
	* g++.dg/warn/Wsign-compare-6.C: Likewise.
	* g++.dg/warn/compare1.C: Likewise.
	* gcc.dg/compare1.c: Likewise.
	* gcc.dg/compare2.c: Likewise.
	* gcc.dg/compare4.c: Likewise.
	* gcc.dg/compare5.c: Likewise.
	* gcc.dg/pr35430.c: Likewise.
	* gcc.dg/pr60087.c: Likewise.

From-SVN: r250630
2017-07-27 15:02:17 +00:00
Peter Bergner 27c8b49bfc re PR middle-end/81564 (ICE in group_case_labels_stmt())
gcc/
	PR middle-end/81564
	* tree-cfg.c (group_case_labels_stmt): Handle already deleted blocks.

gcc/testsuite/
	PR middle-end/81564
	* gcc.dg/pr81564.c: New test.

From-SVN: r250628
2017-07-27 09:05:14 -05:00
Richard Biener b7675b5923 re PR tree-optimization/81573 (wrong code at -O3 on x86_64-linux-gnu)
2017-07-27  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/81573
	PR tree-optimization/81494
	* tree-vect-loop.c (vect_create_epilog_for_reduction): Handle
	multi defuse cycle case.

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

From-SVN: r250627
2017-07-27 13:46:07 +00:00
Richard Biener 719488f819 re PR tree-optimization/81571 (ICE at -O3 in both 32-bit and 64-bit modes (internal compiler error: in as_a, at is-a.h:192))
2017-07-27  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/81571
	* tree-vect-slp.c (vect_build_slp_tree): Properly verify reduction
	PHIs.

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

From-SVN: r250626
2017-07-27 13:44:51 +00:00
Martin Liska e88a93840b Validate that Init value is within range defined by IntegerRange.
2017-07-27  Martin Liska  <mliska@suse.cz>

	* opt-functions.awk: Add validation of value of Init.
	* optc-gen.awk: Pass new argument.

From-SVN: r250625
2017-07-27 12:58:07 +00:00
Eric Botcazou a7faf57b71 sparc.c (sparc_option_override): Set MASK_FSMULD flag earlier and only if MASK_FPU is set.
* config/sparc/sparc.c (sparc_option_override): Set MASK_FSMULD flag
	earlier and only if MASK_FPU is set.  Adjust formatting.

From-SVN: r250623
2017-07-27 12:56:03 +00:00
Martin Liska 89722cf73d Fix indirect call optimization done by autoFDO.
2017-07-27  Martin Liska  <mliska@suse.cz>

	* auto-profile.c (autofdo_source_profile::update_inlined_ind_target):
	Fix wrong condition.

From-SVN: r250622
2017-07-27 12:54:17 +00:00
Martin Liska b8163af7d9 Initialize counters in autoFDO to zero, not to uninitialized.
2017-07-27  Martin Liska  <mliska@suse.cz>

	* auto-profile.c (afdo_annotate_cfg): Assign zero counts to
	BBs and edges seen by autoFDO.

From-SVN: r250621
2017-07-27 12:53:34 +00:00
Richard Biener 9811e84c99 re PR middle-end/81502 (In some cases the data is moved to memory unnecessarily [partial regression])
2017-07-27  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/81502
	* tree-ssa.c (non_rewritable_lvalue_p): Handle BIT_INSERT_EXPR
	with incompatible but same sized type.
	(execute_update_addresses_taken): Likewise.

	* gcc.target/i386/vect-insert-1.c: New testcase.

From-SVN: r250620
2017-07-27 12:01:21 +00:00
James Greenhalgh 0919ce3efe [Patch (preapproved)] Guard Copy Header pass on
While answering a user question on the equivalence of
-ftree-loop-vectorize + -ftree-slp-vectorize and -ftree-vectorize I
spotted one case which broke the equivalence. pass_ch::process_loop_p
was guarded on flag_tree_vectorize, meaning you would get it for
-ftree-vectorize, but not for -ftree-loop-vectorize/-ftree-slp-vectorize.

This patch fixes that, getting rid of the only use of flag_tree_vectorize
in the code base.

gcc/

	* tree-ssa-loop-ch.c (pass_ch::process_loop_p): Guard on
	flag_tree_loop_vectorize rather than flag_tree_vectorize.

From-SVN: r250619
2017-07-27 11:42:17 +00:00
Andreas Krebbel 58814c7630 S/390: Fix PR81534
The HI/QI atomic_fetch_<atomic><mode>" expander accepted symbolic
references and emitted CAS patterns whose insn predicates rejected them.

Fixed by allowing symbolic references there as well.  Reload will get
rid of them due to the constraint letter.

Regression tested on s390x.

gcc/ChangeLog:

2017-07-27  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	PR target/81534
	* config/s390/s390.md ("*atomic_compare_and_swap<mode>_1")
	("*atomic_compare_and_swapdi_2", "*atomic_compare_and_swapsi_3"):
	Change s_operand to memory_operand.

gcc/testsuite/ChangeLog:

2017-07-27  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	PR target/81534
	* gcc.target/s390/pr81534.c: New test.

From-SVN: r250617
2017-07-27 10:39:49 +00:00
Richard Sandiford 02d3ba0e00 [rs6000] Avoid rotates of floating-point modes
The little-endian VSX code uses rotates to swap the two 64-bit halves of
128-bit scalar modes.  This is fine for TImode and V1TImode, but it
isn't really valid to use RTL rotates on floating-point modes like
KFmode and TFmode, and doing that triggered an assert added by the
SVE series.  This patch uses bit-casts to V1TImode instead.

2017-07-27  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
	* config/rs6000/rs6000-protos.h (rs6000_emit_le_vsx_permute): Declare.
	* config/rs6000/rs6000.c (rs6000_gen_le_vsx_permute): Replace with...
	(rs6000_emit_le_vsx_permute): ...this.  Take the destination as input.
	Emit instructions rather than returning an expression.  Handle TFmode
	and KFmode by casting to TImode.
	(rs6000_emit_le_vsx_load): Update to use rs6000_emit_le_vsx_permute.
	(rs6000_emit_le_vsx_store): Likewise.
	* config/rs6000/vsx.md (VSX_TI): New iterator.
	(*vsx_le_permute_<mode>): Use it instead of VSX_LE_128.
	(*vsx_le_undo_permute_<mode>): Likewise.
	(*vsx_le_perm_load_<mode>): Use rs6000_emit_le_vsx_permute to
	emit the split sequence.
	(*vsx_le_perm_store_<mode>): Likewise.

From-SVN: r250615
2017-07-27 09:38:54 +00:00