1. 31 Oct, 2016 5 commits
    • re PR lto/78129 (-Werror=suggest-final-types leads to -ENOSPC.) · 65179585
      2016-10-31  Richard Biener  <rguenther@suse.de>
      
      	PR lto/78129
      	* lto.c (do_whole_program_analysis): Bail out after errors
      	from WPA analysis.
      
      From-SVN: r241698
      Richard Biener committed
    • tree-vect-slp.c (vect_get_and_check_slp_defs): New parameter SWAP. · 4cecd659
      	* tree-vect-slp.c (vect_get_and_check_slp_defs): New parameter SWAP.
      	Check slp defs for COND_EXPR by swapping/inverting operands if the
      	new parameter SWAP indicates so.
      	(vect_build_slp_tree_1): New parameter SWAP.  Check COND_EXPR stmt
      	is isomorphic to the first stmt via swapping/inverting.  Store swap
      	information in the new parameter SWAP.
      	(vect_build_slp_tree): New local array SWAP and pass it to function
      	vect_build_slp_tree_1.  Cleanup result handling code for function
      	call to vect_get_and_check_slp_defs.  Skip operand swapping if the
      	order of operands has been fixed as indicated by SWAP[i].
      
      From-SVN: r241697
      Bin Cheng committed
    • tree-vect-data-refs.c (vect_slp_analyze_node_dependences): Skip unnecessary data… · 2c6a05b1
      tree-vect-data-refs.c (vect_slp_analyze_node_dependences): Skip unnecessary data dependence check after visited store stmt.
      
      	* tree-vect-data-refs.c (vect_slp_analyze_node_dependences): Skip
      	unnecessary data dependence check after visited store stmt.
      
      From-SVN: r241696
      Bin Cheng committed
    • re PR tree-optimization/71915 (A missed opportunity for SLSR) · 0b56e9ad
      [gcc]
      
      2016-10-30  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
      
      	PR tree-optimization/71915
      	PR tree-optimization/71490
      	* gimple-ssa-strength-reduction.c (struct slsr_cand_d): Add
      	stride_type field.
      	(find_basis_for_base_expr): Require stride types to match when
      	seeking a basis.
      	(alloc_cand_and_find_basis): Record the stride type.
      	(slsr_process_phi): Pass stride type to alloc_cand_and_find_basis.
      	(backtrace_base_for_ref): Pass types to legal_cast_p_1 rather than
      	the expressions having those types.
      	(slsr_process_ref): Pass stride type to alloc_cand_and_find_basis.
      	(create_mul_ssa_cand): Likewise.
      	(create_mul_imm_cand): Likewise.
      	(create_add_ssa_cand): Likewise.
      	(create_add_imm_cand): Likewise.
      	(legal_cast_p_1): Change interface to accept types rather than the
      	expressions having those types.
      	(legal_cast_p): Pass types to legal_cast_p_1.
      	(slsr_process_cast): Pass stride type to
      	alloc_cand_and_find_basis.
      	(slsr_process_copy): Likewise.
      	(dump_candidate): Display stride type when a cast exists.
      	(create_add_on_incoming_edge): Introduce a cast when necessary for
      	the stride type.
      	(analyze_increments): Change the code checking for invalid casts
      	to rely on the stride type, and update the documentation and
      	example.  Change the code checking for pointer multiplies to rely
      	on the stride type.
      	(insert_initializers): Introduce a cast when necessary for the
      	stride type.  Use the stride type for the type of the initializer.
      
      [gcc/testsuite]
      
      2016-10-30  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
      
      	PR tree-optimization/71915
      	PR tree-optimization/71490
      	* gcc.dg/tree-ssa/pr54245.c: Delete.
      	* gcc.dg/tree-ssa/slsr-8.c: Adjust for new optimization and
      	document why.
      
      From-SVN: r241695
      Bill Schmidt committed
    • Daily bump. · 8972aa33
      From-SVN: r241694
      GCC Administrator committed
  2. 30 Oct, 2016 7 commits
  3. 29 Oct, 2016 7 commits
  4. 28 Oct, 2016 21 commits
    • re PR fortran/71891 (fortran/symbol.c:4864: suspicious if ?) · fdfc9e44
      2016-10-28  Steven G. Kargl <kargl@gcc.gnu.org>
      
      	PR fortran/71891
      	* symbol.c (gfc_type_compatible): Fix typo.
      
      From-SVN: r241668
      Steven G. Kargl committed
    • compiler, runtime: copy slice code from Go 1.7 runtime · 94f56408
          
          Change the compiler handle append as the gc compiler does: call a
          function to grow the slice, but otherwise assign the new elements
          directly to the final slice.
          
          For the current gccgo memory allocator the slice code has to call
          runtime_newarray, not mallocgc directly, so that the allocator sets the
          TypeInfo_Array bit in the type pointer.
          
          Rename the static function cnew to runtime_docnew, so that the stack
          trace ignores it when ignoring runtime functions.  This was needed to
          fix the runtime/pprof tests on 386.
          
          Reviewed-on: https://go-review.googlesource.com/32218
      
      From-SVN: r241667
      Ian Lance Taylor committed
    • target.def (min_arithmetic_precision): New hook. · 894d8b41
      	* target.def (min_arithmetic_precision): New hook.
      	* doc/tm.texi.in (Misc): Add TARGET_MIN_ARITHMETIC_PRECISION.
      	* doc/tm.texi: Regenerate.
      	* internal-fn.c (expand_arith_overflow): Adjust handling of target
      	dependent support by means of TARGET_MIN_ARITHMETIC_PRECISION.
      	* targhooks.c (default_min_arithmetic_precision): New function.
      	* targhooks.h (default_min_arithmetic_precision): Declare.
      	* config/sparc/sparc.c (TARGET_MIN_ARITHMETIC_PRECISION): Define.
      	(sparc_min_arithmetic_precision): New function.
      
      From-SVN: r241665
      Eric Botcazou committed
    • combine: Improve change_zero_ext (fixes PR71847) · 9a5e1efc
      This improves a few things in change_zero_ext.  Firstly, it should use
      the passed in pattern in recog_for_combine, not the pattern of the insn
      (they are not the same if the whole pattern was replaced).  Secondly,
      it handled zero_ext of a subreg, but with hard registers we do not get
      a subreg, instead the mode of the reg is changed.  So this handles that.
      Thirdly, after changing a zero_ext to an AND, the resulting RTL may become
      non-canonical, like (ior (ashift ..) (and ..)); the AND should be first,
      it is commutative.  And lastly, zero_extract as a set_dest wasn't handled
      at all, but now it is.
      
      This fixes the testcase in PR71847, and improves code generation in some
      other edge cases too.
      
      
      	PR target/71847
      	* combine.c (change_zero_ext): Handle zero_ext of hard registers.
      	Swap commutative operands in new RTL if needed.  Handle zero_ext
      	in the set_dest.
      	(recog_for_combine): Pass *pnewpat to change_zero_ext instead of
      	PATTERN (insn).
      
      From-SVN: r241664
      Segher Boessenkool committed
    • re PR go/78144 (FAIL: time on systems with tzdata2016g installed) · a5742b01
      	PR go/78144
          libgo: incorporate fix for timezone test
          
          This brings over the test-only fix for issue 17276 into gccgo/libgo
          (with tzdata-2016g there is a new zone abbreviation).  This is a
          copy of https://golang.org/cl/29995.
          
          Reviewed-on: https://go-review.googlesource.com/32182
      
      From-SVN: r241661
      Ian Lance Taylor committed
    • re PR tree-optimization/43721 (Failure to optimise (a/b) and (a%b) into single… · e72531b9
      re PR tree-optimization/43721 (Failure to optimise (a/b) and (a%b) into single __aeabi_idivmod call)
      
      2016-10-28  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
      	    Kugan Vivekanandarajah  <kuganv@linaro.org>
      	    Jim Wilson  <jim.wilson@linaro.org>
      
      	PR tree-optimization/43721
      	* target.def: New hook expand_divmod_libfunc.
      	* doc/tm.texi.in: Add hook for TARGET_EXPAND_DIVMOD_LIBFUNC
      	* doc/tm.texi: Regenerate.
      	* internal-fn.def: Add new entry for DIVMOD ifn.
      	* internal-fn.c (expand_DIVMOD): New.
      	* tree-ssa-math-opts.c: Include optabs-libfuncs.h, tree-eh.h,
      	targhooks.h.
      	(widen_mul_stats): Add new field divmod_calls_inserted.
      	(target_supports_divmod_p): New.
      	(divmod_candidate_p): Likewise.
      	(convert_to_divmod): Likewise.
      	(pass_optimize_widening_mul::execute): Call
      	calculate_dominance_info(), renumber_gimple_stmt_uids() at
      	beginning of function. Call convert_to_divmod()
      	and record stats for divmod.
      	* config/arm/arm.c (arm_expand_divmod_libfunc): Override hook
      	TARGET_EXPAND_DIVMOD_LIBFUNC.
      	* doc/sourcebuild.texi: Add items for arm_divmod_simode, divmod,
      	divmod_simode.
      
      testsuite/
      	* lib/target-supports.exp (check_effective_target_divmod): New.
      	(check_effective_target_divmod_simode): Likewise.
      	(check_effective_target_arm_divmod_simode): Likewise.
      	* gcc.dg/divmod-1-simode.c: New test.
      	* gcc.dg/divmod-1.c: Likewise.
      	* gcc.dg/divmod-2-simode.c: Likewise.
      	* gcc.dg/divmod-2.c: Likewise.
      	* gcc.dg/divmod-3-simode.c: Likewise.
      	* gcc.dg/divmod-3.c: Likewise.
      	* gcc.dg/divmod-4-simode.c: Likewise.
      	* gcc.dg/divmod-4.c: Likewise.
      	* gcc.dg/divmod-5.c: Likewise.
      	* gcc.dg/divmod-6-simode.c: Likewise.
      	* gcc.dg/divmod-6.c: Likewise.
      	* gcc.dg/divmod-7.c: Likewise.
      
      Co-Authored-By: Jim Wilson <jim.wilson@linaro.org>
      Co-Authored-By: Kugan Vivekanandarajah <kuganv@linaro.org>
      
      From-SVN: r241660
      Prathamesh Kulkarni committed
    • re PR go/78143 (bootstrap broken in libgo on powerpc-linux-gnu) · 0dfeae28
      	PR go/78143
          runtime: build lfstack_32bit.go on ppc
          
          Missed a build tag.  This is GCC PR 78143.
          
          Reviewed-on: https://go-review.googlesource.com/32295
      
      From-SVN: r241659
      Ian Lance Taylor committed
    • Make filesystem::path work with basic_string_view (P0392R0) · f0414b97
      	* include/experimental/bits/fs_path.h (__is_path_src)
      	(_S_range_begin, _S_range_end): Overload to treat string_view as a
      	Source object.
      	(path::operator+=, path::compare): Overload for basic_string_view.
      	* testsuite/experimental/filesystem/path/construct/string_view.cc:
      	New test.
      	* testsuite/experimental/filesystem/path/construct/
      	string_view_cxx17.cc: New test.
      
      From-SVN: r241658
      Jonathan Wakely committed
    • dojump.c (do_jump_by_parts_greater_rtx): Invert probability when swapping the arms of the branch. · 47135167
      	* dojump.c (do_jump_by_parts_greater_rtx): Invert probability when
      	swapping the arms of the branch.
      	* internal-fn.c (expand_addsub_overflow): Use a straight-line code
      	sequence for the generic signed-signed-signed case.
      
      From-SVN: r241656
      Eric Botcazou committed
    • libgo: redirect grep output in mkrsysinfo.sh to /dev/null · eae2ada5
          
          I noticed a stray useless output line when building libgo.
          
          Reviewed-on: https://go-review.googlesource.com/32294
      
      From-SVN: r241655
      Ian Lance Taylor committed
    • Fix filesystem::path for iterators with const value_type · fcfceb1a
      	* include/experimental/bits/fs_path.h
      	(path::_S_convert<_Iter>(_Iter, _Iter)): Remove cv-qualifiers from
      	iterator's value_type.
      	(path::_S_convert<_Iter>(_Iter __first, __null_terminated)): Likewise.
      	Do not use operation not supported by input iterators.
      	(path::__is_path_iter_src): Add partial specialization for const
      	encoded character types.
      	* testsuite/experimental/filesystem/path/construct/range.cc: Test
      	construction from input iterators with const value types.
      
      From-SVN: r241654
      Jonathan Wakely committed
    • re PR debug/77773 (Segfault when compiling __simd64_float16_t using… · 52e1b91e
      re PR debug/77773 (Segfault when compiling __simd64_float16_t using arm-none-eabi-g++ with debug information)
      
      	PR debug/77773
      	* c-pretty-print.c (simple_type_specifier): Do not dereference `t'
      	if NULL.
      
      From-SVN: r241653
      Aldy Hernandez committed
    • bfin.c (bfin_legitimate_address_p): Add missing fallthru comment. · a563e6e9
      	* config/bfin/bfin.c (bfin_legitimate_address_p): Add missing
      	fallthru comment.
      	* config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Likewise.
      
      From-SVN: r241651
      Jeff Law committed
    • sched: Do not mix prologue and epilogue insns · 64f6e1e1
      This patch makes scheduling not reorder prologue insns relative to
      epilogue insns and vice versa.  This fixes PR78029.
      
      The problem in that PR:
      We have two insns, in this order:
      
      (insn/f 300 299 267 8 (set (reg:DI 65 lr)
              (reg:DI 0 0)) 579 {*movdi_internal64}
           (expr_list:REG_DEAD (reg:DI 0 0)
              (expr_list:REG_CFA_RESTORE (reg:DI 65 lr)
                  (nil))))
      ...
      (insn/f 310 268 134 8 (set (mem/c:DI (plus:DI (reg/f:DI 1 1)
                      (const_int 144 [0x90])) [6  S8 A8])
              (reg:DI 0 0)) 579 {*movdi_internal64}
           (expr_list:REG_DEAD (reg:DI 0 0)
              (expr_list:REG_CFA_OFFSET (set (mem/c:DI (plus:DI (reg/f:DI 1 1)
                              (const_int 144 [0x90])) [6  S8 A8])
                      (reg:DI 65 lr))
                  (nil))))
      
      and sched swaps them (when compiling for power6, it tries to put memory
      stores together, so insn 310 is moved up past 300 to go together with
      some other store).  But the REG_CFA_RESTORE and REG_CFA_OFFSET cannot be
      swapped (they both say where the orig value of LR now lives).
      
      
      	PR rtl-optimization/78029
      	* function.c (prologue_contains, epilogue_contains): New functions.
      	(record_prologue_seq, record_epilogue_seq): New functions.
      	* function.h (prologue_contains, epilogue_contains,
      	record_prologue_seq, record_epilogue_seq): New declarations.
      	* sched-deps.c (sched_analyze_insn): Make dependencies to prevent
      	mixing prologue and epilogue insns.
      	(init_deps): Initialize the new fields in struct deps_desc.
      	* sched-int.h (struct deps_desc): New fields last_prologue,
      	last_epilogue, and last_logue_was_epilogue.
      	* shrink-wrap.c (emit_common_heads_for_components): Record all
      	emitted prologue and epilogue insns.
      	(emit_common_tails_for_components): Ditto.
      	(insert_prologue_epilogue_for_components): Ditto.
      
      From-SVN: r241650
      Segher Boessenkool committed
    • GIMPLE store merging pass · f663d9ad
      2016-10-28  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
      
      	PR middle-end/22141
      	* Makefile.in (OBJS): Add gimple-ssa-store-merging.o.
      	* common.opt (fstore-merging): New Optimization option.
      	* opts.c (default_options_table): Add entry for
      	OPT_ftree_store_merging.
      	* fold-const.h (can_native_encode_type_p): Declare prototype.
      	* fold-const.c (can_native_encode_type_p): Define.
      	* params.def (PARAM_STORE_MERGING_ALLOW_UNALIGNED): Define.
      	(PARAM_MAX_STORES_TO_MERGE): Likewise.
      	* timevar.def (TV_GIMPLE_STORE_MERGING): New timevar.
      	* passes.def: Insert pass_tree_store_merging.
      	* tree-pass.h (make_pass_store_merging): Declare extern
      	prototype.
      	* gimple-ssa-store-merging.c: New file.
      	* doc/invoke.texi (Optimization Options): Document
      	-fstore-merging.
      	(--param documentation): Document store-merging-allow-unaligned
      	and max-stores-to-merge.
      
      2016-10-28  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
                  Jakub Jelinek  <jakub@redhat.com>
                  Andrew Pinski  <pinskia@gmail.com>
      
      	PR middle-end/22141
      	PR rtl-optimization/23684
      	* gcc.c-torture/execute/pr22141-1.c: New test.
      	* gcc.c-torture/execute/pr22141-2.c: Likewise.
      	* gcc.target/aarch64/ldp_stp_1.c: Adjust for -fstore-merging.
      	* gcc.target/aarch64/ldp_stp_4.c: Likewise.
      	* gcc.dg/store_merging_1.c: New test.
      	* gcc.dg/store_merging_2.c: Likewise.
      	* gcc.dg/store_merging_3.c: Likewise.
      	* gcc.dg/store_merging_4.c: Likewise.
      	* gcc.dg/store_merging_5.c: Likewise.
      	* gcc.dg/store_merging_6.c: Likewise.
      	* gcc.dg/store_merging_7.c: Likewise.
      	* gcc.target/i386/pr22141.c: Likewise.
      	* gcc.target/i386/pr34012.c: Add -fno-store-merging to dg-options.
      	* g++.dg/init/new17.C: Likewise.
      
      
      
      Co-Authored-By: Andrew Pinski <pinskia@gmail.com>
      Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
      
      From-SVN: r241649
      Kyrylo Tkachov committed
    • Implement std::launder for C++17 · 1f5700e9
      	* doc/xml/manual/status_cxx2017.xml: Update status.
      	* doc/html/*: Regenerate.
      	* include/std/type_traits (has_unique_object_representations): Guard
      	with __has_builtin check.
      	* libsupc++/new (launder): Define for C++17.
      	* testsuite/18_support/launder/1.cc: New test.
      	* testsuite/18_support/launder/requirements.cc: New test.
      	* testsuite/18_support/launder/requirements_neg.cc: New test.
      
      From-SVN: r241648
      Jonathan Wakely committed
    • re PR middle-end/72747 (powerpc: wrong code generated for vec_splats in cascading assignment) · 0faf9ab4
      gcc:
      2016-10-26  Will Schmidt <will_schmidt@vnet.ibm.com>
      
              PR middle-end/72747
              * gimplify.c (gimplify_init_constructor): Move emit of constructor
              assignment to earlier in the if/else logic.
      
      testsuite:
      2016-10-26  Will Schmidt <will_schmidt@vnet.ibm.com>
      
              PR middle-end/72747
              * c-c++-common/pr72747-1.c: New test.
              * c-c++-common/pr72747-2.c: Likewise.
      
      From-SVN: r241647
      Will Schmidt committed
    • re PR middle-end/78128 (fortran/resolve.c:resolve_operator miscompiled at -O2) · 2a762fe1
      2016-10-28  Richard Biener  <rguenther@suse.de>
      
      	PR middle-end/78128
      	PR middle-end/71002
      	* fold-const.c (make_bit_field_ref): Only adjust alias set
      	when the original alias set was zero.
      
      From-SVN: r241645
      Richard Biener committed
    • S/390: Add static OSC breaker if necessary. · 539405d5
      This patch adds a magic OSC (operand store compare) break instruction
      which is necessary if a store is followed closely by a load with same
      base+indx+displ while either base or index get modified in between.
      
      The patch improves several SpecCPU testcases running on IBM z13.
      
      gcc/testsuite/ChangeLog:
      
      2016-10-28  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
      
      	* gcc.target/s390/oscbreak-1.c: New test.
      
      gcc/ChangeLog:
      
      2016-10-28  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
      
      	* config/s390/s390.c (s390_adjust_loop_scan_osc): New function.
      	(s390_adjust_loops): New function.
      	(s390_reorg): Invoke s390_adjust_loops.
      	* config/s390/s390.md: (UNSPEC_OSC_BREAK): New constant.
      	("osc_break"): New insn definition.
      
      From-SVN: r241644
      Andreas Krebbel committed
    • S/390: Add support for arch<n> arch/tune options. · 0dbb19f0
      This patch adds an alternate CPU level naming following the
      architecture level number in the Principles of Operations manual.  So
      instead of having z196, zEC12, and z13 you can use arch9, arch10, and
      arch11.  The old cpu names stay valid and should preferably be used.
      
      The alternate names are supposed to improve compatibility with the IBM
      XL compiler toolchain which uses the arch numbering.
      
      gcc/testsuite/ChangeLog:
      
      2016-10-28  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
      
      	* gcc.target/s390/target-attribute/tattr-m64-33.c: New test.
      
      gcc/ChangeLog:
      
      2016-10-28  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
      
      	* config/s390/s390.opt: Support alternate cpu level naming (archXX).
      	* config.gcc: Support alternate archXX cpu levels with
      	--with-arch= and --with-tune=.
      	* config/s390/linux.h: Translate new archXX cpu levels to the
      	original names when calling GAS.
      	* config/s390/tpf.h: Likewise.
      	* doc/invoke.texi: Document the alternate cpu level names.
      
      From-SVN: r241643
      Andreas Krebbel committed