1. 28 Jul, 2017 21 commits
    • pr80815-3.c: Require vect_perm. · 8de33df2
      	gcc/testsuite
      	* gcc.dg/vect/pr80815-3.c: Require vect_perm.
      
      From-SVN: r250676
      Bin Cheng committed
    • Fix pid_t printing · cf311b03
      	* fileline.c (fileline_initialize): Print pid_t as long.
      
      From-SVN: r250675
      Rainer Orth committed
    • dbl_mov_immediate_1.c: New. · 8acb8421
      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
      Tamar Christina committed
    • aarch64.md (mov<mode>): Generalize. · 90e6443f
      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
      Tamar Christina committed
    • 2017-07-28 Tamar Christina <tamar.christina@arm.com> · a2170965
      	* 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
      Tamar Christina committed
    • tree-predcom.c: (struct chain): Handle store-store chain in which stores for elimination only... · 39ff50ce
      	* 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
      Bin Cheng committed
    • tree-predcom.c: Revise general description of the pass. · d9c259ef
      	* 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
      Bin Cheng committed
    • tree-predcom.c (initialize_root): Delete. · 10dfaf9a
      	* 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
      Bin Cheng committed
    • tree-predcom.c (ref_at_iteration): Add parameter NITERS. · 3c62a7fb
      	* tree-predcom.c (ref_at_iteration): Add parameter NITERS.  Compute
      	memory reference to DR at (NITERS + ITERS)-th iteration of loop.
      
      From-SVN: r250667
      Bin Cheng committed
    • tree-predcom.c (struct chain): New field init_seq. · aa4de160
      	* 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
      Bin Cheng committed
    • match.pd: Remove superfluous :c. · 6c35e5b0
      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
      Richard Biener committed
    • Set DECL_VALUE_EXPR after a debug stmt is generated (PR sanitizer/81340). · 6d7649f8
      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
      Martin Liska committed
    • re PR middle-end/81502 (In some cases the data is moved to memory unnecessarily… · 92e29a5e
      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
      Richard Biener committed
    • re PR sanitizer/80998 (Implement -fsanitize=pointer-overflow) · c9b39a49
      	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
      Jakub Jelinek committed
    • Do not handle VLA in sanitization (PR sanitizer/81460). · 70affe6a
      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
      Martin Liska committed
    • [PowerPC/RTEMS] Add 64-bit support using ELFv2 ABI · 16bab95a
      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
      Sebastian Huber committed
    • re PR tree-optimization/81578 (ICE in omp_reduction_init_op) · d0ee55a1
      	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
      Jakub Jelinek committed
    • re PR tree-optimization/81573 (wrong code at -O3 on x86_64-linux-gnu) · 1ce75e41
      2017-07-28  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/81573
      	* gcc.dg/torture/pr81573.c: Explicitely use signed char.
      
      From-SVN: r250650
      Richard Biener committed
    • go-backend.c (go_write_export_data): Use EXCLUDE section for AIX. · 4ce21457
      	* go-backend.c (go_write_export_data): Use EXCLUDE section for
      	AIX.
      
      From-SVN: r250648
      Tony Reix committed
    • Daily bump. · 91258d93
      From-SVN: r250647
      GCC Administrator committed
  2. 27 Jul, 2017 19 commits
    • predicates.md (volatile_mem_operand): Remove code related to reload_in_progress. · 3cb8ee5c
      	* 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
      Peter Bergner committed
    • rs6000.opt (mlra): Replace with stub. · 7a5cbf29
      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
      Peter Bergner committed
    • re PR c/45784 (gcc OpenMP - error: invalid controlling predicate) · a40ff0ae
      	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
      Jakub Jelinek committed
    • Add RTEMS support · 1f9e09b5
      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
      Sebastian Huber committed
    • [PATCH][AArch64] Fix missing optimization for CMP+AND · 2c2789d5
      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
      Kyrylo Tkachov committed
    • re PR c/81417 (-Wsign-compare should print types being compared) · 06bd22f6
      	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
      Marek Polacek committed
    • re PR middle-end/81564 (ICE in group_case_labels_stmt()) · 27c8b49b
      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
      Peter Bergner committed
    • re PR tree-optimization/81573 (wrong code at -O3 on x86_64-linux-gnu) · b7675b59
      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
      Richard Biener committed
    • re PR tree-optimization/81571 (ICE at -O3 in both 32-bit and 64-bit modes… · 719488f8
      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
      Richard Biener committed
    • Validate that Init value is within range defined by IntegerRange. · e88a9384
      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
      Martin Liska committed
    • sparc.c (sparc_option_override): Set MASK_FSMULD flag earlier and only if MASK_FPU is set. · a7faf57b
      	* config/sparc/sparc.c (sparc_option_override): Set MASK_FSMULD flag
      	earlier and only if MASK_FPU is set.  Adjust formatting.
      
      From-SVN: r250623
      Eric Botcazou committed
    • Fix indirect call optimization done by autoFDO. · 89722cf7
      2017-07-27  Martin Liska  <mliska@suse.cz>
      
      	* auto-profile.c (autofdo_source_profile::update_inlined_ind_target):
      	Fix wrong condition.
      
      From-SVN: r250622
      Martin Liska committed
    • Initialize counters in autoFDO to zero, not to uninitialized. · b8163af7
      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
      Martin Liska committed
    • re PR middle-end/81502 (In some cases the data is moved to memory unnecessarily… · 9811e84c
      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
      Richard Biener committed
    • [Patch (preapproved)] Guard Copy Header pass on · 0919ce3e
      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
      James Greenhalgh committed
    • S/390: Fix PR81534 · 58814c76
      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
      Andreas Krebbel committed
    • [rs6000] Avoid rotates of floating-point modes · 02d3ba0e
      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
      Richard Sandiford committed
    • re PR tree-optimization/81555 (Wrong code at -O1) · 7d25ac20
      	PR tree-optimization/81555
      	PR tree-optimization/81556
      	* tree-ssa-reassoc.c (rewrite_expr_tree): Add NEXT_CHANGED argument,
      	if true, force CHANGED for the recursive invocation.
      	(reassociate_bb): Remember original length of ops array, pass
      	len != orig_len as NEXT_CHANGED in rewrite_expr_tree call.
      
      	* gcc.c-torture/execute/pr81555.c: New test.
      	* gcc.c-torture/execute/pr81556.c: New test.
      
      From-SVN: r250609
      Jakub Jelinek committed
    • attribs.c (decl_attributes): Imply noinline, noclone and no_icf attributes for noipa attribute. · 036ea399
      	* attribs.c (decl_attributes): Imply noinline, noclone and no_icf
      	attributes for noipa attribute.  For naked attribute use
      	lookup_attribute first before lookup_attribute_spec.
      	* final.c (rest_of_handle_final): Disable IPA RA for functions with
      	noipa attribute.
      	* ipa-visibility.c (non_local_p): Fix comment typos.  Return true
      	for functions with noipa attribute.
      	(cgraph_externally_visible_p): Return true for functions with noipa
      	attribute.
      	* cgraph.c (cgraph_node::get_availability): Return AVAIL_INTERPOSABLE
      	for functions with noipa attribute.
      	* doc/extend.texi: Document noipa function attribute.
      	* tree-ssa-structalias.c (refered_from_nonlocal_fn): Set *nonlocal_p
      	also for functions with noipa attribute.
      	(ipa_pta_execute): Set nonlocal_p also for nodes with noipa attribute.
      c-family/
      	* c-attribs.c (c_common_attribute_table): Add noipa attribute.
      	(handle_noipa_attribute): New function.
      testsuite/
      	* gcc.dg/attr-noipa.c: New test.
      	* gcc.dg/ipa/ipa-pta-18.c: New test.
      	* gcc.dg/ipa/ipa-sra-11.c: New test.
      
      From-SVN: r250607
      Jakub Jelinek committed